一种基于FPGA固定以太网数据长度的方法以及设备与流程

文档序号:29622845发布日期:2022-04-13 13:43阅读:128来源:国知局
一种基于FPGA固定以太网数据长度的方法以及设备与流程
一种基于fpga固定以太网数据长度的方法以及设备
技术领域
1.本发明涉及通信领域,特别是涉及一种基于fpga固定以太网数据长度的方法、设备以及计算机可读存储介质。


背景技术:

2.当今10g以太网接口已经广泛存在于各种嵌入式网络设备、无线回传设备中,其通信主要基于tcp/ip协议,tcp/ip协议产生的数据包一般通过网卡或某些fpga ip等硬件设备在嵌入式网络设备、无线回传设备等内部进行接收和发送。
3.tcp/ip协议是基于osi体系的网络通信协议,通过数据包的层层打包实现不同网络层的通信。ip协议位于tcp协议之下,底层硬件(如网卡设备或fpga ip)接收的ip数据包中包含包头、数据信息、填充信息,包头一殷长度为20字节,数据长度范围一般为0至1500字节,填充信息一般为4至50字节。
4.如上述所示,ip包的数据信息的长度不是固定不变的,而在无线回传设备、无线数据发送设备中,为了能准确的无线传输数据,需要在发送端对原始数据进行编码,而多数编码方式一般都规定初始的数据为固定长度的,如某无线回传设备中采用的crc(239,236),reed-solomon(255,239),polar(690,460)都规定有固定的初始数据长度。
5.综上所述可以看出,如何将长度不同的数据固定为统一长度的数据是目前有待解决的问题。


技术实现要素:

6.本发明的目的是提供一种基于fpga固定以太网数据长度的方法、设备以及计算机可读存储介质,以解决现有技术中数据长度不固定所带来的问题。
7.为解决上述技术问题,本发明提供一种基于fpga固定以太网数据长度的方法、设备以及计算机可读存储介质,包括:
8.通过写入端握手模块与ethernet ip模块构建连接,实时检测是否有以太网数据包输入;
9.当所述写入端握手模块检测到有以太网数据包输入时,利用数据缓存重排模块判断所述以太网数据包中的每组数据是否能构成预设字节数据;
10.若当前组数据不能构成所述预设字节数据,则将所述当前组数据进行缓存,等待下一组数据输入;
11.若所述当前组数据能构成所述预设字节数据,则通过写入端缓存所述当前组数据到双端口ram模块中,同时利用写入端地址生成模块更新所述双端口ram模块的写入地址;
12.利用地址比较模块比较所述双端口ram模块的写入地址和读取地址,当所述写入地址长度比所述读取地址长度大于预设长度时,触发读出端地址生成模块产生所述双端口ram模块的读取地址,并向下游编码模块输出所述双端口ram模块已缓存的数据。
13.优选地,所述通过写入端握手模块与ethernet ip模块构建连接,实时检测是否有
以太网数据包输入前包括:
14.通过外接光电转换模块连接所述ethernet ip模块和所述control fsm模块,便于传输以太网数据包。
15.优选地,所述通过写入端握手模块与ethernet ip模块构建连接,实时检测是否有以太网数据包输入包括:
16.当所述写入端握手模块检测到所述ethernet ip模块发出的以太网数据包是错误数据包时,将刚写入的入的数据作为无效数据,在接收下一个数据包时要覆盖之前的所述错误数据包。
17.优选地,所述当所述写入端握手模块检测到是错误数据包,所述地址生成模块的地址不会更新,保持之前正确数据包的地址。
18.优选地,所述利用数据缓存重排模块判断所述以太网数据包中的每组数据是否能构成预设字节数据包括:
19.当所述数据缓存重排模块在处理第一组数据或者最后一组数据时,若所述第一组数据或者所述最后一组数据能构成所述预设字节数据时,则所述写入端地址生成器的生成地址会增加;
20.若所述第一组数据或者所述最后一组数据不能构成所述预设字节数据时,则所述写入端地址生成器的生成地址保持不变。
21.优选地,当所述写入地址长度比所述读取所述地址长度大于预设长度时,则所述地址比较模块输出已缓存足够数据的指示信号至读出端信号处理模块;
22.利用所述读出端信号处理模块输出数据有效信号至所述下游编码模块,并输出地址使能信号至所述读出端地址生成模块产生读取地址。
23.优选地,所述利用所述读出端信号处理模块输出数据有效信号至所述下游编码模块包括:
24.通过所述读出端信号处理模块输出数据有效信号,使所述双端口ram模块的读出端口与所述下游编码模块建立连接,将所述地址使能信号传输至所述读出端地址生成模块产生读出端地址并控制所述双端口ram模块的读出端口传输相应的数据至所述下游编码模块;
25.并实时检测所述以缓存的数据是否传输完成;若所述以缓存的数据传输完成,则断开所述双端口ram模块的读出端口与所述游编码模块的连接。
26.优选地,所述触发读出端地址生成模块产生所述双端口ram模块的读取地址,并向下游编码模块输出所述双端口ram模块已缓存的数据后包括:
27.当所述下游编码模块处于异常情况造成所述双端口ram模块数据溢出时,将后续以太网数据包丢弃,直至所述下游编码模块恢复正常。
28.本发明还提供了一种基于fpga固定以太网数据长度的设备,包括:
29.存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于fpga固定以太网数据长度的方法的步骤。
30.本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于fpga固定以太网数据长度的方法的步骤。
31.本发明所提供的一种基于fpga固定以太网数据长度的方法,通过写入端握手模块与ethernet ip模块构建连接,检测是否有数据包输入,当有数据包输入时,利用数据缓存重排模块对每组数据进行数据重排,若每组数据构不成预设字节数据,则将其缓存等待下一组数据进入,若每组数据重排为预设字节数据,然后将固定好的数据缓存于双端口ram模块中,并更新写入端地址生成器的地址,当所述写入地址长度比所述读取地址长度大于预设长度时,触发读出端地址生成模块产生所述双端口ram模块的读取地址,并向下游编码模块传输所述双端口ram模块中以缓存的数据。本发明在fpga易于处理并行数据的特点,通过control fsm模块实现了将不固定长度的数据通过重排缓存在ram中,当达到固定长度时,将已缓存的固定长度数据输出至下游编码模块中,便于下游各个编码模块正常工作,适用于不同类型的编码模块。
附图说明
32.为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1为本发明所提供的基于fpga固定以太网数据长度的方法的第一种具体实施例的流程图;
34.图2为本发明所提供的总体框图;
35.图3为本发明所提供的基于fpga固定以太网数据长度的方法的第二种具体实施例的流程图;
36.图4为10g ethernet ip模块正常工作模式下输出接口信号时序图;
37.图5为数据缓冲模块的工作流程图;
38.图6为写入端地址生成器的工作流程图;
39.图7为地址比较器工作流程图;
40.图8为读出端信号处理单元工作流程图;
41.图9为本发明提供的实验仿真波形图。
具体实施方式
42.本发明的核心是提供一种基于fpga固定以太网数据长度的方法利用数据重排模块对数据重排,并缓存在ram中,当写入端地址程度大于读取地址时,将ram已经缓存的数据输入下游的编码模块中,达到了固定数据长度的目标。
43.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.请参考图1,图2,图1为本发明所提供的基于fpga固定以太网数据长度的方法的第一种具体实施例的流程图,图2为本发明所提供的总体框图;具体操作步骤如下:
45.步骤s101:通过写入端握手模块与ethernet ip模块构建连接,实时检测是否有以
太网数据包输入;
46.步骤s102:当所述写入端握手模块检测到有以太网数据包输入时,利用数据缓存重排模块判断所述以太网数据包中的每组数据是否能构成预设字节数据;
47.步骤s103:若当前组数据不能构成所述预设字节数据,则将所述当前组数据进行缓存,等待下一组数据输入;
48.步骤s104:若所述当前组数据能构成所述预设字节数据,则通过写入端缓存所述当前组数据到双端口ram模块中,同时利用写入端地址生成模块更新所述双端口ram模块的写入地址;
49.步骤s105:利用地址比较模块比较所述双端口ram模块的写入地址和读取地址,当所述写入地址长度比所述读取地址长度大于预设长度时,触发读出端地址生成模块产生所述双端口ram模块的读取地址,并向下游编码模块输出所述双端口ram模块已缓存的数据。
50.在本实施例中,首先利用写入端握手模块与ethernet ip模块连接,实时检测是否有数据包传输,当检测到有数据包传输时,利用数据缓存重排模块对数据包进行重排,判断每组数据是否能构成预设字节数据,若当前组数据不能构成预设字节数据,则将数据储存等待下一组数据进入,若当前组数据能够成,则写入双端口ram模块中,更新写入端地址,地址比较器比较写入端地址长度和读取端地址长度,当写入端地址长度大于读取端地址长度时,触发读出端地址生成模块产生读取地址,并向下游编码模块输出所述双端口ram已缓存的数据。本发明中利用fpga中的control fsm模块将数据进行重排字节并储存与ram中,当已缓存的数据达到固定长度时,将其已缓存的固定长度数据输出到下游模块,便于下游编码模块直接进行编码,并且可以应用于不同的编码模块,提高了传输效率。
51.基于上述实施例,本实施例对上述的方法进行了更加详细的说明,请参考图3,图3为本发明所提供的基于fpga固定以太网数据长度的方法的第二种具体实施例的流程图;具体步骤如下:
52.步骤s301:通过写入端握手模块与ethernet ip模块构建连接,并实时检测是否有以太网数据包输入;
53.首先,10gbps光信号接入光电转换模块,然后光电转换模块输出sfp+差分电信号并直接接入fpga 10g ethernet ip模块,10gethernet ip模块会将串行的差分电信号的数据包转变成以156.25mhz为工作频率的64比特数据位宽的axi-stream接口标准向外输出;其正常工作模式下输出接口信号时序图如图4所示。
54.步骤s302:当所述写入端握手模块检测到有以太网数据包输入时,利用所述数据缓存重排模块判断每组数据是否构成8字节数据;
55.步骤s303:若当前组数据能构成8字节数据,则将所述当前组数据缓存到双端口ram模块中,并触发写入端地址生成器增加地址,将写入端地址冲存储于地址储存器中;
56.步骤s304:若数据不能构成8字节数据,则将数据缓存,等待下一组数据进入,判断与组合之前数据是否能构成8字节数据,重复步骤s303;
57.当10g ethernet ip模块开始输出信号,本发明中control fsm模块中的写入端握手信号处理单元会检测到数据输入,并协同数据缓存重排模块将有效数据信息重新拼成64比特数据并写入双端口ram的写入端。数据缓存重排模块的工作流程图如图5所示。数据缓存重排模块的工作需要特别处理第一组数据和最后一组数据,第一组数据的有限数据信息
为最高2字节,数据缓存重排模块需要判断已缓存数据加上新增的这2字节是否可以构成8字节数据,如果是,则立即向双端口ram写入此数据;如果不是,则只需更新缓存数据和缓存指示值。最后一组数据的有效数据信息不固定,可以为1至8个字节,数据缓存重排模块同样需要判断已缓存数据加上最后一组新增的字节是否可以构成8字节数据,并做上述类似的处理。数据缓存重排模块处理中间每组数据时,因为每组数据都是确定8字节数据,所以此时其主要功能就是将新来的数据与缓存的数据构成8字节数据输出给双端口ram写入端,并同时将未传输的数据进行缓存。
58.control fsm模块中的写入端握手信号处理单元在检测到数据输入时,也会启动写入端地址生成器开始工作。当数据缓存重排模块在处理第一组数据或者最后一组数据时,能构成8字节数据时,则写入端地址生成器的生成地址会增加1;当不能构成8字节数据时,则写入端地址生成器的生成地址保持不变。当数据缓存重排模块在处理中间各组数据时,写入端地址生成器的生成地址会不断增加1;写入端地址生成器的工作流程图如图6所示。
59.步骤s305:利用地址比较模块比较所述双端口ram模块写入地址和读取地址的地址长度;
60.control fsm模块有个地址缓存器用来保存开始接收10gethernet ip模块输出的数据包时双端口ram的写入端的最后地址,control fsm模块会根据10g ethernet ip模块输出的无错误包和有错误包指示来更新写入端地址缓存器。每当接收到无错误包时,地址缓存器会更新至此时双端口ram的最后的写入地址,如此反复,在成功接收若干数据包后,地址缓存器里的地址会不断增大。但当接收到有错误包时,地址缓存器不会更新,仍保持前一包的最后地址,这样,其后接收的数据就会覆盖之前的错误数据,而错误数据不会传递到下游编码模块。
61.步骤s306:当所述写入地址长度比所述读取所述地址长度大于预设长度时,则所述地址比较模块输出已缓存足够数据的指示信号至读出端信号处理模块;
62.control fsm模块有个地址比较模块,用来比较双端口ram的上述地址缓存器的地址和读出端地址。当地址缓存器的地址比读取端地址大于某个固定长度时,会输出已缓存足够数据的指示信号通知读出端信号处理单元,地址比较器工作流程图如图7所示。
63.步骤s307:利用所述读出端信号处理模块输出数据有效信号至所述下游编码器,并输出地址使能信号至所述读出端地址生成模块;
64.当读出端信号处理单元收到地址比较器的足够数据的指示信号,会向下游编码模块输出数据有效信号,并向读出端地址生成器发出地址使能信号。读出端信号处理单元会维持这2个信号至此固定长度数据传输完毕,并回归空闲状态等待地址比较器的下一次指示信号,读出端信号处理单元工作流程图如图8所示。
65.步骤s308:通过所述读出端地址生成模块产生所述双端口ram模块的读取地址;
66.读出端地址生成器在收到地址使能信号时,地址增加1。如果没有收到地址使能信号,其地址保持不变。
67.步骤s309:根据所述双端口ram模块的读取地址所述双端口ram模块产生相对应的数据信息,并传输至下游编程模块。
68.双端口ram的读出端口会根据读出端地址生成器的生成地址输出相应的数据信
息。
69.至此,各个不同模块协同工作,一边将10g以太网的数据不间断的缓存至双端口ram中,当有超过1888字节固定长度的数据,就立即将这整块数据向下游编码模块传递,仿真结果如图9所示。
70.当下游编码模块一直处于异常,则双端口ram因无法及时读出数据而最终会被写满,此时,control fsm模块会产生双端口ram已满标志,并将后续数据包丢弃,直至下游编码模块正常读取数据为止。
71.在本实施例中,首先与10g ethernet ip构建练习,检测是否有数据传输,当有数据传输时,启动数据缓存重排模块开始工作,将数据重排成8字节的数据缓存于ram中,并更新写入端地址,利用地址比较器比较写入端地址和读出端地址是否大于预设长度,若大于预设长度,所述地址比较器发送足够数据的指示信号至读出端信号处理模块,然后读出端信号处理模块输出数据有效信号至下游编程模块,同时输出地址使能信号至读出端地址生成模块,使读出端生成地址模块生成地址,通过双端口ram的读出端传输已缓存的数据。本发明利用fpga中的control fsm模块将数据固定为固定长度的数据,便于下游的编程模块进行编码,提高了传输效率,并且适用于不同的编码模块。
72.本发明具体实施例还提供了一种基于fpga固定以太网数据长度的设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于fpga固定以太网数据长度的方法的步骤。
73.本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于fpga固定以太网数据长度的方法的步骤。
74.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
75.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的每组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
76.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
77.以上对本发明所提供的一种基于fpga固定以太网数据长度的方法、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若
干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1