基于fifo队列的数据包线速处理方法及其装置的制作方法

文档序号:6359996阅读:197来源:国知局
专利名称:基于fifo队列的数据包线速处理方法及其装置的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种网络通信中基于FIFO队列的数据包线速处理方法及其装置。
背景技术
随着网络通信技术的发展,在进行数据传输的逻辑设计时所采用的数据传输速度越来越高,支持的数据流的带宽也越来越大。通常在逻辑处理时,对一个数据包的处理都采用FIFO(先进先出)队列进行隔离,中间加入状态机(State machine)进行控制的方案,如图1所示,通常FIFO队列的接口信号包括ren状态机到FIFO队列的读信号;dataFIFO队列的输出数据;emptyFIFO队列的空信号;aemptyFFIO队列的几乎空信号;FIFO队列通过上述信号与状态机进行通信。
具体的逻辑处理过程为一个数据包到达后保存于FIFO队列中,根据状态机的读使能信号ren读出该数据包,并通过FIFO队列的data信号将数据输出,保存的数据包读出后发送empty或几乎空信号aempty。
对于不定长包的处理,通常也是基于上述结构实现,即采用FIFO队列将需要进行处理的数据隔离成几个处理域,并利用状态机在每个处理域内进行协议及控制处理。但由于不定长数据包的不定长特性决定了在进行数据处理时必须采用字级节的FIFO队列,而采用字节级的FIFO队列只有取出数据后获得EOF(End of Framer,结束标识)信号才知道数据包读出过程结束。由于必须读出全部数据才能知道数据包是否全部读出,所以下一拍的读使能必须根据上次读出的数据内容确定,即读使能为一个由读出数据信号参与的组合逻辑信号;对于这种情况,在数据传输速率较低,即时钟频率较低时,通常不会对数据的处理过程有很大的影响,而当进行高速数据传输处理,即时钟频率较高时,由于保存数据的FPGA(现场可编程逻辑门列阵)内部的RAM(随机存储器)的Tco(Clk to signal validdelay,信号有效相对于时钟的延时)较大,如果采用一个组合逻辑信号作为RAM的读使能信号,则Tco的时长加上产生组合逻辑信号的延时将超过时钟周期,给数据传输的逻辑处理带来极大的困难。
因此,为解决上述问题,对于高速数据传输的情况,RAM输出数据后,需要打一级触发器,对数据进行延时一拍的处理,以减少Tco的时间,因为通常触发器的Tco远小于RAM的Tco。经过这样的处理后,对于状态机的处理又产生了不利的影响,即状态机内部就要多等一拍,使状态机与前一级FIFO队列间无法以线速处理传输处理传输数据,即数据处理的过程中要有等待的时间间隔,导致无法满足网络通信中对数据实现线速处理的要求。所以,在FIFO队列间进行数据处理时,如果采用高频时钟,则很难达到对数据的线速处理。

发明内容
本发明的目的是提供一种基于FIFO队列的数据包线速处理方法及其装置,以解决现有技术中存在的针对不定长数据包难以实现线速处理的问题。
本发明的目的是这样实现的所述的基于FIFO队列的数据包线速处理方法,包括当前一级FIFO(先进先出)队列中存贮的数据包需要输出时,将输出的数据经时序转换处理,去除数据有效相对时钟的时延后发送给状态机,并由状态机将数据发送给后一级FIFO队列。
所述的时序转换处理过程包括
根据前一级FIFO输出的empty(空)信号或aempty(几乎空)信号,以及后一级FIFO队列的afull(几乎满)信号产生针对前一级FIFO的读使能信号;将前一级FIFO根据接收到的读使能信号输出的数据进行缓存,并产生数据有效信号输出;将经过缓存处理的数据和数据有效信号输出数据给状态机。
所述的根据前一级FIFO输出的空信号empty或几乎空信号aempty,以及后一级FIFO队列的afull(几乎满)信号,产生针对前一级FIFO的读使能信号进一步包括当前一级FIFO队列输出的空信号empty或几乎空信号aempty显示前一级FIFO队列未处于空或几乎空状态,且后一级FIFO队列的afull(几乎满)信号显示后一级FIFO队列未处于几乎满状态时,向前一级FIFO队列发送读使能信号,以触发前一级FIFO队列输出数据。
所述的将前一级FIFO队列根据接收到的读使能信号输出的数据进行缓存,并产生数据有效信号输出进一步包括将前一级FIFO队列输出的数据进行缓存处理,以去除数据相对时钟的时延;将发送给前一级FIFO队列的读使能信号进行延时处理,延时周期为前一级FIFO队列输出数据相对时钟的延时周期。
所述的后一级FIFO队列的几乎满信号afull表示后一级FIFO队列为几乎满状态,即后一级FIFO队列中还可以存入前一级FIFO队列与后一级FIFO队列间正在传输的数据。
所述的由状态机将数据信息发送给后一级FIFO队列包括状态机向后一级FIFO队列发送后一级FIFO队列的写使能信号;后一级FIFO队列根据发来的写使能信号从状态机获取数据,并产生几乎满信号afull发出。
该方法中所述的将前一级FIFO队列输出的数据进行缓存处理为将前一级FIFO队列输出的数据进行延时一个时钟周期的处理;所述的数据有效信号为前一级FIFO队列的读使能信号延时两个时钟周期获得。
该方法中所述的前一级FIFO队列和后一级FIFO队列均为字节级的FIFO队列。
该方法中所述的数据包为不定长数据包。
所述的基于FIFO队列的数据包线速处理装置,包括前一级FIFO队列接收待处理的数据包,接收时序转换模块发来的读使能信号,向时序转换模块发送数据,以及空信号empty或几乎空信号aempty;时序转换模块接收前一级FIFO队列的输出数据,并缓存前一级FIFO队列的输出数据,还接收后一级FIFO队列发来的几乎满信号afull,并输出数据有效信号和经缓存处理后的数据给状态机;状态机接收时序转换模块发送来的数据有效信号和时序转换模块发来的数据,向后一级FIFO队列发送写使能信号和数据;后一级FIFO队列接收状态机发送来的后一级FIFO队列的写使能信号,根据该信号接收状态机发来的数据,并输出几乎满信号afull给时序转换模块,以控制时序转换模块是否继续从前一级FIFO队列中读数据。
由上述技术方案可以看出,本发明利用接口转换的思想解决了高速数据传输情况下不定长数据包的全流水逻辑设计,即在高速数据传输过程中对不定长数据包实现了线速处理。从而解决了现有技术中所存在的当时钟频率很高时,较难实现针对数据的线速处理的问题,提高了数据传输的性能,有效地克服了现有技术中高频时钟的采用与实现数据线速处理间的矛盾。而且,本发明所提供的实施方案较为简单,易于实现。


图1为现有技术中采用FIFO进行数据处理的结构示意图;图2为本发明所述的方法的实现流程图;
图3为本发明所述的装置的结构示意图;图4为图3的时序图。
具体实施例方式
本发明的核心是将前一级FIFO队列的输出进行时序转换处理为可以线速处理的数据后发送给状态机,并由状态机将数据线速发送给后一级FIFO队列,这样,既可以达到数据处理速度的要求,又可以实现针对基于FIFO队列的数据的线速处理,即实现针对基于FIFO队列的数据处理的流水设计。也就是说,本发明不仅对发送给状态机的前一级FIFO队列输出的数据进行延时处理,而且在此基础上,还将前一级FIFO队列的empty和几乎空信号aempty进行时序转换处理为数据有效信号,发送给状态机,状态机根据数据有效信号生成针对后一级FIFO队列的写使能信号,后一级FIFO队列根据写使能信号接收状态机发来的数据。
本发明所述的方法的具体实现方式如图2所示,具体包括以下步骤步骤1前一级FIFO队列接收需要处理的不定长数据包;所述的前一级FIFO队列为字节级的FIFO队列;本发明主要是针对不定长数据包的处理而设计的,对于定长数据包的处理可以采用较为简单的如背景技术中所描述的方案即可。
步骤2当前一级FIFO队列接收待处理的数据包时,前一级FIFO队列输出的空信号empty和几乎空信号aempty发生跳变,以通知下一级处理模块前一级FIFO队列有待处理数据,而不再为空或几乎空状态;空信号empty用于通知下一级处理模块前一级FIFO队列是否为空状态,如果不为空状态,则产生前一级FIFO队列的读使能信号,否则,不作处理;几乎空信号aempty用于通知下一级处理模块前一级FIFO队列是否为几乎空状态,如果为几乎空状态,则停止向前一级FIFO队列发送读使能信号,即停止继续从前一级FIFO队列中读数据,否则,不作处理。
步骤3根据前一级FIFO队列输出的空信号empty和几乎空信号aempty状态,以及后一级FIFO队列的几乎满信号afull状态,产生针对前一级FIFO队列的读使能信号ren,该信号用于触发前一级FIFO队列输出数据,并分别执行步骤4和步骤6;后一级FIFO队列的几乎满信号afull是由后一级FIFO队列根据自己的数据处理情况产生的,所述的几乎满表示后一级FIFO队列中还可以存入前一级FIFO队列与后一级FIFO队列之间正在传输的数据。
步骤4前一级FIFO队列的读使能信号ren产生后,将其作延时两个时钟周期的处理,以生成数据有效信号data_valid,并发送给状态机,执行步骤5数据有效信号data_valid用于触发产生后一级FIFO队列的写使能信号wen,同时触发状态机接收数据处理过程。
步骤5状态机根据数据有效信号data_valid生成针对后一级FIFO队列的写使能信号wen,并发送给后一级FIFO队列,执行步骤8;写使能信号wen用于触发向后一级FIFO队列中写入数据处理过程。
步骤6前一级FIFO队列收到读使能信号ren后,触发前一级FIFO队列中输出数据的处理过程,并输出其中的待处理数据rdata,执行步骤7。
步骤7将前一级FIFO队列输出的数据信号data进行延时一个时钟周期的处理,并发送给状态机,由状态机将待处理数据发送给后一级FIFO队列,执行步骤8;该步骤有效地去除了数据处理过程中的延时,同时,保证了数据有效信号data_valid与数据信号data的同步。
步骤8后一级FIFO队列接收写使能信号wen,以及状态机发来的待处理数据wdata,并触发其写入数据的处理过程,将状态要发来的数据wdata写入后一级FIFO队列。
本发明还提供了一种基于FIFO队列的数据包线速处理装置,该装置的具体实施方式
如图3所示,该装置的主要特点是在状态机与前一级FIFO的接口中间插入了一个接口转换模块,即时序转换模块,对前一级FIFO队列输出的信号进行时序转换后,发送给状态机,以实现对不定长数据包的线速处理,所述装置的具体结构包括前一级FIFO队列接收待处理的数据包,接收时序转换模块发来的读使能信号ren,并在该信号的触发下向时序转换模块发送数据,前一级FIOF队列同时还向时序转换模块发送空信号empty或几乎空信号aempty;前一级FIFO队列的输出信号包括emptyFIFO空信号;aemptyFIFO的几乎空信号;rdata前一级FIFO的输出数据;前一级FIFO队列接收的信号包括ren状态机对前一级FIFO的读使能,该信号由时序转换模块根据空信号empty、几乎空信号aempty和几乎满信号afull产生,具体产生方法如下if(afull)if(ren)ren<=~aempty;elseren<=~empty;Elseren<=0;即当前一级FIFO队列输出的空信号empty和几乎空信号aempty,显示前一级FIFO队列未处于空和几乎空状态,且后一级FIFO队列输出的几乎满信号afull显示后一级FIFO队列中未处于几乎满状态时,则时序转换模块产生读使能信号ren。
时序转换模块接收前一级FIFO队列的输出数据rdata,采用触发器将前一级FIFO队列的输出数据rdata进行延时一个时钟周期的寄存处理,并输出数据有效信号data_valid和经过延时处理后的数据信号data给状态机,还接收后一级FIFO队列发来的几乎满信号afull;
时序转换模块将主要是将从前一级FIFO队列读出的数据在触发器中进行一拍寄存,有效地减小Tco,并根据前一级FIFO队列的空信号和几乎空以及前一级FIFO队列输出数据的延时周期产生数据有效信号data_valid,即数据有效信号data_valid为将读使能信号ren延时处理后获得,延时周期为前一级FIFO队列输出数据的延时周期;例如,当前一级FIFO队列输出数据的延时周期为两个时钟周期时,可以采用读使能信号ren延时两个时钟周期作为数据有效信号data_valid。
状态机根据时序转换模块发送来的数据有效信号data_valid,接收时序转换模块输出的数据信号data,并向后一级FIFO队列发送写使能信号wen,输出数据wdata给后一级FIFO队列,其中所述的写使能信号为根据数据信号data_valid产生;图3所示的本发明的装置的时序图如图4所示,由该时序图可以看出状态机的引入的数据有效信号data_valid和数据信号data相对于时钟的延时已经被有效地去除了,从而为实现数据的线速处理提供了可能;后一级FIFO队列接收状态机发送来的后一级FIFO队列的写使能信号wen,根据该信号接收状态机发送来的数据,并输出几乎满信号afull给时序转换模块,以控制时序转换模块是否继续从前一级FIFO队列中读数据;所述的full信号为后一级FIFO的几乎满信号,后一级FIFO队列的几乎满状态是指后一级FIFO队列仍可以存入前后两级FIFO队列之间正在处理的所有数据,以保证总线上保持的数据仍能够进入后一级FIFO队列。
经过上述对本发明的具体实施方式
的描述后,可以看出本发明中的状态机的输入信号仅为数据有效信号data_valid和数据信号data,大大简化了实现线速处理不定长数据包时状态机的设计。
权利要求
1.一种基于FIFO队列的数据包线速处理方法,其特征在于包括当前一级FIFO(先进先出)队列中存贮的数据包需要输出时,将输出的数据经时序转换处理,去除数据有效相对时钟的时延后发送给状态机,并由状态机将数据发送给后一级FIFO队列。
2.根据权利要求1所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的时序转换处理过程包括根据前一级FIFO输出的empty(空)信号或aempty(几乎空)信号,以及后一级FIFO队列的afull(几乎满)信号产生针对前一级FIFO的读使能信号;将前一级FIFO根据接收到的读使能信号输出的数据进行缓存,并产生数据有效信号输出;将经过缓存处理的数据和数据有效信号输出数据给状态机。
3.根据权利要求2所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的根据前一级FIFO输出的空信号empty或几乎空信号aempty,以及后一级FIFO队列的afull(几乎满)信号,产生针对前一级FIFO的读使能信号进一步包括当前一级FIFO队列输出的空信号empty或几乎空信号aempty显示前一级FIFO队列未处于空或几乎空状态,且后一级FIFO队列的afull(几乎满)信号显示后一级FIFO队列未处于几乎满状态时,向前一级FIFO队列发送读使能信号,以触发前一级FIFO队列输出数据。
4.根据权利要求2所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的将前一级FIFO队列根据接收到的读使能信号输出的数据进行缓存,并产生数据有效信号输出进一步包括将前一级FIFO队列输出的数据进行缓存处理,以去除数据相对时钟的时延;将发送给前一级FIFO队列的读使能信号进行延时处理,延时周期为前一级FIFO队列输出数据相对时钟的延时周期。
5.根据权利要求2所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的后一级FIFO队列的几乎满信号afull表示后一级FIFO队列为几乎满状态,即后一级FIFO队列中还可以存入前一级FIFO队列与后一级FIFO队列间正在传输的数据。
6.根据权利要求5所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的由状态机将数据信息发送给后一级FIFO队列包括状态机向后一级FIFO队列发送后一级FIFO队列的写使能信号;后一级FIFO队列根据发来的写使能信号从状态机获取数据,并产生几乎满信号afull发出。
7.根据权利要求2、3、4或6所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的将前一级FIFO队列输出的数据进行缓存处理为将前一级FIFO队列输出的数据进行延时一个时钟周期的处理;所述的数据有效信号为前一级FIFO队列的读使能信号延时两个时钟周期获得。
8.根据权利要求1所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的前一级FIFO队列和后一级FIFO队列均为字节级的FIFO队列。
9.根据权利要求1所述的基于FIFO队列的数据包线速处理方法,其特征在于所述的数据包为不定长数据包。
10.一种基于FIFO队列的数据包线速处理装置,其特征在于包括前一级FIFO队列接收待处理的数据包,接收时序转换模块发来的读使能信号,向时序转换模块发送数据,以及空信号empty或几乎空信号aempty;时序转换模块接收前一级FIFO队列的输出数据,并缓存前一级FIFO队列的输出数据,还接收后一级FIFO队列发来的几乎满信号afull,并输出数据有效信号和经缓存处理后的数据给状态机;状态机接收时序转换模块发送来的数据有效信号和时序转换模块发来的数据,向后一级FIFO队列发送写使能信号和数据;后一级FIFO队列接收状态机发送来的后一级FIFO队列的写使能信号,根据该信号接收状态机发来的数据,并输出几乎满信号afull给时序转换模块,以控制时序转换模块是否继续从前一级FIFO队列中读数据。
全文摘要
本发明提供了一种基于FIFO队列的数据包线速处理方法及其装置,实现了当前一级FIFO队列中输出数据时,将其输出的数据经时序转换处理,去除数据有效相对时钟的时延后发送给状态机,并由状态机将数据发送给后一级FIFO队列。因此,本发明解决了高速数据传输情况下不定长数据包的全流水逻辑设计,在高速数据传输过程中对不定长数据包实现了线速处理。从而解决了现有技术中所存在的当时钟频率很高时,较难实现针对数据的线速处理的问题,有效地克服了现有技术中高频时钟的采用与实现数据线速处理间的矛盾。
文档编号G06F5/06GK1540494SQ03127969
公开日2004年10月27日 申请日期2003年4月26日 优先权日2003年4月26日
发明者叶锦华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1