姓名:赵宗明
学号:19021211230
【嵌牛导读】:波特率 串口通信 FPGA
【嵌牛鼻子】:数据传输时总会考虑到数据传输的波特率,以下就以FPGA为例解释一下波特率以及波特率的产生。
【嵌牛提问】:波特率是什么?波特率该如何产生呢?
【嵌牛正文】:
波特率是什么:
波特率,查阅各种资料,总结一下就是每秒传输二进制的位数。比如波特率为115200,则表示1s传输二进制的位数为115200位。我们在进行串口通信时一帧数据为8bit,但是串口发送一帧的数据的格式为:起始位(1bit)+8bit数据+停止位(1bit),所以串口发送一帧数据其实发送了10bit的数据,所以1s就发送11520个字节,即有效传输速率为11.5KBytes每秒。
以产生波特率的方式来理解波特率:
该设计利用了50M系统时钟的FPGA来产生115200的波特率,在产生波特率之前,我们应该需知道:
50M系统时钟:所谓50M系统时钟可以理解为频率为50M,周期为1/50_000_000的方波。
以50M时钟的计数所需时间:假如我们在该方波的每个上升沿计一个数,则计50_000_000个数所需的时间为1s,所以计一个数所需的时间为1/50_000_000。
115200波特率下发送一位数据所需要的时间为:1/115200=8.68us。
传输一位所需的计数值为:8.68/(1/50)=434.。50M时钟115200波特率下计434数就会发送一位数据。
我们利用采样定理在计数值的一半时(217)进行数据的传输,数据会更加稳定。
所以我们在50M时钟下每计数217传输一位数据,就实现了115200波特率。最终实现结果如下所示:
在上图中最下面的波形就是代表波特率波形,在每个脉冲处传输一位数据。
在其他时钟频率和波特率下计算方法一样。