掌桥专利:专业的专利平台
掌桥专利
首页

一种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存储器读写控制方法、装置及设备
技术分类

06120114714999