基于 FPGA 的 UART 设计与实现0 引言通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)可以和各种标准串行接口,如 RS 232 和 RS 485 等进行全双工异步通信,具有传输距离远、成本低、可靠性高等优点。一般 UART 由专用芯片如 8250,16450 来实现,但专用芯片引脚都较多,内含许多辅助功能,在实际使用时往往只需要用到 UART 的基本功能,使用专用芯片会造成资源浪费和成本提高。一般而言 UART 和外界通信只需要两条信号线 RXD 和 TXD,其中 RXD 是 UART 的接收端,TXD是 UART 的发送端,接收与发送是全双工形式。由于可编程逻辑器件技术的快速进展,FPGA 的功能日益强大,其开发周期短、可重复编程的优点也越来越明显,在 FPGA 芯片上集成 UART 功能模块并和其他模块组合可以很方便地实现一个能与其他设备进行串行通信的片上系统.FPGA(Field Programmable Gate Array)现场可编程门阵列在数字电路的设计中已经被广泛使用。这种设计方式可以将以前需要多块集成芯片的电路设计到一块大模块可编程逻辑器件中,大大减少了电路板的尺寸,增强了系统的可靠性和设计的灵活性。1 UART 功能设计1.1UART 的工作原理异步通信时,UART 发送/接收数据的传输格式表 1 所示,一个字符单位由开始位、数据位、停止位组成。表 1 UART 发送/接收数据的传输格式STARTD0D1D2D3D4D5D6D7PSTOP起 始位数 据 位较验位停止位异步通信的一帧传输经历以下步骤:(1)无传输。发送方连续发送信号,处于信息“1"状态.(2)起始传输.发送方在任何时刻将传号变成空号,即“1”跳变到“O”,并持续 1 位时间表明发送方开始传输数据.而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。(3)奇偶传输。数据传输之后是可供选择的奇偶位发送或接收.(4)停止传输.最后是发送或接收的停止位,其状态恒为“1"。发送或接收一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是 8 个数据位,然后是停止位逻辑“1”位,数据线空闲时为高或“1”状态.起始位和停止位的作用是使接收器能把局部时钟与每个新开始接收的字符再同步.异步通信没有可参照的时钟信号,发送器可以随时发送数据,任何时刻串行数据到来时,接收器必须准确地发现起始位下降沿的出现时间,从而正确采样数据.设计时可参考由专用芯片实现的 UART 的功能并进行一定精简,如可以用 FPGA 的片内 RAM替代 UART 的 FIFO,不用单独在...