CN104765703A - 一种在fpga平台上进行数据报文采集的方法 - Google Patents
一种在fpga平台上进行数据报文采集的方法 Download PDFInfo
- Publication number
- CN104765703A CN104765703A CN201510099042.XA CN201510099042A CN104765703A CN 104765703 A CN104765703 A CN 104765703A CN 201510099042 A CN201510099042 A CN 201510099042A CN 104765703 A CN104765703 A CN 104765703A
- Authority
- CN
- China
- Prior art keywords
- input
- message
- output
- address
- ram
- 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
Landscapes
- Small-Scale Networks (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种在FPGA平台上进行数据报文采集的方法,其具体实现过程为:构建异步FIFO用于报文采集输出,该异步FIFO为一个报文存储RAM;设置所需采集抓取的报文类型,并进行报文传输;当传输过程中出现所对应的报文时,RAM的输入使能信号有效,相关报文输入RAM中;完成输入后,输入数据地址位加一,完成了输入报文的存储;使能控制模块检测到输入地址有变化,并与输出地址进行比较,得出当前RAM中已经采集存有所需报文,使输出的使能信号有效。该一种在FPGA平台上进行数据报文采集的方法与现有技术相比,利用一个可控地址的RAM,去掉了报文之间的间隔时隙,最大可能的在FPGA中存储有效报文数据并且输出显示到FPGA软件界面,达到采集输出大量报文的目的。
Description
技术领域
本发明涉及计算机芯片技术领域,具体地说是一种实用性强、在FPGA平台上进行数据报文采集的方法。
背景技术
随着国家对信息安全的越来越重视,打破国外厂商在小型机服务器上的垄断迫在眉睫。而小型机服务器的研发在于需要网络控制类芯片控制多路处理器系统,这个系统使得多个处理器之间能够进行高速有效、可靠安全地进行报文交换处理。对应这个系统的前期验证调试过程肯定是要在FPGA平台上进行的。为了在FPGA平台上很好地验证,使用一些调试手段是必需的。采集抓取各种报文来分析的方法是经常用到的方法之一。而由于各个处理器之间传输报文数据量巨大且报文之间不是连续的,各个报文之间会有较长时间的空闲。因为FPGA调试软件的存储空间是有限的,在这种情况下对报文的抓取采集就会带来很大的麻烦,通常只能采集到一段时间内很少量的报文。
针对这种问题,本专利提出了一种在FPGA平台上进行数据报文采集的方法,有效解决了在FPGA平台进行多处理器之间报文传输的时候,由于FPGA软件存储资源较小的原因无法较多地抓取所需报文的困难。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、在FPGA平台上进行数据报文采集的方法。
一种在FPGA平台上进行数据报文采集的方法,其具体实现过程为:
首先构建一个异步FIFO用于报文采集输出,该异步FIFO的主体为一个报文存储RAM,且输入和输出地址由外部信号可控,该报文存储RAM还连接可输入并控制时能信号的使能控制模块、可输入地址的输入地址控制模块、可输出地址的输出地址控制模块,其中异步FIFO输出使能信号是根据输入输出地址的关系得到的;
设置所需采集抓取的报文类型,并进行报文传输;
当传输过程中出现所对应的报文时,RAM的输入使能信号有效,相关报文输入RAM中;
完成输入后,输入数据地址位加一,完成了输入报文的存储;
使能控制模块检测到输入地址有变化,并与输出地址进行比较,得出当前RAM中已经采集存有所需报文,使输出的使能信号有效。
在异步FIFO的报文输入端设置计数模块,当报文存入异步FIFO中时,同时连同计数模块数值作为时间戳一起存入到该异步FIFO中。
所述异步FIFO的输入端对输入的报文进行过滤,且当处理器传输过来的为所需求分析报文时存入FIFO中,其他传输来的分析报文不存储入异步FIFO中。
所述输入地址与输出地址的比较即为比较输入地址和输出地址是否在同一个时钟域里,当两者不在同一时钟域中,且在输出地址的时钟域里使用输入地址时,通过格雷码转换对输入地址进行转换后使两者处于同一时钟域内。
本发明的一种在FPGA平台上进行数据报文采集的方法,具有以下优点:
本发明提出的一种在FPGA平台上进行数据报文采集的方法,利用一个可控地址的RAM,去掉了报文之间的间隔时隙,最大可能地存储有效报文数据,达到采集输出报文目的;解决了在FPGA平台进行多处理器之间报文传输的时候,由于FPGA软件存储资源较小的原因无法较多地抓取所需报文的困难;本发明构建一个可控地址的FIFO,过滤掉了报文传输过程中的空闲无效时间,以及暂时不需要采集分析的报文;该方法最大程度节约了FPGA内部有限的资源,提高了效率,更好使用了FPGA相关软件进行代码项目调试,实用性强,易于推广。
附图说明
附图1为本发明的实现系统结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
在FPGA平台验证调试过程中,经常遇到各个处理器所发送报文无法提取采集输出的问题。这是因为各个报文输出为非连续的,报文之间的间隔不固定,无法在FPGA软件有限的缓存中存储大量的数据报文。
针对上述问题,现提供一种在FPGA平台上进行数据报文采集的方法,其具体实现过程为:
首先构建一个异步FIFO用于报文采集输出,该异步FIFO的主体为一个报文存储RAM,且输入和输出地址由外部信号可控,该报文存储RAM还连接可输入并控制时能信号的使能控制模块、可输入地址的输入地址控制模块、可输出地址的输出地址控制模块,其中异步FIFO输出使能信号是根据输入输出地址的关系得到的;
设置所需采集抓取的报文类型,并进行报文传输;
当传输过程中出现所对应的报文时,RAM的输入使能信号有效,相关报文输入RAM中;
完成输入后,输入数据地址位加一,完成了输入报文的存储;
使能控制模块检测到输入地址有变化,并与输出地址进行比较,根据输入输出地址的比较,就可以得出当前RAM中已经采集存有所需报文,输出使能信号可以有效。随着输出地址的变化,RAM的报文在输出时钟域下输出提供给FPGA软件分析。一般情况下输出时钟域为高频时钟,可以快速地输出报文,进而RAM中很快变空用来存储下一个报文,RAM也不需要太大的空间,不会占用FPGA有限的资源。
在异步FIFO的报文输入端设置计数模块,当报文存入异步FIFO中时,同时连同计数模块数值作为时间戳一起存入到该异步FIFO中,这样有利于对报文传输在时间上进行分析。
所述异步FIFO的输入端对输入的报文进行过滤,且当处理器传输过来的为所需求分析报文时存入FIFO中,其他传输来的分析报文不存储入异步FIFO中,这样更加提高了采集抓取效率。
所述输入地址与输出地址的比较即为比较输入地址和输出地址是否在同一个时钟域里,当两者不在同一时钟域中,且在输出地址的时钟域里使用输入地址时,通过格雷码转换对输入地址进行转换后使两者处于同一时钟域内。
如附图1所示,其具体实施过程为:
从图1中可以看出本专利设计的主体为一个单口输入输出RAM。该RAM具有很宽的输入输出数据位,但是较浅的存储深度,深度只需奇偶两个地址即可。类似一个乒乓动作,一旦有数据就对存储的数据高速输出,提供所需数据包。而对该RAM的输入输出控制需要一些逻辑控制模块。
首先是输入模块。对于一个RAM来说,要有数据输入端口Data_in、输入地址DataIn_addr、输入使能信号DataIn_en、输入时钟信号Clk_in等。输入数据信号Data_in是由多种数据包的结合体,而且每个数据包又包涵多位的并行数据,所以此RAM的输入数据总位宽取决于有多少种类的数据包和每个数据包的位宽。输入使能信号DataIn_en来自于每个数据包的输入使能信号。它为各个数据包使能信号相或的结果,这样保证任何一种所需数据包传输过来都要写入RAM中。输入地址控制信号DataIn_addr,因为RAM的深度很浅,只用来存储两个输入宽度的数据包,因此输入地址也只需要1bit即可。至于输入时钟即为数据包统一时钟即可。
其次是输出模块。对于一个RAM来说,输出的控制信号数目和输入的控制信号数目基本一致。包括输出数据信号Data_out,输出数据使能信号Dataout_en,输出地址Dataout_addr,输出时钟Clk_out等。下面对这几个信号情况从易到难说明:输出数据信号Data_out是和输入数据信号相同位宽,位宽为所有数据包位宽的总合,这一项没有需要太注意的情况。其次是Clk_out信号,该信号为输出时钟,为了尽快把采集到的数据包输出,这里的输出时钟就需要高频时钟,相对与输入时钟越高越好。例如输入时钟为25Mhz时候,输出时钟为100Mhz。输出地址Dataout_addr信号,是根据输出数据使能信号Dataout_en控制。当Dataout_en使能的时候,Dataout_addr就根据输出时钟自动增加。输出控制信号中最复杂的为输出数据使能信号Dataout_en。该RAM主要的功能类似一个过滤缓存,一旦有数据就可以输出,所以输出使能信号是根据输入地址和输出地址的关系确定的。输入地址和输出地址一旦不同,就说明该RAM中有数据,可以输出了,即输出数据使能信号Dataout_en使能。这里要注意的是两个地址的时钟域不同,即输入地址和输出地址是由不同的时钟控制的。所以在某个时钟域做计算比较的时候,另一个地址处于变化中的不稳态。这样容易导致误判断。针对这个危险,在实际操作采用格雷码处理跨时钟域的情况。有效的解决了该问题。
为了记录报文的到达时间,方便对采集提取后的报文做分析,从如下框图中可以看出在整个系统中还加入了一个Time计数器模块。当有报文存入RAM的时候,记录下当时的计数数值一起存入RAM,这样对报文传输时间有个记录,方便以后抓取出来进行分析,对比各种报文到来的时间。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种在FPGA平台上进行数据报文采集的方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (4)
1.一种在FPGA平台上进行数据报文采集的方法,其特征在于,其具体实现过程为:
首先构建一个异步FIFO用于报文采集输出,该异步FIFO的主体为一个报文存储RAM,且输入和输出地址由外部信号可控,该报文存储RAM还连接可输入并控制时能信号的使能控制模块、可输入地址的输入地址控制模块、可输出地址的输出地址控制模块,其中异步FIFO输出使能信号是根据输入输出地址的关系得到的;
设置所需采集抓取的报文类型,并进行报文传输;
当传输过程中出现所对应的报文时,RAM的输入使能信号有效,相关报文输入RAM中;
完成输入后,输入数据地址位加一,完成了输入报文的存储;
使能控制模块检测到输入地址有变化,并与输出地址进行比较,得出当前RAM中已经采集存有所需报文,使输出的使能信号有效。
2.根据权利要求1所述的一种在FPGA平台上进行数据报文采集的方法,其特征在于,在异步FIFO的报文输入端设置计数模块,当报文存入异步FIFO中时,同时连同计数模块数值作为时间戳一起存入到该异步FIFO中。
3.根据权利要求1所述的一种在FPGA平台上进行数据报文采集的方法,其特征在于,所述异步FIFO的输入端对输入的报文进行过滤,且当处理器传输过来的为所需求分析报文时存入FIFO中,其他传输来的分析报文不存储入异步FIFO中。
4.根据权利要求1、2或3所述的一种在FPGA平台上进行数据报文采集的方法,其特征在于,所述输入地址与输出地址的比较即为比较输入地址和输出地址是否在同一个时钟域里,当两者不在同一时钟域中,且在输出地址的时钟域里使用输入地址时,通过格雷码转换对输入地址进行转换后使两者处于同一时钟域内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510099042.XA CN104765703B (zh) | 2015-03-06 | 2015-03-06 | 一种在fpga平台上进行数据报文采集的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510099042.XA CN104765703B (zh) | 2015-03-06 | 2015-03-06 | 一种在fpga平台上进行数据报文采集的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765703A true CN104765703A (zh) | 2015-07-08 |
CN104765703B CN104765703B (zh) | 2017-11-21 |
Family
ID=53647544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510099042.XA Active CN104765703B (zh) | 2015-03-06 | 2015-03-06 | 一种在fpga平台上进行数据报文采集的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765703B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857685A (zh) * | 2018-12-06 | 2019-06-07 | 积成电子股份有限公司 | 一种mpu与fpga扩展多串口的实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356456B1 (en) * | 2004-11-12 | 2008-04-08 | Paravirtual Corporation | Computer storage exception handing apparatus and method for virtual hardware system |
CN101335602A (zh) * | 2008-06-11 | 2008-12-31 | 南京磐能电力科技股份有限公司 | 一种基于fpga的点到多点udp实时数据发送和确认方法 |
CN102752674A (zh) * | 2012-07-11 | 2012-10-24 | 烽火通信科技股份有限公司 | 10g epon报文的捕获电路及写控制方法 |
CN102957202A (zh) * | 2011-08-30 | 2013-03-06 | 湖南省电力勘测设计院 | 集成型数据记录分析装置及comtrade分文件方法 |
CN103209169A (zh) * | 2013-02-23 | 2013-07-17 | 北京工业大学 | 一种基于fpga的网络流量过滤系统与方法 |
-
2015
- 2015-03-06 CN CN201510099042.XA patent/CN104765703B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356456B1 (en) * | 2004-11-12 | 2008-04-08 | Paravirtual Corporation | Computer storage exception handing apparatus and method for virtual hardware system |
CN101335602A (zh) * | 2008-06-11 | 2008-12-31 | 南京磐能电力科技股份有限公司 | 一种基于fpga的点到多点udp实时数据发送和确认方法 |
CN102957202A (zh) * | 2011-08-30 | 2013-03-06 | 湖南省电力勘测设计院 | 集成型数据记录分析装置及comtrade分文件方法 |
CN102752674A (zh) * | 2012-07-11 | 2012-10-24 | 烽火通信科技股份有限公司 | 10g epon报文的捕获电路及写控制方法 |
CN103209169A (zh) * | 2013-02-23 | 2013-07-17 | 北京工业大学 | 一种基于fpga的网络流量过滤系统与方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857685A (zh) * | 2018-12-06 | 2019-06-07 | 积成电子股份有限公司 | 一种mpu与fpga扩展多串口的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104765703B (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101938260B (zh) | 用于限制伪唤醒的静噪滤波 | |
CN103995764B (zh) | 一种具有串行总线协议连续触发功能的逻辑分析仪 | |
CN104917645B (zh) | 一种在线检测报文传输超时的方法与装置 | |
CN109828941A (zh) | Axi2wb总线桥实现方法、装置、设备及存储介质 | |
CN102495920B (zh) | 一种FPGA用基于PCIe的集成化逻辑分析模块 | |
CN113190291B (zh) | 一种基于片上网络数据采集的可配置协议转换系统及方法 | |
CN106708671A (zh) | 一种片上系统总线行为检测方法和装置 | |
CN108052473A (zh) | 串行通信装置 | |
CN106603172A (zh) | 一种应用于无线电监测接收机的带时间戳数据分时读写方法 | |
CN108170616B (zh) | 利用锁存器实现跨时钟域信号传输的系统 | |
CN107908587A (zh) | 基于usb3.0的实时数据采集传输装置 | |
CN108667628A (zh) | 一种接口转换装置和接口转换方法 | |
CN105868026A (zh) | 一种计算序列平均值的方法和装置 | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
CN104765703B (zh) | 一种在fpga平台上进行数据报文采集的方法 | |
CN106055496B (zh) | 一种eeprom控制器的信号生成电路及控制方法 | |
CN202676907U (zh) | 一种多通道天气雷达数据采集装置 | |
CN104767658B (zh) | 一种在线检测报文传输错误的方法与装置 | |
CN106294228A (zh) | 输入输出扩展芯片以及其验证方法 | |
CN102323914A (zh) | 一种自动检测韦根输入的控制器接口及控制方法 | |
CN204667393U (zh) | 一种基于FPGA和Upp接口的多芯片数据交互装置 | |
CN104572572B (zh) | 一种数据接收装置 | |
CN106484640A (zh) | 一种基于fpga和dsp的高速串行用户接口电路 | |
CN108108149A (zh) | 一种基于分离统计高效收集的性能统计电路 | |
CN106911715B (zh) | 一种将读写控制分开的通信控制单元和通信控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |