先进先出存储系统及其方法

文档序号:6357184阅读:471来源:国知局
专利名称:先进先出存储系统及其方法
技术领域
本发明一般涉及带有内存存储系统的集成电路,尤其涉及使用先进先出(FIFO)存储结构的集成电路。
背景技术
在集成电路的数据处理系统上完成的实时调试系统中,在把调试信息输出到调试工具之前先把调试信息存储起来是必要的。先进先出(FIFO)存储系统一般用来临时存储调试消息。有些调试消息有多路入口单元,需要多路同时存储,有些调试消息只需要单路存储。
为了在同一FIFO结构中能存储这两种调试消息,需要使用双端口FIFO或者分开的专用FIFO。可是,由于在FIFO的每一入口单元上都要有复用器来允许存储两种类型的调试消息,使得双端口FIFO需要有大的表面积。而且,数目众多的复用器需要有大量的逻辑来控制复用器的路由选择,与之相应的就是增加了由于逻辑切换引起的能量消耗。
实现FIFO存储系统的另一种方法是使用两个独立的专用FIFO。例如,一个FIFO只接收地址信息,而另一个FIFO只接收数据。这种方法的好处在于集成电路上的表面积可以小一些,而且设计的复杂程度也要小些。可是,由于在一个FIFO充满并且溢出的同时另一个FIFO并没有充满,使得它与双端口FIFO相比较,FIFO的利用效率会低些。
因此,希望有一个FIFO存储系统,能够高效地利用它的存储面积并且同时将为实现它而必须采用的控制逻辑减小到最少。


结合例子和附图来说明本发明,但并不局限于附图中,图中相似的引用指示相似组件。
图1中示出了根据本发明实施例的先进先出存储系统的组成方框图;图2示出了图1中示出的先进先出存储系统的更详细的组成方框图。
本领域技术人员应该认识到,图中所有组件都是为了简单和清楚的目的而绘制的,并不必须遵循原尺寸。比如,图中有些组件的尺寸可以相对于其它组件进行放大以助于增进对本发明的实施例的理解。
具体实施例方式
在图1中示出的是根据本发明的先进先出(FIFO)存储系统10。在一种组成方案中,FIFO存储系统有两个FIFO,如图所示的FIFO A和FIFO B。应该可以理解的是,FIFO存储系统10可以用任何数目的FIFO来实现。FIFO A和FIFO B中每一个都可以有任意数目的存储入口单元。假设FIFO A有N路入口单元,而FIFO B有M路入口单元,其中N和M是正整数。输入A连接到复用器12和复用器14的第一输入端。输入B连接到复用器12和复用器14的第二输入端。D触发器16在触发器16的输出端提供一个与复用器12和复用器14的每个控制输入端相连的写信号。触发器16的输出端连接到非门18的输入端上。非门18的输出连接到触发器16的D输入端上。复用器12的输出与FIFO A的每一路入口单元相连,例如入口单元0,1到N。复用器14的输出与FIFO B的每一路入口单元相连,例如入口单元0,1到M。FIFO A每一路入口单元都有一个输出端,它们连接在一起,并且连接到复用器20的第一输入端上。FIFO B每一路入口单元也都有一个输出端,它们连接在一起,并且连接到复用器22的第一输入端上。FIFO A的输出端同时也和复用器22的第二输入端相连。同样的,FIFOB的输出端也和复用器20的第二输入端相连。D触发器23的Q输出端提供一个与复用器20和复用器22的每一个的控制端相连的读(READ)控制信号。触发器23的输出端连接到非门24的输入端上。复用器20的输出端连接到输入/输出(I/O)单元25的第一个输入端上。复用器22的输出端连接到输入/输出单元25的第二个输入端上。输入/输出接口单元上有I/O端口(图中没有示出)。
在操作中,FIFO存储系统10能够按照一种有效的方式同时进行多路入口单元的写操作。单个的复用器,比如说复用器12或复用器14,被分别地放置在FIFO A或FIFO B的写端口或输入端。假设用来解释那些包形式的信息被输入A和输入B接收到,就会以图2中所描述的连接方式把单个的数据包或数据部分从输入A或输入B只写进FIFO A或FIFO B中的一个中去。
如图1所示,从输入A和输入B输入的两个数据包或数据部分同时被写进FIFO A和FIFO B中。触发器1 6所起的作用就是一个一位(one-bit)写寄存器,写控制信号被用来指向FIFO A或FIFO B中的一个。当写控制信号为逻辑1时,复用器12选择输入A来提供输出,同时复用器14选择输入B来提供输出。当写控制信号为逻辑0时,复用器12选择输入B来提供输出,同时复用器14选择输入A来提供输出。此外,非门18的作用就在于,当每一个由与触发器16的时钟输入端(图中没有示出)相连的写时钟信号(图中没有示出)控制的单路写操作发生时,就切换触发器16的逻辑状态。另外,要求FIFO存储系统10中必须有一种操作来实现同时进行两个写操作,并且触发器16的逻辑状态保持一致。为了保证同时写,从输入A和输入B来的信息或仅连续连接到输入A或输入B中一个的信息被写入FIFO A和FIFO B中。在单路读操作中也采用相似的操作方式,触发器23所起的作用就是一个一位读寄存器,读控制信号用于指向FIFO A或FIFOB中的一个。当读控制信号为逻辑1时,复用器20选择FIFO A的输出来提供输出,同时复用器22选择FIFO B的输出来提供输出。当读控制信号为逻辑0时,复用器20选择FIFO B的输出来提供输出,同时复用器22选择FIFO A的输出来提供输出。产生一个读控制信号来响应与触发器23的时钟输入端(图中没有示出)相连的读时钟信号(图中没有示出)。此外,非门24的作用就在于,当每一次单个读操作发生时切换触发器的逻辑状态。另外,当两个读操作同时发生时,触发器23的逻辑状态保持一致。触发器23、非门24和复用器20,复用器22所起的作用就在于允许同时读取来自FIFO A和FIFA B的两个数据包或数据部分。另外,通过复用器20或复用器22的输出,能从单个FIFO中读取单个的数据包或数据部分。因此,由于相同的FIFO存储结构可以用来进行两种类型的操作,对于为了完成某种特定处理操作而进行同时存储多路信息以及在完成另外的处理操作时进行单路信息存储而言,FIFO存储系统是非常有效的。
为完成一个写进FIFO的写操作而在每个FIFO中仅使用一个复用器的电路可以大大节约费用。除避免了每个FIFO入口单元使用一个复用器之外,还避免了额外的控制电路。由于使用的复用器的数目少,其结果是显著地节省了能量消耗。在消除了复用器的同时,可以通过减少不必要的控制电路来实现另外一种节约能量的方法。本发明中同样有比例地(be scalable to)使用多个FIFO,其中,在系统中完成单个和同时的写操作仅仅需要每个FIFO一个复用器,在系统中完成单个和同时的读操作也同样只需要每个FIFO一个复用器。虽然只有一个能提供写入信息的复用器连接到每个FIFO,但是来自输入端A或输入端B的信息可以写进FIFO A或FIFO B中。应该很好理解的是,输入端A和输入端B接收和存储的信息的形式可以是数据、地址信息、控制信息或者是其中两者或更多种的组合。另外,术语“数据(data)”可以包含存储在示出的FIFO中的所有类型的信息。
如图2所示的是图1所示FIFO存储系统10的更详细的一个实施例。正如图2所示,FIFO存储系统30有一个输入端A和一个输入端B,它们接收将要存储在FIFO A和/或FIFO B中的信息。复用器32的第一输入端连接到输入端A,第二输入端连接到输入端B。复用器34的第一输入端连接到输入端A,第二输入端连接到输入端B。复用器32的一个输出端连接到FIFO A的N路入口单元中的每一入口单元上。FIFO A的第一入口单元上有多个触发器电路,例如触发器35-38。FIFO A的第N路入口单元上也有多个触发器电路,比如触发器45-48。触发器35-38和触发器45-48中的每一个触发器的D输入端连接到复用器32的输出端上。触发器35-38和触发器45-48中的每一个触发器的Q输出端连接到与门50的第一输入端上。与门50的第二输入端与读使能(READ ENABLE)信号A(0)相连,A(0)是FIFO A的第一读使能信号。与门51的第一输入端接收时钟信号,第二输入端接收写使能(WRITE ENABLE)信号A(0)(A(0)是FIFO A的第一写使能信号),其输出端与触发器35-38中的每一个时钟输入端都相连。触发器45-49中的每一个触发器的Q输出端都与与门53的第一输入端相连。与门53的第二输入端与读使能信号A(N)相连,A(N)是FIFO A的第N读使能信号。与门55的第一输入端接收时钟信号,第二输入端接收写使能信号A(N)(A(N)是FIFO A的第N写使能信号),其输出端与触发器45-48的每一个时钟输入端都相连。与门50的输出端与与门53的输出端、复用器60的第一输入端和复用器62的第一输入端相连。复用器60的输出端与输入/输出(I/O)单元64的第一输入端相连。
复用器34的输出端与有M路入口单元的FIFO B的每一路入口单元都相连。FIFO B的第一路入口单元上有大量的触发器电路,比如触发器70-73。FIFO B的第M路入口单元上有大量的触发器电路,比如触发器75-78。触发器70-73和触发器75-78中的每一个触发器的D输入端连接到复用器34的输出端上。触发器70-73和触发器75-78中的每一个触发器的Q输出端连接到与门80的第一输入端上。与门80的第二输入端与读使能信号B(0)相连,B(0)是FIFO B的第一读使能信号。与门81的第一输入端接收时钟信号,第二输入端接收写使能信号B(0)(B(0)是FIFO B的第一写使能信号),其输出端与触发器70-73的每一个触发器的时钟输入端都相连。触发器75-79中的每一个触发器的Q输出端都与与门83的第一输入端相连。与门83的第二输入端与读使能信号B(M)相连,B(M)是FIFO B的第M个读使能信号。与门85的第一输入端接收时钟信号,第二输入端接收写使能信号B(M)(B(M)是FIFO B中的第M个写使能信号),其输出端与触发器75-78的每一个触发器的时钟输入端都相连。与门80的输出端和与门83的输出端、复用器60的第二输入端和复用器62的第二输入端相连。复用器62的输出端与输入/输出(I/O)单元64的第二输入端相连。输入/输出单元64的输出端连接到一个输出端口上。在一种组成方案下,输入/输出单元64的输出端与Nexus-compliant软件工具相连,用来完成实现IEEE ISTO 5001标准的调试。
另外,伴随着FIFO A,FIFO存储系统30有一个头计数器电路(Head Counter Circuit)88,一个尾计数器电路(Tail Counter Circuit)89,写控制逻辑电路90以及读控制逻辑电路91。FIFO存储系统30还有一个头计数器93,一个尾计数器电路94,写控制逻辑电路95以及读控制逻辑电路96。头计数器88和尾计数器89的输出端分别与写控制电路90和读控制电路91的输入端相连。写控制逻辑电路90的输出端给FIFO A提供一个写使能信号,并且读控制逻辑电路91的第一输出端给FIFO A提供读使能信号。头计数器93和尾计数器94的输出端分别与写控制电路95和读控制电路96的输入端相连。写控制逻辑电路95的输出端给FIFO B提供一个写使能信号,并且读控制逻辑电路96的第一输出端给FIFO B提供读使能信号。读逻辑控制电路96的第二输出端与写逻辑控制电路95的第二输入端相连。同步入口单元逻辑电路100的输出端与读逻辑控制电路91的第二输入端、写控制逻辑电路90的第二输入端、写逻辑控制电路95的第二输入端、与门101的第一输入端、与门102的第一输入端以及读逻辑控制电路96的第二输入端相连。时钟信号与与门101和与门102中每个的第二输入端相连。与门101的输出与触发器105的时钟输入相连。触发器105的Q输出提供一个读信号,与非门106的输入端相连。非门106的输出端与触发器105的D输入相连。与门102的输出端与触发器108的时钟输入端相连。触发器108的Q输出提供一个写信号,并与非门109的输入端相连。非门109的输出端与触发器108的D输入相连。
在操作中,如图2中的详细图示,FIFO A和FIFO B有专门的入口单元使用多个触发器电路,如FIFO A中的第一入口单元使用触发器35-38。图2中所示的时钟是同步时钟,它是图示电路独立产生的;在所描述的所有时钟输入端使用的时钟信号是相同的。如图1所示的操作中,当复用器32接收到的写控制信号是逻辑1状态时,输入A直通输出。当复用器32接收到的写控制信号是逻辑0状态时,输入B直通输出。当复用器34接收到的写控制信号是逻辑1状态时,输入B直通输出。当复用器34接收到的写控制信号是逻辑0状态时,输入A直通输出。同样地,当读控制信号是逻辑1状态时,复用器60直通FIFO A的输出,复用器62直通FIFO B的输出。当读控制信号是逻辑0状态时,复用器60直通FIFO B的输出,复用器62直通FIFO A的输出。
如图所述,头计数器88的作用就在于保持一个指向FIFO A中标示开始的入口单元的连续计数值,尾计数器89的作用就在于保持一个指向FIFO A中标示结束的入口单元的连续计数值。FIFO A的作用就相当于一个循环队列,它有一个起始地址和一个结束地址,结束地址与起始地址相接。写控制逻辑电路90和读控制逻辑电路91与FIFO A连在一起,当一个写操作或读操作要被激活时,可以部分地利用头计数器和尾计数器来控制完成。写控制逻辑电路90和读控制逻辑电路91的输出是多条导线,每条导线对应FIFO A的一个特殊入口单元。头计数器88和尾计数器89的输出的作用就相当于指向FIFO A的指针,用来分别确定在FIFO A中哪路入口单元进行读或写操作。FIFO B也与头计数器93、尾计数器94、写控制逻辑电路95和读控制逻辑电路96进行着类似的操作。
同步入口单元逻辑100的功能就是检测在FIFO存储系统30中何时发生同时写进FIFO A和FIFO B的写操作,何时发生同时读取FIFOA和FIFO B的读操作,何时发生写进FIFO A或FIFO B其中一个同时读取另外一个FIFO的操作,何时发生读取FIFO A或FIFO B其中一个同时写进另外一个FIFO的操作,以及何时发生写进FIFO A和FIFO B的同时在FIFO A和FIFO B中读取其它入口单元的操作。当多路入口单元操作同时发生时,有许多事件和机制能发出信号。例如,在数据处理系统中,特定指令可以被解码,并且处理器(图中没示出)可以引发多路FIFO同时操作的发生。在一种方案中,与FIFO A和FIFOB通信的数据是一个实时调试信息,它与数据处理调试功能联系在一起。同步入口单元操作是通过产生一个或多个FIFO的多路读和写使能信号来实现的。假如有一个同步入口单元事件发生,与门101和102被激活,使得触发器105和108的时钟失效。触发器105和108的失效防止了在FIFO A和FIFO B之间的复用器32和34按照如图1所讨论的方式发生翻转。翻转操作的失效保证了在同步入口单元事件发生前下一路入口单元能够接入相同的FIFO。
到现在应该认识到,本发明提供了一种简化开销,减小能量消耗的FIFO存储结构。在这里所教导的FIFO存储系统是简洁的,而且可以节省成本,减小能量消耗。在一种应用中,本发明在处理系统中通常实现的调试电路方面有很显著的优点。由于多路入口单元信息需要同时存储,使用本发明就可以大大减少此功能附带的控制和电路。应该很好理解的是,本发明可以用在除调试用途之外的、使用FIFO存储结构的处理系统中。另外,本发明可以采用任何类型的晶体管和半导体制造工艺来实现。
由于实现本发明的大多数仪器都是本领域技术人员所公知的电子元件和电路组成的,对电路的细节就没有必要做更详细地解释,为了理解和认识本发明的基本概念并且不对本发明的教导产生困惑和歧义,如上面的描述就足够了。
在上面的说明书中,已经参照着特定的实施例对本发明进行了详细地描述。可是,本领域普通技术人员可以认识到,在不背离所附权利要求所阐述的本发明的范围的前提下,可以对本发明做出各种修改和改变。因此,本说明书和附图被认为是说明性的而并不含有限制意味。所有这样的修改都被期望包括在本发明的范围中。
对于具体实施例,上面已经描述了本发明的益处、其它优点以及问题的解决方案。可是,这些益处、优点、问题的解决方案以及可以引起任何益处、优点和方案的产生或者使之变得更为显著的任何组件都不被解释成任意和所有权利要求的关键的、必需的或本质的特征或组件。在这里使用的术语“包括(comprises、comprising)”或其中的任何其它变形,都意旨涵盖非排他性的包含,比如一个包括一系列组件的过程、方法、物品或者装置,其不仅仅包括所列出的组件,而且还可能包含其它没有明确列出的或者是这种过程、方法、物品和装置所固有的组件。
权利要求
1.一种先进先出(FIFO)存储系统,其包括第一复用器,它具有第一数据输入端,第二数据输入端,一个数据输出端以及一个控制端;第一FIFO存储器,它具有多个入口单元,每个所述入口单元都有一个输入端连接到所述第一复用器的所述数据输出端上;第二复用器,它有连接到所述第一复用器的所述第一数据输入端上的第一数据输入端,连接到所述第一复用器的所述第二数据输入端上的第二数据输入端,一个数据输出端以及一个控制端;第二FIFO存储器,它具有多个入口单元,每个所述入口单元都有一个输入端连接到所述第二复用器的所述数据输出端上;和一个写控制逻辑电路,它为所述第一和第二复用器中的每个的所述控制端提供一个写控制信号,用来将在所述第一或第二输入端接收到的数据交替地写进所述第一或第二FIFO存储器中。
2.根据权利要求1所述的FIFO存储系统,其还包括一个连接到所述写控制逻辑电路上的同步入口单元逻辑电路,用来使得所述写控制逻辑电路可以把数据同时写到所述第一和第二FIFO存储器中,作为对接收第一数据类型的所述第一和第二数据输入端的响应。
3.根据权利要求1所述的FIFO存储系统,其还包括第三复用器,它具有与所述第一FIFO存储器的每一个所述入口单元的数据输出端都相连的第一数据输入端,与所述第二FIFO存储器的每一个所述入口单元的数据输出端都相连的第二数据输入端以及一个控制端;第四复用器,它具有与所述第一FIFO存储器的每一个所述入口单元的数据输出都相连的第一数据输入端,与所述第二FIFO存储器的每一个所述入口单元的数据输出都相连的第二数据输入端以及一个控制端;和一个读控制逻辑电路,它为所述第三和第四复用器中的每个的所述控制端提供一个读控制信号,所述读控制逻辑使得能从所述第一和第二FIFO存储器中按照与写数据一样的顺序将数据读取出来。
4.根据权利要求1所述的FIFO存储系统,其中所述数据的特征在于,它是一个实时的调试信息。
5.根据权利要求1所述的FIFO存储系统,其还包括第一计数器,用于在把数据写入到所述第一FIFO存储器中的同时,继续指向所述第一存储器的每一个所述入口单元;和第二计数器,用于在把数据写入到所述第二FIFO存储器中的同时,继续指向所述第二存储器的每一个所述入口单元。
6.根据权利要求1所述的FIFO存储系统,其中所述写控制逻辑电路包括一个非门,它具有一个输入端和一个输出端;一个触发器,它具有一个与所述非门的所述输出端相连的输入端,一个与所述非门的所述输入端相连的输出端,一个提供所述写控制信号的所述触发器的所述输出端。
7.一种访问先进先出(FIFO)存储系统的方法,所述FIFO存储系统具有一个第一FIFO存储器和一个第二存储器,每个所述存储器都具有多个入口单元,所述第一FIFO存储器的每个所述入口单元的输入端都连接到第一复用器的一个输出端上,所述第二FIFO存储器的每个所述入口单元的输入端都连接到第二复用器的一个输出端上,所述方法包括如下步骤在所述第一复用器的第一输入端和所述第二复用器的第一输入端接收数据;在所述第一复用器的第二输入端和所述第二复用器的第二输入端接收数据;和将所述数据从所述第一和第二复用器的所述输出端交替地写入所述第一和第二FIFO存储器。
8.根据权利要求7所述的方法,其中,如果第一和第二计数器的计数增加,就将所述数据存储在所述第一和第二FIFO存储器的连续入口单元中,所述第一计数器对应所述第一FIFO存储器,所述第二计数器对应所述第二FIFO存储器。
9.根据权利要求7所述的方法,其中在所述交替写的步骤中,如果所述数据是第一数据类型的话,就把所述数据从所述第一和第二复用器的所述输出端写进所述第一和第二FIFO存储器。
10.根据权利要求7所述的方法,其还包括如果所述数据是第二数据类型的话,就把所述数据从所述第一和第二复用器的所述输出端同时写进所述第一和第二FIFO存储器的步骤。
全文摘要
一种先进先出(FIFO)存储系统(10)包括第一和第二FIFO(A和B)。第一和第二复用器(12和14)中的每个都具有两个可以接收数据的输入端。第一复用器(12)的输出端连接到第一FIFO(A)上,并且第二复用器(14)的输出端连接到第二FIFO(B)上。对应于一种类型的数据,写控制逻辑(90,95,100)被用来控制将数据交替写进第一和第二FIFO(A和B)中。对应于第二种类型数据,写控制逻辑(90,95,100)被用来控制将数据同时写进第一和第二FIFO(A和B)中。
文档编号G06F5/06GK1524215SQ02809967
公开日2004年8月25日 申请日期2002年5月7日 优先权日2001年6月20日
发明者约翰·J·金, 理查德·G·柯林斯, G 柯林斯, 约翰 J 金 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1