我是靠谱客的博主 调皮凉面,最近开发中收集的这篇文章主要介绍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的时间。

最后

以上就是调皮凉面为你收集整理的FPGA 之串口通信协议的全部内容,希望文章能够帮你解决FPGA 之串口通信协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部