CN117992381A - 一种基于fpga的数据收发方法及ip核 - Google Patents
一种基于fpga的数据收发方法及ip核 Download PDFInfo
- Publication number
- CN117992381A CN117992381A CN202211342935.9A CN202211342935A CN117992381A CN 117992381 A CN117992381 A CN 117992381A CN 202211342935 A CN202211342935 A CN 202211342935A CN 117992381 A CN117992381 A CN 117992381A
- Authority
- CN
- China
- Prior art keywords
- data
- byte
- received
- transmission
- receiving
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 abstract description 8
- 238000013461 design Methods 0.000 description 4
- 238000010438 heat treatment Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Communication Control (AREA)
Abstract
本发明涉及串行异步通讯控制技术领域,特别涉及一种基于FPGA的数据收发方法及IP核。该方法包括:接收来自数据发送缓冲区的每一字节的发送数据并对其分别进行CRC处理,得到发送数据CRC计算结果;将发送数据和发送数据CRC计算结果传至目标设备;向状态寄存器发送数据发送结束标志位,根据数据发送结束标志位通知FPGA的处理器发送数据均发送完毕;接收来自数据接收缓冲区的每一字节的接收数据并对其分别进行CRC处理,得到接收数据各自的接收数据CRC计算结果;将接收数据CRC计算结果存储至状态寄存器,并通知处理器所述接收数据接收完毕。本发明提供的收发方法及IP核,降低应用程序复杂度,提高协调运行可靠性。
Description
技术领域
本发明涉及串行异步通讯控制技术领域,特别涉及一种基于FPGA的数据收发方法及IP核。
背景技术
UART(Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置)通讯控制协议为异步串行通讯协议,其特点是连线简单,协议不复杂,空闲状态下总线为高位,起始位为零位,数据位可为5-8位可设,有奇偶校验位(可选)和1-2位停止位(高)。控制器每接收一个字节都会给处理器发送一次接收或发送中断,在多通道(超过5个或以上)并行工作的应用中,每接收或发送一个字节就会给处理器发送一次接收或发送中断,造成主处理器中断饱和、数据溢出或丢帧现象,影响主程序计算的实时性,同时增加主程序接收和处理流程的复杂度,降低系统的可靠性。其次是每一个通道数据只有奇偶校验功能,检测出错误的能力和CRC(循环冗余校验,Cyclic Redundancy Check)无法比拟,在传输可靠性要求很高的场合无法确保准确性需求。
发明内容
(一)要解决的技术问题
本发明提供了一种基于FPGA的数据收发方法及IP核,以克服现有技术存在的数据接收和处理流程比较复杂,且可靠性较低无法满足应用需求等缺陷。
(二)技术方案
本发明一方面提供一种基于FPGA的数据收发方法,包括:
在数据发送过程中,接收来自数据发送缓冲区的每一字节的发送数据;
对每一字节的所述发送数据分别进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
将所述发送数据和所述发送数据CRC计算结果传输至目标设备;
在所述发送数据均发送完毕之后,向状态寄存器发送数据发送结束标志位,根据所述数据发送结束标志位通知FPGA的处理器所述发送数据均发送完毕;
在数据接收过程中,接收来自数据接收缓冲区的每一字节的接收数据;
对每一字节的所述接收数据分别进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
在所述接收数据均接收完毕之后,将所述接收数据CRC计算结果存储至所述状态寄存器,并通知所述处理器所述接收数据接收完毕。
进一步地,所述将所述发送数据CRC计算结果传输至目标设备,包括:
按照由高位字节至低位字节的顺序,依次将每一字节的所述发送数据各自的所述发送数据CRC计算结果传输至所述目标设备。
进一步地,在数据接收过程中,所述方法还包括:
若在四个字节的接收时间内未接收所述接收数据,则认为所述接收数据均接收完毕。
另一方面,本发明还提供一种基于FPGA的IP核,包括:协议控制器、数据发送缓冲区、数据接收缓冲区和发送/接收结束中断控制模块;其中,
所述协议控制器包含:发送数据CRC计算模块、发送逻辑状态机控制模块、UART发送器、UART接收器、接收数据CRC计算模块和接收逻辑状态机控制模块;
所述数据发送缓冲区,用于临时存储每一字节的发送数据,并将每一字节的所述发送数据传输至所述UART发送器;
所述发送数据CRC计算模块,用于对所述UART发送器接收到的每一字节的所述发送数据进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
所述发送逻辑状态机控制模块,用于向所述UART发送器发送数据发送信号,控制所述UART发送器将每一字节的所述发送数据和所述发送数据CRC计算结果传输至目标设备;
所述数据接收缓冲区,用于临时存储每一字节的接收数据,并将每一字节的所述接收数据传输至所述UART接收器;
所述接收数据CRC计算模块,用于对所述UART接收器接收到的每一字节的所述接收数据进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
所述接收逻辑状态机控制模块,用于向所述UART接收器发送数据接收信号,控制所述UART接收器读取每一字节的所述接收数据和所述接收数据CRC计算结果;
所述发送/接收结束中断控制模块,用于在所述发送数据均发送完毕之后,向处理器发送数据发送完毕中断信号;还用于在所述接收数据均接收完毕之后,向所述处理器发送数据接收完毕中断信号。
进一步地,所述数据发送缓冲区为例化块随机存储器所得,所述数据接收缓冲区为例化块随机存储器所得。
进一步地,还包含:
故障处理模块,用于对所述数据发送缓冲区和所述数据接收缓冲区写入上溢和读出下溢进行控制保护处理;
所述故障处理模块,还用于向所述处理器发送复位控制指令,以便所述处理器根据所述复位控制指令清除所述数据发送缓冲区和/或所述数据接收缓冲区,并恢复状态寄存器和/或控制寄存器为缺省值。
(三)有益效果
本发明提供一种基于FPGA的数据收发方法及IP核,最大程度降低应用程序复杂度,提高计算实时余量和简化主程序处理流程,提高协调运行可靠性。
附图说明
图1为本发明实施例基于FPGA的数据收发方法流程图;
图2为本发明实施例基于FPGA的IP核结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供一种基于FPGA(现场可编程门阵列,Field-ProgrammableGate Array)的数据收发方法,包括:
步骤S1、在数据发送过程中,接收来自数据发送缓冲区的每一字节的发送数据;
步骤S2、对每一字节的所述发送数据分别进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
步骤S3、将所述发送数据和所述发送数据CRC计算结果传输至目标设备;
步骤S4、在所述发送数据均发送完毕之后,向状态寄存器发送数据发送结束标志位,根据所述数据发送结束标志位通知FPGA的处理器所述发送数据均发送完毕;
步骤S5、在数据接收过程中,接收来自数据接收缓冲区的每一字节的接收数据;
步骤S6、对每一字节的所述接收数据分别进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
步骤S7、在所述接收数据均接收完毕之后,将所述接收数据CRC计算结果存储至所述状态寄存器,并通知所述处理器所述接收数据接收完毕。
其中,将所述发送数据CRC计算结果传输至目标设备,包括:
按照由高位字节至低位字节的顺序,依次将每一字节的所述发送数据各自的所述发送数据CRC计算结果传输至所述目标设备。
其中,在数据接收过程中,所述方法还包括:
若在四个字节的接收时间内未接收所述接收数据,则认为所述接收数据均接收完毕。
如图2所示,本发明还提供一种基于FPGA的IP核,包括:协议控制器、数据发送缓冲区2、数据接收缓冲区3和发送/接收结束中断控制模块4;其中,
协议控制器包含:发送数据CRC计算模块5、发送逻辑状态机控制模块6、UART发送器7、UART接收器8、接收数据CRC计算模块9和接收逻辑状态机控制模块10;
数据发送缓冲区2,用于临时存储每一字节的发送数据,并将每一字节的所述发送数据传输至所述UART发送器;
发送数据CRC计算模块5,用于对所述UART发送器接收到的每一字节的所述发送数据进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
发送逻辑状态机控制模块6,用于向所述UART发送器发送数据发送信号,控制所述UART发送器将每一字节的所述发送数据和所述发送数据CRC计算结果传输至目标设备;
数据接收缓冲区3,用于临时存储每一字节的接收数据,并将每一字节的所述接收数据传输至所述UART接收器;
接收数据CRC计算模块9,用于对所述UART接收器接收到的每一字节的所述接收数据进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
接收逻辑状态机控制模块10,用于向所述UART接收器发送数据接收信号,控制所述UART接收器读取每一字节的所述接收数据和所述接收数据CRC计算结果;
发送/接收结束中断控制模块4,用于在所述发送数据均发送完毕之后,向处理器发送数据发送完毕中断信号;还用于在所述接收数据均接收完毕之后,向所述处理器发送数据接收完毕中断信号。
其中,所述数据发送缓冲区为例化块随机存储器所得,所述数据接收缓冲区为例化块随机存储器所得。
还包含:
故障处理模块,用于对所述数据发送缓冲区和所述数据接收缓冲区写入上溢和读出下溢进行控制保护处理;
所述故障处理模块,还用于向所述处理器发送复位控制指令,以便所述处理器根据所述复位控制指令清除所述数据发送缓冲区和/或所述数据接收缓冲区,并恢复状态寄存器和/或控制寄存器为缺省值。
该系统的中心机处理器采用ZYNQ处理器系统,其组成架构为ARM+FPGA,ARM核作为应用处理计算机系统(PS),FPGA(PL)作为通讯协处理器。数据采集仪器仪表分布于加热炉的不同部位,在ZYNQ的FPGA上对应加热炉上的测试仪器仪表对应的UART通道,这样ARM处理器在一周期运算开始同时对各部位不同仪器仪表进行同步采集,各仪器仪表数据的数据采集工作均在同时平行作业,采用发送结束进行触发中断方式,充分减少了主处理器的查询等待时间,提高数据系统计算实时余量,同时简化了ARM处理器程序架构,提高整个中心机系统工作的可靠性;与市面上有同类功能ASIC产品PI7C9X7958还要配主计算机相比,总成本低,且ARM+FPGA架构灵活,实现硬件设计软件化实现,在需求多变的情况升级方便,减少工程研制成本。
本发明以传统UART通讯控制协议为基础,根据系统对采集数据的传送需求,在FPGA上实现传统UART异步通讯控制协议,为每一个通道分别增加大容量的收发缓冲区,每一个方向的缓冲区容量最大长度可达到2K字节,充分发挥FPGA硬件设计软件化实现的功能,达到数据收发同步并行的目的;其次是每一个通道接收结束之后才给处理器发送中断信号,替代传统每接收一次就发送一次中断的功能,从机理上避免处理器中断饱和的现象;最后是对于每接收到一个字节都可以进行字节CRC校验,通过FPGA同步进行CRC校验计算,节约主处理器计算时间,发挥FPGA并行计算的功能,降低主处理器应用程序复杂度,提高主处理器计算实时余量和简化主程序处理流程,提高大系统软硬件协调运行可靠性。
采用该发明,可解决RS-485/422/232一主多从的总线拓扑结构下访问诸多从站所带来的串行访问延迟。在FPGA上例化多个UART通道,每一通道的UART拥有自己独立的收发缓冲区,可以同时对外围设备进行同步并行收发数据,数据发送接收中断和数据接收中断控制方式,避免传统方式对主处理器的饱和中断。以单片机或DSP为核心的小系统均配置有UART片内外设,提高该发明的通用性,以及系统软件的实时性和可靠性。同时可以针对外部设备数量,在FPGA逻辑资源允许的情况下,适时增加UART的通道,只增加相应的电气接口就可以和外部设备进行通讯,不改变主处理器系统的硬件设计,系统升级灵活,同时也减少集成设计的时间。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (6)
1.一种基于FPGA的数据收发方法,其特征在于,包括:
在数据发送过程中,接收来自数据发送缓冲区的每一字节的发送数据;
对每一字节的所述发送数据分别进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
将所述发送数据和所述发送数据CRC计算结果传输至目标设备;
在所述发送数据均发送完毕之后,向状态寄存器发送数据发送结束标志位,根据所述数据发送结束标志位通知FPGA的处理器所述发送数据均发送完毕;
在数据接收过程中,接收来自数据接收缓冲区的每一字节的接收数据;
对每一字节的所述接收数据分别进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
在所述接收数据均接收完毕之后,将所述接收数据CRC计算结果存储至所述状态寄存器,并通知所述处理器所述接收数据接收完毕。
2.根据权利要求1所述的数据收发方法,其特征在于,所述将所述发送数据CRC计算结果传输至目标设备,包括:
按照由高位字节至低位字节的顺序,依次将每一字节的所述发送数据各自的所述发送数据CRC计算结果传输至所述目标设备。
3.根据权利要求1所述的数据接收方法,其特征在于,在数据接收过程中,所述方法还包括:
若在四个字节的接收时间内未接收所述接收数据,则认为所述接收数据均接收完毕。
4.一种基于FPGA的IP核,其特征在于,包括:协议控制器、数据发送缓冲区、数据接收缓冲区和发送/接收结束中断控制模块;其中,
所述协议控制器包含:发送数据CRC计算模块、发送逻辑状态机控制模块、UART发送器、UART接收器、接收数据CRC计算模块和接收逻辑状态机控制模块;
所述数据发送缓冲区,用于临时存储每一字节的发送数据,并将每一字节的所述发送数据传输至所述UART发送器;
所述发送数据CRC计算模块,用于对所述UART发送器接收到的每一字节的所述发送数据进行CRC处理,得到每一字节的所述发送数据各自的发送数据CRC计算结果;
所述发送逻辑状态机控制模块,用于向所述UART发送器发送数据发送信号,控制所述UART发送器将每一字节的所述发送数据和所述发送数据CRC计算结果传输至目标设备;
所述数据接收缓冲区,用于临时存储每一字节的接收数据,并将每一字节的所述接收数据传输至所述UART接收器;
所述接收数据CRC计算模块,用于对所述UART接收器接收到的每一字节的所述接收数据进行CRC处理,得到每一字节的所述接收数据各自的接收数据CRC计算结果;
所述接收逻辑状态机控制模块,用于向所述UART接收器发送数据接收信号,控制所述UART接收器读取每一字节的所述接收数据和所述接收数据CRC计算结果;
所述发送/接收结束中断控制模块,用于在所述发送数据均发送完毕之后,向处理器发送数据发送完毕中断信号;还用于在所述接收数据均接收完毕之后,向所述处理器发送数据接收完毕中断信号。
5.根据权利要求4所述的IP核,其特征在于,所述数据发送缓冲区为例化块随机存储器所得,所述数据接收缓冲区为例化块随机存储器所得。
6.根据权利要求4所述的IP核,其特征在于,还包含:
故障处理模块,用于对所述数据发送缓冲区和所述数据接收缓冲区写入上溢和读出下溢进行控制保护处理;
所述故障处理模块,还用于向所述处理器发送复位控制指令,以便所述处理器根据所述复位控制指令清除所述数据发送缓冲区和/或所述数据接收缓冲区,并恢复状态寄存器和/或控制寄存器为缺省值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211342935.9A CN117992381A (zh) | 2022-10-31 | 2022-10-31 | 一种基于fpga的数据收发方法及ip核 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211342935.9A CN117992381A (zh) | 2022-10-31 | 2022-10-31 | 一种基于fpga的数据收发方法及ip核 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992381A true CN117992381A (zh) | 2024-05-07 |
Family
ID=90888219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211342935.9A Pending CN117992381A (zh) | 2022-10-31 | 2022-10-31 | 一种基于fpga的数据收发方法及ip核 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992381A (zh) |
-
2022
- 2022-10-31 CN CN202211342935.9A patent/CN117992381A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857685B (zh) | 一种mpu与fpga扩展多串口的实现方法 | |
CN110471872B (zh) | 一种基于zynq芯片实现m-lvds总线数据交互系统和方法 | |
US20140068134A1 (en) | Data transmission apparatus, system, and method | |
CN103473196B (zh) | 一种1553b总线与星内设备总线间的遥测遥控数据传输装置 | |
WO2023284169A1 (zh) | 从axi总线到opb总线的数据写入方法及读取方法 | |
CN101866328B (zh) | 一种自动访问的串行总线读写控制方法 | |
CN109165178B (zh) | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 | |
CN102929836A (zh) | 一种航天专用asic芯片系统 | |
CN110837486B (zh) | 一种基于FPGA的FlexRay-CPCIe通信系统 | |
CN110471880B (zh) | 一种基于FPGA支持Label号筛选的ARINC429总线模块及其数据传输方法 | |
CN112395230A (zh) | 一种基于可编程逻辑器件的uart接口扩展电路 | |
CN102073611B (zh) | 一种i2c总线控制系统及方法 | |
CN116185936B (zh) | 一种spi通信数据收发异常检测控制系统及检测方法 | |
CN113141288B (zh) | 一种can总线控制器的邮箱报文收发方法和装置 | |
CN110635985A (zh) | 一种FlexRay-CPCIe通信模块 | |
CN110188059A (zh) | 数据有效位统一配置的流控式fifo缓存结构及方法 | |
US7139848B1 (en) | DMA protocol extension for packet-based transfer | |
CN117992381A (zh) | 一种基于fpga的数据收发方法及ip核 | |
CN110659242A (zh) | 一种mil-std-1553b总线协议控制器 | |
CN111078605A (zh) | 一种多通信接口中断的综合处理系统 | |
CN108038061B (zh) | 一种地址分配方法及plc系统 | |
CN113676253A (zh) | 一种基于FPGA的FlexRay总线光纤通信模块 | |
CN106803816B (zh) | 一种可配置自适应负载平衡系统及方法 | |
CN105589820B (zh) | 一种数据传输缓冲装置 | |
CN114968874B (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 |