FPGA 之串口通信协议

串口通信协议

串口通信(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的时间。

阅读更多
想对作者说点什么? 我来说一句

STM32与FPGA实现串口通信

2018年01月03日 2.97MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭