本篇博客会讲解uart相关的概念,会在下一篇博客中介绍如何基于Verilog的uart实现。
一,UART的功能
发送:
1,将数据从并行转为串行
2,起始位和停止位的设计
3,增加奇偶校验位
接收
1,将数据从串行转为并行
2,剥离起始位和停止位
3,检查并剥离就校验位
二,UART发送数据
如上图所示,灰色部分数据可以为0或者1,每个数据bit的时间都是固定的,即是波特率。举了例子:比如 传输的波特率是1200bps,这就表示一个bit time是1/1200s。
起始位表示发送一次数据的开始,接收端检测到起始位后,吧后续的数据bit作为一次新的数据传输。
起始位后面一般跟随5-8位数据,先发送的数据bit是数据字的最低位(LSB)。
在有效数据的后面,往往跟着一位bit,这位叫做奇偶校验位。用来在一定程度上规避错误。而且这是可以选择的,是可以配置的。
停止位表示当前数据传输结束,接收端会很好据该bit是否位1进行判断,起作用是将下次传输和当前传输区分开。
上图中,共10bit数据,有效数据位7bit,故发送效率是70%。
三 UART接收数据
接收端检查停止位是否为1,如果不是1,则表示当前接收的数据出错。新数据的起始位可以直接在停止位之后出现,即接收端在起始位做同步,一些参数是可以配置的。
下篇博客介绍UART的verilog设计。