UART系列文章先介绍UART的基础知识,然后自己动手写Verilog代码实现这个接口并进行测试,最后介绍Xilinx的AXI-uartlite IP核。本系列文章编写时参考了乔庐峰老师编写的VerilogHDL教材第15章和Xilinx官方文档pg142-axi-uartlite。
一、UART简介
UART是FPGA工程师在工作中会接触到的最常见的接口之一。它的全名是Universal Asynchronous Receiver/Transmitter,通用异步收发器。为什么叫异步收发器呢?因为收发双发通信时不需要严格的时钟同步。还记得前面讲的SPI接口吗,SPI的数据通信必须带着时钟一起,是一种同步通信协议,而UART的数据通信是不需要带着时钟的,是一种异步通信协议。就是因为这个异步,UART的通信机制比SPI稍微复杂,不同设备之间的低速通信使用UART协议时,它们会以字符的方式进行数据传递。
二、UART字符格式
UART采用的是一种起止式的异步通信协议,所谓起止式就是传输一个字符总是以起始位开始,以停止位结束,特点是一个字符一个字符地传输,字符之间没有固定的时间间隔要求。这样做的好处是每一个字符收发双方都可以重新建立同步,哪怕双方的时钟频率略有偏差也没关系,以此保证异步通信的可靠性。下图给出UART的字符格式。

起始位