基于FPGA/CPLD设计与实现UART

2020-02-28 18:21发布

摘 要:UART是广泛使用的串行数据通讯电路。本设计包含UART发送器、接收器和波特率发生器。设计应用EDA技术,基于FPGA/CPLD器件设计与实现UART。
关键词:FPGA/CPLD;UART;VHDL
UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。
---串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。

一 UART简介
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
星星之火红
1楼-- · 2020-02-28 21:57
1 UART结构
---UART主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。
---功能包括微处理器接口,发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、奇偶校验、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、奇偶校验、串转并。
---图1是UART的典型应用。
2 UART的帧格式
---UART的帧格式如图2所示。


星星之火红
2楼-- · 2020-02-28 22:19
 精彩回答 2  元偷偷看……
星星之火红
3楼-- · 2020-02-29 02:21
---发送器仿真波形如图4所示。




2 UART接收器
---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。还要输出一个数据接收标志信号标志数据接收完。
---接收器的端口信号如图5所示。
---实现的部分VHDL程序如下。
---elsif clk1x‘event and clk1x = ‘1‘ then
---if std_logic_vector(length_no) >= “0001” and std_logic_vector(length_no) <= “1001” then
-----数据帧数据由接收串行数据端移位入接收移位寄存器
---rsr(0) <= rxda ;
---rsr(7 downto 1) <= rsr(6 downto 0) ;
---parity <= parity xor rsr(7) ;
---elsif std_logic_vector(length_no) = “1010” then
---rbr <= rsr ; --接收移位寄存器数据进入接收缓冲器
---......
---end if ;
星星之火红
4楼-- · 2020-02-29 02:49
---接收器仿真波形如图6所示。




3 波特率发生器
---UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提出异步的串行数据。
---根据给定的晶振时钟和要求的波特率算出波特率分频数。
星星之火红
5楼-- · 2020-02-29 05:07
---波特率发生器仿真波形如图7所示。



三 小结
---通过波特率发生器、发送器和接收器模块的设计与仿真,能较容易地实现通用异步收发器总模块,对于收发的数据帧和发生的波特率时钟频率能较灵活地改变,而且硬件实现不需要很多资源,尤其能较灵活地嵌入到FPGA/CPLD的开发中。在EDA技术平台上进行设计、仿真与实现具有较好的优越性。
wmsk
6楼-- · 2020-02-29 08:13
清晰,详细。