一种基于FPGA的RS422通用串口通信方法技术

技术编号:37805397 阅读:24 留言:0更新日期:2023-06-09 09:35
本发明专利技术提供了一种基于FPGA的RS422通用串口通信方法,包括串口发送和串口接收,其中,串口发送:利用写发送FIFO时钟和写发送FIFO使能信号将待发送数据写入发送FIFO中,将模块波特率、数据长度、校验方式、帧头帧尾作为输入数据,用16倍波特率时钟进行发送时钟计数,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据;串口接收。本发明专利技术可大幅提高串口通信兼容性,使得模块波特率、数据长度、校验方式、帧头帧尾可根据实际项目不同进行配置,可以兼容不同开发平台,如通用的Quartus II和ISE平台,同时可封装成IP核使源代码不可见。代码不可见。代码不可见。

【技术实现步骤摘要】
一种基于FPGA的RS422通用串口通信方法


[0001]本专利技术涉及一种基于FPGA的RS422通用串口通信方法。

技术介绍

[0002]现有RS422串口通信模块兼容性不好,更换参数或更换平台后需要重新设计和调试,典型如模块波特率、数据长度、校验方式、帧头帧尾无法根据实际项目不同进行配置,只能在实际项目中以源代码可见的方式进行修改,非常麻烦。

技术实现思路

[0003]为解决上述技术问题,本专利技术提供了一种基于FPGA的RS422通用串口通信方法,该基于FPGA的RS422通用串口通信方法可大幅提高串口通信兼容性,使得模块波特率、数据长度、校验方式、帧头帧尾可根据实际项目不同进行配置,同时可封装成IP核使源代码不可见。
[0004]本专利技术通过以下技术方案得以实现。
[0005]本专利技术提供的一种基于FPGA的RS422通用串口通信方法,包括串口发送和串口接收,其中,
[0006]串口发送:利用写发送FIFO时钟和写发送FIFO使能信号将待发送数据写入发送FIFO中,将模块波特率、数据长度、校验方式、帧头帧尾作为输入数据,用16倍波特率时钟进行发送时钟计数,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据;
[0007]串口接收:利用16倍波特率时钟采集串口数据输入,在一个发送周期中分别将前后两个字节数据中的1个字节数据作为待接收数据、另1个字节数据作为参数数据,直至接收完毕,将参数数据解析为模块波特率、数据长度、校验方式、帧头帧尾,将待接收数据转发处理。
[0008]所述步骤串口发送中,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据为:
[0009]用16倍波特率时钟进行发送时钟计数,发送输入数据起始位,并在计数为8时读取发送FIFO中的1个字节数据;计数满16次时,状态机转至发送输入数据的状态,由此交错直至发送完毕。
[0010]所述步骤串口接收中,一个发送周期中分别将前后两个字节数据中的1个字节数据作为待接收数据、另1个字节数据作为参数数据为:
[0011]用16倍波特率时钟进行接收时钟计数,接收输入数据起始位,并在计数为8时接收得到1个字节数据作为待接收数据;计数满16次时,接收得到另1个字节数据作为参数数据,由此交错直至发送完毕。。
[0012]所述串口接收中,用16倍波特率时钟上升沿接收数据。
[0013]所述接收得到的数据利用移位方式进行保存。
[0014]所述计数为8时,发送输入数据停止位。
[0015]所述模块波特率、数据长度、校验方式、帧头帧尾按预定顺序及长度依次排列。
[0016]所述一个发送周期,收发一帧数据。
[0017]本专利技术的有益效果在于:可大幅提高串口通信兼容性,使得模块波特率、数据长度、校验方式、帧头帧尾可根据实际项目不同进行配置,可以兼容不同开发平台,如通用的Quartus II和ISE平台,同时可封装成IP核使源代码不可见。
附图说明
[0018]图1是本专利技术至少一种实施方式中串口接收的流程示意图;
[0019]图2是本专利技术至少一种实施方式中串口发送的流程示意图。
具体实施方式
[0020]下面进一步描述本专利技术的技术方案,但要求保护的范围并不局限于所述。
[0021]实施例1
[0022]如图1、图2所示的一种基于FPGA的RS422通用串口通信方法,包括串口发送和串口接收,其中,
[0023]串口发送:利用写发送FIFO时钟和写发送FIFO使能信号将待发送数据写入发送FIFO中,将模块波特率、数据长度、校验方式、帧头帧尾作为输入数据,用16倍波特率时钟进行发送时钟计数,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据;
[0024]串口接收:利用16倍波特率时钟采集串口数据输入,在一个发送周期中分别将前后两个字节数据中的1个字节数据作为待接收数据、另1个字节数据作为参数数据,直至接收完毕,将参数数据解析为模块波特率、数据长度、校验方式、帧头帧尾,将待接收数据转发处理。
[0025]实施例2
[0026]基于实施例1,所述步骤串口发送中,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据为:
[0027]用16倍波特率时钟进行发送时钟计数,发送输入数据起始位,并在计数为8时读取发送FIFO中的1个字节数据;计数满16次时,状态机转至发送输入数据的状态,由此交错直至发送完毕。
[0028]实施例3
[0029]基于实施例1,所述步骤串口接收中,一个发送周期中分别将前后两个字节数据中的1个字节数据作为待接收数据、另1个字节数据作为参数数据为:
[0030]用16倍波特率时钟进行接收时钟计数,接收输入数据起始位,并在计数为8时接收得到1个字节数据作为待接收数据;计数满16次时,接收得到另1个字节数据作为参数数据,由此交错直至发送完毕。。
[0031]实施例4
[0032]基于实施例1,所述串口接收中,用16倍波特率时钟上升沿接收数据。
[0033]实施例5
[0034]基于实施例3,所述接收得到的数据利用移位方式进行保存。
[0035]实施例6
[0036]基于实施例2,所述计数为8时,发送输入数据停止位。
[0037]实施例7
[0038]基于实施例1,所述模块波特率、数据长度、校验方式、帧头帧尾按预定顺序及长度依次排列。
[0039]实施例8
[0040]基于实施例1,所述一个发送周期,收发一帧数据。
[0041]实施例9
[0042]基于上述实施例,以16倍波特率,8位数据为一个字节,一帧数据12字节为例。
[0043]串口接收模块加电后,自动与控制计算机建立通信。串口接收模块利用16倍波特率时钟上升沿采集UART串口串行数据输入,当接收状态处于空闲状态且串行数据输入为下降沿时,接收状态转至起始位接收状态,并进行接收时钟计数,当接收计数满16次时,接收状态转至数据接收状态,并进行接收时钟计数和位计数,当接收时钟满8次时,采集串行数据输入值,利用移位方式进行保存;当接收时钟计数满16次,位计数满8次时,接收状态转至接收停止位数据,同时将接收的有效数据向串口接收FIFO中写入,并进行接收数据字节计数和接收时钟计数,直至接收时钟计数满16次时,接收状态转至空闲状态,完成1个字节数据接收;当接收字节计数满12时,表明接收一帧数据完成,产生接收一帧数据完成标志。
[0044]串口发送模块加电后,自动与控制计算机建立通信。串口发送模块利用写发送FIFO时钟和写发送FIFO使能信号将数据写入发送FIFO中;然后当采集到数据发送标志的上升沿时,使状态机置于发送起始位状态,利用16倍波特率时钟进行发送时钟计数,并发送起始位,并在计数为8时读取发送FIFO的1个字节数据;计数满1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的RS422通用串口通信方法,其特征在于:包括串口发送和串口接收,其中,串口发送:利用写发送FIFO时钟和写发送FIFO使能信号将待发送数据写入发送FIFO中,将模块波特率、数据长度、校验方式、帧头帧尾作为输入数据,用16倍波特率时钟进行发送时钟计数,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据;串口接收:利用16倍波特率时钟采集串口数据输入,在一个发送周期中分别将前后两个字节数据中的1个字节数据作为待接收数据、另1个字节数据作为参数数据,直至接收完毕,将参数数据解析为模块波特率、数据长度、校验方式、帧头帧尾,将待接收数据转发处理。2.如权利要求1所述的基于FPGA的RS422通用串口通信方法,其特征在于:所述步骤串口发送中,在一个发送周期中分别发送FIFO中的1个字节数据和输入数据中的1个字节数据为:用16倍波特率时钟进行发送时钟计数,发送输入数据起始位,并在计数为8时读取发送FIFO中的1个字节数据;计数满16次时,状态机转至发送输入数据的状态,由此交错直至发送完毕。3.如权利要求1所述的基于FPG...

【专利技术属性】
技术研发人员:张毅郑瀚蔡佳灿
申请(专利权)人:贵州航天南海科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1