CN102117193A - 一种实现预读式fifo的方法和预读式fifo - Google Patents
一种实现预读式fifo的方法和预读式fifo Download PDFInfo
- Publication number
- CN102117193A CN102117193A CN201010001523XA CN201010001523A CN102117193A CN 102117193 A CN102117193 A CN 102117193A CN 201010001523X A CN201010001523X A CN 201010001523XA CN 201010001523 A CN201010001523 A CN 201010001523A CN 102117193 A CN102117193 A CN 102117193A
- Authority
- CN
- China
- Prior art keywords
- ram
- fifo
- controller
- register
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明提供了一种实现预读式先入先出存储器(FIFO)的方法和预读式FIFO,其中,输出寄存器的设置使得原来由RAM输出和后续用户逻辑单元的操作构成的关键路径被打破,输出通过单独的寄存器完成,输出延迟减小,从而使预读式FIFO更好地满足时序要求。另外,使能控制器在确定RAM为非空状态且输出寄存器为空状态,或者接收到读请求时,使输入FIFO控制器的读信号有效,并使能输出寄存器输出数据;否则,使输出FIFO控制器的读信号无效,并锁存输出寄存器,通过该方式,使能控制器能够保证在增加一级寄存器的基础上,仍能够保证预读方式的准确实现。
Description
技术领域
本发明涉及存储器技术,特别涉及一种实现预读式FIFO的方法和预读式FIFO。
背景技术
在现场可编程门阵列(FPGA)设计中,先入先出寄存器(FIFO)是最常用的功能模块之一,按照对接口时序要求的不同,FIFO可以分为预读式FIFO和非预读式FIFO两种,其中,预读式FIFO能够提高后级模块的处理效率,因此在高速设计中经常使用。
预读式FIFO与非预读式FIFO的区别主要在于:预读式FIFO中,在有数据的情况下,数据已经准备在总线上,即用户在发起读请求之前数据已经有效,当用户发起读请求后,能够在当前时钟周期读出数据,而非预读式FIFO需要在下一时钟周期读出数据。其中,预读式FIFO的读时序图如图1所示,其中,rdclk为读时钟,empty为FIFO空信号,rd为用户读请求的读信号,rdata为FIFO读出的数据。从时序图可以看出,在FIFO有数据的情况下,数据已经准备在总线上;当用户发起读请求后,能够在当前时钟周期立即读出数据0,并在后续时钟周期依次读出数据1和数据2。
为了更清楚地说明预读式FIFO,参见图2所示的预读式FIFO的逻辑结构,主要包括FIFO控制器、输入寄存器和随机存储器(RAM),其中,输入寄存器和RAM同属于RAM硬核中的存储资源。FIFO控制器用于完成对读地址(rd_addr)、写地址(wr_addr)、空信号(empty)和满信号(full)的管理。FIFO控制器通过输入寄存器设置RAM的rd_addr指向当前数据的地址(非预读式FIFO中rd_addr指向读取的上一数据的地址),也就是说,当RAM内有数据时,输出FIFO控制器将RAM的读地址预先加1,将数据准备好。当接收到用户的读请求,即读信号(rd)有效时,能够立即在当前时钟周期从RAM读取当前数据,即rdata输出当前数据。
然而,在上述过程中,RAM的输出到后续用户逻辑单元在一个时钟周期内执行,这显然对RAM的逻辑时序影响较大,其中,RAM输出所带来的时延影响较为突出,特别是在诸如时钟频率较高、逻辑利用率较高或者后级组合逻辑处理复杂等对时序要求较高的场合,现有预读式FIFO往往不能满足时序要求。
发明内容
有鉴于此,本发明提供了一种实现预读式FIFO的方法和预读式FIFO,以便于使预读式FIFO更好的满足时序要求。
一种预读式先入先出寄存器FIFO,该FIFO包括FIFO控制器、输入寄存器和随机存储器RAM;还包括:输出寄存器和使能控制器,且所述输出寄存器、输入寄存器和RAM均属于RAM硬核中的存储资源;
所述使能控制器,用于确定所述RAM为非空状态且所述输出寄存器为空状态,或者接收到读请求时,使输入所述FIFO控制器的读信号有效,并使能所述输出寄存器输出数据;否则,使输入所述FIFO控制器的读信号无效,并锁存所述输出寄存器;
所述FIFO控制器,用于没有收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中当前待读取的数据;收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中下一待读取的数据;
所述RAM,用于按照读时钟和被设置的读地址,以先入先出的方式输出被写入的数据给所述输出寄存器;
所述输出寄存器,用于在被使能时,按照读时钟输出寄存的数据。
一种实现预读式FIFO的方法,在包含FIFO控制器、输入寄存器和RAM的FIFO中增设输出寄存器和使能控制器,其中,所述输出寄存器、输入寄存器和RAM均属于RAM硬核中的存储资源;
所述使能控制器确定所述RAM为非空状态且所述输出寄存器为空状态,或者接收到读请求时,使输入所述FIFO控制器的读信号有效,并使能所述输出寄存器输出数据;否则,使输出所述FIFO控制器的读信号无效,并锁存所述输出寄存器;
所述FIFO控制器在没有收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中当前待读取的数据;收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中下一待读取的数据;
所述RAM按照读时钟和被设置的读地址,以先入先出的方式输出被写入的数据给所述输出寄存器;
所述输出寄存器在被使能时,按照读时钟输出寄存的数据。
由以上技术方案可以看出,在本发明中,为了减小RAM的时延,在包含FIFO控制器、输入寄存器和RAM的FIFO中增设输出寄存器和使能控制器,其中,输出寄存器的设置使得原来由RAM输出和后续用户逻辑单元的操作构成的关键路径被打破,输出通过单独的寄存器完成,输出延迟减小,从而使预读式FIFO更好地满足时序要求,解决时序紧张的问题。另外,使能控制器在确定RAM为非空状态且输出寄存器为空状态,或者接收到读请求时,使输入FIFO控制器的读信号有效,并使能输出寄存器输出数据;否则,使输出FIFO控制器的读信号无效,并锁存输出寄存器,通过该方式,使能控制器能够保证在增加一级寄存器的基础上,仍能够保证预读方式的准确实现。并且,输出寄存器充分使用了RAM硬核中已有的寄存器资源,从而节约了FPGA的寄存器资源。
附图说明
图1为预读式FIFO的读时序图;
图2为预读式FIFO的逻辑结构示意图;
图3为本发明提供的预读式FIFO的逻辑结构示意图;
图4为输出寄存器采用的寄存器示意图;
图5为RAM和输出寄存器在RAM实例化模块中的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图3为本发明提供的预读式FIFO的逻辑结构示意图,如图3所示,该预读式FIFO可以包括:FIFO控制器、输入寄存器、RAM、使能控制器和输出寄存器。其中,FIFO控制器、输入寄存器和RAM是现有单元,而使能控制器和输出寄存器是增设的单元。输出寄存器也是RAM硬核上已有的寄存器资源,现有技术中没有被预读式FIFO加以利用,而在本发明中采用。
其中,使能控制器,用于确定RAM为非空状态且输出寄存器为空状态,或者接收到读请求时,使输入FIFO控制器的读信号有效,并使能输出寄存器输出数据;否则,使输入FIFO控制器的读信号无效,并锁存输出寄存器。
FIFO控制器,用于没有收到有效的读信号时,通过输入寄存器设置RAM的读地址指向RAM中当前待读取的数据;收到有效的读信号时,通过输入寄存器设置RAM的读地址指向RAM中下一待读取的数据。
RAM,用于按照读时钟和被设置的读地址,以先入先出的方式输出被写入的数据给输出寄存器。
输出寄存器,用于在被使能时,按照读时钟输出寄存的数据。
在该预读式FIFO结构中,利用了RAM硬核内部寄存器资源的锁存功能,即输出寄存器的锁存功能。通常,寄存器的结构可以如图4所示,当寄存器的时钟使能(EN)端无效时,寄存器被锁存,其数据输出(Q)端保持数据不变;当寄存器的EN端有效时,寄存器被使能从Q端正常输出数据。图中的D端为数据输入端。
由于单纯增加一个输出寄存器会使得FIFO输出的数据晚一个读时钟周期,这样就无法达到预读的功能要求,为此,上述预读式FIFO中额外增加了使能控制器。使能控制器控制对输出寄存器的锁存和使能输出,主要包括以下三种情况:
当使能控制器没有收到读请求(图3中的rd),且RAM和输出寄存器都处于非空状态或都处于空状态时,使能控制器使输入FIFO控制器的读信号(图3中的rd_buf)无效,且通过时钟使能信号(图3中的oe_en)锁定输出寄存器。使得输出寄存器保持上一输出数据的状态,不输出新的数据。
当使能控制器没有读请求(图3中的rd),RAM为非空状态且输出寄存器为空状态时,使输入FIFO控制器的读信号(图3中的rd_buf)有效,并通过时钟使能信号(图3中的oe_en)使能输出寄存器输出数据。也就是说,只要RAM中有数据,就预先向输出寄存器输出数据,保证在RAM中有数据的情况下输出寄存器非空。这种情况下,如果当前待发送的数据地址为rdata0,则如果没有收到读信号且RAM中有数据,则FIFO控制器设置RAM的读地址为rdata0+1,RAM输出rdata0给输出寄存器。
当使能控制器接收到读请求时,同样使能输入FIFO控制器的读信号有效,并使能输出寄存器输出数据;FIFO控制器在读信号有效时,更新RAM的读地址为rdata0+2,RAM在当前读时钟周期输出地址为rdata0+1的数据给输出寄存器,输出寄存器在当前读时钟周期输出地址为rdata0的数据。
通过上述三种情况可见,通过使能控制器对FIFO控制器的读信号和输出寄存器的时钟使能信号的控制,可以同样完成FIFO的预读功能。
对于预读式FIFO输出的空信号,现有技术中的预读式FIFO的空信号是由FIFO控制器通过比较RAM的读地址和写地址产生,在本发明提供的上述预读式FIFO中,空信号(图3中的empty)由使能控制器直接根据输出寄存器的状态产生,如果输出寄存器为空状态,则使能控制器输出空信号,如果输出寄存器为非空状态,则使能控制器输出非空信号。原有FIFO控制器输出的空信号(图3中的empty_buf)用于向使能控制器通知RAM是否处于空状态,而不作为预读式FIFO的空信号输出。
也就是说,FIFO控制器检测RAM的空状态或非空状态,将检测结果通知使能控制器。使能控制器检测输出寄存器是否处于空状态,并在输出寄存器处于空状态时,输出空信号。
对于该预读式FIFO控制器中写数据的过程并没有发生变化,即仍然由FIFO控制器控制数据写入RAM的地址。即FIFO控制器接收到有效的写信号(图3中的wr)时,通过输入寄存器设置RAM的写地址(图3中的wr_addr)。
相应地,RAM按照写时钟,根据被设置的写地址(图3中的wr_addr)接收被写入的数据(图3中的wdata)。
另外,为了保证数据的正常写入和读取,需要保证输出寄存器和RAM的位宽相同,例如,如果预读式FIFO的顶层封装模块采用字节级同步FIFO,RAM的深度为128位,数据位宽为32位,则输出寄存器的数据位宽也为32位。
由图3中可见,在上述预读式FIFO中,读时钟对输出寄存器是单独进行时序控制的,原来由RAM输出和后续用户逻辑单元的操作构成的关键路径被打破,输出通过单独的寄存器完成,输出延迟减小,显然相比较现有技术而言更好地满足时序要求,解决时序紧张的问题,能够在此基础上提高预读式FIFO的时钟频率。另外,输出寄存器充分使用了RAM硬核中已有的寄存器资源,从而节约了FPGA的寄存器资源,特别在FIFO位宽较宽时,优点更加突出。
另外,本发明提供的上述预读式FIFO基于原有FIFO控制器,且利用的信号都可以基于原有FIFO中的信号生成,充分利用了FPGA内部已有资源,对原有预读式FIFO的改动很小。本发明提供的预读式FIFO中RAM和输出寄存器在RAM实例化模块中的结构可以如图5所示。图5中,oe_en信号只作为输出寄存器的输入信号,该oe_en信号在RAM例化模块中可以直接使用,而其它信号均是已有信号,没有发生变动。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种预读式先入先出寄存器FIFO,该FIFO包括FIFO控制器、输入寄存器和随机存储器RAM;其特征在于,还包括:输出寄存器和使能控制器,且所述输出寄存器、输入寄存器和RAM均属于RAM硬核中的存储资源;
所述使能控制器,用于确定所述RAM为非空状态且所述输出寄存器为空状态,或者接收到读请求时,使输入所述FIFO控制器的读信号有效,并使能所述输出寄存器输出数据;否则,使输入所述FIFO控制器的读信号无效,并锁存所述输出寄存器;
所述FIFO控制器,用于没有收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中当前待读取的数据;收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中下一待读取的数据;
所述RAM,用于按照读时钟和被设置的读地址,以先入先出的方式输出被写入的数据给所述输出寄存器;
所述输出寄存器,用于在被使能时,按照读时钟输出寄存的数据。
2.根据权利要求1所述的预读式FIFO,其特征在于,所述输出寄存器和所述RAM的数据位宽相同。
3.根据权利要求1或2所述的预读式FIFO,其特征在于,所述FIFO控制器,还用于向所述使能控制器通知所述RAM是否处于空状态;
所述使能控制器,还用于检测所述输出寄存器是否处于空状态,并在所述输出寄存器处于空状态时,输出空信号。
4.根据权利要求1或2所述的预读式FIFO,其特征在于,所述FIFO控制器,还用于在接收到有效的写信号时,通过所述输入寄存器设置所述RAM的写地址;
所述RAM,还用于按照写时钟,根据被设置的写地址接收被写入的数据。
5.一种实现预读式FIFO的方法,其特征在于,在包含FIFO控制器、输入寄存器和RAM的FIFO中增设输出寄存器和使能控制器,其中,所述输出寄存器、输入寄存器和RAM均属于RAM硬核中的存储资源;
所述使能控制器确定所述RAM为非空状态且所述输出寄存器为空状态,或者接收到读请求时,使输入所述FIFO控制器的读信号有效,并使能所述输出寄存器输出数据;否则,使输出所述FIFO控制器的读信号无效,并锁存所述输出寄存器;
所述FIFO控制器在没有收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中当前待读取的数据;收到有效的读信号时,通过所述输入寄存器设置所述RAM的读地址指向RAM中下一待读取的数据;
所述RAM按照读时钟和被设置的读地址,以先入先出的方式输出被写入的数据给所述输出寄存器;
所述输出寄存器在被使能时,按照读时钟输出寄存的数据。
6.根据权利要求5所述的方法,其特征在于,所述输出寄存器和所述RAM的数据位宽相同。
7.根据权利要求5或6所述的方法,其特征在于,所述使能控制器确定所述RAM为非空状态且所述输出寄存器为空状态具体包括:
所述FIFO控制器检测所述RAM的状态,并将检测结果通知给所述使能控制器;
所述使能控制器对输出寄存器的状态进行检测,根据自身的检测结果和所述FIFO控制器的通知,确定是否所述RAM为非空状态且所述输出寄存器为空状态。
8.根据权利要求5或6所述的方法,其特征在于,所述FIFO控制器在接收到有效的写信号时,通过所述输入寄存器设置所述RAM的写地址;
所述RAM按照写时钟,根据被设置的写地址接收被写入的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010001523XA CN102117193B (zh) | 2010-01-04 | 2010-01-04 | 一种实现预读式fifo的方法和预读式fifo |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010001523XA CN102117193B (zh) | 2010-01-04 | 2010-01-04 | 一种实现预读式fifo的方法和预读式fifo |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102117193A true CN102117193A (zh) | 2011-07-06 |
CN102117193B CN102117193B (zh) | 2012-08-08 |
Family
ID=44215976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010001523XA Active CN102117193B (zh) | 2010-01-04 | 2010-01-04 | 一种实现预读式fifo的方法和预读式fifo |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102117193B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388359A (zh) * | 2011-09-15 | 2012-03-21 | 华为技术有限公司 | 信号保序方法和装置 |
CN104597805A (zh) * | 2014-12-09 | 2015-05-06 | 北京临近空间飞艇技术开发有限公司 | 一种基于fifo实现循环移位寄存器的系统及方法 |
CN105812291A (zh) * | 2016-03-07 | 2016-07-27 | 北京左江科技有限公司 | 一种动态缓存管理方法 |
CN110888601A (zh) * | 2019-11-14 | 2020-03-17 | 中国电子科技集团公司第五十四研究所 | 一种基于ram ip核的移位寄存器及其实现方法 |
CN111443891A (zh) * | 2020-03-19 | 2020-07-24 | 江苏方天电力技术有限公司 | 一种电力物联数据可变长归并排序实现方法 |
CN111651136A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | Fifo存储器、电子芯片及终端 |
CN112650468A (zh) * | 2020-12-03 | 2021-04-13 | 北京博雅慧视智能技术研究院有限公司 | 一种零延迟fifo电路及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0123239B1 (ko) * | 1994-07-06 | 1997-11-26 | 김주용 | 선입선출방식(fifo) 메모리 |
KR970029070A (ko) * | 1995-11-04 | 1997-06-26 | 김광호 | 입출력데이타의 크기를 달리하는 선입선출메모리장치 및 그 방법 |
US7440351B2 (en) * | 2005-10-25 | 2008-10-21 | Promos Technologies Pte. Ltd. | Wide window clock scheme for loading output FIFO registers |
-
2010
- 2010-01-04 CN CN201010001523XA patent/CN102117193B/zh active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388359A (zh) * | 2011-09-15 | 2012-03-21 | 华为技术有限公司 | 信号保序方法和装置 |
WO2012149742A1 (zh) * | 2011-09-15 | 2012-11-08 | 华为技术有限公司 | 信号保序方法和装置 |
US9122411B2 (en) | 2011-09-15 | 2015-09-01 | Huawei Technologies Co., Ltd. | Signal order-preserving method and apparatus |
CN104597805A (zh) * | 2014-12-09 | 2015-05-06 | 北京临近空间飞艇技术开发有限公司 | 一种基于fifo实现循环移位寄存器的系统及方法 |
CN105812291A (zh) * | 2016-03-07 | 2016-07-27 | 北京左江科技有限公司 | 一种动态缓存管理方法 |
CN110888601A (zh) * | 2019-11-14 | 2020-03-17 | 中国电子科技集团公司第五十四研究所 | 一种基于ram ip核的移位寄存器及其实现方法 |
CN110888601B (zh) * | 2019-11-14 | 2023-05-19 | 中国电子科技集团公司第五十四研究所 | 一种基于ram ip核的移位寄存器实现方法 |
CN111443891A (zh) * | 2020-03-19 | 2020-07-24 | 江苏方天电力技术有限公司 | 一种电力物联数据可变长归并排序实现方法 |
CN111443891B (zh) * | 2020-03-19 | 2022-07-08 | 江苏方天电力技术有限公司 | 一种电力物联数据可变长归并排序实现方法 |
CN111651136A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | Fifo存储器、电子芯片及终端 |
CN111651136B (zh) * | 2020-07-06 | 2023-06-30 | Oppo广东移动通信有限公司 | Fifo存储器、电子芯片及终端 |
CN112650468A (zh) * | 2020-12-03 | 2021-04-13 | 北京博雅慧视智能技术研究院有限公司 | 一种零延迟fifo电路及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102117193B (zh) | 2012-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117193B (zh) | 一种实现预读式fifo的方法和预读式fifo | |
CN102981776B (zh) | 双倍数据率虚拟静态随机存取存储器及其控制器、存取与操作方法、写入与读取方法 | |
US8656198B2 (en) | Method and apparatus for memory power management | |
US7889578B2 (en) | Single-strobe operation of memory devices | |
CN103077132B (zh) | 一种高速缓存处理方法及协议处理器高速缓存控制单元 | |
CN101692346B (zh) | 一种存储器数据采样装置及一种采样控制器 | |
US10025732B2 (en) | Preserving deterministic early valid across a clock domain crossing | |
CN113468097B (zh) | 基于片上系统的数据交换方法 | |
TW569087B (en) | Efficient clock start and stop apparatus for clock forwarded system I/O | |
CN101226767B (zh) | 双端口ram的读写控制电路、方法及装置 | |
WO2022083060A1 (zh) | Fifo存储器及fifo存储器的处理方法 | |
TWI533135B (zh) | 記憶體存取方法、記憶體存取控制方法、記憶體裝置與記憶體控制器 | |
CN104679681A (zh) | Ahb总线访问片上sram的高速桥装置及其工作方法 | |
JP6746791B2 (ja) | クロックゲーティングイネーブルの生成 | |
CN114328350B (zh) | 一种基于axi总线的通讯方法、装置以及介质 | |
CN111723541A (zh) | 一种跨时钟域数据接口的实现方法 | |
CN101493759B (zh) | 一种任意容量异步先入先出存储器的地址控制方法 | |
US8743653B1 (en) | Reducing dynamic power consumption of a memory circuit | |
CN116756065A (zh) | 一种基于串行外设接口的芯片内执行预读取电路 | |
WO2023030128A1 (zh) | 通信方法、装置、电子设备、存储介质及片上系统 | |
CN103020535A (zh) | 一种带比较功能的数据加解密系统 | |
US8370543B1 (en) | Busy detection logic for asynchronous communication port | |
CN100536020C (zh) | 一种先入先出存储器及其读写地址的调整方法 | |
CN104778131B (zh) | 一种数据缓存方法及一种缓冲存储器 | |
CN110781118B (zh) | 实现并行总线从模式的方法及装置、计算机设备、介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |