基于FPGA的uart协议时序分析和实现

背景:在FPGA应用中常常会有一种情况,我们需要将PC端的一些数据送给FPGA,这些数据可以是作为debug的参数,或者一些控制FPGA的指令,或者作为运算的数据

1:波特率:要想通过uart协议进行数据传输,首先要确定的就是波特率,波特率即是单位时间传输的比特数,常见的波特率有9600、19200、38400等等。一般情况下PC端和FPGA端要保证接受和发送的波特率一样才能正确地传递数据,同时只有确定了波特率我们才能确定比特计数器的最大值。

2:uart协议时序:uart协议包含两根数据线,rx线(接受数据线)和tx线(发送数据线)。空闲状态为高电平,开始位是将电平拉低(占一个比特位),后面跟着八比特的数据位(这里要注意uart先传输的是低位数据),最后结束位将电平拉高(占一个比特)。(也可以在结束位之前占用一比特的位置来表示校验位,不过实际应用中一般不会用到)

3:通过串口助手发送数据:以文件形式发送数据的话,默认是按照ASCII码的形式发送的,所以我们在FPGA中要想操作这些数的话,还要进行译码

通过signal_tap抓取我们可以看到数据是正确的
在这里插入图片描述
在这里插入图片描述
通过tx线再次将数据传回PC端,也可以看到数据是正确的
在这里插入图片描述
附上代码:CSDN下载地址
不想在CSDN下载的也可以直接私聊我发你

猜你喜欢

转载自blog.csdn.net/jiyishizhe/article/details/103252932