概述
串口通信协议
串口通信(UART)是一种用两线(Rx【发送端】 、Tx【接收端】)实现的异步、全双工通信方式。
由于串口通信没有时钟信号线,由此而出现波特率(BaundRate),即接收和发送双方规定好相同的波特率;以此来保证传送的数据的正确性;
※波特率:一秒钟内传送的字节数目。
如下图1是串口通信协议(UART Protocol),分为五个阶段分别为:起始位(Start)、有效数据位(Vaild Data Bits)、奇偶校验(Parity)、停止位(Stop)、空闲位(Idle)。
以发送1byte数据 且具有偶校验和一位停止位为例:data:0x 1010_0000,奇偶校验位用result来表示。
在FPGA程序中先设置 parameter PARITY = 1'b0;
开始状态: 由于接收端(Rx)空闲时处于高电平转态,当要接收数据时(一般是有标志信号),接收端被拉低,并维持一个bit时间的低电平,接下来进入接收有效数据。
数据接送状态:数据的接收方式为,先接收最低位数据0(LSB),最后接收最高位数据(MSB)1.数据的接收在相同的波特率下进行;
奇偶校验位:奇偶校验是一种校验接收数据正确性的一种方式。其中,偶校验 :是要保证传送的一帧数据中出现 1的数目是偶数个。如果前面的数据是奇数个 1 时,则校验位则为1 ,以确保发送的一帧数据是偶数个 1。其实,本质上是 校验位和每个数据位分别 异或 的关系。以上面的例子为例,数据中出现 1 的个数是偶数个,即2个,所以奇偶校验位 result 为0;
具体的实现为:
第一步:result <= PARITY ^data[0];
第二步:result <=result ^ data[i]; //i = 1,2,3,..........7;
最后的到result 的值为 0;
当然,奇校验则相反,过程类似。
停止位:停止位为高电平,并维持一个bit的时间。
最后
以上就是调皮凉面为你收集整理的FPGA 之串口通信协议的全部内容,希望文章能够帮你解决FPGA 之串口通信协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复