边进边出的寄存器队列装置及其方法

文档序号:6416331阅读:447来源:国知局
专利名称:边进边出的寄存器队列装置及其方法
技术领域
本发明涉及寄存器装置,特别涉及边进边出寄存器队列装置及其方法。
当今的微处理器在寄存器堆设计方法及结构上,以及在网络和数据总线的通讯上通常采取了同步或异步的寄存器堆结构和设计方案。
寄存器堆结构是计算机体系结构中常用的数据结构,主要运用于两种不同的体系间的数据传输,通常情况下,对异步寄存器堆结构采取了缓存的方式,在该方式下,两种不同的时序部件之间的数据传送,需要使用双倍的时间,而在异步寄存器堆结构中由于高速处理的需要,业界同仁均在追求一种边进边出的寄存器堆设计,这种边进边出的寄存器堆设计可以有效地解决数据传输的效率,增加数据频宽。
然而解决边进边出寄存器堆异步传输一直是业界的难题,通常的解决办法一是将异步变为同步的模式进行处理,使得不同的部件之间的数据传送以通讯规范的方法加以解决,本方法的问题是增加了电路的同步设计,增加了同步电路设计的复杂度。另一种方法是将先进先出的寄存器堆以请求应答方式按缓冲器操作进行数据传输,由此降低了数据传送的效率。
一般而言,传统的先进先出寄存器队列装置(FIFO)可分为两个部分一部分是寄存器堆,另一部分是数据输入输出计数器。寄存器堆用于数据的接收,缓存和传输,而输入输出计数器用于对寄存器堆输入输出数据进行计数,以保证数据的输出顺序,实现先进先出。FIFO的寄存器堆结构对FIFO的功能实现、效率等有很大的影响。FIFO的队列结构有如下两种第一种,如

图1中20所示本发明的发明人称之为“串入串出”的寄存器对列。这种寄存器堆的输入和输出只能同步操作。并且数据只能从一个口串行进入队列,从另外一个口串行输出。只有等寄存器堆中装满数据后才能输出。当输入输出同步且寄存器堆满时才能实现边进边出。用这种结构做成的FIFO比较简单,但效率最低。
第二种称之为“串入并出”寄存器堆,如图1中22所示,数据在输入时从一个口串行进入队列,输出时可按顺序选择寄存器输出,即所谓“并行”输出。当输入输出两边同步时,可以实现数据的边进边出,使FIFO的效率提高;当输入输出两边时钟不同步时,很难实现边进边出,而只能数据输入完毕后再输出。而且,用它虽然效率有所提高,但它不容易做成异步的FIFO,并且用它做成的FIFO结构和控制比较复杂一点。
因此,本发明的目的是提供一种可以高效率地实现边进边出,并且结构简单的异步寄存器队列装置。
为了实现以上目的,本发明提供了一种边进边出寄存器队列装置,包括一个寄存器堆,一个输入计数器,对输入寄存器堆的数据个数进行计数,并能控制输入数据进入寄存器堆的哪个寄存器中;一个输出计数器,对输出寄存器堆的数据个数进行计数,并能控制输出数据从寄存器堆的哪个寄存器输出;一个输出标识产生装置,能对寄存器堆的状态进行判断,并产生指示寄存器堆是“满”或“空”的信号。
本发明还提供了一种边进边出寄存器队列装置,其中所述的寄存器堆包括多个寄存器和一个多路选择器,多路选择器在选通地址信号的控制下选择某个寄存器输出。
本发明还提供了一种边进边出寄存器队列装置,其特征在于所述的输入计数器的真值表为
>其中,cp1和RST为输入计数器的输入,L0<(N-1)0>为输入计数器的控制寄存器堆写入的脉冲输出,和LI<(N-1)0>为输入计数器的用于输出标识装置的输入的输出。
本发明还提供了一种边进边出寄存器队列装置,其中所述的输出计数器的真值表为<
>本发明还提供了一种边进边出寄存器队列装置,其中所述的输出标识装置包括一个比较器,用于比较输入计数器和输出计数器的计数结果是否相等EQ,若相等则EQ=1,若不相等则EQ=0;一个RECORD部分,输入为cp1,cp2和RST,输出为REC,其实现的功能为若REC=0,则cp1的下降沿使REC=1,若REC=1,则cp2的下降沿使REC=0;和一个空NULL信号和满FULL信号生成部分,其中FULL=EQ&amp;REC,NULL=EQ&amp;(-REC)。
本发明还提供了一种边进边出寄存器队列装置,其中所述的边进边出寄存器队列装置是同步的。
本发明还提供了一种边进边出寄存器队列装置,其中所述的边进边出寄存器队列装置是异步的。
从本发明的技术方案可以看出,本发明提供了一种将先进先出寄存器堆的串行操作机制变为并行操作机制的电路结构,从而达到快速传输数据提高效率的目的。
本发明还实现了异步时序下直接实现异步数据操作的传输功能。
本发明还使先进先出的寄存器成为边进边出的寄存器堆,大大减少了寄存器堆的规模。
根据本发明的技术方案还可以看出·在这种结构的寄存器队列装置中,数据能够有多个入口(由输入计数器的输出控制),能输入到该装置任意的寄存器中;·在这种结构的寄存器队列装置中,当数据进行输出时又可以把任意寄存器中的数据直接选择输出(由输出计数器的输出控制);·采用这种结构的寄存器队列装置不仅能在同步或异步时序下实现的数据缓存功能,同时能实现数据的并入并出和边进边出的功能。
本发明的边进边出的寄存器堆结构可以在异步时序下直接操作,由此简化了异步数据通讯过程中的控制电路设计及规模。
下面将参照附图对本发明进行更加详细的描述,从而本发明的其它特点、优点和特征将更明显。附图中图1是现行技术寄存器堆的逻辑结构框图;图2是本发明的边进边出寄存器堆的逻辑结构框图;图3是本发明的N个M位寄存器堆的逻辑电路框图;图4是本发明的N个多位寄存器堆的数据结构图;图5是本发明输入计数器的逻辑框图及其真值表;图6是本发明输出计数器的逻辑框图及其真值表;图7是本发明输出标识的逻辑电路框图8是本发明输出标识中RECORD的状态图;图9是本发明输出标识中空满信号的时序图;图10至图14是本发明书8中举例所用的图;图10是本例中具有8个64位寄存器的边进边出寄存器队列装置的逻辑结构框图;图11是本例中8个64位寄存器边进边出寄存器堆;图12是本例中输入计数器逻辑电路图;图13是本例中输出计数器逻辑电路图;图14是本例中输出标识逻辑电路图;下面将对本发明具体实施例的详细描述附图中,符号表示方法A&lt;B-10&gt;表示输出A共有B位,分别为0到B-1位。如M&lt;70&gt;表示M的输出共有8位,分别为第0到7位。
图2是本发明的“边进边出”寄存器堆结构的一种实施方式的逻辑结构框图。图2中的各标识的意义分别为datain输入边进边出寄存器堆的数据信号;dataout从边进边出寄存器堆输出的数据信号;cp1数据输入边进边出寄存器堆的写脉冲。当cp1出现一次上升沿,表示有一个数据输入边进边出寄存器队列装置。
cp2数据从边进边出寄存器堆输出的读脉冲。当cp2出现一次上升沿,表示从边进边出寄存器队列装置取走一个数据。
RST复位信号。当RST信号有效(为高),使边进边出寄存器队列装置复位,此时null=1,full=0。
null边进边出寄存器队列装置的“空”标志。当null=1表示边进边出寄存器队列装置的寄存器堆已空;当null=0,则表示“非空”。
full边进边出寄存器队列装置的“满”标志。当full=1表示边进边出寄存器队列装置的寄存器堆已满;当full=0,则表示“非满”。
L&lt;(n-1)0&gt;输入计数器的输出,用于选择寄存器堆中的某一个寄存器的输入。
M&lt;(log2N-1)0)&gt;输出计数器的输出,用于选择寄存器堆中的某个寄存器的输出。
如图2所示,本发明的寄存器队列装置包括一个寄存器堆24,用于实现输入输出数据的暂存;一个输入计数器26,它能够对输入的数据进行计数,并能控制输入数据进入寄存器堆24的某个寄存器中;一个输出计数器28,它能够对输出的数据进行计数,并能控制把寄存器堆24的某个寄存器中的数据输出;一个输出标识装置30,它能对当前的寄存器队列装置的状态进行判别,并给出当前的寄存器队列装置的“空”,“满”标志。
这些输出信号的具体作用将在下面描述。实际上,虽然图2中所示的输入计数器有两个输出L&lt;(N-1)0&gt;和L1&lt;(N-1)0&gt;,本领域的技术人员应该明白,计数器的输出形式应该还可以作其它的变更或改进,只要能使输入计数器的输出能与寄存器堆的逻辑配合,控制将数据装入寄存器堆中的想要的寄存器,并且与输出标识模块中的逻辑相配合,与其它信号一起正确产生空或满信号即可。
如图2所示的本实施例的边进边出寄存器队列装置的功能要求如下·当cp1出现一次上升沿,边进边出寄存器队列装置装入一个数据;当cp2出现一次上升沿,从边进边出寄存器队列装置取走一个数据。
·采用这种结构的寄存器队列装置不仅能在同步或异步时序下实现的数据缓存功能,同时能实现数据的并入并出和边进边出的功能。
·边进边出寄存器队列装置输出“空”、“满”标志。当null=1时,表示FIFO已空,不能再从FIFO取数,此时不能出现cp2的上升沿。当full=1时,表示FIFO已满,不能再装入数据,此时不能出现cp1的上升沿。null在cp2变化之后发出、full标志在cp1变化之后发出,在下一次变化之前保持不变。
实际上,本领域的技术人员应该明白,不一定要利用cp1的上升沿和cp2的上升沿来分别往寄存器堆装数据或从寄存器堆读取数据。根据电路的实际时序设计情况,也可以在其它时间装入数据或读取数据。分别表示寄存器堆空满的信号null和full也可以在null=0时表示空,在full=0时表示满。
图3是本发明的N个M位寄存器堆的逻辑电路框图。如图3所示,本发明的寄存器堆的电路结构包括N个寄存器和一个MUX多路选择器,各寄存器的输入都连在一起组成数据输入端datain,各寄存器的输出分别连到MUX多路选择器的输入端,寄存器的各锁存控制端分别连到输入计数器的输出L&lt;(N-1)0)的各位,多路选择器的选择控制信号输入端连到输出计数器的输出。
如图3中的寄存器可采用D触发器,实现在写脉冲的上升沿锁存数据。若采用LAT(高通低锁)则实现在下降沿锁存数据。当然,寄存器也可以是其它各类触发器,触发类型也可以是电平触发。
如图3中,L&lt;(N-1)0&gt;是输入计数器的输出,为N位脉冲信号,分别对应N个寄存器。当有数据输入时,相应的那一位L&lt;i&gt;将出现一个写入脉冲把数据写到相应的寄存器。M&lt;(log2N-1)0&gt;是输出计数器的输出,为log2N位的电平信号,用于选择要输出的数据。多路选择器的结构是本领域的技术人员都很熟悉的,并且也不是本发明的关键所在,因此这里就不再详细描述。
如图3所示在这种结构的队列中,数据能够有多个入口,能输入到每个寄存器中,寄存器堆在缓存数据时,使数据按顺序存放在相应的寄存器里,数据一旦存放之后将保持不变,直到下一个数据块缓存时清除。当输出时只要条件满足,又可以把不同寄存器的值直接选择输出,因此称之为“边进边出”的寄存器堆。采用这种结构的FIFO不仅能实现同步和异步的数据缓存功能,同时,能实现数据的并入并出和边进边出,并且功能很强,使用它后将会使系统的效率提高很多。
图4是本发明的N个多位寄存器堆的数据结构图。如图4所示,在输入指针L和输出指针M的控制下,N个多位寄存器堆的数据结构可以看成一个寄存器环,每一个要输入的数据都按顺序直接保存在相应的寄存器里,数据一旦存放之后将保持不变,直到下一个数据块缓存时清除;寄存器环的输入指针L指向数据输入的位置;输出指针M指向将要输出的数据。当有数据输入后,输入指针将指向下一个寄存器,准备下一个数据的输入。输出始终指向输出的数据,当数据输出后指针加1,指向下一个数据。输入输出指针均可循环移动,只要寄存器环不满,就可以按顺序往寄存器环里装入数据,充分利用寄存器空间;只要寄存器环不空,就可以从寄存器环里按一定顺序取数。
在这种结构中,关键是要判断寄存器堆环的空或满。在本发明中的判断方式为L加1后,若L=M,则FIFO为满,“满”信号的出现与输入同步;M加1后,若L=M,则FIFO为空,“空”信号的出现与输出同步。
这里要注意的是输入指针和输出指针都不一定要顺序增加,即不一定要依次加1。所以“空”“满”的判断方式也可能根据本发明提供的原理而变,但无论如何变化都不应认为是超出了本发明的范围。
图5是本发明输入计数器的逻辑框图及其真值表。
如图5中32所示,输入计数器至少有两个输入,cp1和RST;和两个输出,L&lt;(N-1)0&gt;和L1&lt;(N-1)0&gt;。其中,cp1数据输入边进边出寄存器队列装置的写脉冲,当cp1出现一次上升沿,表示有一个数据输入边进边出寄存器队列装置;RST输入计数器的复位信号,当RST信号有效(为高),使输入计数器复位;L1&lt;N-10&gt;为此输入计数器的计数值,L1&lt;i&gt;=1(i=1,2,3...,N)表示边进边出寄存器堆中的第i个寄存器将要写入数据。
L&lt;N-10&gt;是由L1&lt;N-10&gt;信号与输入写脉冲cp1相与后产生的对边进边出寄存器堆的写脉冲;L&lt;N-10&gt;为脉冲信号,直接对相应的寄存器写入数据,同一时间里只有一位出现脉冲。当清零后,输出L1&lt;N-10&gt;=0000,...,0001,指向第一个寄存器。为了使L&lt;N-10&gt;产生写脉冲,L1&lt;N-10&gt;必须能保持到写脉冲结束,因此,输入计数器建议用写脉冲的下降沿进行计数。
如图5的真值表34所示L0&lt;N-10&gt;表示L&lt;N-10&gt;的前一个状态;X表示为任意值;0-&gt;1表示上升沿;1-&gt;0表示下降沿;L0&lt;N-10&gt;表示L&lt;N-10&gt;的前一个状态;--表示值保持原来的不变。
图5所示的真值表是假定L和L1的输出为N位脉冲输出,同时还假定用cp1的上升沿来触发。在其它信号形式的情况下,如假定cp1是脉冲触发的情况下,假定L信号和L1信号有其它不同形式的情况下,真值表应该是其它不同的形式,当然,此时也需对其它的电路作相应的变化。这一点是本领域的普通技术人员都能理解的,并且属于本领域技术人员的普通常识范围内。如假如将L1&lt;(N-1)0&gt;改为L1&lt;(Log2N-1)0&gt;,即将计数器的技术结果用常规的二进制来表示,则真值表的形式将变为
<p>在这种情况下,则需对下面图7将要描述的比较器进行改变,将其改为常规的比较器。根据这里所示的真值表来设计计数器电路是属于本领域的技术人员的技术能力范围的。因为此时L1的输出是一常规计数器,对L1的输出进行译码再加上译码就可形成L输出。
图6是本发明输出计数器的逻辑框图及其真值表。如图6中36所示,输出计数器包括至少两个输入cp2和RST以及一个输出M&lt;(log2N-1)0&gt;,其中cp2数据从边进边出寄存器队列装置输出的读脉冲。当cp2出现一次上升沿,表示从边进边出寄存器队列装置取走一个数据。
RST输出计数器的复位信号。当RST信号有效(为高),使输出计数器复位;M&lt;(log2N-1)0&gt;是输出计数器的输出,为log2N位的电平信号,用于选择边进边出寄存器堆要输出的数据。当清零后,M&lt;(log2N-1)0&gt;=0000,....,0000,指向第一个寄存器。此时输出数据有效,为第一个数据。当出现一个读脉冲cp2后,输出计数器加1,使之指向下一个数据。输出计数器的具体功能如图6中的真值表38所示。此读脉冲可以是接受输出数据的寄存器的写脉冲信号,因此,输出计数器的输出应在读脉冲结束之后变化,即可采用读脉冲的下降沿进行计数。如图6中36真值表所示X表示为任意值;0-&gt;1表示上升沿;1-&gt;0表示下降沿;--表示值保持原来的不变;+1表示计数值加1;图7是本发明输出标识的逻辑电路框图。如图7所示,输出标识逻辑电路包括一个比较器,一个RECORD电路和一个功能块。其中,比较器40的输入分别为L和M,L为输入指针,M为输出指针;比较器的输出为EQ。
RECORD 42的输入为CP1和CP2,以及RST,cp1为数据输入边进边出寄存器队列装置的写脉冲信号,cp2为数据从边进边出寄存器队列装置输出的读脉冲信号,RST为图7中42 RECORD的复位信号。RECORD的输出为REC。
功能块44的输入分别为EQ和REC,输出为FULL和NULL。其输入输出关系为FULL=EQ&amp;REC;NULL=EQ&amp;(~REC)。
null为图7输出标识的“空”标志。当null=1表示边进边出寄存器队列装置的寄存器堆已空,当null=0,则表示“非空”。
full为图7输出标识的“满”标志。当full=1表示边进边出寄存器队列装置的寄存器堆已满;当full=0,则表示“非满”。
如图7中40所示设计EQ信号。比较输入输出计数值L,M。当L=M时EQ=1;当L的值与M的值不相等时,EQ=0。
当输入信号CP1出现脉冲后,若L=M(输入输出计数相等)则“满”信号有效;当输出信号CP2出现脉冲后,若L=M,则“空”信号有效。
图8是本发明输出标识中RECORD的状态图。如图8所示,设计REC信号来记录最近的操作是输入还是输出,当CP2出现下降沿后,REC=0,CP1出现下降沿后,REC=1。
图9是本发明输出标识中空满信号的时序图。如图9所示,本设计的特点1、对输入来说,不会漏掉满信号;2、对输出来说,不会漏掉空信号;3、空满信号不会影响到输入输出计数值;4、空满信号能自恢复。
5、同时出现输入输出脉冲,则EQ肯定为0,FULL和NULL均为0,FIFO不满也不空,此时REC无效。
6、空信号出现窄脉冲,对外部电路而言无影响,此时发不发CP2不会导致边进边出寄存器堆出错。
7、满信号出现窄脉冲,对外部电路而言无影响,此时发不发CP1都不会导致边进边出寄存器堆出错。
采用以上原理设计同步和异步FIFO的方法是一样的。对同步FIFO,使用读写时钟和读写信号来存取数据。而对异步FIFO使用读写脉冲存取数据。一个写脉冲把数据从写端口写入,读脉冲把数据从读端口读出。下面仅以异步时序下的具有8个64位寄存器的边进边出寄存器队列装置对本发明的实施方式进行具体描述下面将以8个64位寄存器的边进边出寄存器堆为例来更详细地描述本发明的具体电路实现的优选实施例。
如图10是本例中8个64位寄存器边进边出寄存器堆的逻辑结构框图;它是由如图10中44含有8个64位寄存器的边进边出寄存器堆,如图10中46输入计数器,如图10中48输出计数器,如图10中50输出标识组成。首先确定边进边出寄存器队列装置的输入输出关系。如图10中所示datain是输入边进边出寄存器队列装置的64位数据dataout从边进边出寄存器队列装置输出的64位数据cp1数据输入边进边出寄存器队列装置的写脉冲。当cp1出现一次上升沿,表示有一个数据输入边进边出寄存器队列装置。
cp2数据从边进边出寄存器队列装置输出的读脉冲。当cp2出现一次上升沿,表示从边进边出寄存器队列装置取走一个数据。
RST复位信号。RST有效(为高),使边进边出寄存器队列装置复位,输出null=1,full=0。
null边进边出寄存器队列装置的“空”标志。当null=1表示边进边出寄存器队列装置的寄存器堆已空;当null=0,则表示“非空”。
full边进边出寄存器队列装置的“满”标志。当full=1表示边进边出寄存器队列装置的寄存器堆已满;当full=0,则表示“非满”。
如图11是本例中8个64位寄存器边进边出寄存器堆其中,1&lt;70&gt;是输入计数器的输出,为8位脉冲信号,分别对应八个寄存器。当有数据输入时,相应的那一位L&lt;i&gt;将出现一个写入脉冲把数据写到相应的寄存器。M&lt;20&gt;是输出计数器的输出,为3位的电平信号,用于选择要输出的数据。
FIFO在缓存数据时,使数据按顺序存放在相应的寄存器里,数据一旦存放之后将保持不变,直到下一个数据块缓存时清除。输出计数器则指向要输出的数据,只要条件满足,便可以从已经暂存数据的寄存器中取数,取数后给输出计数器加一,指向下一个数据。
此处的寄存器采用D触发器,实现在写脉冲的上升沿锁存数据。若采用LAT(高通低锁)则实现在下降沿锁存数据。
图12是本例中输入计数器逻辑电路图;因为有8个寄存器,所以应该有8路对应信号来分别对应8个寄存器。如图12所示,本例的计数器逻辑电路有8个下降沿触发的D触发器和8个与门组成。cp1连到每个下降沿触发的D触发器的时钟输入端,RST连到每个D触发器的复位输入端。第0个D触发器的Q非输出为LI&lt;0&gt;,LI&lt;0&gt;与cp1相与后的输出为L&lt;0&gt;,第0个D触发器的Q非输出还连到第1个触发器的D输入端,第1个D触发器的Q输出为LI&lt;1&gt;,LI&lt;1&gt;与cp1相与后的输出为L&lt;1&gt;,第1个D触发器的Q输出连到第2个触发器的D输入端,......,类似地,第i个D触发器的Q输出为LI&lt;i&gt;,LI&lt;i&gt;与cp1相与后的输出为L&lt;i&gt;,第i个D触发器的Q输出连到第i+1个触发器的D输入端。最后,第7个D触发器的Q输出为LI&lt;7&gt;,LI&lt;7&gt;与cp1相与后的输出为L&lt;7&gt;,第7个D触发器的Q非输出连到第0个触发其的D输入端。根据本实施例,本领域的技术人员能很容易地确定出在其它位数情况下的计数器。
应该能理解的是,虽然图12的计数器是根据图5的真值表,具体是根据下面的图表1得出的,根据图表1的真值表完全可以推导出别的形式的计数器电路。
根据前面边进边出寄存器队列装置的结构设计,输入计数器的输出应指向当前用于存放数据的寄存器,LI&lt;70&gt;为输入计数器的计数,LI&lt;i&gt;=1表示第i个寄存器将要写入数据。LI与输入写脉冲相与后产生对FIFO队列的写脉冲L&lt;70&gt;。L&lt;70&gt;为脉冲信号,直接对相应的寄存器写入数据,同一时间里只有一位出现脉冲。当清零后,输出LI&lt;70&gt;=00000001,指向第一个寄存器。为了使L&lt;70&gt;产生写脉冲,LI&lt;70&gt;必须能保持到写脉冲结束,因此,输入计数器建议用写脉冲的下降沿进行计数。
边进边出寄存器队列装置的输入计数器的真值表如表格1所示
图表1注表中,X表示为任意值0-&gt;1表示上升沿;L0&lt;70&gt;表示L&lt;70&gt;的前一个状态;--表示保持原来的不变;+1表示在原来的状态上加1。在下面的表格中,所述符号的表示意义相同。
图13是本例中输出计数器逻辑电路图;图13所示的输出计数器是按图6的真值表来实现的,具体说来,是按下面的图表2中所示的真值表来实现的。从真值表可看出,该计数器实际上是一个下降沿触发的同步计数器,因此可用常规的下降沿触发同步计数器。在本实施例中,这种计数器的电路结构包括三个D触发器,cp2输入到每个D触发器的时钟输入端,RST输入到每个D触发器的复位输入端,第0个D触发器的Q输出为M&lt;0&gt;,第0个D触发器的Q非输出连大到第0个触发器(自身)的D输入端;第1个触发器的Q输出为M&lt;1&gt;,M&lt;0&gt;和M&lt;1&gt;的异或(E02)结果送入到第1个D触发器的D输入端。第2个D触发器的Q输出为M&lt;2&gt;,第2个D触发器的D输入端的信号为第四个与非门ND3_4的输出,第四个与非门的输入分别为M&lt;2&gt;与M&lt;1&gt;的与非结果、M&lt;2&gt;与M&lt;0&gt;的与非结果、M&lt;1&gt;与M&lt;0&gt;与M&lt;2&gt;非的与非结果。
本领域的技术人员应该能理解,能实现相同功能的计数器还有其它很多种不同的类型。
如图13所示输出计数器的输出为M&lt;20&gt;,用于选择边进边出寄存器队列装置的输出,清零后,M&lt;20&gt;=000,指向第一个寄存器。此时输出数据有效,为第一个数据。当出现一个读脉冲cp2后,输出计数器加1,使之指向下一个数据。此读脉冲可以是接受输出数据的寄存器的写脉冲信号,因此,输出计数器的输出应在读脉冲结束之后变化,即采用读脉冲的下降沿进行计数。
输出计数器的真值表如表格2所示
图表2图14是本例中输出标识逻辑电路图。
输出标识是FIFO里很重要的一部分电路,用于给出FIFO的状态。当FIFO的数据全部被取走后,输出null为1;当FIFO满后,输出full为1。null随cp2变化,full随cp1变化。输出null和full分别其真值表如表3所示。
图表3注*MI指M&lt;20&gt;经译码后的值(MI&lt;70&gt;)。
**由于null信号用来控制cp2的出现,full用来控制cp1的出现,因此,当LI=MI时,将不会同时出现cp1、cp2脉冲信号。
本电路需设置一个标志(例如TMP)用于记录FIFO最近的操作是输入FIFO还是从FIFO输出。当cp1出现下降沿后TMP置1,当cp2出现下降沿使TMP清零。此标志再与L=M相与,即得到“空”、“满”标志。
如图14所示,本实施例的输出标识电路包括由一个多路选通器MUX83_1组成的比较器,由于本实施例中输入计数器的输入计数和信号LI信号为8位脉冲信号,M为3位的输出计数器计数结果信号,若LI和M相等,则M应该能正好将LI的对应位选通。若不相等,则M不能选通LI的对应位。例如,如果输入了3个数据,输出了2个数据,则LI的信号为00000100,则M为010,选通器MUX83_1的输出为0,输入输出不等。如果又输出了1个数据,即输出了3个数据,则M为011,选通器的输出变为1则输入输出的指针相等。
根据本实施例的标识电路还包括一个RECORD电路。图7中RECORD框所示的电路的状态转换图如图8所示。根据图8的状态转换图,可以得出RECORD框的一种电路结构为,包括两个D触发器,两个D触发器的D输入端都为1,第一触发器的时钟输入端接cp2,第二D触发器的时钟输入端接cp1,第一触发器的复位输入接第一反相器IV_1的输出端,第二D触发器的复位输入接异或门NR2的输出端,第一D触发器的Q非输出接到第一与非门的第二输入端,第二D触发器的Q非输出接第二与非门的第二输入端,第一与非门的第三输入与第二与非门的输出相连,第二与非门的第一输入与第一与非门的输出相连,第一与非门的第一输入为第一反相器IV_1的输出,与门AN2的第二输入为第二反相器IV_2的输出,第二反相器的输入为第二与非门ND2_2的输出。异或门NR2的第一输入为RST信号,第二输入为第二反相器IV_2的输出。这样,RECORD电路有两个输出TMP和TMP非,TMP实际就是第二反相器IV_2的输出,TMP非为第一与非门的输出。
最后,根据图7框44所示的逻辑,实现full信号和null信号。TMP和多路选通器MUX83-1的输出相与形成full信号,TMP非和多路选通器MUX83-1的输出相与产生null信号。
以上介绍了一种能在同步和异步的情况下完成边进边出功能的FIFO缓冲区,这种FIFO能实现连续的数据缓存,只要缓冲区空,就可以进行下一次的数据缓存,充分利用FIFO的空间,使一次缓存的数量大于等于FIFO的长度。在使用时也特别简单,利用它,可以不用再去考虑其它的控制电路,只需给出读写脉冲信号,并能保证任何时候都能取得系统的最高效率。在总线控制器MBC中,经常需要和MBUS总线进行大量的数据传送,采用边进边出的FIFO能使系统的传送效率得到很大的提高。
以上参照本发明的具体实施例描述了本发明,但本领域的技术人员显然还可以在属于本发明的范围内作各种变化、修改和改进。如各种中间信号的形式等都是可变的。例如,输入计数器和输出计数器的输出,其信号类型及格式是可变的,只要能完成正确的对寄存器堆的写入和读出,并能让输出标识模块正确产生标识即可。本实施例中所述的上升沿和下降沿的说法也是相对的。
权利要求
1.一种边进边出寄存器队列装置,包括一个寄存器堆,其特征在于还包括一个输入计数器,对输入寄存器堆的数据个数进行计数,并能控制输入数据进入寄存器堆的哪个寄存器中;一个输出计数器,对输出寄存器堆的数据个数进行计数,并能控制输出数据从寄存器堆的哪个寄存器输出;一个输出标识产生装置,能对寄存器堆的状态进行判断,并产生指示寄存器堆是“满”或“空”的信号。
2.如权利要求1所述的边进边出寄存器队列装置,其特征在于所述的寄存器堆包括多个寄存器和一个多路选择器,多路选择器在选通地址信号的控制下选择某个寄存器输出。
3.如权利要求1所述的边进边出寄存器队列装置,其特征在于所述的输入计数器的真值表为
其中,cp1和RST为输入计数器的输入,L0&lt;(N-1)0&gt;为输入计数器的控制寄存器堆写入的脉冲输出,和LI&lt;(N-1)0&gt;为输入计数器的用于输出标识装置的输入的输出。
4.如权利要求1所述的边进边出寄存器队列装置,其特征在于所述的输出计数器的真值表为
5.如权利要求1所述的边进边出寄存器队列装置,其特征在于所述的输出标识装置包括一个比较器,用于比较输入计数器和输出计数器的计数结果是否相等EQ,若相等则EQ=1,若不相等则EQ=0;一个RECORD部分,输入为cp1,cp2和RST,输出为REC,其实现的功能为若REC=0,则cp1的下降沿使REC=1,若REC=1,则cp2的下降沿使REC=0;和一个空NULL信号和满FULL信号生成部分,其中FULL=EQ&amp;REC,NULL=EQ&amp;(-REC)。
6.如权利要求1-5所述的边进边出寄存器队列装置,其特征在于所述的边进边出寄存器队列装置是同步的。
7.如权利要求1-5所述的边进边出寄存器队列装置,其特征在于所述的边进边出寄存器队列装置是异步的。
8.如权利要求5所述的边进边出寄存器队列装置,其特征在于所述的比较器用一个多路选通器来实现。
9.一种实现寄存器队列边进边出工作的方法,其特征在于包括下面的步骤当往寄存器队列写数据时包括步骤判断出寄存器队列不满;往寄存器队列送一个数据;用一个输入计数器的输出控制输入数据进入寄存器堆的特定寄存器中,并且输入计数器加1;当从寄存器队列读数据时包括步骤判断出寄存器队列不空;用一个输出计数器的输出进行控制,从寄存器队列的特定寄存器中取出一个数据,并且输出计数器加1。
10.如权利要求9所述的实现寄存器队列边进边出工作的方法,其中所述的寄存器堆包括多个寄存器,其特征在于从所述的寄存器堆读数据的步骤包括用一个多路选择器,在选通地址信号的控制下从多个寄存器中选择某个寄存器输出的步骤。
11.如权利要求9所述的实现寄存器队列边进边出工作的方法,其特征在于所述的输入计数器的根据下列真值表进行计数
claim><claim>13.如权利要求9所述的实现寄存器队列边进边出工作的方法,其特征在于所述判断寄存器不满或不空的步骤包括一个比较步骤,用于比较输入计数器和输出计数器的计数结果是否相等EQ,若相等则EQ=1,若不相等则EQ=0;一个生成RECORD信号的步骤,输入为cp1,cp2和RST,输出为REC,其实现的功能为若REC=0,则cp1的下降沿使REC=1,若REC=1,则cp2的下降沿使REC=0;和一个空NULL信号和满FULL信号生成步骤,其中FULL=EQ&amp;REC,NULL=EQ&amp;(REC)。
14.如权利要求9-13所述的实现寄存器队列边进边出工作的方法,其特征在于所述的边进边出寄存器队列的输入和输出是同步的。
15.如权利要求9-13所述的实现寄存器队列边进边出工作的方法,其特征在于所述的边进边出寄存器队列的输入和输出是异步的。
16.如权利要求13所述的实现寄存器队列边进边出工作的方法,其特征在于所述的比较比较步骤包括一个多路选通步骤。
全文摘要
一种边进边出寄存器队列装置,包括一个寄存器堆,一个输入计数器,对输入寄存器堆的数据个数进行计数,并产生一个控制数据写入寄存器堆的写入控制信号;一个输出计数器,对输出寄存器堆的数据个数进行计数,并产生一个控制数据读出寄存器堆的读出控制信号;一个输出标识产生装置,利用输入计数器和输出计数器的计数结果,产生指示寄存器堆是“满”或“空”的信号。这种边进边出寄存器队列装置既能以异步又能以同步方式工作。
文档编号G06F9/30GK1268693SQ9910419
公开日2000年10月4日 申请日期1999年3月24日 优先权日1999年3月24日
发明者华钧, 刘大力 申请人:北京多思科技工业园股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1