基于异步时钟的FPGA万兆以太网数据高速发送方法与流程

专利2022-06-29  64


本发明涉及数据传输技术领域,尤其涉及一种基于axi-stream协议的fpga万兆以太网数据线速传输方法。



背景技术:

xilinx公司提供的fpga的ip核的数据传输接口大多为axi接口,特别是其提供的万兆以太网ip核中所提供的数据传输接口为axi-stream接口,并且由于xilinx的7series和ultrascale的fpga在架构上不同,其对应的万兆以太网ip核有所区别,在使用万兆以太网ip核时数据传输的axi-stream接口的发送和接收端在不同的时钟域下工作,这样就必须对其进行跨时钟域操作。

而xilinx公司现有提供的axi-stream接口的fifo在实际对万兆以太网ip核进行跨时钟域使用过程中,会出现当数据吞吐量接近线速时会出现错帧现象,具体表现为异步时钟的差异可能导致fifo写满丢失部分数据从而导致错帧,这样一来在实际使用中一旦吞吐量大时就会造成数据的丢失,达不到线速要求。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是针对现有技术中,没有在fifo存满的情况下针对万兆以太网数据传输特性进行丢弃一些数据帧,传输速率不到10gbps以及传输中错帧数量大的问题,通过使用一个异步fifo并针对万兆以太网数据的特性进行fifo写控制和fifo读控制,将万兆以太网的传输速率提升到接近10gbps不丢帧和不错帧,当存在数据突发的情况时能够缓存数据并对长时间10gbps传输的数据进行丢帧处理以防止错帧,达到提高传输速率和减少错帧的目的。

为了实现上述目的,本发明采用以下技术方案:

本发明提供了一种基于异步时钟的fpga万兆以太网数据高速发送方法,在fpga上建立通过axi4-stream总线进行通信的写控制模块,异步fifo、读控制模块、万兆以太网mac,其中写控制模块和异步fifo的写入端工作在第一时钟域a,读控制模块、万兆以太网mac和异步fifo的读出端工作在第二时钟域b;

所述写控制模块根据待发送数据的axi4-stream总线状态以及异步fifo的可编程满状态信号prog_full,来控制异步fifo写入端的fifo写使能信号wr_en,其中异步fifo可编程满状态信号prog_full有效的条件设置为异步fifo能够容纳的数据量小于万兆以太网传输所容忍的最大帧长的k倍,其中k的范围为[0.01,0.125];

所述读控制模块根据异步fifo读数据状态以及异步fifo的可编程空状态信号prog_empty,来控制异步fifo读出端的fifo读使能信号rd_en以及万兆以太网mac的读出数据有效信号axis_tvalid,其中异步fifo可编程空状态信号prog_empty有效的条件设置为异步fifo能够容纳的数据量大于设定的阈值,该阈值与时钟域a与时钟域b之间的精准度频差相关。

进一步的,本发明所提出的一种基于异步时钟的fpga万兆以太网数据高速发送方法,写控制模块实现的流程为:

异步fifo的写数据由tdata,tkeep,tlast三类信号构成,异步fifo写数据的位宽是这三类信号位宽的总和,这三类信号直接来自待发送数据axi4-stream总线的发送数据axis_tdata,保持发送数据信号axis_tkeep,发送数据的最后标志位信号axis_tlast;

异步fifo的写使能信号wr_en由待发数据axi4-stream总线的发送数据有效信号axis_tvalid信号与中间控制信号wr_mask逻辑与产生;

所述wr_mask信号在上电时设置为高电平,在待发数据axi4-stream总线的axis_tvalid信号与axis_tlast信号都为高电平时设置为异步fifo可编程满状态信号prog_full的反状态;

待发送数据axi4-stream总线的传输握手信号axis_tready永远设置为高电平。

进一步的,本发明所提出的一种基于异步时钟的fpga万兆以太网数据高速发送方法,所述读控制模块实现的流程为:

万兆以太网mac的axi4-stream总线的读出数据有效信号axis_tvalid在可编程空状态信号prog_empty无效时设置为高电平,在可编程空状态信号prog_empty有效时且检测到传输握手信号axis_tready与异步fifo读数据的最后标志位信号tlast都有效时,设置为低电平;

异步fifo的读使能信号rd_en由读出数据有效信号axis_tvalid以及传输握手信号axis_tready通过逻辑与产生;

万兆以太网mac的axi4-stream总线的读出数据axis_tdata,保持读出数据信号axis_tkeep,读出数据的最后标志位信号axis_tlast直接来自于异步fifo读数据的tdata,tkeep,tlast信号。

进一步的,本发明所提出的一种基于异步时钟的fpga万兆以太网数据高速发送方法,两个异步时钟的工作频率为156.25mhz。

进一步的,本发明所提出的一种基于异步时钟的fpga万兆以太网数据高速发送方法,异步fifo能够容纳的数据量大于设定的阈值设置为10。

本发明采用以上技术手段,与现有技术相比具有以下技术效果:

本发明提出了一种基于异步时钟的fpga万兆以太网数据高速发送方法,采用了针对万兆以太网传输特性对异步fifo进行读控制和写控制的方案,结构简单,易于实现,axi4-stream总线的万兆以太网数据帧在跨时钟域传输的时候,能够达到传输速率在接近10gbps不丢帧和不错帧的传输要求,在万兆以太网数据传输速率长时间在10gbps的情况下适当丢弃部分帧以避免错帧情况,这样使传输速率得到提升、错帧数量得到减少,既保留了xilinx提供的axi4-stream接口的异步fifo可以处理跨时钟域问题和解决突发问题并缓存数据的优势,又克服了xilinx提供的axi4-stream接口的异步fifo在数据传输速率接近10gbps后错帧,使万兆以太网数据无法高速完整传输的弊端。

附图说明

图1是本发明所述高速发送方法的结构示意图。

图2是axi4-stream总线协议时序图。

图3是本发明的写控制模块丢帧处理的各信号时序图。

图4是本发明的读控制模块的各信号时序图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

参见图1,本发明的基于异步时钟的fpga万兆以太网数据高速发送方法的操作步骤如下:

在fpga上建立写控制模块、具有可编程空与满信号标志的异步fifo、读控制模块以及xilinx公司的万兆以太网mac,这些模块之间通过如图2所示的axi4-stream总线进行通信,其中写控制模块以及异步fifo的写入端工作在时钟域a,读控制模块、万兆以太网mac以及异步fifo的读出端工作在时钟域b,两个异步时钟的工作频率均为156.25mhz。

待发送万兆以太网数据进入写控制模块后,其axi4-stream总线的axis_tdata,axis_tkeep,axis_tlast作为异步fifo的写数据的tdata,tkeep,tlast三种信号,而其axi4-stream总线的axis_tready永远保持高电平;写控制模块根据待发送数据的axi4-stream总线状态以及异步fifo的可编程满状态信号prog_full来控制异步fifo写入端的fifo写使能信号wr_en,其中异步fifo可编程满状态信号prog_full有效的条件设置为异步fifo能够容纳的数据量小于万兆以太网传输所容忍的最大帧长的八分之一。

读控制模块根据异步fifo读数据状态以及异步fifo的可编程空状态信号prog_empty来控制异步fifo读出端的fifo读使能信号rd_en以及万兆以太网mac的axis_tvalid信号,其中异步fifo可编程空状态信号prog_empty有效的条件设置为异步fifo能够容纳的数据量大于设定的阈值,该阈值与时钟域a与时钟域b之间的精准度频差相关,一般设置为10。

读控制模块再将axi4-stream总线的万兆以太网数据传输到万兆以太网mac用于发送,此时万兆以太网数据高速发送完成。

下面作进一步详细说明:

如图3所示,异步fifo的写控制信号wr_en信号由待发数据axi4-stream总线的axis_tvalid信号与中间控制信号wr_mask逻辑与产生,其中所述wr_mask信号在上电时设置为高电平,在待发数据axi4-stream总线的axis_tvalid信号与axis_tlast信号都为高电平时设置为异步fifo可编程满状态信号prog_full的反状态;当异步fifo快满的时候,prog_full转为高电平时且axis_tvalid信号与axis_tlast信号都为高电平时,wr_en信号变成低电平,异步fifo停止写入并丢弃一帧数据,避免了fifo存满造成一部分数据丢失致使以太网帧不完整,从而导致错帧问题的出现。

如图4所示,万兆以太网mac的axi4-stream总线的axis_tdata,axis_tkeep,axis_tlast直接来自于异步fifo读数据的tdata,tkeep,tlast信号,万兆以太网mac的axi4-stream总线的axis_tvalid信号在prog_empty信号无效时设置为高电平,在prog_empty信号有效时且检测到axis_tready与异步fifo的tlast都有效时,设置为低电平,异步fifo的读使能信号rd_en由读axis_tvalid以及axis_tready通过逻辑与产生;当异步fifo快空的时候,prog_empty信号有效,检测到axis_tready与异步fifo的tlast都有效时,axis_tvalid和rd_en信号均变成低电平,以确保从异步fifo中将万兆以太网数据完整的一帧读出,避免了fifo读空所导致错帧问题的出现。

以上详细描述了本发明的具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。


技术特征:

1.一种基于异步时钟的fpga万兆以太网数据高速发送方法,其特征在于,在fpga上建立通过axi4-stream总线进行通信的写控制模块,异步fifo、读控制模块、万兆以太网mac,其中写控制模块和异步fifo的写入端工作在第一时钟域a,读控制模块、万兆以太网mac和异步fifo的读出端工作在第二时钟域b;

所述写控制模块根据待发送数据的axi4-stream总线状态以及异步fifo的可编程满状态信号prog_full,来控制异步fifo写入端的fifo写使能信号wr_en,其中异步fifo可编程满状态信号prog_full有效的条件设置为异步fifo能够容纳的数据量小于万兆以太网传输所容忍的最大帧长的k倍,其中k的范围为[0.01,0.125];

所述读控制模块根据异步fifo读数据状态以及异步fifo的可编程空状态信号prog_empty,来控制异步fifo读出端的fifo读使能信号rd_en以及万兆以太网mac的读出数据有效信号axis_tvalid,其中异步fifo可编程空状态信号prog_empty有效的条件设置为异步fifo能够容纳的数据量大于设定的阈值,该阈值与时钟域a与时钟域b之间的精准度频差相关。

2.根据权利要求1所述的一种基于异步时钟的fpga万兆以太网数据高速发送方法,其特征在于,写控制模块实现的流程为:

异步fifo的写数据由tdata,tkeep,tlast三类信号构成,异步fifo写数据的位宽是这三类信号位宽的总和,这三类信号直接来自待发送数据axi4-stream总线的发送数据axis_tdata,保持发送数据信号axis_tkeep,发送数据的最后标志位信号axis_tlast;

异步fifo的写使能信号wr_en由待发数据axi4-stream总线的发送数据有效信号axis_tvalid信号与中间控制信号wr_mask逻辑与产生;

所述wr_mask信号在上电时设置为高电平,在待发数据axi4-stream总线的axis_tvalid信号与axis_tlast信号都为高电平时设置为异步fifo可编程满状态信号prog_full的反状态;

待发送数据axi4-stream总线的传输握手信号axis_tready永远设置为高电平。

3.根据权利要求1所述的一种基于异步时钟的fpga万兆以太网数据高速发送方法,其特征在于,所述读控制模块实现的流程为:

万兆以太网mac的axi4-stream总线的读出数据有效信号axis_tvalid在可编程空状态信号prog_empty无效时设置为高电平,在可编程空状态信号prog_empty有效时且检测到传输握手信号axis_tready与异步fifo读数据的最后标志位信号tlast都有效时,设置为低电平;

异步fifo的读使能信号rd_en由读出数据有效信号axis_tvalid以及传输握手信号axis_tready通过逻辑与产生;

万兆以太网mac的axi4-stream总线的读出数据axis_tdata,保持读出数据信号axis_tkeep,读出数据的最后标志位信号axis_tlast直接来自于异步fifo读数据的tdata,tkeep,tlast信号。

4.根据权利要求1所述的一种基于异步时钟的fpga万兆以太网数据高速发送方法,其特征在于,两个异步时钟的工作频率为156.25mhz。

5.根据权利要求1所述的一种基于异步时钟的fpga万兆以太网数据高速发送方法,其特征在于,异步fifo能够容纳的数据量大于设定的阈值设置为10。

技术总结
本发明公开提供了一种基于异步时钟的FPGA万兆以太网数据高速发送方法,包括以下步骤:写控制模块接收到AXI‑Stream总线的待发送以太网数据后,根据待发送数据的AXI4‑Stream总线状态以及异步FIFO的可编程满状态信号prog_full来控制异步FIFO的写入,同时,读控制模块根据异步FIFO读数据状态以及异步FIFO的可编程空状态信号prog_empty来控制异步FIFO的读出,异步FIFO读出的以太网数据再传输到万兆以太网MAC中进行发送。本发明针对万兆以太网传输特性,采用了对异步FIFO进行写控制和读控制的方案,既解决了万兆以太网数据跨时钟域问题又有效提高了数据发送速率和保证了数据完整性,具有结构简单,易于实现的特点。

技术研发人员:李澄;李春鹏;官国飞;王宁
受保护的技术使用者:江苏方天电力技术有限公司
技术研发日:2020.01.15
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-21280.html

最新回复(0)