Verilog实现UART串口收发器数字电路
2019-01-08 本文已影响10人
阿群1986
阿群的笔记
Verilog实现串口的思路:
- 节拍生成器:开发板自带晶振频率50MHz,串口波特率≈115200比特/秒,设计一个节拍生成器=16拍/比特,计算节拍生成器的计数最大值=50MHz÷(115200×16)≈27.1;
- 默认不需要奇偶校验位,有限状态机只设计四个状态,分别是:空闲
idle
、起始位start
、数据位data
和停止位stop
; - 可以支持n字节硬件收发缓冲区;
参考材料1
《FPGA-Prototyping-By-Verilog-Examples》第8章
代码:
http://github.com/liuqun/verilog_code_tips/tree/uart/rtl
PDF文件: http://read.pudn.com/downloads735/ebook/2935095/FPGA%20Prototyping%20By%20Verilog%20Examples.pdf
参考材料2

参考材料3
- (1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。
- (2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。
- (3)数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
- (4)校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。
- (5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
- (6)位时间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。
- (7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。
- (8)波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps(位/秒)。