CN109408426A - 一种灵活通用的串行通信方法及系统 - Google Patents

一种灵活通用的串行通信方法及系统 Download PDF

Info

Publication number
CN109408426A
CN109408426A CN201811237022.4A CN201811237022A CN109408426A CN 109408426 A CN109408426 A CN 109408426A CN 201811237022 A CN201811237022 A CN 201811237022A CN 109408426 A CN109408426 A CN 109408426A
Authority
CN
China
Prior art keywords
data
fifo
serial
byte
agile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811237022.4A
Other languages
English (en)
Other versions
CN109408426B (zh
Inventor
冯硕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Jiuzhou Electric Group Co Ltd
Original Assignee
Sichuan Jiuzhou Electric Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Jiuzhou Electric Group Co Ltd filed Critical Sichuan Jiuzhou Electric Group Co Ltd
Priority to CN201811237022.4A priority Critical patent/CN109408426B/zh
Publication of CN109408426A publication Critical patent/CN109408426A/zh
Application granted granted Critical
Publication of CN109408426B publication Critical patent/CN109408426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及串行通信技术领域,公开了一种灵活通用的串行通信方法及系统。包括以下过程:通信参数配置单元根据串行数据特征,自动配置与其匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收FIFO操作;采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;通过数据发送FIFO,将并行进来的串行数据发送给收发器。本发明的技术方案,首先可以缓存大量数据,节约了FPGA资源。其次,采用字节延时算法,可自行判断接收串行数据通信中数据帧的长度,适应不同类型的接收串行通信报文协议,达到串行通信模块的通用、易用和简化实现。

Description

一种灵活通用的串行通信方法及系统
技术领域
本发明涉及串行通信技术领域,特别是一种灵活通用的串行通信方法及系统。
背景技术
当前基于FPGA实现异步串行通信模块在接收和发送数据时,造成FPGA资源的浪费,增加了模块的调试周期;且需通过修改软件功能来适应不同类型通信报文协议,使得模块的通用性不强,且结构复杂。
发明内容
本发明所要解决的技术问题是:针对上述存在的问题,提供了一种灵活通用的串行通信方法及系统。
本发明采用的技术方案如下:一种灵活通用的串行通信方法,具体包括以下过程:
通信参数配置单元根据串行数据特征,自动配置与其匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;
接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收FIFO操作;
采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
通过数据发送FIFO,将并行进来的串行数据发送给收发器。
进一步的,所述处理控制器进行数据接收FIFO的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束。
进一步的,所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时,串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
进一步的,所述处理控制器进行数据发送FIFO的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
进一步的,所述发送串行数据过程中,首先发送的是最高有效位。
本发明还公开了一种灵活通用的串行通信系统,具体包括:
通信参数配置单元,用于通过对外并行接口供处理控制器读写配置数据的参数;
数据接收及处理单元,用于接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收操作;
处理控制器,用于采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
数据发送及处理单元,用于通过数据发送FIFO将并行进来的串行数据发送给收发器。
进一步的,所述收发器为SM 490型RS422/485收发器。
进一步的,所述处理控制器进行数据接收的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束。
进一步的,所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
进一步的,所述处理控制器进行数据发送的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
与现有技术相比,采用上述技术方案的有益效果为:当采用大容量FIFO缓存收发技术,基于FPGA实现异步串行通信模块在接收和发送数据时,可以缓存大量的通信数据,不会将先前接收的数据覆盖,外部处理控制器可以在处理完其它紧要任务后,再来进行串行数据的读取和后续处理,而不必担心已接收的串行数据会丢掉,提高了接口传输数据的效率和准确性,极大地节约了FPGA资源。其次,字节节延时算法为等待时间超过接收一个字节的时间,判定已经完成对一帧完整数据全部字节的接收,使数据接收结束;使得模块在接收数据字节时,无需根据通信报文协议规定的字节长度来编写、修改变量与其相匹配;可自适应不同类型的接收报文内容中数据字节个数;达到通信模块的通用、易用和简化实现。
附图说明
图1是本发明灵活通用的串行通信收发原理框图。
图2是本发明串行通信数据接收的具体工作流程图。
图3是本发明字节延时算法与传统算法对比流程示意图。
图4是本发明串行通信数据发送的具体工作流程图。
具体实施方式
下面结合附图对本发明做进一步描述。
本实施例的串行通信数据速率为375kpbs,系统提供时钟频率为40Mhz,实现串行数据的收发。可通过外部处理控制器对本模块进行各种通信参数的动态配置,以适应不同的通信速率、时钟模式。配置完毕后开始串行数据的收发过程。如图1所示,具体的,一种灵活通用的串行通信方法,包括以下过程:
通信参数配置单元根据串行数据特征,自动配置与其匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;其中对外并行接口单元负责与外部处理控制器进行数据交互;处理控制器可以是单片机、DSP等;
接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收FIFO操作;
采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;其中,数据接收FIFO和数据发送FIFO深度均设定为2048字节,可以缓存大量的通信数据,而不会将先前收到的数据覆盖,外部处理控制器可以在处理完其它紧要任务后,再来进行串行数据的读取和后续处理,而不必担心已接收的串行数据会丢掉;
通过数据发送FIFO将并行进来的串行数据发送给收发器,完成对数据发送的处理。
优选地,如图2所示,所述处理控制器进行数据接收FIFO的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;当收到第一个数据位‘0’时,标志一个数据帧的开始,但是在一个数据帧中间也有可能包括一个低电平位,系统有可能默认为这个低电平为起始位,这样就会产生一个“伪起始位”。所以,在数据接收的过程中还要包括对数据起始位的搜索判断。在判断起始位为低电平后,触发接收过程,依次进入数据位读取状态、读取停止状态、准备完成接收和停止位读取状态。
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,是否收到枕头AAH AAH,如果收到,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置,接收到的字节数加1。
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束。
在传统接收串行数据算法即每当采样数据构成一个完整的字节时,将数据存入“数据接收FIFO”,同时对串口数据中的每个特殊字段进行协议解析,直到检索到串口数据总长度字节后,并且还要判断已收到的字节总数是否达到串口数据总长度值。
如图3所示,传统的异步通信中,对接收的数据,判断是否收到数据总长度字节,如果是判断是否收全所有通信数据,来判断置命令数据接收完整标志。优选地,本申请的字节延时算法是判断等待时间是否超过接收一个字节的时间,具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。数据接收完毕,中断标志信号int_rxd及时中断处理控制器,通知外部控制器读取数据进行处理,而不必每接收到1个字节就中断一次,避免了主程序被频繁中断。
优选地,如图4所示,所述处理控制器进行数据发送FIFO的具体过程为:
步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。所述发送串行数据过程中,首先发送的是最高有效位(MSB)。上述数据发送过程,对主程序而言,就是向一特定地址写入所有需要发送的数据,再写入一个启动发送命令即可自动完成全部数据的发送,无需进行发送流程控制。
本发明还公开了与上述灵活通用的串行通信方法对应的一种灵活通用的串行通信系统.
本发明的灵活通用的串行通信方法及系统,可以采用了XILINX公司的EDA编译平台ISE14.6。用VHDL语言完成基于字节延时算法的异步串行通信接口模块的编写,通过了XST程序综合,然后用ISim软件完成了模块的仿真。在建立测试平台时,建立模拟从SM490型RS422/485信号收发器方数据发送/接收的模块与本系统进行通信验证,在仿真软件的辅助分析下,得到了正确的结果。仿真通过后,将整个设计工程文件经综合后的EDIF文件提交给ISE进行布局、布线后,把生成的MCS文件下载到FPGA芯片XCF32PFS48C中运行,运用ChipScope在线调试软件,采集的实际结果与在ISim中仿真结果一致。该方法/系统能达到要求实现的性能,具有很强的实用性。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。

Claims (10)

1.一种灵活通用的串行通信方法,其特征在于,具体包括以下过程:
通信参数配置单元根据串行数据特征,自动配置与其匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;
接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收FIFO操作;
采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
通过数据发送FIFO,将并行进来的串行数据发送给收发器。
2.如权利要求1所述的灵活通用的串行通信方法,其特征在于,具体包括以下过程:
所述处理控制器进行数据接收FIFO的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束。
3.如权利要求2所述的灵活通用的串行通信方法,其特征在于,所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时,串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,字节延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
4.如权利要求3所述的灵活通用的串行通信方法,其特征在于,所述处理控制器进行数据发送FIFO的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
5.如权利要求4所述的灵活通用的串行通信方法,其特征在于,所述发送串行数据过程中,首先发送的是最高有效位。
6.一种灵活通用的串行通信系统,其特征在于,具体包括:
通信参数配置单元,用于可自适应接收的串行数据特征,自动配置与其相匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;
数据接收及处理单元,用于接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收操作;
处理控制器,用于采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
数据发送及处理单元,用于通过数据发送FIFO将并行进来的串行数据发送给收发器。
7.如权利要求6所述的灵活通用的串行通信系统,其特征在于,所述收发器为SM 490型RS422/485收发器。
8.如权利要求6所述的灵活通用的串行通信系统,其特征在于,所述处理控制器进行数据接收的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束。
9.如权利要求8所述的灵活通用的串行通信系统,其特征在于,所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
10.如权利要求9所述的灵活通用的串行通信系统,其特征在于,所述处理控制器进行数据发送的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
CN201811237022.4A 2018-10-23 2018-10-23 一种灵活通用的串行通信方法及系统 Active CN109408426B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811237022.4A CN109408426B (zh) 2018-10-23 2018-10-23 一种灵活通用的串行通信方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811237022.4A CN109408426B (zh) 2018-10-23 2018-10-23 一种灵活通用的串行通信方法及系统

Publications (2)

Publication Number Publication Date
CN109408426A true CN109408426A (zh) 2019-03-01
CN109408426B CN109408426B (zh) 2020-06-26

Family

ID=65468400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811237022.4A Active CN109408426B (zh) 2018-10-23 2018-10-23 一种灵活通用的串行通信方法及系统

Country Status (1)

Country Link
CN (1) CN109408426B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339020A (zh) * 2020-02-25 2020-06-26 东莞市峰谷科技有限公司 一种串口数据的收发方法
CN111352888A (zh) * 2020-02-28 2020-06-30 北京铁科英迈技术有限公司 异步收发器的中断信号产生方法及装置
CN114168517A (zh) * 2020-09-11 2022-03-11 北京机械设备研究所 一种通用异步串行数据解析方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908031A (zh) * 2010-07-23 2010-12-08 四川九洲电器集团有限责任公司 一种基于fpga搭建的增强型串口
CN202870808U (zh) * 2012-07-04 2013-04-10 四川九洲电器集团有限责任公司 一种spi串口模块的fpga实现装置
CN104809094A (zh) * 2015-05-25 2015-07-29 中国电子科技集团公司第四十七研究所 Spi控制器及其通信方法
CN106933772A (zh) * 2017-02-17 2017-07-07 西安航空制动科技有限公司 基于uart ip核的sci通讯方法
CN107135200A (zh) * 2017-03-29 2017-09-05 中国航空无线电电子研究所 基于fpga的高速串行总线数据发送方法
CN107957971A (zh) * 2017-11-02 2018-04-24 桂林电子科技大学 一种基于fpga的多处理器之间的通信系统及通信方法
CN108197042A (zh) * 2017-12-20 2018-06-22 北京控制工程研究所 一种基于fpga的通用异步串口及其应答方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908031A (zh) * 2010-07-23 2010-12-08 四川九洲电器集团有限责任公司 一种基于fpga搭建的增强型串口
CN202870808U (zh) * 2012-07-04 2013-04-10 四川九洲电器集团有限责任公司 一种spi串口模块的fpga实现装置
CN104809094A (zh) * 2015-05-25 2015-07-29 中国电子科技集团公司第四十七研究所 Spi控制器及其通信方法
CN106933772A (zh) * 2017-02-17 2017-07-07 西安航空制动科技有限公司 基于uart ip核的sci通讯方法
CN107135200A (zh) * 2017-03-29 2017-09-05 中国航空无线电电子研究所 基于fpga的高速串行总线数据发送方法
CN107957971A (zh) * 2017-11-02 2018-04-24 桂林电子科技大学 一种基于fpga的多处理器之间的通信系统及通信方法
CN108197042A (zh) * 2017-12-20 2018-06-22 北京控制工程研究所 一种基于fpga的通用异步串口及其应答方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111339020A (zh) * 2020-02-25 2020-06-26 东莞市峰谷科技有限公司 一种串口数据的收发方法
CN111352888A (zh) * 2020-02-28 2020-06-30 北京铁科英迈技术有限公司 异步收发器的中断信号产生方法及装置
CN114168517A (zh) * 2020-09-11 2022-03-11 北京机械设备研究所 一种通用异步串行数据解析方法及装置
CN114168517B (zh) * 2020-09-11 2024-01-16 北京机械设备研究所 一种通用异步串行数据解析方法及装置

Also Published As

Publication number Publication date
CN109408426B (zh) 2020-06-26

Similar Documents

Publication Publication Date Title
CN202870808U (zh) 一种spi串口模块的fpga实现装置
CN109408426A (zh) 一种灵活通用的串行通信方法及系统
CN109412914A (zh) 流数据与axi接口通信装置
CN105183557B (zh) 一种基于硬件的可配置的数据压缩系统
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
CN101545933A (zh) 用于雷电探测的远程智能升级装置及其实现方法
CN110471872A (zh) 一种基于zynq芯片实现m-lvds总线数据交互系统和方法
CN107038135A (zh) 一种串口波特率自适应系统和方法
CN108932207A (zh) 带有缓存区的sdio-wifi数据传输方法及系统
CN106921665A (zh) 一种报文处理方法及网络设备
CN107885517A (zh) 嵌入式系统处理器程序加载电路
CN105472377B (zh) 电视机调试方法及装置
CN110320853A (zh) 一种plc数据采集分析方法及系统
CN110445585A (zh) 基于ppp数据帧组帧和解帧硬件加速器
CN102118361A (zh) 一种基于网络协议的数据传输控制方法和装置
CN114723023A (zh) 数据通信方法及系统、脉冲神经网络运算系统
CN103107862B (zh) 逻辑器件及其mdio数据发送方法
CN107402874A (zh) 一种存储设备性能统计系统和方法
CN108063809B (zh) 机器设备数据采集方法以及采集系统
CN114138297A (zh) 一种基于zynq的fpga雷达数据调试系统及调试方法
CN103838694B (zh) 一种fpga高速读取usb接口数据的方法
CN113032320A (zh) 一种异步串口通信波特率自适应方法
CN110297785A (zh) 一种基于fpga的金融数据流控装置和流控方法
CN102790663B (zh) 一种应用于vlbi硬件相关处理机的全硬件网络接口
CN117195785A (zh) 一种总线验证方法及验证知识产权核系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant