CN112631809A - 一种基于fpga的周期消息接收缓存方法 - Google Patents
一种基于fpga的周期消息接收缓存方法 Download PDFInfo
- Publication number
- CN112631809A CN112631809A CN202011605359.3A CN202011605359A CN112631809A CN 112631809 A CN112631809 A CN 112631809A CN 202011605359 A CN202011605359 A CN 202011605359A CN 112631809 A CN112631809 A CN 112631809A
- Authority
- CN
- China
- Prior art keywords
- frame
- comid
- buffer
- software
- reading
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于FPGA的周期消息接收缓存方法,具体包括如下步骤:步骤1,建立缓存、本地COMID配置表;步骤2:消息帧类别判断及过滤;步骤3:PD帧写入操作;步骤4:将其他软件需要的帧放置在其他软件需要的帧缓存中。步骤5:帧读取操作;步骤6:PD帧读取缓存操作。本发明将不同COMID的帧进行分类放到特定缓存,软件只需根据缓存地址取需要的数据,不需要再对数据分类,同时,接收到数据帧之后将周期数据进行覆盖处理,减小了软件需要处理的数据量,极大的减小了软件处理的压力。另外,帧读取时重点考虑PD帧保证系统的实时性,从而提高了系统运行的可靠性。
Description
技术领域
本发明属于计算机网络领域,具体涉及一种基于FPGA的周期消息接收缓存方法。
背景技术
近年来,随着轨道交通列车信息化水平的不断提高,传统列车网络已经无法满足需求,新一代列车通信网络TCN标准应运而生,其中定义了一种基于标准以太网的编组网ECN,其采用列车实时数据协议(TrainReal-time Data Protocal,TRDP),TRDP协议定义了两类数据传输:过程数据(Process Data,PD)与消息数据(Message Data,MD)。其中,过程数据PD用于传递控制命令,对可靠性、确定性、实时性要求高,并且一般周期性收发;消息数据MD一般用于故障和诊断消息,数据量较大,一般非周期发送。
由于过程数据PD周期发送接收的特点,无疑在过程数据接收时对软件处理性能有所要求,而并不是每一个列车模块的软件处理性能都能达到要求。基于软件实现过程数据周期发送时间确定性较差,周期不精确,误差可能达到毫秒级,这对于目前车速不断提升的列车系统是不可被接受的。
发明内容
为了解决上述现有技术中存在的问题,满足不同设备处理周期控制消息确定性和实时性需求,本发明的目的在于,提出一种基于FPGA的周期消息接收缓存方法。
为了实现上述目的,本发明给出如下技术方案予以解决:
一种基于FPGA的周期消息接收缓存方法,具体包括如下步骤:
步骤1:建立缓存;具体操作如下:
建立PD帧写入缓存、其他软件需要的帧缓存、PD帧读取缓存和N个PD帧缓存;建立本地COMID配置表,该表中存储本地需要的N个COMID的地址,每个COMID的地址对应一个PD帧缓存;
步骤2:消息帧类别判断及过滤;具体操作如下:
步骤21,将接收到的帧进行过滤,具体是过滤掉上层软件不需要的帧、CRC错误帧;
步骤22,将过滤后的帧分为两类:PD帧与其他软件需要的帧;
步骤3:PD帧写入操作;具体操作如下:
步骤31,根据PD帧的COMID对应本地COMID配置表中的位置,根据该位置得到对应的PD帧缓存的地址;
步骤32,如果步骤31得到的地址对应的PD帧缓存当前没有进行读操作,将此PD帧直接写入PD帧缓存,否则,将该PD帧写入预先设置的PD帧写入缓存,等待读操作完成后再将PD帧从PD帧写入缓存读出并写入对应的PD帧缓存。
步骤4:将其他软件需要的帧放置在其他软件需要的帧缓存中。
步骤5:帧读取操作;具体操作如下:
步骤51,接收主机软件下发的读数据命令,并将该读数据命令同时传送给PD帧读取缓存和其他有用帧缓存;
步骤52,PD帧读取缓存根据读数据命令,解析得到读使能与COMID,根据该COMID判断其是否在本地COMID配置表中,如果有则记录该COMID在本地COMID配置表中的位置,并执行步骤6;否则直接执行步骤53;
步骤53,判断其他有用帧缓存中是否有数据帧,有则读取其他软件有用帧缓存,读取结束后返回步骤51;否则返回步骤51。
步骤6:PD帧读取缓存操作;具体操作如下:
步骤61,根据步骤52得到的COMID在本地COMID配置表中的位置,判断是否检测到COMID位置对应的PD帧缓存正在进行写操作,如果是,则等待写操作完成后执行步骤62;否则直接执行步骤62;
步骤62,将PD帧缓存的数据读出来写入PD帧读取缓存;
步骤63,读取PD帧读取缓存,读取结束后执行步骤53。
进一步的,所述步骤1中,每个所述的PD帧缓存大小为2KB。
进一步的,所述步骤1中,其他软件需要的帧包括ARP帧、ICMP帧和IGMP帧。
进一步的,所述步骤21具体包括如下子步骤:
步骤211,如果接收到的帧的帧类型不是0x0800且不是0x0806,则直接丢弃该帧;否则执行步骤212;
步骤212,如果接收到的帧的帧类型是0x0800,且此帧为广播帧,则直接丢弃此帧;否则执行步骤213;
步骤213,如果接收到的帧的目的IP地址不是本地IP地址,则直接丢弃此帧;否则执行步骤214;
步骤214,如果接收到的帧CRC校验错误,则直接丢弃此帧;否则执行步骤22。
进一步的,所述步骤22具体包括如下子步骤:
步骤221,如果接收到帧的IP帧的帧类型为17(代表UDP帧),且UDP的目的端口号为17224或者17225,则该帧为PD帧(PD帧的格式如图1所示),执行步骤222;否则该帧为其他软件需要的帧,执行步骤4。
步骤222,将PD帧解析到其COMID,判断PD帧的COMID是否在步骤1建立的本地COMID配置表中,是则记录其所在位置并执行步骤3,否则丢弃该PD帧。
与现有技术相比,本发明的有益效果如下:
1、本发明使用FPGA实现周期消息接收缓存管理,将不同COMID(communicationID,TRDP帧内容中通信端口识别字段,具体见TRDP帧格式)的帧进行分类,分别放到特定缓存,软件只需根据缓存地址取需要的数据,不需要再对数据分类,减小了软件工作量。
2、由于系统中数据帧周期发送,一帧相同数据要发送多次,FPGA接收到数据帧之后将周期数据进行覆盖处理,减小了软件需要处理的数据量,极大的减小了软件处理的压力。
3、帧读取操作涉及其他有用帧缓存、PD帧读取缓存,且PD帧读取缓存优先级较高,这样设置使得帧读取重点考虑PD帧,从而保证了系统的实时性。
4、帧读取操作中的设计使得无论哪种帧,在读取的过程中都不会被打断,必须读取完整一帧之后再判断从哪个缓存读取数据帧。能够保证上位机得到的帧的有效性,从而保证了系统运行的可靠性。
5、相比于传统的列车系统来讲,由于减小了软件工作负荷,绝大多数主频很低的处理器都可以应用,系统无需替换软件处理器,同时由于软件工作量减小,发送的时间抖动也将缩小。
附图说明
图1是TRDP帧格式;
图2是消息帧过滤分类及PD帧写入操作流程图;
图3是帧读取操作及PD帧读取缓存流程图;
图4是本发明的方法的流程示意图。
以下结合附图和具体实施方式对本发明进一步解释说明。
具体实施方式
如图4所示,本发明提供的基于FPGA的周期消息接收缓存管理方法,具体包括如下步骤:
步骤1:建立缓存;具体操作如下:
建立PD帧写入缓存、其他软件需要的帧缓存、PD帧读取缓存和N个PD帧缓存;建立本地COMID配置表,该表中存储本地需要的N个COMID的地址,每个COMID的地址对应一个PD帧缓存;
PD帧缓存用于存储PD帧,每个PD帧缓存大小为2KB;
其他软件需要的帧缓存用于存储其他软件需要的帧,其他软件需要的帧包括ARP帧、ICMP帧、IGMP帧。
PD帧写入缓存为PD帧写入PD帧缓存的临时缓存。
PD帧读取缓存用于进行PD帧读取缓存操作时上传PD帧;
步骤2:消息帧类别判断及过滤;具体操作如下:
步骤21,将接收到的帧进行过滤,具体是过滤掉上层软件不需要的帧、CRC错误帧;包括如下子步骤:
步骤211,如果接收到的帧的帧类型不是0x0800且不是0x0806,则直接丢弃该帧;否则执行步骤212;
步骤212,如果接收到的帧的帧类型是0x0800,且此帧为广播帧,则直接丢弃此帧;否则执行步骤213;
步骤213,如果接收到的帧的目的IP地址不是本地IP地址,则直接丢弃此帧;否则执行步骤214;
步骤214,如果接收到的帧CRC校验错误,则直接丢弃此帧;否则执行步骤22。
步骤22,将过滤后的帧分为两类:PD帧与其他软件需要的帧;
步骤221,如果接收到帧的IP帧的帧类型为17(代表UDP帧),且UDP的目的端口号为17224或者17225,则该帧为PD帧(PD帧的格式如图1所示),执行步骤222;否则该帧为其他软件需要的帧,执行步骤4。
步骤222,将PD帧解析到其COMID,判断PD帧的COMID是否在步骤1建立的本地COMID配置表中,是则记录其所在位置并执行步骤3,否则丢弃该PD帧;
步骤3:PD帧写入操作;具体操作如下:
步骤31,根据PD帧的COMID对应本地COMID配置表中的位置,根据该位置得到对应的PD帧缓存的地址;
步骤32,如果步骤31得到的地址对应的PD帧缓存当前没有进行读操作,将此PD帧直接写入PD帧缓存,否则,将该PD帧写入预先设置的PD帧写入缓存,等待读操作完成后再将PD帧从PD帧写入缓存读出并写入对应的PD帧缓存。
由于每个COMID的对应PD帧缓存大小为2KB,而以太网最大帧长为1518B,所以每次读取只能存放一帧,经过步骤2的过滤与分类之后得到的PD帧直接覆盖之前对应COMID缓存的帧,最大支持N个COMID。
主机软件更新发送数据的周期远大于发送数据的周期,所以接收端接收到的PD帧大都是重复的;因此,只要主机软件读取数据的命令频率大于主机软件更新发送数据的频率,PD帧在接收缓存区直接覆盖也不会导致重要信息丢失。上述覆盖处理的设计减小了软件需要处理的数据量,极大的减小了软件处理的压力。
步骤4:将其他软件需要的帧放置在其他软件需要的帧缓存中。
步骤5:帧读取操作;具体操作如下:
步骤51,接收主机软件下发的读数据命令,并将该读数据命令同时传送给PD帧读取缓存和其他有用帧缓存;
步骤52,PD帧读取缓存根据读数据命令,解析得到读使能与COMID,根据该COMID判断其是否在本地COMID配置表中,如果有则记录该COMID在本地COMID配置表中的位置,并执行步骤6;否则直接执行步骤53;
步骤53,判断其他有用帧缓存中是否有数据帧,有则读取其他软件有用帧缓存,读取结束后返回步骤51;否则返回步骤51。
帧读取操作涉及两个缓存的调度:其他有用帧缓存、PD帧读取缓存,PD帧读取缓存优先级较高,这样设置使得帧读取重点考虑PD帧,从而保证了系统的实时性。
此外,上述技术方案的设置,使得无论哪种帧,在读取的过程中都不会被打断,必须读取完整一帧之后再判断从哪个缓存读取数据帧。能够保证上位机得到的帧的有效性,从而保证了系统运行的可靠性。
步骤6:PD帧读取缓存操作;具体操作如下:
步骤61,根据步骤52得到的COMID在本地COMID配置表中的位置,判断是否检测到COMID位置对应的PD帧缓存正在进行写操作,如果是,则等待写操作完成后执行步骤62;否则直接执行步骤62;
步骤62,将PD帧缓存的数据读出来写入PD帧读取缓存;
步骤63,读取PD帧读取缓存,读取结束后执行步骤53。由于软件处理性能比较低,所以数据上传数据比较慢,所以将PD帧缓存的数据读出来写入PD帧读取缓存。
具体实施时,本发明的方法基于FPGA实现。
Claims (5)
1.一种基于FPGA的周期消息接收缓存方法,其特征在于,具体包括如下步骤:
步骤1:建立缓存;具体操作如下:
建立PD帧写入缓存、其他软件需要的帧缓存、PD帧读取缓存和N个PD帧缓存;建立本地COMID配置表,该表中存储本地需要的N个COMID的地址,每个COMID的地址对应一个PD帧缓存;
步骤2:消息帧类别判断及过滤;具体操作如下:
步骤21,将接收到的帧进行过滤,具体是过滤掉上层软件不需要的帧、CRC错误帧;
步骤22,将过滤后的帧分为两类:PD帧与其他软件需要的帧;
步骤3:PD帧写入操作;具体操作如下:
步骤31,根据PD帧的COMID对应本地COMID配置表中的位置,根据该位置得到对应的PD帧缓存的地址;
步骤32,如果步骤31得到的地址对应的PD帧缓存当前没有进行读操作,将此PD帧直接写入PD帧缓存,否则,将该PD帧写入预先设置的PD帧写入缓存,等待读操作完成后再将PD帧从PD帧写入缓存读出并写入对应的PD帧缓存。
步骤4:将其他软件需要的帧放置在其他软件需要的帧缓存中。
步骤5:帧读取操作;具体操作如下:
步骤51,接收主机软件下发的读数据命令,并将该读数据命令同时传送给PD帧读取缓存和其他有用帧缓存;
步骤52,PD帧读取缓存根据读数据命令,解析得到读使能与COMID,根据该COMID判断其是否在本地COMID配置表中,如果有则记录该COMID在本地COMID配置表中的位置,并执行步骤6;否则直接执行步骤53;
步骤53,判断其他有用帧缓存中是否有数据帧,有则读取其他软件有用帧缓存,读取结束后返回步骤51;否则返回步骤51。
步骤6:PD帧读取缓存操作;具体操作如下:
步骤61,根据步骤52得到的COMID在本地COMID配置表中的位置,判断是否检测到COMID位置对应的PD帧缓存正在进行写操作,如果是,则等待写操作完成后执行步骤62;否则直接执行步骤62;
步骤62,将PD帧缓存的数据读出来写入PD帧读取缓存;
步骤63,读取PD帧读取缓存,读取结束后执行步骤53。
2.如权利要求1所述的基于FPGA的周期消息接收缓存方法,其特征在于,所述步骤1中,每个所述的PD帧缓存大小为2KB。
3.如权利要求1所述的基于FPGA的周期消息接收缓存方法,其特征在于,所述步骤1中,其他软件需要的帧包括ARP帧、ICMP帧和IGMP帧。
4.如权利要求1所述的基于FPGA的周期消息接收缓存方法,其特征在于,所述步骤21具体包括如下子步骤:
步骤211,如果接收到的帧的帧类型不是0x0800且不是0x0806,则直接丢弃该帧;否则执行步骤212;
步骤212,如果接收到的帧的帧类型是0x0800,且此帧为广播帧,则直接丢弃此帧;否则执行步骤213;
步骤213,如果接收到的帧的目的IP地址不是本地IP地址,则直接丢弃此帧;否则执行步骤214;
步骤214,如果接收到的帧CRC校验错误,则直接丢弃此帧;否则执行步骤22。
5.如权利要求1所述的基于FPGA的周期消息接收缓存方法,其特征在于,所述步骤22具体包括如下子步骤:
步骤221,如果接收到帧的IP帧的帧类型为17(代表UDP帧),且UDP的目的端口号为17224或者17225,则该帧为PD帧(PD帧的格式如图1所示),执行步骤222;否则该帧为其他软件需要的帧,执行步骤4。
步骤222,将PD帧解析到其COMID,判断PD帧的COMID是否在步骤1建立的本地COMID配置表中,是则记录其所在位置并执行步骤3,否则丢弃该PD帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011605359.3A CN112631809B (zh) | 2020-12-30 | 2020-12-30 | 一种基于fpga的周期消息接收缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011605359.3A CN112631809B (zh) | 2020-12-30 | 2020-12-30 | 一种基于fpga的周期消息接收缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631809A true CN112631809A (zh) | 2021-04-09 |
CN112631809B CN112631809B (zh) | 2022-10-14 |
Family
ID=75286486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011605359.3A Active CN112631809B (zh) | 2020-12-30 | 2020-12-30 | 一种基于fpga的周期消息接收缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631809B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115291967A (zh) * | 2022-08-01 | 2022-11-04 | 中国人民解放军32039部队 | 航天数据分析方法、装置和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110255523A1 (en) * | 2010-04-16 | 2011-10-20 | Universitat Politecnica De Catalunya | Process and system for calculating distances between wireless nodes |
CN105162786A (zh) * | 2015-09-11 | 2015-12-16 | 华中科技大学 | 一种基于fpga的powerlink从站帧缓存管理系统 |
CN105704150A (zh) * | 2016-03-25 | 2016-06-22 | 山东超越数控电子有限公司 | 一种工业过程数据的传输方法 |
CN106487471A (zh) * | 2016-10-17 | 2017-03-08 | 天津光电通信技术有限公司 | 一种采用fpga对大容量数据进行低阶交叉的方法 |
CN108306835A (zh) * | 2018-01-23 | 2018-07-20 | 中国航空工业集团公司洛阳电光设备研究所 | 一种以太网交换机的输入缓存结构及数据转发方法 |
EP3457646A1 (en) * | 2017-09-15 | 2019-03-20 | Kabushiki Kaisha Toshiba | Notification control device, notification control method, and computer-readable medium |
CN111211863A (zh) * | 2019-12-20 | 2020-05-29 | 西安云维智联科技有限公司 | Mac发射端、mac接收端及电路、fpga芯片及数据传输系统 |
-
2020
- 2020-12-30 CN CN202011605359.3A patent/CN112631809B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110255523A1 (en) * | 2010-04-16 | 2011-10-20 | Universitat Politecnica De Catalunya | Process and system for calculating distances between wireless nodes |
CN105162786A (zh) * | 2015-09-11 | 2015-12-16 | 华中科技大学 | 一种基于fpga的powerlink从站帧缓存管理系统 |
CN105704150A (zh) * | 2016-03-25 | 2016-06-22 | 山东超越数控电子有限公司 | 一种工业过程数据的传输方法 |
CN106487471A (zh) * | 2016-10-17 | 2017-03-08 | 天津光电通信技术有限公司 | 一种采用fpga对大容量数据进行低阶交叉的方法 |
EP3457646A1 (en) * | 2017-09-15 | 2019-03-20 | Kabushiki Kaisha Toshiba | Notification control device, notification control method, and computer-readable medium |
CN108306835A (zh) * | 2018-01-23 | 2018-07-20 | 中国航空工业集团公司洛阳电光设备研究所 | 一种以太网交换机的输入缓存结构及数据转发方法 |
CN111211863A (zh) * | 2019-12-20 | 2020-05-29 | 西安云维智联科技有限公司 | Mac发射端、mac接收端及电路、fpga芯片及数据传输系统 |
Non-Patent Citations (2)
Title |
---|
ASIF S: "A new approach for mixed bandwidth deterministic communication using Ethernet", 《2015 INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTING, COMMUNICATIONS AND INFORMATICS (ICACCI)》 * |
魏迎旭: "大容量FC交换机的研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115291967A (zh) * | 2022-08-01 | 2022-11-04 | 中国人民解放军32039部队 | 航天数据分析方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112631809B (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100414908C (zh) | 一种支持虚拟接口的存储网络适配器 | |
CN108600053B (zh) | 一种基于零拷贝技术的无线网络数据包捕获方法 | |
CN109981431B (zh) | 一种can总线控制器数据存储电路及数据存储方法 | |
CN110177013A (zh) | 一种基于FPGA的EtherCAT主从站设计与实现方法 | |
CN104866454B (zh) | 面向板级高速总线的写报文前瞻处理方法及装置 | |
CN105376129B (zh) | 一种1394总线事务层-链路层数据包发送电路及方法 | |
CN111352889A (zh) | 一种基于mctp协议的设备管理方法、设备、装置和介质 | |
CN109412897B (zh) | 基于多核处理器及fpga的共享mac实现系统及方法 | |
CN112631809B (zh) | 一种基于fpga的周期消息接收缓存方法 | |
CN101257457A (zh) | 网络处理器复制报文的方法和网络处理器 | |
CN102413018A (zh) | 基于fpga的软硬件协同网络测试系统及方法 | |
US10372673B2 (en) | Storage network element discovery method and apparatus | |
CN112751788B (zh) | 一种支持多类型帧混合传输的双平面交换方法 | |
CN110798479B (zh) | 动态可重构高速串行总线与以太网的互操作装置与方法 | |
CN107579894B (zh) | 一种基于fpga的ebr1553总线协议实现装置 | |
CN113051204A (zh) | 串行背板总线通信方法及系统 | |
CN111782579B (zh) | 一种基于fpga的以太网协议硬件逻辑处理结构 | |
CN103685178B (zh) | 一种面向工业无线网络的在线调试方法与系统 | |
CN118101608A (zh) | 一种低数据溢出的千兆单光口服务器适配器 | |
CN104714832A (zh) | 一种用于机载数据网络异步数据交互区的缓冲管理方法 | |
CN103347023B (zh) | 一种工业现场环境下hdlc通信控制器 | |
US8625619B2 (en) | Domain gateway control system and method thereof | |
CN114205115A (zh) | 一种数据包处理优化方法、装置、设备及介质 | |
CN113342733A (zh) | EthPMC协议处理器及其处理方法 | |
CN114817082A (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 |