一种FIFO存储器的多级流水读写方法和装置
文献发布时间:2023-06-19 16:08:01
技术领域
本发明涉及数据缓存技术领域,尤其涉及一种FIFO(First Input First Output,先入先出)存储器的多级流水读写方法和装置。
背景技术
随着电子信息技术的飞速发展,为缓存数据流、匹配传输速率,FIFO存储器因其先进先出的特性在信息采集、传输、处理等系统中广泛应用,尤其在CPU(Center ProcessUnit,中央处理器)、DSP(Digital Signal Processor,数字信号处理器)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、AI(Artificial Intelligence,人工智能)、ASIC(Application-Specific Integrate Circuit,领域专用集成电路)等各类数字芯片中,常作为标准的存储器模块来使用。
随着系统需求的不断增加,数字芯片的规模也越来越大,单片可以集成上百亿的晶体管,往往会存在长数据路径的应用场景,即FIFO的读写逻辑和FIFO的物理距离较远,此时传统做法是通过在FIFO读写的控制和数据通路上插多级流水来保证工作时序,这种控制逻辑非常复杂,而且会损失非空即读的重要特性。因此,有必要设计一种FIFO存储器的多级流水读写方法,既可以非常便捷的支持长距离传输应用时FIFO的读写时序要求,也可以保留非空即读的特性,大幅降低控制逻辑复杂度。
发明内容
为解决长距离传输应用时FIFO的读写控制逻辑复杂的问题和保留非空即读的特性,本发明公开了一种FIFO存储器的多级流水读写方法,并开发了适用于各类数字芯片的FIFO存储器的多级流水读写装置,目的是通过一组小容量FIFO的级联和控制,实现长距离传输应用时对FIFO便捷的读写控制,并保留非空即读的特性,小容量FIFO的级联数量可根据时序要求进行灵活配置。
本发明公开了一种FIFO存储器的多级流水读写方法,采用一个主FIFO存储单元(Master FIFO,M_FIFO)和若干个串联的辅FIFO存储单元(Tiny FIFO,小容量FIFO单元)来实现,所述辅FIFO存储单元包括一个FIFO存储器和一个与逻辑模块,本方法包括,
近端的写逻辑判断主FIFO存储单元的空满状态,如果主FIFO存储单元为非慢状态,则近端将数据写入主FIFO存储单元后,与所述主FIFO存储单元相连的第零级辅FIFO存储单元判断所述主FIFO存储单元和自身的空满状态,当所述主FIFO存储单元非空且自身非满的情况下,所述第零级辅FIFO存储单元将发出读指令将所述主FIFO存储单元的数据搬入所述第零级辅FIFO存储单元;相应的,第零级辅FIFO存储单元读入数据后,与所述第零级辅FIFO存储单元相连的第一级辅FIFO存储单元判断所述第零级辅FIFO存储单元和自身的空满状态,当所述第零级辅FIFO存储单元非空且第一级辅FIFO存储单元非满的情况下,所述第一级辅FIFO存储单元将发出读指令将所述第零级辅FIFO存储单元的数据搬入所述第一级辅FIFO存储单元;以此类推,所述主FIFO存储单元的数据会依次被递送到最后一级辅FIFO存储单元中;当远端的读逻辑在需要读取数据时,判断所述最后一级辅FIFO存储单元是否为非空状态,如果为非空状态,则读取所需数据。
所述的近端是指靠近主FIFO存储单元的设备,所述的远端是指靠近最后一级辅FIFO存储单元的设备。
所述主FIFO存储单元采用寄存器或RAM实现。
所述辅FIFO存储单元的FIFO存储器的容量小于主FIFO存储单元的容量,所述辅FIFO存储单元的FIFO存储器由寄存器实现。
本发明公开了一种FIFO存储器的多级流水读写装置,包括一个主FIFO存储单元和若干个串联的辅FIFO存储单元,所述辅FIFO存储单元包括一个FIFO存储器和一个与逻辑模块,近端的写逻辑判断主FIFO存储单元的空满状态,如果主FIFO存储单元为非慢状态,则近端将数据写入主FIFO存储单元后,与所述主FIFO存储单元相连的第零级辅FIFO存储单元判断所述主FIFO存储单元和自身的空满状态,当所述主FIFO存储单元非空且自身非满的情况下,所述第零级辅FIFO存储单元将发出读指令将所述主FIFO存储单元的数据搬入所述第零级辅FIFO存储单元;相应的,第零级辅FIFO存储单元读入数据后,与所述第零级辅FIFO存储单元相连的第一级辅FIFO存储单元判断所述第零级辅FIFO存储单元和自身的空满状态,当所述第零级辅FIFO存储单元非空且第一级辅FIFO存储单元非满的情况下,所述第一级辅FIFO存储单元将发出读指令将所述第零级辅FIFO存储单元的数据搬入所述第一级辅FIFO存储单元;以此类推,所述主FIFO存储单元的数据会依次被递送到最后一级辅FIFO存储单元中;当远端的读逻辑在需要读取数据时,判断所述最后一级辅FIFO存储单元是否为非空状态,如果为非空状态,则读取所需数据。
所述的FIFO存储器的多级流水读写装置,所述的近端是指靠近主FIFO存储单元的设备,所述的远端是指靠近最后一级辅FIFO存储单元的设备。
所述的FIFO存储器的多级流水读写装置,所述主FIFO存储单元采用寄存器或RAM实现。
所述的FIFO存储器的多级流水读写装置,所述辅FIFO存储单元的FIFO存储器的容量小于主FIFO存储单元的容量,所述辅FIFO存储单元的FIFO存储器由寄存器实现。
本发明的有益效果为:
1、在大规模集成电路中长距离数据传输的应用条件下,本发明用若干级联的小容量FIFO实现了对FIFO便捷的读写控制,保留了FIFO非空即读的特性,大幅降低了控制逻辑复杂度;
2、本发明通过1个主FIFO和级联的N个小容量FIFO单元实现了FIFO数据的长距离传输,级联方式简单,级数易于扩展;
3、本发明输入输出接口均为标准的FIFO读写接口,使用简单;
4、本发明的辅FIFO存储单元的级联数量可根据时序要求进行灵活配置,适用于不同的应用场景,通用性强。
附图说明
图1为本发明FIFO存储器的多级流水读写方法的实现结构框图;
图2为FIFO存储器的多级流水读写方法的实施例中小容量FIFO单元结构图;
图3为FIFO存储器的多级流水读写方法的实施例中支持3级流水读写FIFO存储器的工作时序图。
具体实施方式
为了更好的了解本发明内容,这里给出一个实施例。
实施例一:
本发明公开了一种FIFO存储器的多级流水读写方法,采用一个主FIFO存储单元(Master FIFO,M_FIFO)和若干个串联的辅FIFO存储单元(Tiny FIFO,小容量FIFO单元)来实现,所述辅FIFO存储单元包括一个FIFO存储器和一个与逻辑模块,本方法包括,
近端的写逻辑判断主FIFO存储单元的空满状态,如果主FIFO存储单元为非慢状态,则近端将数据写入主FIFO存储单元后,与所述主FIFO存储单元相连的第零级辅FIFO存储单元判断所述主FIFO存储单元和自身的空满状态,当所述主FIFO存储单元非空且自身非满的情况下,所述第零级辅FIFO存储单元将发出读指令将所述主FIFO存储单元的数据搬入所述第零级辅FIFO存储单元;相应的,第零级辅FIFO存储单元读入数据后,与所述第零级辅FIFO存储单元相连的第一级辅FIFO存储单元判断所述第零级辅FIFO存储单元和自身的空满状态,当所述第零级辅FIFO存储单元非空且第一级辅FIFO存储单元非满的情况下,所述第一级辅FIFO存储单元将发出读指令将所述第零级辅FIFO存储单元的数据搬入所述第一级辅FIFO存储单元;以此类推,所述主FIFO存储单元的数据会依次被递送到最后一级辅FIFO存储单元中;当远端的读逻辑在需要读取数据时,判断所述最后一级辅FIFO存储单元是否为非空状态,如果为非空状态,则读取所需数据。
所述的近端是指靠近主FIFO存储单元的设备,所述的远端是指靠近最后一级辅FIFO存储单元的设备。
所述主FIFO存储单元采用寄存器或RAM实现。
所述辅FIFO存储单元的FIFO存储器的容量小于主FIFO存储单元的容量,所述辅FIFO存储单元的FIFO存储器由寄存器实现。
本发明公开了一种FIFO存储器的多级流水读写装置,包括一个主FIFO存储单元和若干个串联的辅FIFO存储单元,所述辅FIFO存储单元包括一个FIFO存储器和一个与逻辑模块,近端的写逻辑判断主FIFO存储单元的空满状态,如果主FIFO存储单元为非慢状态,则近端将数据写入主FIFO存储单元后,与所述主FIFO存储单元相连的第零级辅FIFO存储单元判断所述主FIFO存储单元和自身的空满状态,当所述主FIFO存储单元非空且自身非满的情况下,所述第零级辅FIFO存储单元将发出读指令将所述主FIFO存储单元的数据搬入所述第零级辅FIFO存储单元;相应的,第零级辅FIFO存储单元读入数据后,与所述第零级辅FIFO存储单元相连的第一级辅FIFO存储单元判断所述第零级辅FIFO存储单元和自身的空满状态,当所述第零级辅FIFO存储单元非空且第一级辅FIFO存储单元非满的情况下,所述第一级辅FIFO存储单元将发出读指令将所述第零级辅FIFO存储单元的数据搬入所述第一级辅FIFO存储单元;以此类推,所述主FIFO存储单元的数据会依次被递送到最后一级辅FIFO存储单元中;当远端的读逻辑在需要读取数据时,判断所述最后一级辅FIFO存储单元是否为非空状态,如果为非空状态,则读取所需数据。
所述的FIFO存储器的多级流水读写装置,所述的近端是指靠近主FIFO存储单元的设备,所述的远端是指靠近最后一级辅FIFO存储单元的设备。
所述的FIFO存储器的多级流水读写装置,所述主FIFO存储单元采用寄存器或RAM实现。
所述的FIFO存储器的多级流水读写装置,所述辅FIFO存储单元的FIFO存储器的容量小于主FIFO存储单元的容量,所述辅FIFO存储单元的FIFO存储器由寄存器实现。
实施例二:
本发明公开了一种FIFO存储器的多级流水读写方法,主要包括一个M_FIFO(Master FIFO,主FIFO)和若干个串联的T_FIFO(Tiny FIFO,小容量FIFO单元),所述T_FIFO主要包括一个小容量FIFO和一个与逻辑,近端的写逻辑将数据写入所述M_FIFO;与所述M_FIFO相连的第零级T_FIFO会判断所述M_FIFO和自身的空满状态,当所述M_FIFO非空且自身非满的情况下,所述第零级T_FIFO将发出读指令将所述M-FIFO的数据搬入所述第零级T_FIFO;类似的,与所述第零级T_FIFO相连的第一级T_FIFO会判断所述第零级T_FIFO和自身的空满状态,当所述第零级T_FIFO非空且自身非满的情况下,所述第一级T_FIFO将发出读指令将所述第零级T_FIFO的数据搬入所述第一级T_FIFO;以此类推,所述M_FIFO的数据会依次被递送到最后一级即第N-1级T_FIFO中;当远端的读逻辑在需要读取数据时,判断所述最后一级T_FIFO是否非空即可读取所需数据。
所述M_FIFO为寄存器文件或RAM,但不限于以上两种存储结构;
所述T_FIFO由一个小容量FIFO和一个与逻辑组成,所述小容量FIFO通常由寄存器构成,但不限于该存储结构;
本发明公开了一种FIFO存储器的多级流水读写方法,支持多级流水读写的FIFO存储器结构框图如附图1所示。其中,push为M_FIFO的写使能,wr_data为M_FIFO的写数据,full为M_FIFO的满标志,empty_0为M_FIFO的空标志,pop_0和data_0分别为M_FIFO的读使能和读数据;empty_1为第零级T_FIFO的空标志,pop_1和data_1分别为第零级T_FIFO的读使能和读数据;以此类推,第N-1级T_FIFO的空标志empty、读使能pop、读数据rd_data送给远端读逻辑。
每个T_FIFO的结构图如附图2所示,包含一个与逻辑和一个小容量FIFO,当上一级输入的空标志empty_i和自身的满标志full均无效时,表明上一级非空且自身非满,则通过pop_i信号发出读操作,并将读到的数据存入小容量FIFO中。
采用以上结构的N级流水读写的FIFO存储器通过以下步骤实现:
首先,近端的写逻辑判断M_FIFO的full标志,当非满时将数据写入M_FIFO中。
然后,级联的N级T_FIFO依次将前级数据读出并存到各自的小容量FIFO中;
最后,远端的读逻辑判断第N-1级T_FIFO的空状态,当非空时即可发出读操作,将数据读出。
对远端读逻辑而言,中间级联的T_FIFO相当于透明传输,当近端写逻辑将数据写入M_FIFO后,N个时钟周期后,远端读逻辑即可以收到非空标志,从而根据需要发起读操作,实现了长距离传输时FIFO数据读写的便捷控制,FIFO的非空即读的特性也得以保留,大幅降低传统方案中为匹配流水级数所需控制逻辑的复杂度,且级联方式简单,级数可灵活配置,适用于不同应用场景,通用性强。
根据以上技术方案,在ASIC工作主频500MHz的应用需求下,因数据路径较远,为保证时序,FIFO的数据需要3个时钟周期才能到达远端,设计了一款3级流水读写的FIFO存储器,M_FIFO的大小为256×32bit,T_FIFO中小容量FIFO大小为3×32bit,其工作时序示意图如附图3所示。
可以看到,近端的写逻辑根据需要分三次burst共写了12个数据,不失一般性,数据依次记为1~12。当数据1被写入后,empty_0即无效表示非空,第零级T_FIFO自身也非满,发出了读信号pop_0;同样的第一级和第二级也依次发出了读信号。
由于远端读逻辑未达到读条件,第二级T_FIFO读了3个数据后,因自身FIFO已满,即停止了读操作,在第8个时钟周期,远端读逻辑开始burt读操作,读出了10个数据,直至empty信号有效,即第二级T_FIFO已空。
在第21个时钟周期,远端读逻辑发现empty信号无效后,即第二级T_FIFO非空后,立即发出了读操作,将数据11和数据12顺利读出。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 一种FIFO存储器的多级流水读写方法和装置
- 一种异步FIFO存储器读写控制方法、装置及设备