CN109408426B - 一种灵活通用的串行通信方法及系统 - Google Patents
一种灵活通用的串行通信方法及系统 Download PDFInfo
- Publication number
- CN109408426B CN109408426B CN201811237022.4A CN201811237022A CN109408426B CN 109408426 B CN109408426 B CN 109408426B CN 201811237022 A CN201811237022 A CN 201811237022A CN 109408426 B CN109408426 B CN 109408426B
- Authority
- CN
- China
- Prior art keywords
- data
- receiving
- fifo
- serial
- byte
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus 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 (6)
1.一种灵活通用的串行通信方法,其特征在于,具体包括以下过程:
通信参数配置单元根据串行数据特征,自动配置与其匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;
接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收FIFO操作;
采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
通过数据发送FIFO,将并行进来的串行数据发送给收发器;
所述处理控制器进行数据接收FIFO的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束;
所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时,串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,字节延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
2.如权利要求1所述的灵活通用的串行通信方法,其特征在于,所述处理控制器进行数据发送FIFO的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
3.如权利要求2所述的灵活通用的串行通信方法,其特征在于,所述发送串行数据过程中,首先发送的是最高有效位。
4.一种灵活通用的串行通信系统,其特征在于,具体包括:
通信参数配置单元,用于可自适应接收的串行数据特征,自动配置与其相匹配的参数设置,并通过对外并行接口供处理控制器读写配置数据的参数;
数据接收及处理单元,用于接收收发器的串行数据,进行通信命令解析,及产生中断信号并通知处理控制器进行数据接收操作;
处理控制器,用于采集接收数据的位宽,对数据接收FIFO或者数据发送FIFO进行切换;
数据发送及处理单元,用于通过数据发送FIFO将并行进来的串行数据发送给收发器;所述处理控制器进行数据接收的具体过程为:
搜索数据的起始位置,低电平为有效,高电平为等待接收状态;
采样数据构成一个完整字节时,开始将收到的数据存入数据接收FIFO,同时对串口数据中的帧头字节进行校验,校验成功,继续将收到的数据存入数据接收FIFO中相应的位置;
通过字节延时算法来判断,如果等待时间超过接收一个字节的时间,则判定已经完成对一帧完整数据全部字节的接收,数据接收结束;
所述等待时间超过接收一个字节的时间的具体判断过程为:
当收到一个完整字节数时,计数器开始以频率40MHz做加法计数,如果计数值小于1250时串行数据线由“高”变“低”,停止计数并清零等待,当收到一个完整字节数时,启动计数器计数,以此循环;如果计数器计数值超过1250时,延时标志启动,关闭接收逻辑,并将逻辑全部恢复初始状态。
5.如权利要求4所述的灵活通用的串行通信系统,其特征在于,所述收发器为SM 490型RS422/485收发器。
6.如权利要求5所述的灵活通用的串行通信系统,其特征在于,所述处理控制器进行数据发送的具体过程为:步骤a、处理控制器将需要发送的所有数据依次写入数据发送FIFO地址中;再对另一个地址单元写入启动发送命令后,将数据提取到发送缓存并发送串行数据;步骤b、同时实时判定数据发送数据发送FIFO是否为空,若不为空则立即取出数据进入步骤a。
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 CN109408426A (zh) | 2019-03-01 |
CN109408426B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339020A (zh) * | 2020-02-25 | 2020-06-26 | 东莞市峰谷科技有限公司 | 一种串口数据的收发方法 |
CN111352888A (zh) * | 2020-02-28 | 2020-06-30 | 北京铁科英迈技术有限公司 | 异步收发器的中断信号产生方法及装置 |
CN114168517B (zh) * | 2020-09-11 | 2024-01-16 | 北京机械设备研究所 | 一种通用异步串行数据解析方法及装置 |
Citations (5)
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通讯方法 |
CN107957971A (zh) * | 2017-11-02 | 2018-04-24 | 桂林电子科技大学 | 一种基于fpga的多处理器之间的通信系统及通信方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107135200A (zh) * | 2017-03-29 | 2017-09-05 | 中国航空无线电电子研究所 | 基于fpga的高速串行总线数据发送方法 |
CN108197042B (zh) * | 2017-12-20 | 2020-05-12 | 北京控制工程研究所 | 一种基于fpga的通用异步串口及其应答方法 |
-
2018
- 2018-10-23 CN CN201811237022.4A patent/CN109408426B/zh active Active
Patent Citations (5)
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通讯方法 |
CN107957971A (zh) * | 2017-11-02 | 2018-04-24 | 桂林电子科技大学 | 一种基于fpga的多处理器之间的通信系统及通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109408426A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408426B (zh) | 一种灵活通用的串行通信方法及系统 | |
CN101908031B (zh) | 一种基于fpga搭建的增强型串口 | |
CN106874224B (zh) | 自动搬运且适应器件的多线SPI-Flash控制器 | |
CN108197042B (zh) | 一种基于fpga的通用异步串口及其应答方法 | |
CN107741915B (zh) | 一种基于sdio接口的fpga板级通信装置及通信方法 | |
CN105183557B (zh) | 一种基于硬件的可配置的数据压缩系统 | |
CN110059042A (zh) | 一种uart设备的数据dma传输方法 | |
CN104965676B (zh) | 一种随机存取存储器的访问方法、装置及控制芯片 | |
US8626963B2 (en) | Packet based data transfer system and method for host-slave interface | |
CN112565036B (zh) | 数据传输方法、装置、存储介质及通信系统 | |
CN114297962B (zh) | 一种自适应接口fpga软硬件协同仿真加速系统 | |
KR100230451B1 (ko) | 디지털 신호처리 프로세서의 비동기방식 직렬데이터 송수신 방법 | |
CN113485672B (zh) | 基于fifo存储器的信息生成方法、装置、设备及介质 | |
CN103838694B (zh) | 一种fpga高速读取usb接口数据的方法 | |
CN111352888A (zh) | 异步收发器的中断信号产生方法及装置 | |
CN109684152B (zh) | 一种risc-v处理器指令下载方法及其装置 | |
KR20090067110A (ko) | 직렬 인터페이스 대용량 저장 디바이스들에 대한 데이터 전송 레이트 조절 | |
US7536608B2 (en) | System and method for using network interface card reset pin as indication of lock loss of a phase locked loop and brownout condition | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
CN116303173A (zh) | 减少rdma引擎片上缓存的方法、装置、系统及芯片 | |
CN114416019A (zh) | 一种数据管理方法及系统 | |
CN107870885A (zh) | 通信系统、装置及方法 | |
CN201846331U (zh) | 一种基于fpga搭建的增强型串口 | |
JP4346939B2 (ja) | ロギング処理装置 | |
CN107783926A (zh) | 基于PowerPC与网口的FPGA与PC的通信方法 |
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 |