CN101477833B - 钟控异步fifo存储器 - Google Patents
钟控异步fifo存储器 Download PDFInfo
- Publication number
- CN101477833B CN101477833B CN2009100208475A CN200910020847A CN101477833B CN 101477833 B CN101477833 B CN 101477833B CN 2009100208475 A CN2009100208475 A CN 2009100208475A CN 200910020847 A CN200910020847 A CN 200910020847A CN 101477833 B CN101477833 B CN 101477833B
- Authority
- CN
- China
- Prior art keywords
- door
- group
- output
- sram
- input end
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Static Random-Access Memory (AREA)
Abstract
本发明公开了一种钟控异步FIFO存储器。包括:双端口随机静态存储器SRAM、写字线控制模块、读字线控制模块、标志位模块、满和半满信号产生模块以及空和半空信号产生模块。读写字线控制模块采用门控时钟触发的寄存器链来选通SRAM的读写字线以完成读写功能,同时把SRAM中每个数据的是否有效标志直接传送给标志位模块,避免了复杂的编码转换。标志位模块将标志位的值存储在双稳电路中,使双稳电路的值仅依靠三个NMOS下拉晶体管,不存在多时钟域问题,避免了亚稳态问题。标志位的值只需经过结构简单的组合逻辑就能产生空、满、半空和半满信号,无需复杂的减法逻辑单元,降低了电路复杂度,提高了电路速度。本发明用于集成电路芯片中不同时钟域间的数据缓冲。
Description
技术领域
本发明属于电子元件技术领域,特别是一种异步先入先出FIFO存储器,用于集成电路芯片中不同时钟域间的数据缓冲。
背景技术
现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。异步通用FIFO具有两个独立的读写时钟,其传输数据使用一个时钟域将数据值依序写入FIFO缓存,再使用另一个时钟域,按照先入先出的顺序从FIFO中读出数据值,这两个时钟域相互独立且不相同。
不管是什么类型FIFO,其关键点是产生读,写地址和空、满的标志。通常一个好的FIFO设计,其基本要求是:写满而不溢出,能读空而不多读。因此,如何正确产生FIFO空、满标志,是异步FIFO设计成败的关键。设计FIFO存在着两大难点:一是如何同步异步信号,消除触发器产生亚稳态的问题;二是如何正确的设计空满以及近空满等信号的产生电路。为了避免亚稳态,通常采用以下方法:①对写地址/读地址采用格雷码。由实践可知,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对多个触发器的输出所组成的写地址/读地址可以采用格雷码。由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态的产生。②采用触发器来同步异步输入信号。空满标志的产生是FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。一般做法是采用读写地址相比较来产生空满标志。当读写地址的差值等于一个预设值的时候,空/满信号被置位。这种实现方法逻辑简单,但它是减法器形成的一个比较大的组合逻辑,因而限制了FIFO的速度。
典型的异步FIFO的结构如图2所示。读地址是由读时钟触发的读地址控制模块产生,而写地址是由写时钟触发的写地址控制模块产生,要产生FIFO的空满标志,处于不同的时钟域的读写地址必须进行比较。为了降低亚稳态的风险,二进制码读写地址需转换成格雷码,这个过程由格雷码转化模块完成。转换后的读写地址格雷码在空满信号产生模块中通过触发器同步,同步后的读写地址格雷码再还原成二进制码进行比较,产生空满信号。
采用上述方法实现的异步FIFO有以下缺点:
1.二进制和格雷码的互相转换增加了硬件复杂度;
2.在对读写地址进行比较时,常采用减法运算,这也增加了硬件复杂度,同时增加了电路的延时。
发明内容
本发明的目的在于避免上述技术的不足,提供一种钟控异步FIFO存储器,以降低电路的复杂度,避免使用减法运算器,提高电路的速度。
为实现上述目的,本发明提供的钟控异步先入先出FIFO存储器,包括:
双端口随机静态存储器SRAM,用以缓存写时钟域传送到读时钟域的数据;
SRAM的写字线控制模块,用以把写时钟域的数据写入SRAM,同时将该数据的有效标志传输给标志位模块;
SRAM的读字线控制模块,用以读出SRAM的数据至读时钟域,同时将该数据的无效标志传输给标志位模块;
标志位模块,用以标识SRAM内每个存储空间的数据是否有效,并通过满信号和半满信号产生模块产生满信号和半满信号,通过空信号和半空信号产生模块产生空信号和半空信号输出到外部端口。
所述的写字线控制模块主要由第一寄存器链D1组成,每个寄存器D1i的输出通过第一组与门A1中的与门A1i传输给SRAM的写字线wwli,0≤i≤n-1,n=SRAM的最大存储数据的个数。
所述的读字线控制模块主要由第二寄存器链D2组成,每个寄存器D2i的输出通过第二组与门A2中的与门A2i传输给SRAM的写字线rwli,0≤i≤n-1,n=SRAM的最大存储数据的个数。
所述的标志位模块内有n个标志位,每个标志位由一个双稳电路S,两个与门A3和A4和三个NMOS晶体管N1、N2和N3电连接组成。
所述的满信号和半满信号产生模块由第五组与门A5、第六组与门A6、和第一组或门O1电连接组成。
所述的空信号和半空信号产生模块由第七组与门A7、第二组或门O2和第三组或门O3电连接组成。
本发明具有以下优点:
1.本发明由于采用钟控寄存器链来选通SRAM的读写字线,同时把SRAM的每个数据的是否有效标志直接传送给标志位模块,避免了复杂的编码转换。
2.本发明由于将标志位的值存储在双稳电路中,使改变双稳电路的值仅仅依靠三个NMOS下拉晶体管,不存在多时钟域的问题,因而了避免了亚稳态问题。
3.本发明由于标志位的值只需经过结构简单的组合逻辑就能产生空、满、半空和半满信号,不需要复杂的减法逻辑单元,故降低了电路复杂度,提高了电路速度。
4.本发明由于采用标志位的形式,不依赖比较读写时钟域的地址信号就能产生FIFO空满及半空半满信号,避免了传统技术中地址转换成格雷码后再比较等一系列复杂的问题。
本发明的结构可结合附图做进一步的详细描述。
附图说明
图1为传统的异步FIFO的结构图;
图2为本发明深度为8的FIFO存储器的结构框图;
图3为本发明深度为4的FIFO存储器的电路原理图;
图4为本发明的写时序波形图;
图5为本发明的读时序波形图。
具体实施方式
参照图2,本发明主要由双端口静态随机存储器SRAM、写字线控制模块、读字线控制模块、标志位模块、满和半满信号产生模块、空和半空信号产生模块组成。其中:
所述的写字线控制模块在三个外部输入写时钟信号wclk、写使能信号wen和复位信号rst_n的作用下,以轮询方式,依次选通SRAM的8根写字线wwl0,wwl1,wwl2,wwl3,wwl4,wwl5,wwl6,wwl7之一,当一根写字线被选通时,外部输入端口的数据输入data_in上的数据被写入该写字线对应的存储空间,同时写字线模块将该存储空间的有效标志写入标志位模块,以指示该存储空间的数据是有效的,标志位模块将一直保持该有效标志,直到读字线控制模块将该存储空间的无效标志写入标志位模块。
所述的读字线控制模块在三个外部输入读时钟信号rclk、读使能信号ren和复位信号rst_n的作用下,以轮询方式,依次选通SRAM的8根读字线rwl0,rwl1,rwl2,rwl3,rwl4,rwl5,rwl6,rwl7之一,当一根读字线被选通时,该字线对应的存储空间的数据被读出至外部输出端口的数据输出data_out,同时读字线模块将该存储空间的无效标志写入标志位模块,以指示该存储空间的数据是无效的,标志位模块将一直保持该无效标志,直到写字线控制模块将该存储空间的有效标志写入标志位模块。
标志位模块将SRAM存储空间的数据有效和无效信息分别输出给满信号和半满信号产生模块以及空信号和半空信号产生模块,并由这两个模块产生外部的输出信号满信号full、半满信号half_full、空信号empty和半空信号half_empty。
参照图3,本发明给出了一个实现深度为4的异步FIFO的电路原理图,它最多能存储4个数据。各模块的结构如下:
双端口静态随机存储器SRAM,采用4×32bits的存储内核;
写字线控制模块,包含第一寄存器链D1和第一组与门A1。第一寄存器链由第一寄存器D10、第二寄存器D11、第三寄存器D12和第三寄存器D13首尾相连构成,第一组与门A1由第一与门A10、第二与门A11、第三与门A12和第四与门A13构成。第一寄存器D10的输出连接至第二寄存器D11的数据输入端,第二寄存器D11的输出连接至第三寄存器D12的数据输入端,第三寄存器D12的输出连接至第四寄存器D13的数据输入端,第四寄存器D13的输出连接至第一寄存器D10的数据输入端。另外,外部输入写时钟信号wclk经过非门I00反相后和外部输入写使能wen信号经过与门A00相与生成写门控时钟信号wclk_gated。写门控时钟信号wclk_gated分别连接至第一寄存器D10、第二寄存器D11、第三寄存器D12和第四寄存器D13的时钟输入端。写门控时钟信号wclk_gated经过非门I01反相后连接至锁存器L10的数据输入端,写时钟wclk信号连接至锁存器L10的使能端。锁存器L10的输出和写使能wen信号经过与门A01相与生成写字线使能信号wwlen。写字线使能信号wwlen和第一寄存器D10的输出经过第一与门A10相与后的输出连接至SRAM的写字线wwl0,写字线使能信号wwlen和第二寄存器D11的输出经过与门A11相与后的输出连接至SRAM的写字线wwl1,写字线使能信号wwlen和第三寄存器D12的输出经过与门A12相与后的输出连接至SRAM的写字线wwl2,写字线使能信号wwlen和第四寄存器D13的输出经过与门A13相与后的输出连接至SRAM的写字线wwl3。该写字线控制模块的工作原理是:写字线控制模块受外部的写使能信号wen控制,产生4根写字线信号来控制SRAM的写入。复位后,第一寄存器D10的输出为“1”,其余寄存器的输出都为“0”。但是此时写字线使能wwlen信号为“0”,所以4根写字线都为“0”,当写使能wen信号有效并保持一个写时钟周期时,上半个写时钟周期写字线使能wwlen信号为“1”,写字线wwl0将被置为高电平,其余写字线都为低电平;下半个写时钟周期写字线使能wwlen信号为“0”,所有字线都为低电平,同时与门A00会产生一个时钟脉冲,使得第一寄存器链D1的值移位,于是第二寄存器D11的输出为“1”,其余寄存器都为“0”。随着写使能wen信号的有效,4根写字线将依次被置为高电平,并循环,完成写入的功能。写字线控制模块设有两个外部输入,分别是:写时钟wclk和写使能信号wen。SRAM设有一个外部数据输入data_in。这三个外部输入的时序要求如图4所示,其中要求data_in上的数据在前半个时钟周期就必须稳定。写门控时钟信号wclk_gated和写字线使能wwlen是在三个外部输入的作用下产生的内部信号,它门之间的时序波形关系也在图4中给出。
读字线控制模块,包含第二寄存器链D2和第二组与门A2。第二寄存器链由第五寄存器D20、第六寄存器D21、第七寄存器D22和第八寄存器D23首尾相连构成,第二组与门A2由第五与门A20、第六与门A21、第七与门A22和第八与门A23构成。第五寄存器D20的输出连接至第六寄存器D21的数据输入端,第六寄存器D21的输出连接至第七寄存器D22的数据输入端,第七寄存器D22的输出连接至第八寄存器D23的数据输入端,第八寄存器D23的输出连接至第五寄存器D20的数据输入端。另外,外部输入写时钟rclk经过非门I02反相后和外部输入写使能ren信号经过与门A02相与生成读门控时钟信号rclk_gated。读门控时钟信号rclk_gated分别连接至第五寄存器D20、第六寄存器D21、第七寄存器D22和第八寄存器D23的时钟输入端。读使能信号ren和第五寄存器D20的输出经过第五与门A20相与后的输出连接至SRAM的读字线rwl0,读使能信号ren和第六寄存器D21的输出经过第六与门A21相与后的输出连接至SRAM的读字线rwl1,读使能信号ren和第七寄存器D22的输出经过第七与门A22相与后的输出连接至SRAM的读字线rwl2,读使能信号ren和第八寄存器D23的输出经过第八与门A23相与后的输出连接至SRAM的读字线rwl3。另外,读字线控制模块还包括一组32个寄存器D0,SRAM的读出数据线连接至这32个寄存器D0,读门控时钟信号rclk_gated连接至这32个寄存器D0的时钟输入端,这32个寄存器D0的输出即为外部输出data_out。该读字线控制模块的工作原理是:读字线控制模块受外部的读使能信号ren控制,产生4根读字线信号来控制SRAM的读出。复位后,第五寄存器D20的输出为“1”,其余寄存器都为“0”。但是此时读使能ren信号为“0”,所以4根读字线都为“0”,当读使能ren信号有效并保持一个写时钟周期时,上半个读时钟周期读字线rwl0将被置为高电平,其余读字线都为低电平;下半个读时钟周期与门A02会产生一个时钟脉冲,使得在上半周期读出的数据被一组32位的寄存器D0保存,该32位的寄存器D0的输出即为外部输出data_out,与门A02产生的时钟脉冲还使寄存器链的值移位,于是第六寄存器D21的输出为“1”,其余寄存器都为“0”,在下半个读时钟周期时,读字线rwl1会被置为高电平,其余读字线为低电平,但是data_out的值已经被寄存器保存,所以不会改变。随着读使能ren信号的有效,4根读字线将依次被置为高电平,并循环,完成读出的功能。读字线控制模块设有两个外部输入,分别是:读时钟rclk和读使能信号ren。这两个个外部输入的时序要求如图5所示。读门控时钟信号rclk_gated是在两个外部输入的作用下产生的内部信号,data_out是外部的数据输出端口,它门之间的时序波形关系也在图4中给出。
标志位模块,包含第三组寄存器D3、第四组寄存器D4、第三组与门A3、第四组与门A4、第一组NMOS晶体管N1、第二组NMOS晶体管N2、第三组NMOS晶体管N3和一组双稳电路S组成。第三组寄存器D3由第九寄存器D30、第十寄存器D31、第十一寄存器D32和第十二寄存器D33组成。第四组寄存器D4由第十三寄存器D40、第十四寄存器D41、第十五寄存器D42和第十六寄存器D43组成。第三组与门A3由第九与门A30、第十与门A31、第十一与门A32和第十二与门A33组成。第四组与门A4由第十三与门A40、第十四与门A41、第十五与门A42和第十六与门A43组成。第一组NMOS晶体管N1由第一晶体管N10、第二晶体管N11、第三晶体管N12和第四晶体管N13组成。第二组NMOS晶体管N2由第五晶体管N20、第六晶体管N21、第七晶体管N22和第八晶体管N23组成。第三组NMOS晶体管N3由第九晶体管N30、第十晶体管N31、第十一晶体管N32和第十二晶体管N33组成。双稳电路S由第一双稳电路S0、第二双稳电路S1、第三双稳电路S2和第四双稳电路S3组成。
标志位模块的这些电路元件共组成了四个标志位,分别是:第一标志位、第二标志位、第三标志位和第四标志位。其中:
第一标志位由第一双稳电路S0、第九与门A30、第十三与门A40、第一NMOS晶体管N10、第五NMOS晶体管N20和第九NMOS晶体管N30组成。第一NMOS晶体管N10的漏端与第一双稳电路S0的反节点f10连接,第一NMOS晶体管N10的栅端与第九与门A30的输出端连接,第一NMOS晶体管N10的源端与地连接。第五NMOS晶体管N20的漏端与第一双稳电路S0的正节点f00连接,第五NMOS晶体管N20的栅端与第十三与门A40的输出端连接,第五NMOS晶体管N20的源端与地连接。第九NMOS晶体管N30的漏端与第一双稳电路S0的正节点f00连接,第九NMOS晶体管N30的栅端与非门I03的输出连接,第九NMOS晶体管N30的源端与地连接。第九与门A30的一个输入端与第一双稳电路S0的反节点f10连接,另一个输入端与是第九寄存器D30的输出端r10连接。第十三与门A40的一个输入端与第一双稳电路S0的正节点f00连接,另一个输入端与第十三寄存器D40的输出端r20连接。
第二标志位由第二双稳电路S1、第十与门A31、第十四与门A41、第二NMOS晶体管N11、第六NMOS晶体管N21和第十NMOS晶体管N31组成。第二NMOS晶体管N11的漏端与第二双稳电路S1的反节点f11连接,第二NMOS晶体管N11的栅端与第二与门A31的输出端连接,第二NMOS晶体管N11的源端与地连接。第六NMOS晶体管N21的漏端与第二双稳电路S1的正节点f01连接,第六NMOS晶体管N21的栅端与第十四与门A41的输出端连接,第六NMOS晶体管N21的源端与地连接。第十NMOS晶体管N31的漏端与第二双稳电路S1的正节点f01连接,第十NMOS晶体管N31的栅端与非门I03的输出连接,第十NMOS晶体管N31的源端与地连接。第十与门A31的一个输入端与第二双稳电路S1的反节点f11连接,另一个输入端与第十寄存器D31的输出端r11连接。第十四与门A41的一个输入与第二双稳电路S1的正节点f01连接,另一个输入与第十四寄存器D41的输出端r21连接。
第三标志位由第三双稳电路S2、第十一与门A32、第十五与门A42、第三NMOS晶体管N12、第七NMOS晶体管N22和第十一NMOS晶体管N32组成。第三NMOS晶体管N12的漏端与第三双稳电路S2的反节点f12连接,第三NMOS晶体管N12的栅端与第十一与门A32的输出端连接,第三NMOS晶体管N12的源端与地连接。第七NMOS晶体管N22的漏端与第三双稳电路S2的正节点f02连接,第七NMOS晶体管N22的栅端与第十五与门A42的输出端连接,第七NMOS晶体管N22的源端与地连接。第十一NMOS晶体管N32的漏端与第三双稳电路S2的正节点f02连接,第十一NMOS晶体管N32的栅端与非门I03的输出连接,第十一NMOS晶体管N32的源端与地连接。第十一与门A32的一个输入端与第三双稳电路S2的反节点f12连接,另一个输入端与第十一寄存器D32的输出端r12连接。第十五与门A42的一个输入端与第三双稳电路S2的正节点f02连接,另一个输入端与第十五寄存器D42的输出端r22连接。
第四标志位由第四双稳电路S3、第十二与门A33、第十六与门A43、第四NMOS晶体管N13、第八NMOS晶体管N23和第十二NMOS晶体管N33组成。第四NMOS晶体管N13的漏端与第四双稳电路S3的反节点f13连接,第四NMOS晶体管N13的栅端与第十二与门A33的输出端连接,第四NMOS晶体管N13的源端与地连接。第八NMOS晶体管N23的漏端与第四双稳电路S3的正节点f03连接,第八NMOS晶体管N23的栅端与第十六与门A43的输出端连接,第八NMOS晶体管N23的源端与地连接。第十二NMOS晶体管N33的漏端与第四双稳电路S3的正节点f03连接,第十二NMOS晶体管N33的栅端与非门I03的输出连接,第十二NMOS晶体管N33的源端与地连接。第十二与门A33的一个输入端与第四双稳电路S3的反节点f13连接,另一个输入端与第十二寄存器D33的输出端r13连接。第十六与门A43的一个输入端与第四双稳电路S3的正节点f03连接,另一个输入端与第十六寄存器D43的输出端r23连接。
标志位模块的工作原理是:标志位模块中的四个标志位和SRAM的四个32bits的存储空间一一对应,第一标志位指示SRAM的第一存储空间的值是否有效;第二标志位指示SRAM的第二存储空间的值是否有效;第三标志位指示SRAM的第一存储空间的值是否有效;第四标志位指示SRAM的第四存储空间的值是否有效。这四个标志位的工作原理完全相同,下面以第一标志位来说明它们的工作原理:复位时,第九NMOS晶体管N30管导通,第一标志位的输出节点f00的值为“0”。复位后,第一NMOS晶体管N10,第五NMOS晶体管N20,第九NMOS晶体管N30管都关闭,第一标志位的输出节点f00的值仍为“0”。当对SRAM的第一存储空间写入数据后,第九寄存器D30的输出为“1”,导致第九与门A30的输出为“1”,于是第一NMOS晶体管N10管导通,使第一标志位的输出节点f00的值为“1”,同时第一标志位的节点f10的值为“0”,于是第九与门A30的输出立刻为“0”,从而关闭了第一NMOS晶体管N10,此时第一NMOS晶体管N10,第五NMOS晶体管N20,第九NMOS晶体管N30管都关闭,第一标志位的输出节点f00的值仍为“1”,表明SRAM的第一存储空间数据有效。当对SRAM的第一存储空间读出数据后,第十三寄存器D40的输出为“1”,导致第十三与门A40的输出为“1”,于是第五晶体管N20管导通,使第一标志位的输出节点f00的值为“0”,同时第一标志位的节点f10的值为“1”,于是第十三与门A40的输出立刻为“0”,从而关闭了第五NMOS晶体管N20管,此时第一NMOS晶体管N10,第五NMOS晶体管N20,第九NMOS晶体管N30管都关闭,第一标志位的输出节点f00的值仍为“0”,表明SRAM的第一存储空间数据无效。
满、半满信号产生模块,包含第五组与门A5、第六组与门A6和第一组或门O1。第五组与门A5由第十七与门A50、第十八与门A51、第十九与门A52和第二十与门A53组成。第六组与门A6由第二十一与门A60组成。第一或门O1由第一或门O10、第二或门O11和第三或门O12组成。第五组与门(A5)中的第i个与门A5i的两个输入分别与标志位的输出f0i和f0j连接,且当0≤i≤n/2时,j=i+n/2-1;当n/2<i≤n-1时,j=i-n/2-1;n=SRAM的最大存储数据的个数,具体连接关系为:第十七与门A50的一个输入端与第一标志位的输出节点f00连接,另一个输入端与第二标志位的输出节点f01连接;第十八与门A51的一个输入与第二标志位的输出节点f01连接,另一个输入端与第三标志位的输出节点f02连接;第十九与门A52的一个输入端与第三标志位的输出节点f02连接,另一个输入端与第四标志位的输出节点f03连接;第二十与门A53的一个输入端与第四标志位的输出节点f03连接,另一个输入端与第一标志位的输出节点f00连接。第二十一与门A60的一个输入端与第十七与门A50的输出端连接,另一个输入端与第十九与门A52的输出端连接。第一或门O10的一个输入端与第十七与门A50的输出端连接,另一个输入端与第十八与门A51的输出端连接。第二或门O11的一个输入端与第十九与门A52的输出端连接,另一个输入端与第二十与门A53的输出连接。第三或门O12的一个输入端与第一或门O10的输出端连接,另一个输入端与第二或门O11的输出端连接。第二十一与门A60的输出端就是外部输出满信号full,第三或门O12的输出端就是外部输出半满信号half_full。
空、半空信号产生模块,包含第二组或门O2、第三组或门O3和第七组与门A7。第二组或门由第四或门O20、第五或门O21、第六或门O22和第七或门O23组成。第三组或门O3由第八或门O30组成。第七组与门A7由第二十二与门A70、第二十三与门A71和第二十四与门A72组成。第二组或门(O2)的第i个或门(O2i)的两个输入分别与标志位的输出f0i和f0j连接,且当0≤i≤n/2时,j=i+n/2-1;当n/2<i≤n-1时,j=i-n/2-1;n=SRAM的最大存储数据的个数,具体连接关系为:第四或门O20的一个输入端与第一标志位的输出节点f00连接,另一个输入端与第二标志位的输出节点f01连接;第五或门O21的一个输入端与第二标志位的输出节点f01连接,另一个输入端与第三标志位的输出节点f02连接;第六或门O22的一个输入端与第三标志位的输出节点f02连接,另一个输入端与第四标志位的输出节点f03连接;第七或门O23的一个输入端与第四标志位的输出节点f03连接,另一个输入端与第一标志位的输出节点f00连接。第八或门O30的一个输入端与第一或门O20的输出端连接,另一个输入端与第六或门O22的输出端连接。第二十二与门A70的一个输入端与第四或门O20的输出端连接,另一个输入端与第五或门O21的输出端连接。第二十三与门A71的一个输入端与第六或门O22的输出端连接,另一个输入端与第七或门O23的输出端连接。第二十四与门A72的一个输入端与第二十二与门A70的输出端连接,另一个输入端与第二十三与门A71的输出端连接。第二十四与门A72的输出端与非门I04的输入端连接。第八或门O30的输出端就是外部输出空信号empty,非门I04的输出端就是外部输出半空信号half_empty。
满、半满信号产生模块和空、半空信号产生模块的工作原理是依据所述四个标志位的输出f00、f01、f02和f03的值产生满信号full、半满信号half_full、空信号empty和半空信号half_empty。满信号full、半满信号half_full、空信号empty和半空信号
half_empty产生逻辑表达式如下。
full=f00·f01·f02·f03
empty=f00+f01+f02+f03
half_full=(f00·f01)+(f01·f02)+(f02·f03)+(f03·f00)
half_empty=(f00+f01)·(f01+f02)·(f02+f03)·(f03+f00)
本发明的实施方式不限于以上所述的深度为4的钟控异步FIFO存储器,根据实际需要能够制作不同深度的FIFO存储器,例如深度为8或者16的电路原理与图3所述的原理相同,仅是增加了第一寄存器链和第二寄存器链的长度,以及增加了标志位模块中标志位的个数。显然,任何人在了解了本发明的技术原理后能够所作出不同的电路改动,但是这些改动均属于本发明的保护范围之内。
Claims (5)
1.一种钟控异步先入先出FIFO存储器,包括:
双端口随机静态存储器SRAM,用以缓存写时钟域传送到读时钟域的数据;
SRAM的写字线控制模块,用以把写时钟域的数据写入SRAM,同时将该数据的有效标志传输给标志位模块;
SRAM的读字线控制模块,用以读出SRAM的数据至读时钟域,同时将该数据的无效标志传输给标志位模块;
标志位模块,用以标识SRAM内每个存储空间的数据是否有效,并通过满信号和半满信号产生模块产生满信号和半满信号,通过空信号和半空信号产生模块产生空信号和半空信号输出到外部端口,该标志位模块是由若干个标志位组成,每个标志位由一个双稳电路S、两个与门A3和A4以及三个NMOS晶体管N1、N2、N3电连接组成,其电连接关系是第一NMOS晶体管N1的栅输入端与与门A3的输出端连接,漏端和双稳电路的反节点f1连接,源端与地连接;第二NMOS晶体管N2的栅输入端与与门A4的输出端连接,漏端与双稳电路的正节点f0连接,源端与地连接;第三NMOS晶体管N3的栅输入端与复位信号的反信号连接,漏端与双稳电路的正节点f0连接,源端与地连接;与门A3的一个输入端与双稳电路的反节点f1连接,另一个输入端成为该标志位的第一输入端r1,与用于寄存SRAM的写字线控制模块输出的数据的有效标志的第三组寄存器D3中对应一个的输出连接;与门A4的一个输入端和双稳电路的正节点f0连接,另一个输入端成为该标志位的第二输入端r2,与用于寄存SRAM的读字线控制模块输出的数据的无效标志的第四组寄存器D4中对应一个的输出连接;双稳电路的正节点f0是该标志位的输出端,输出端连接至满信号和半满信号产生模块以及空信号和半空信号产生模块。
2.根据权利要求1所述的FIFO存储器,其特征在于写字线控制模块主要由第一寄存器链D1和第一组与门A1组成,该寄存器链由n个寄存器首尾相连组成,第i个寄存器Dli的输出和第一组与门A1中的第i个与门A1i的一个输入端连接,第一组与门A1中的第i个与门A1i的另一个输入端和SRAM的写字线使能信号连接,第一组与门A1中的第i个与门A1i的输出端和SRAM的第i根写字线wwli连接,0≤i≤n-1,n=SRAM的深度。
3.根据权利要求1所述的FIFO存储器,其特征在于读字线控制模块主要由第二寄存器链D2和第二组与门A2组成,该寄存器链由n个寄存器首尾相连组成,第i个寄存器D2i的输出和第二组与门A2中的第i个与门A2i的一个输入端连接,第二组与门A2中的第i个与门A2i的另一个输入端和SRAM的读使能信号连接,第二组与门A2中的第i个与门A2i的输出端和SRAM的第i根读字线rwli连接,0≤i≤n-1,n=SRAM的深度。
4.根据权利要求1所述的FIFO存储器,其特征在于满信号和半满信号产生模块由第五组与门A5、第六组与门A6和第一组或门O1电连接组成,其中第五组与门A5中的第i个与门A5i的两个输入分别与第i个标志位的输出和第j个标志位的输出连接,且当0≤i≤n/2时,j=i+n/2-1;当n/2<i≤n-1时,j=i-n/2-1,第五组与门A5的输出连接至第一组或门O1,由第一组或门O1得到第五组与门A5的输出相或的值,即半满信号;第五组与门A5的输出连接至第六组与门A6,由第六组与门A6得到这些输出相与的值,即满信号。
5.根据权利要求1所述的FIFO存储器,其特征在于空信号和半空信号产生模块由第七组与门A7、第二组或门O2和第三组或门O3电连接组成,其中第二组或门O2的第i个或门O2i的两个输入分别与第i个标志位的输出和第j个标志位的输出连接,且当0≤i≤n/2时,j=i+n/2-1;当n/2<i≤n-1时,j=i-n/2-1,第二组或门O2的输出连接至第七组与门A7,由第七组与门A7得到第二组或门O2的输出相与的值,该值由非门反相后即为半空信号;第二组或门O2的输出连接至第三组与门O3,由第三组或门O3得到这些输出相或的值,即空信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100208475A CN101477833B (zh) | 2009-01-08 | 2009-01-08 | 钟控异步fifo存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100208475A CN101477833B (zh) | 2009-01-08 | 2009-01-08 | 钟控异步fifo存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101477833A CN101477833A (zh) | 2009-07-08 |
CN101477833B true CN101477833B (zh) | 2010-12-01 |
Family
ID=40838521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100208475A Expired - Fee Related CN101477833B (zh) | 2009-01-08 | 2009-01-08 | 钟控异步fifo存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101477833B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8014215B2 (en) * | 2009-12-10 | 2011-09-06 | International Business Machines Corporation | Cache array power savings through a design structure for valid bit detection |
CN102169425B (zh) * | 2010-02-26 | 2013-07-03 | 上海华虹集成电路有限责任公司 | 一种具有四种工作模式的fifo缓存电路 |
US8619477B2 (en) * | 2010-07-20 | 2013-12-31 | Taiwan Semiconductor Manufacturing Company, Ltd. | Two-port SRAM write tracking scheme |
CN103219037B (zh) * | 2013-04-22 | 2016-01-20 | 中国科学院半导体研究所 | 多端口读写的片内存储器 |
KR20140144989A (ko) * | 2013-06-12 | 2014-12-22 | 에스케이하이닉스 주식회사 | 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법 |
CN112631545A (zh) * | 2020-12-21 | 2021-04-09 | 北京时代民芯科技有限公司 | 一种高速fifo存储器 |
CN113900975B (zh) * | 2021-12-08 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 一种同步fifo |
-
2009
- 2009-01-08 CN CN2009100208475A patent/CN101477833B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101477833A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477833B (zh) | 钟控异步fifo存储器 | |
CN111367495B (zh) | 一种异步先入先出的数据缓存控制器 | |
CN101681249B (zh) | 先进先出缓冲器 | |
CN101667451B (zh) | 高速数据交换接口的数据缓存器及其数据缓存控制方法 | |
US8760961B2 (en) | Write command and write data timing circuit and methods for timing the same | |
CN202736496U (zh) | 一种钟控异步先入先出fifo存储器的读字线控制电路 | |
CN101825997A (zh) | 一种异步先入先出存储器 | |
WO2018148918A1 (zh) | 存储设备、芯片及存储设备的控制方法 | |
CN202394542U (zh) | 一种钟控异步先入先出fifo存储器的写字线控制电路 | |
CN202394543U (zh) | 一种钟控异步先入先出fifo存储器 | |
CN105577985A (zh) | 一种数字图像处理系统 | |
CN202394544U (zh) | 一种钟控异步先入先出fifo存储器的标志电路的标志电路 | |
Xie et al. | Analysis and comparison of asynchronous fifo and synchronous fifo | |
CN115361012A (zh) | 一种低功耗异步先入先出缓存器电路及芯片 | |
CN209765494U (zh) | 一种异步fifo装置 | |
CN111399802B (zh) | 多电源域多时钟域先进先出队列、集成电路芯片及计算机设备 | |
KR100343831B1 (ko) | 반도체메모리 | |
CN113012731B (zh) | 一种适用于大位宽cam的数据锁存电路结构 | |
US7085147B2 (en) | Systems and methods for preventing malfunction of content addressable memory resulting from concurrent write and lookup operations | |
CN203465714U (zh) | 位查找电路、旁路转换缓冲器、存储器及微处理器 | |
Song | Bit-Width Conversion Based on Asynchronous FIFO | |
CN219958216U (zh) | 一种芯片原型验证调试板 | |
TWI835417B (zh) | 電子裝置 | |
CN219872882U (zh) | 一种内容可寻址存储器 | |
KR20130069350A (ko) | 듀얼 포트 메모리 및 그 방법 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101201 Termination date: 20150108 |
|
EXPY | Termination of patent right or utility model |