多通道fifo缓冲器及其控制方法

文档序号:6633066阅读:331来源:国知局
多通道fifo缓冲器及其控制方法
【专利摘要】本发明提供的多通道FIFO缓冲器及其控制方法,所述FIFO缓冲器包括:数据存储模块、读写指针控制模块、状态标识模块、以及数据选择模块;所述数据存储模块用于:存储数据,其包括:内部存储单元、输入端寄存器阵列、输出端寄存器阵列、第一多路选择器;所述输入端寄存器阵列R2包括多个输入端寄存器,所述输出端寄存器阵列包括至少一个输出端寄存器。本发明可以一次传输多个传输通道的多个输入数据,且在多个传输通道的数据拼凑写满输入端寄存器阵列后,才一次性写入到内部存储器,避免了由于数据位宽导致的内部存储器资源浪费的问题以及内部存储器读写性能的问题。
【专利说明】 多通道FIFO缓冲器及其控制方法

【技术领域】
[0001]本发明涉及集成电路【技术领域】,尤其涉及一种多通道FIFO缓冲器及其控制方法。

【背景技术】
[0002]FIFO (英文First In First Out的缩写)是在ASIC或FPGA设计中经常会用到的数据缓冲器,所述FIFO在数据转存过程中执行先进先出的策略。基于FIFO实现数据多通道/多数据类型的FIFO缓冲器通常具有两种结构。
[0003]其中,实现结构一为:采用多个FIFO缓冲器分别缓冲多个通道的传输数据,并在数据处理时再从这些FIFO中读出所需数据进行相应处理。
[0004]如图1所示,本实施方式中,以传输通道的数量为16个,传输通道的数据位宽为4bit为例做具体说明。如此,需要16个FIFO来缓冲每个通道的数据,每个FIFO内部要用到一个4bit宽的双端口 RAM,以及各自的读写指针控制单元和状态标识处理单元。另外,输出的数据还需要一个至少是16X4bit的多路选择(MUX)逻辑。
[0005]该种方式采用复制多个FIFO可以简单地实现多路数据的存储,但随着数据通道(路数)的增加,由于每个FIFO的RAM不能共享使用,所以双端口 RAM仅能采用数据位宽为大于等于4bit的物理RAM实现,而物理RAM由于限制,只能有固定的某些数据位宽可以用(如FPGA中的RAM最小传输位宽一般要求8bit),所以必要会造成不必要的RAM的浪费,另夕卜,每个FIFO都有各自的读写控制及状态产生单元,必然产生较多的重复逻辑,且随着通道的增加,FIFO所占用的资源会越来越多,造成资源的大量浪费,而且也会对后续设计带来较大的问题,如:对ASIC芯片的面积、功耗等都有特殊的要求,导致ASIC或FPGA的实现变得非常困难,严重影响整个系统的性能。
[0006]实现结构二为:采用一个或多个双端口 RAM,并将其分成多个区块,每个区块对应一个通道的数据,通过一组读写逻辑来控制所有通道数据的缓冲存储操作,读写指针的高位用来指示通道号,低位用来指示数据在指定区块内的具体地址。
[0007]如图2所示,本实施方式中,同样以传输通道的数量为16个,传输通道的数据位宽为4bit为例做具体说明。
[0008]这样的设计对于数据处理的带宽和RAM的个数有所限制,不能自由处理,且在大多数据应该场景下,仍会有类似实现方法一中的资源浪费的情况发生,在此不做详细赘述。另外,实现方法二的技术方案相较与实现方法一解决了多个FIFO中必须使用多个双端口RAM,多份读写控制和状态标志产生逻辑的资源浪费问题,但该方法因为只有一份读写逻辑,也就只能同时处理一个通道的数据,大大地降低了数据处理的带宽;进一步的,该方法虽然可以用少数双端口 RAM减少了 RAM的浪费现象,但在某些情况下RAM的浪费仍不能完全禁止,如上示例中,数据位宽为4bit,而对于FPGA设计中RAM的最小宽度实际上是有限制的,一般要求最小8bit,在这样的设计中,就有4bit的RAM是浪费的;进一步的,该FIFO种需要增加两个存储器R2、R3以用于分别存储读写指针,也导致了资源的浪费;进一步的,这样的设计在应用上不够灵活,每个通道所占用的存储空间是相对固定的,如某个或某几个通道的数据较少时,其所对应的存储空间不能有效的被利用。


【发明内容】

[0009]为解决上述技术问题,本发明的目的在于提供一种FIFO缓冲器控制方法及装置。
[0010]为实现上述发明目的之一,本发明一实施方式提供的多通道FIFO缓冲器包括:数据存储模块、读写指针控制模块、状态标识模块、以及数据选择模块;
所述数据存储模块用于:存储数据,其包括:内部存储单元、输入端寄存器阵列、输出端寄存器阵列、第一多路选择器;
所述读写指针控制模块包括:写操作控制单元、读操作控制单元;
写操作控制单元用于:控制将输入端寄存器阵列中的数据写入到内部存储单元; 读操作控制单元用于:将内部存储单元中的数据读取到输出端寄存器阵列;
所述状态标识模块包括:用于标识多通道FIFO缓冲器的存储状态;
所述状态标识单元用于标识多通道FIFO缓冲器的存储状态;
所述数据选择模块用于,根据所述状态标识单元标识的多通道FIFO缓冲器的存储状态,判断输入数据的存储位置;
其中,所述输入端寄存器阵列包括多个输入端寄存器,所述输出端寄存器阵列包括至少一个输出端寄存器。
[0011 ] 作为本发明的进一步改进,所述输入端寄存器的数量等于数据传输通道数量N,所述N为正整数;所述输入端寄存器的位宽等于传输通道的数据位宽。
[0012]作为本发明的进一步改进,所述输出端寄存器的数量为M个,所述M为正整数,其取值范围为I彡M彡N。
[0013]作为本发明的进一步改进,所述输出端寄存器的数量为N个。
[0014]作为本发明的进一步改进,所述数据存储单元还包括:第二多路选择器。
[0015]为了实现上述发明目的之一,本发明的一种多通道FIFO缓冲器的控制方法包括: S1、提供如上所述的多通道FIFO缓冲器。
[0016]S2、将所述多通道FIFO缓冲器初始化,以使所述FIFO缓冲器的存储状态为空;
53、第一个时钟周期到来时,且在写使能有效后,将通过多个传输通道的输入数据全部写入输出端寄存器阵列,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
[0017]作为本发明的进一步改进,第二个时钟周期到来时,所述内部存储单元为空;所述方法还包括:
54、在写使能有效后,根据输入端寄存器阵列、输出端寄存器阵列的状态,判断输入数据的存储位置;
若输出端寄存器阵列未满,则继续将输入数据写入到输出端寄存器阵列;
若输出端寄存器阵列为满,则将输入数据写入到输入端寄存器阵列;
若输出端寄存器阵列为满,同时,读使能有效,所述输出端寄存器阵列中存储的数据正在读出,则将输入数据写入到输出端寄存器阵列。
[0018]作为本发明的进一步改进,在以后的每个时钟周期到来时,所述方法还包括:
55、写使能有效后,判断内部存储单元是否为空, 若是,按照步骤S4判断输入数据的存储位置;
若否,根据输入端寄存器阵列的存储状态判断输入数据的存储位置。
[0019]作为本发明的进一步改进,所述:“若否,根据输入端寄存器阵列的存储状态判断输入数据的存储位置。”具体包括:
在同一个时钟周期内,若所述输入端寄存器阵列未满,且其存储空间的总位宽大于等于输入数据的总位宽,则将输入数据直接写入到所述输入端寄存器阵列;
若所述输入端寄存器阵列未满,且其存储空间的总位宽小于输入数据的总位宽,则将部分输入数据写入到所述输入端寄存器阵列,待所述输入端寄存器阵列为满后,将所述输入端寄存器阵列中的全部输入数据写入到所述内部存储单元之后,再将剩余的输入数据写入到所述输入端寄存器阵列;
若所述输入端寄存器阵列为满,则在当前时钟周期内,将所述输入端寄存器阵列中的全部输入数据写入到所述内部存储单元之后,再将输入数据写入到所述输入端寄存器阵列。
[0020]为了实现上述发明目的之一,本发明的一种多通道FIFO缓冲器的控制方法包括: Ml、提供如上所述的多通道FIFO缓冲器;
M2、将所述多通道FIFO缓冲器初始化,以使所述FIFO缓冲器的存储状态为空;
M3、第一个时钟周期到来时,且在写使能有效后,将通过多个传输通道的输入数据全部写入到第二多路选择器,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
[0021]与现有技术相比,本发明的多通道FIFO缓冲器控制方法及装置,可以一次传输多个传输通道的多个输入数据,且在多个传输通道的数据拼凑写满输入端寄存器阵列后,才一次性写入到内部存储器,避免了由于数据位宽导致的内部存储器资源浪费以及内部存储器读写性能的问题;且该多通道FIFO缓冲器控制逻辑简单,可以同时处理多通道中的数据,保证了数据处理可以达到最大带宽,提高了系统性能,尤其在ASIC和FPGA设计中,可以有更低的功耗,更快的处理速度,以及节省的更多的资源或面积。

【专利附图】

【附图说明】
[0022]图1是现有技术第一实施方式中FIFO缓冲器的结构示意图;
图2是现有技术第二实施方式中FIFO缓冲器的结构示意图;
图3是本发明一实施方式FIFO缓冲器控制方法的流程图;
图4是本发明一实施方式中FIFO缓冲器的模块示意图;
图5是本发明一实施方式中FIFO缓冲器的结构示意图;
图6是本发明另一实施方式中FIFO缓冲器的结构示意图。

【具体实施方式】
[0023]以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
[0024]本发明的FIFO缓冲器包含多个控制逻辑,以实现多个通道数据的先进先出。
[0025]结合图3、图4所示,本发明一实施方式的多通道FIFO缓冲器的包括:数据存储模块100、读写指针控制模块200、状态标识模块300、以及数据选择模块400。
[0026]本实施方式中,存储模块100用于存储数据;包括:内部存储单元R1、输入端寄存器阵列R2、输出端寄存器阵列R3、第一多路选择器Ml,其中,所述输入端寄存器阵列R2包括多个输入端寄存器,所述输出端寄存器阵列R3包括至少一个输出端寄存器。
[0027]本实施方式中,设计N条数据传输通道,N为正整数。所述输入端寄存器阵列R2包括输入端寄存器的数量等于数据传输通道数N。所述输出端寄存器阵列R3包括输出端寄存器的数量为M,所述M的最小取值为I,所述M的最大取值等于数据传输通道数量,故,所述M的取值范围为I彡M彡N。
[0028]本发明一优选实施方式中,所述输出端寄存器的数量等于输入端寄存器的数量。
[0029]本发明一优选实施方式中,所述输入端寄存器的位宽等于传输通道的数据位宽,以利于节省资源,以下将会详细描述。
[0030]结合图3所示,在本实施方式中,为了便于理解本方案,以传输通道的数量为16个,传输通道的位宽为4bit为例做具体说明。如此,本实施方式中,所述输入端寄存器阵列R2中包含16个寄存器,分别为R2_0、R2_1……R2_14、R2_15,即每个通道对应一组寄存器,且每个寄存器的位宽可为4bit,输入端寄存器阵列R2的总位宽为16*4=64bit ;所述输出端寄存器的数量等于输入端寄存器的数量,即同样为16个,所述输出端寄存器阵列R3中包括的输出端寄存器分别为R3_0、R3_l……R3_14、R3_15。
[0031]读写指针控制模块200包括写操作控制单元Cl、读操作控制单元C2 ;
写操作控制单元Cl用于控制将输入端寄存器阵列R2中的数据写入到内部存储单元Rl,且在每次将寄存器阵列R2中的数据写入到内部存储单元Rl后,其指针读数加I,即使写指针指到下一个数据的写入位置。
[0032]读操作控制单元C2用于将内部存储单元Rl中的数据读取到输出端寄存器阵列R3,且在每次将内部存储单元Rl中的数据读取到输出端寄存器阵列R3后,其指针读数加1,即使读指针指到下一个数据的读出位置。
[0033]状态标识模块300包括C3,用于标识多通道FIFO缓冲器的存储状态。
[0034]FIFO存储器的状态,例如处于空、满、将空、将满等状态。所述FIFO存储器的状态为空时,表示当前FIFO存储器只能进行写入动作,不能进行读出动作,若进行读出动作会产生向下溢出,无效的数据将被读出;所述FIFO存储器的状态为满时,表示当前FIFO存储器只能进行读出动作,不能进行写入动作,若进行写入动作会产生向上溢出;所述FIFO存储器的状态为其他标识数据时,表示当前FIFO存储器可以进行写入动作,也可以进行读出动作。
[0035]数据选择模块400用于在输入数据进入所述多通道FIFO缓冲器之前,对所述多通道FIFO缓冲器初始化,以使所述多通道FIFO缓冲器的存储状态恢复到初始状态。以及根据状态标识模块300标识的多通道FIFO缓冲器的存储状态,判断输入数据的存储位置。
[0036]本实施方式中,第一个时钟周期到来时,所述FIFO缓冲器处于初始状态,即:内部存储单元R1、输入端寄存器阵列R2、输出端寄存器阵列R3均为空。那么,数据选择模块400具体用于:在写使能有效后,将通过多个传输通道的输入数据全部写入输出端寄存器阵列,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
[0037]结合图3所示,本实施方式中,数据通道的数量16个,故,所述输入数据的数量是可变化的,在同一个时钟周期内,其数量最少可为I个,最多可为16个。
[0038]在第二个时钟周期到来时,数据选择模块400根据所述多通道FIFO缓冲器的存储状态,判断输入数据的写入位置。
[0039]本实施方式中,第二个时钟周期到来时,数据选择模块400在写使能有效后,根据输入端寄存器阵列、输出端寄存器阵列的状态,判断输入数据的存储位置。
[0040]需要说明的是,第一个时钟周期过后,数据通道中最多有16个数据写入FIFO缓冲器,且如上所述,第一个时钟周期的输入数据全部写入到输出端寄存器阵列R3。
[0041]那么在第二个时钟周期到来时,所述输入端寄存器阵列R2、所述内部存储单元Rl必为空,如此,数据选择模块400仅需要对输出端寄存器阵列R3的存储状态进行判断即可以确定输入数据的存储位置。
[0042]如此,数据选择模块400对输出端寄存器阵列R3的存储状态进行判断。
[0043]若输出端寄存器阵列R3未满,则继续将输入数据写入到输出端寄存器阵列R3 ; 若输出端寄存器阵列R3为满,则将输入数据写入到输入端寄存器阵列R2 ;
若输出端寄存器阵列R3为满,同时,读使能有效,所述输出端寄存器阵列R3中存储的数据正在读出,即表示,该时钟周期的读使能有效后,所述输出端寄存器阵列R3的状态将为空,故,则将输入数据写入到输出端寄存器阵列R3。
[0044]进一步的,随着时钟周期的增加,多通道FIFO缓冲器的状态在不断变化,从第三个时钟周期开始,所述多通道FIFO缓冲器的状态将无规则变化,故,数据选择模块400在以后的每个时钟周期开始后,均需要对多通道FIFO存储器的存储状态进行判断,以判断所述输入数据的存储位置。
[0045]本实施方式中,在以后的每个时钟周期到来时,数据选择模块400用于在写使能有效后,判断内部存储单元是否为空,若是,按照上述内容判断输入数据的存储位置;若否,根据输入端寄存器阵列R2阵列的存储状态判断输入数据的存储位置。
[0046]若否,数据选择模块400还用于:在同一个时钟周期内,若所述输入端寄存器阵列R2未满,且其存储空间的总位宽大于等于输入数据的总位宽,则将输入数据直接写入到所述输入端寄存器阵列R2 ;
若所述输入端寄存器阵列R2未满,且其存储空间的总位宽小于输入数据的总位宽,则将部分输入数据写入到所述输入端寄存器阵列R2,待所述输入端寄存器阵列R2为满后,将所述输入端寄存器阵列R2中的全部输入数据写入到所述内部存储单元Rl之后,再将剩余的输入数据写入到所述输入端寄存器阵列R2 ;
若所述输入端寄存器阵列R2为满,则在当前时钟周期内,将所述输入端寄存器阵列R2中的全部输入数据写入到所述内部存储单元Rl之后,再将输入数据写入到所述输入端寄存器阵列R2。
[0047]进一步的,按照多通道FIFO缓冲器先进先出的原则,在读使能有效后,数据选择模块400用于若输出端寄存器阵列R3中的数据被读出后,而同时内部存储器Rl中又存储有数据,那么,内部存储器Rl中的数据同样按照先进先出的原则写入到输出端寄存器阵列R3中,在此不做详细赘述。
[0048]可以理解的是,数据选择模块400每次将所述输入端寄存器阵列R2中的全部输入数据写入到所述内部存储单元Rl之后,或是将内部存储器Rl中的数据写入到输出端寄存器阵列R3中,读写指针控制模块200中写操作控制单元Cl、读操作控制单元C2也均需要做相应的调整,即写操作控制单元Cl、读操作控制单元C2的指针读数也要相应的指到下一个写入数据,或下一个读出数据上,在此不做详细赘述。
[0049]结合图5所示,本发明一实施方式中,所述多通道FIFO缓冲器的控制方法包括: S1、提供一如图3所示的多通道FIFO缓冲器。
[0050]结合图3所示,本发明一【具体实施方式】中,设计N条数据传输通道,N为正整数。所述输入端寄存器阵列R2包括输入端寄存器的数量等于数据传输通道数N。所述输出端寄存器阵列R3包括输出端寄存器的数量为M,所述M的最小取值为I,所述M的最大取值等于数据传输通道数量,故,所述M的取值范围为I < M < N。
[0051]本发明一优选实施方式中,所述输出端寄存器的数量等于输入端寄存器的数量。所述输入端寄存器的位宽等于传输通道的数据位宽,以利于节省资源,以下将会详细描述。
[0052]结合图3所示,在本实施方式中,为了便于理解本方案,以传输通道的数量为16个,传输通道的位宽为4bit为例做具体说明。如此,本实施方式中,所述输入端寄存器阵列R2中包含16个寄存器,分别为R2_0、R2_1……R2_14、R2_15,即每个通道对应一组寄存器,且每个寄存器的位宽可为4bit,输入端寄存器阵列R2的总位宽为16*4=64bit ;所述输出端寄存器的数量等于输入端寄存器的数量,即同样为16个,所述输出端寄存器阵列R3中包括的输出端寄存器分别为R3_0、R3_l……R3_14、R3_15。
[0053]S2、对所述多通道FIFO缓冲器初始化,以使所述多通道FIFO缓冲器的存储状态恢复到初始状态。
[0054]本实施方式中,所述多通道FIFO缓冲器的初始状态指多通道FIFO缓冲器的存储状态为空。
[0055]所述多通道FIFO缓冲器的存储状态可分为多种,例如:多通道FIFO缓冲器的存储状态为空、满、将空、将满等。所述FIFO存储器的状态为空时,表示当前FIFO存储器只能进行写入动作,不能进行读出动作,若进行读出动作会产生向下溢出,无效的数据将被读出;所述FIFO存储器的状态为满时,表示当前FIFO存储器只能进行读出动作,不能进行写入动作,若进行写入动作会产生向上溢出;所述FIFO存储器的状态为其他标识数据时,表示当前FIFO存储器可以进行写入动作,也可以进行读出动作。
[0056]S3、第一个时钟周期到来时,通过多通道FIFO缓冲器的存储状态判断输入数据的存储位置。
[0057]本实施方式中,在第一个时钟周期到来时,所述FIFO缓冲器处于初始状态,即:内部存储单元RU输入端寄存器阵列R2、输出端寄存器阵列R3均为空。那么,在写使能有效后,将通过多个传输通道的输入数据全部写入输出端寄存器阵列R3,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
[0058]结合图3所示,本实施方式中,数据通道的数量16个,故,所述输入数据的数量是可变化的,在同一个时钟周期内,其数量最少可为I个,最多可为16个。
[0059]进一步的,本实施方式中,所述方法还包括:
S4、在第二个时钟周期到来时,根据所述多通道FIFO缓冲器的存储状态,判断输入数据的写入位置。
[0060] 本实施方式中,所述步骤S4具体包括:第二个时钟周期到来时,在写使能有效后,根据输入端寄存器阵列、输出端寄存器阵列的状态,判断输入数据的存储位置。
[0061 ] 需要说明的是,第一个时钟周期过后,数据通道中最多有16个数据写入FIFO缓冲器,且如上所述,第一个时钟周期的输入数据全部写入到输出端寄存器阵列R3。
[0062]那么在第二个时钟周期到来时,所述输入端寄存器阵列R2、所述内部存储单元Rl必为空,如此,仅需要对输出端寄存器阵列R3的存储状态进行判断即可以确定输入数据的存储位置。
[0063]如此,对输出端寄存器阵列R3的存储状态进行判断。
[0064]若输出端寄存器阵列R3未满,则继续将输入数据写入到输出端寄存器阵列R3 ; 若输出端寄存器阵列R3为满,则将输入数据写入到输入端寄存器阵列R2 ;
若输出端寄存器阵列R3为满,同时,读使能有效,所述输出端寄存器阵列R3中存储的数据正在读出,即表示,该时钟周期的读使能有效后,所述输出端寄存器阵列R3的状态将为空,故,则将输入数据写入到输出端寄存器阵列R3。
[0065]进一步的,随着时钟周期的增加,多通道FIFO缓冲器的状态在不断变化,从第三个时钟周期开始,所述多通道FIFO缓冲器的状态将无规则变化,故,在以后的每个时钟周期开始后,均需要对多通道FIFO存储器的存储状态进行判断,以判断所述输入数据的存储位置。
[0066]本实施方式中,在以后的每个时钟周期到来时,所述方法还包括:
S5、写使能有效后,判断内部存储单元是否为空,若是,按照步骤S4判断输入数据的存储位置;若否,根据输入端寄存器阵列R2阵列的存储状态判断输入数据的存储位置。
[0067]若否,所述方法具体包括:在同一个时钟周期内,若所述输入端寄存器阵列R2未满,且其存储空间的总位宽大于等于输入数据的总位宽,则将输入数据直接写入到所述输入端寄存器阵列R2 ;
若所述输入端寄存器阵列R2未满,且其存储空间的总位宽小于输入数据的总位宽,则将部分输入数据写入到所述输入端寄存器阵列R2,待所述输入端寄存器阵列R2为满后,将所述输入端寄存器阵列R2中存储的全部输入数据写入到所述内部存储单元Rl之后,再将剩余的输入数据写入到所述输入端寄存器阵列R2。
[0068]若所述输入端寄存器阵列R2为满,则在当前时钟周期内,将所述输入端寄存器阵列R2中存储的全部数据写入到所述内部存储单元Rl之后,再将输入数据写入到所述输入端寄存器阵列R2。
[0069]进一步的,按照多通道FIFO缓冲器先进先出的原则,在读使能有效后,若输出端寄存器阵列R3中的数据被读出后,而同时内部存储器Rl中又存储有数据,那么,内部存储器Rl中的数据同样按照先进先出的原则写入到输出端寄存器阵列R3中,在此不做详细赘述。
[0070]可以理解的是,每次将所述输入端寄存器阵列R2中存储的全部数据写入到所述内部存储单元Rl之后,或是将内部存储器Rl中的数据写入到输出端寄存器阵列R3中,所述FIFO存储器的状态都需要做相应的调整,且内部存储器Rl中指针读数也要相应的指到下一个写入数据,或下一个读出数据上,在此不做详细赘述。
[0071]进一步的,为了降低转发时延,结合图6所示,本发明另一实施方式的多通道FIFO缓冲器在图3所示实施方式的基础上加以改进,以降低数据转发过程中的转发时延。本实施方式与图3所示实施方式的区别在于,本实施方式的多通道FIFO缓冲器多通道FIFO缓冲器控制装置在其输出端增加一第二多路选择器M2。
[0072]相应的,对应图6所示的多通道FIFO缓冲器的控制方法也做了相应的调整。其在图5所示的多通道FIFO缓冲器的控制方法基础上加以调整。区别在于:若所述FIFO缓冲器处于初始状态,即:内部存储单元R1、输入端寄存器阵列R2、输出端寄存器阵列R3均为空。那么,在写使能有效后,将通过多个传输通道的输入数据全部写入第二多路选择器M2,在当前周期内,即可以将全部输入数据进行输出,以将数据的处理延时减到零,在此不做详细赘述。
[0073]可以理解的是,在上述内容中,多个通道的数据在输入端和输出端是不需要做区分的,也就是说输入端的通道号与输出端并没有直接关系,多个通道的数据之间完全按先进先出的方式做缓冲。
[0074]进一步的,在本发明的其他实施方式中,若要求对各个通道之间的数据进行区分处理,那么在上述实施方式的基础上可以稍加修改:即在存储每个数据时增加一个通道号标志信号。如上述示例中,每个数据增加4bit的通道号标志。数据输出时也把相应的通道号标志相应输出,其他处理逻辑不做修改。如此,所述输入端寄存器阵列、输出端寄存器阵列、内部存储单元的位宽在原来的基础上都有所增加。本示例中,输入端寄存器阵列R2、R输出端寄存器阵列3中的每个寄存器都由原来的4bit变为8bit,而内部存储单元Rl的数据位宽则由 16*4 = 64bit 变为 16* (4+4) =128bit。
[0075]上述示例中,内部存储器单元Rl用一个双端口 RAM实现,在本发明的其他实施方式中,内部存储器单元Rl也可以用一个单端口的RAM实现。其区别在于,采用单端口的RAM,需要将输入端寄存器阵列R2和输出端寄存器阵列R3中的每个寄存器的位宽都相应加倍,将内部存储器单元Rl的位宽也加倍,使其可以存储两组数据。写控制单元Cl和读控制单元C2对内部存储单元Rl的操作变成分时操作,即:一个时钟周期做写操作,下一个时钟周期做读操作。由于输入端寄存器阵列R2和输出端寄存器阵列R3中均包含了两个数据,所以只要在两个时钟周期内各完成一次读和写操作就能满足相应的性能要求。由于相同大小的双端口 RAM所占用的面积一般都比单端口 RAM要大,故,这种设计在ASIC设计时会带来面积上的优化,且在性能上单端口 RAM更容易达到更高的标准。相对于现有技术,该种设计对于ASIC设计的芯片面积的优化和性能的提升还是非常明显的,进而节约资源,节省成本,并提升了性能。
[0076]与现有技术相比,本发明的多通道FIFO缓冲器控制方法及装置,可以一次传输多个传输通道的多个输入数据,且在多个传输通道的数据拼凑写满输入端寄存器阵列后,才一次性写入到内部存储器,避免了由于数据位宽导致的内部存储器资源浪费以及内部存储器读写性能的问题;且该多通道FIFO缓冲器控制逻辑简单,可以同时处理多通道中的数据,保证了数据处理可以达到最大带宽,提高了系统性能,尤其在ASIC和FPGA设计中,可以有更低的功耗,更快的处理速度,以及节省的更多的资源或面积。
[0077]为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0078]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以保存在保存介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,信息推送服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
[0079]以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0080]本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、信息推送服务器计算机、手持设备或便携式设备、平板型设备、多处理模块系统、基于微处理模块的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0081]本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括保存设备在内的本地和远程计算机保存介质中。
[0082]应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
[0083]上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
【权利要求】
1.一种多通道FIFO缓冲器,其特征在于,包括:数据存储模块、读写指针控制模块、状态标识模块、以及数据选择模块; 所述数据存储模块用于:存储数据,其包括:内部存储单元、输入端寄存器阵列、输出端寄存器阵列、第一多路选择器; 所述读写指针控制模块包括:写操作控制单元、读操作控制单元; 写操作控制单元用于:控制将输入端寄存器阵列中的数据写入到内部存储单元; 读操作控制单元用于:将内部存储单元中的数据读取到输出端寄存器阵列; 所述状态标识模块包括:用于标识多通道FIFO缓冲器的存储状态; 所述状态标识单元用于标识多通道FIFO缓冲器的存储状态; 所述数据选择模块用于,根据所述状态标识单元标识的多通道FIFO缓冲器的存储状态,判断输入数据的存储位置; 其中,所述输入端寄存器阵列包括多个输入端寄存器,所述输出端寄存器阵列包括至少一个输出端寄存器。
2.根据权利要求1所述的多通道FIFO缓冲器,其特征在于, 所述输入端寄存器的数量等于数据传输通道数量N,所述N为正整数;所述输入端寄存器的位宽等于传输通道的数据位宽。
3.根据权利要求2所述的多通道FIFO缓冲器,其特征在于,所述输出端寄存器的数量为M个,所述M为正整数,其取值范围为I彡MS N。
4.根据权利要求3所述的多通道FIFO缓冲器,其特征在于,所述输出端寄存器的数量为N个。
5.根据权利要求1、2、3、4任一项所述的多通道FIFO缓冲器,其特征在于,所述数据存储单元还包括:第二多路选择器。
6.一种多通道FIFO缓冲器的控制方法,其特征在于,所述方法包括: 51、提供一权利要求1至4任一项所述的多通道FIFO缓冲器。 52、将所述多通道FIFO缓冲器初始化,以使所述FIFO缓冲器的存储状态为空; 53、第一个时钟周期到来时,且在写使能有效后,将通过多个传输通道的输入数据全部写入输出端寄存器阵列,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
7.根据权利要求6所述的多通道FIFO缓冲器的控制方法,其特征在于,第二个时钟周期到来时,所述内部存储单元为空;所述方法还包括: 54、在写使能有效后,根据输入端寄存器阵列、输出端寄存器阵列的状态,判断输入数据的存储位置; 若输出端寄存器阵列未满,则继续将输入数据写入到输出端寄存器阵列; 若输出端寄存器阵列为满,则将输入数据写入到输入端寄存器阵列; 若输出端寄存器阵列为满,同时,读使能有效,所述输出端寄存器阵列中存储的数据正在读出,则将输入数据写入到输出端寄存器阵列。
8.根据权利要求7所述的多通道FIFO缓冲器的控制方法,其特征在于,在以后的每个时钟周期到来时,所述方法还包括: 55、写使能有效后,判断内部存储单元是否为空, 若是,按照步骤S4判断输入数据的存储位置; 若否,根据输入端寄存器阵列的存储状态判断输入数据的存储位置。
9.根据权利要求8所述的多通道FIFO缓冲器的控制方法,其特征在于,所述:“若否,根据输入端寄存器阵列的存储状态判断输入数据的存储位置。”具体包括: 在同一个时钟周期内,若所述输入端寄存器阵列未满,且其存储空间的总位宽大于等于输入数据的总位宽,则将输入数据直接写入到所述输入端寄存器阵列; 若所述输入端寄存器阵列未满,且其存储空间的总位宽小于输入数据的总位宽,则将部分输入数据写入到所述输入端寄存器阵列,待所述输入端寄存器阵列为满后,将所述输入端寄存器阵列中的全部输入数据写入到所述内部存储单元之后,再将剩余的输入数据写入到所述输入端寄存器阵列; 若所述输入端寄存器阵列为满,则在当前时钟周期内,将所述输入端寄存器阵列中的全部输入数据写入到所述内部存储单元之后,再将输入数据写入到所述输入端寄存器阵列。
10.一种多通道FIFO缓冲器的控制方法,其特征在于,所述方法包括: Ml、提供一如权利要求5所述的多通道FIFO缓冲器; M2、将所述多通道FIFO缓冲器初始化,以使所述FIFO缓冲器的存储状态为空; M3、第一个时钟周期到来时,且在写使能有效后,将通过多个传输通道的输入数据全部写入到第二多路选择器,以在读使能有效后,通过多个通道的输入数据可以在同一个周期内全部输出。
【文档编号】G06F3/06GK104407809SQ201410611360
【公开日】2015年3月11日 申请日期:2014年11月4日 优先权日:2014年11月4日
【发明者】贾复山 申请人:盛科网络(苏州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1