基于FPGA实现UART接口设计(异步串行通信)

时间就是金钱,技术就是饭碗,每天学习,每天积累,做好现在,不担心未来,加油!
1 简介
通用异步收发传输器(Universal Asynchronous
Receiver/Transmitter),通常称作UART,是一种异步收发传输器。是异步通信协议。特性:两根线,全双工,异步通信,速度较慢。所谓异步就是发送时钟域接收时钟不一致,说白了除了进行数据接收和发送以为,还要进行跨时钟域处理。UART是异步通信,因为它只有一根线就可以数据的通信。不像SPI,I2C等同步传输信号。所以串口的传输速度和其它协议的速度相比是比较慢的。通用异步收发器(UART)是辅助计算机与串行设备之间的通信,作为RS232通信接口的一个重要的部分,目前大部分的处理器都集成了UART,例如ZYNQ FPGA就集成了各种外设控制器,包括UART。RS232是物理层的电气接口要求。是一种接口标准。UART可以使用RS232物理层来通信。总的来说,对于一项通信任务,通信协议可以使用UART协议,而UART协议可以通过COM端口来实现硬件连线,此协议下的传输方式可以选用RS232或者RS485等。
2 数据格式
UART协议的数据格式如图1所示。
在这里插入图片描述
图1 串口数据格式
波特率:波特率,即每秒传输的位数(bit)。一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)。
起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
数据位:可以是5~8位逻辑”0”或”1”。一般情况下都选择8位,小端传输(即从LSB_D0端开始发送数据,而且是串行发送)。
校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 一般为1位。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
3逻辑设计
基于FPGA实现UART接口设计,就是根据UART协议时序图进行硬件语言编码(VerilogHDL或VHDL或SV)。主要分为3个模块,分别为接收模块、发送模块和波特率计算模块。
1)发送:发送低电平、发送8bit数据、发送高电平(如果有校验位则发送校验位再发送高电平),
2)接收:检测低电平,接收8bit数据,接收校验位(若有校验位),接收完成。
3)波特率:9600bps/s:表示1s信号可以传输9600bit的数据。波特率与FPGA时钟关系:总计数等于系统频率除以波特率。比如50m/9600=5208;
4 硬件验证
验证包括仿真验证和硬件验证,采取回环验证。发送引脚直接连接接收引脚,即发送什么数据就接收什么数据,此方法较为简单且通用。开发软件vivado 2019.1,串口调试助手等。
1)经过逻辑仿真接收与发送数据一致且数量一致,证明串口接口满足实际要求。
2)经过在线调试接收与发送数据一致且数量一致,证明串口接口满足实际要求,调试截图如图1所示。
在这里插入图片描述
图1
5 结束语
基于FPGA实现UART接口设计满足实际应用,波特率可以配置为9600,19200,115200等。如果需要UART源代码或者技术沟通请发邮件:[email protected]

猜你喜欢

转载自blog.csdn.net/m0_46498597/article/details/105700233