一、定义
- 波特率是指单位时间(一般为一秒)内传输的(码元)符号个数
实例理解:
-
PC和开发板的uart通信项目中,使用串口调试助手设置PC的波特率为115200,对应的,我们为开发板FPGA芯片设计的波特率也应该为115200。
-
这里的115200单位为bit/s,指的是1s可以传输115200个bit,因此每个bit所占用的传输时间为1s÷115200bit=8.68us,此时假如开发板晶振使用的是50MHZ,则一个时钟周期为20ns,那么,传输一个bit在开发板上就需要计数8.68us=8680ns÷20ns=434次(这里就可以体现在verilog的描述中)。
-
以此类推,波特率为9600时,传输一个bit就需要104us(1/9600),也就是计数104000÷20=5200次。(在这里四舍五入了一下,用下面的实际计算法得到的应该为5208,也就是标准5208)
-
在实际计算中,可以直接使用晶振频率/波特率得到次数(1/晶振频率得到时钟周期,1/波特率得到传输1bit数据需要的时间,用后者除以前者就得到传输1bit需要计数的次数)
二、概念混析
- 比特率是真正的每秒传输的bit数,即单位为bit/s,波特率单位为baud,特殊情况下为bit/s(在串口通信中,1个码元就是1bit,所以此处波特率单位为bps)。
实例理解:
- 数据传输速率为120字符/秒(波特),1字符包含8bit时,其比特率应该为120×8=960bps
三、波特率模块
-
收到波特率模块开始工作的使能信号后,cnt开始计数,计数到434时cnt归零重新开始计数,也就是开始传输第二个bit
-
波特率模块要产生一个标志信号,该标志信号是在计数0-434的中间位置为1(verilog中于217赋值为1),也就是说,在传输1bit数据的那段时间的正中,这个位置用于采样最合适不过,因为在这一个位置,所传输的这个bit的信号一定是最稳定的
-
与接收模块相联系,每当检测到此标志信号的时候就可以将与PC相连的端口(也就是连到管脚的接收数据端口)那里处理亚稳态之后的数据送给接受数据寄存器,此时就是串转并了。