先进先出(fifo)缓冲控制器的制作方法

文档序号:6405293阅读:231来源:国知局
专利名称:先进先出(fifo)缓冲控制器的制作方法
一般来讲,本发明涉及FIFO(先进先出)存贮器;更具体来讲本发明涉及对FIFO存贮器的一种控制电路。
FIFO存贮器是众所周知的。一种类型的FIFO存贮器是由连接有控制电路的随机存取存贮器(RAM)所组成的。该控制电路用来控制向RAM的数据写入以及从RAM中的数据读出。
像这样的FIFO系统,例如已由如下美国专利所揭示Helen等人1986年10月7日的美国专利US4,616,338;Huang等人1986年3月27日的美国专利US4,592,019;Torii等人1984年2月21日的美国专利US4,433,394;Suzuki等人1979年7月31日的美国专利US4,163,291;及Gray等人1971年8月24日的美国专利US3,601,809。
以上这些已有的FIFO存贮器的一个缺点是它们所使用的可逆计数器相对来说大而复杂。
本发明与现有技术的区别在于所使用的两个计数器中的每个计数器都还使用了一个附加位,当与适当的逻辑电路相配合运用时,可对该FIFO存贮器产生出状态(或控制)信号;也就是满状态信号或空状态信号。本发明并不采用可逆计数器,因而也随之得到很大简化。
换句话说,本发明是用于向FIFO存贮器提供地址信息的FIFO(先进先出)存贮器电路的一种控制电路;该控制电路包括有给出第一个二进制信号的第一装置;给出第二个二进制信号的第二装置;用来将第一个二进制信号的最高有效位与第二个二进制信号的最高有效位进行比较并产生出指示其比较结果的第一控制信号的第一比较器;用来将第一个二进制信号的次于最高有效位的各位与其第二个二进制信号的次于最高有效位的各位进行比较并产生出指示其比较结果的第二控制信号的第二比较器;响应于该第一控制信号及第二控制信号,用来对存贮器电路究竟是处于满状态还是非满状态产生出指示信号的逻辑电路装置。
换句话说,本发明是用于FIFO(先进先出)存贮器电路的一种控制电路;该控制电路包括有给出第一信号的第一计数器;
给出第二信号的第二计数器;
用来对第一信号及第二信号进行接收并且选择第一信号或者选择第二信号作为其输出信号的多路转换器;
用来将第一信号的最高有效位与第二信号的最高有效位进行比较并产生出指示其比较结果的第一控制信号的第一比较器;
用来将第一信号的次于最高有效位的各位与第二信号的次于最高有效位的各位进行比较并产生出指示其比较结果的第二控制信号的第二比较器;以及响应于该第一控制信号及第二控制信号,用来对存贮器电路是否处于空状态或非空状态给出指示而产生出第一指示信号以及对存贮器电路是否处于满状态给出指示而产生出第二指示信号的逻辑装置。
以下,结合附图对本发明进行详细描述。其中在各附图里,凡是相同的部件均采用相同的数字、符号表示。


图1是现有技术中FIFO存贮器简化了的方框图;
图2是为利于理解本发明运行操作简化了的FIFO存贮器方框图;
图3是根据本发明构成的FIFO存贮器的一个实施方案简化了的方框图;
图4是根据本发明构成的FIFO存贮器的最佳实施方案简化了的方框图。
图1以简化了的形式描述了根据公知技术所构成的一个FIFO存贮器电路10。电路10包括有FIFO控制电路11及FIFO存贮器12。FIFO存贮器12是有数据输入口13、数据输出口14及地址端口16的随机存取存贮器(RAM)。
FIFO控制电路11包括有如图1所示相互连接起来的加法计数器17、加法计数器18、多路转换器19以及可逆计数器20。计数器17及18如图所示用时钟信号A进行同步。如图所示,加法计数器17有写入使启动输入端E,而加法计数器18有读出使启动输入端E。总线22将计数器18的输出信号加给多路转换器19的输入口A;总线23将计数器17的输出信号加给多路转换器19的输入口B。根据在控制端口21上的控制信号的选择,在多路转换器19的输出口C上,或者把来自输入口A的信号、或者把来自输入口B的信号传送给总线24。在此,加法计数器17是74F163型、加法计数器18是74F163型、多路转换器19是74F157型、而可逆计数器20是74F199型。
假设,在FIFO存贮器电路10的起始状态,没有任何数据存贮在RAM12之中,因而计数器17及18的输出为零,而且计数器20在其输出端O上指示RAM12处于空状态(也就是输出端O是零)。假如要将数据存入RAM12,当把使启动信号(即,逻辑1)加到计数器17的输入端时,顺序地把数据送到了RAM12的输入口13。计数器17将其经过总线23加给多路转换器19的计数值进行递增。加到多路转换器19的控制输入端21上的控制信号使多路转换器19的输入口B连接到多路转换器19的输出口C上,于是也就连接到总线24,而后接到RAM12的地址端口16上。随后,把加到输入口13上的数据按照顺序定位单元而存入RAM12,并且由计数器17决定存入各单元的地址。
假设现在把所有要存贮的数据都存入RAM12,然后现在我们想要再取回所有这些数据或某些数据(即从RAM12中读出数据),那么则把读使启动信号(即逻辑1)加到加法计数器18的E输入端上。计数器18把经过总线22加给多路转换器19的计数值进行递增。加到多路转换器19的控制输入端21上的控制信号则使得多路转换器19的输入口A与多路转换器19的输出口C相连接起来,于是也就与总线24相连接起来,而后接到RAM12的地址端16上。随后,把相继的这些地址加到RAM12上,并且依次把这些地址定位单元中所存贮的数据加到RAM12的数据输出口14上。
利用可逆计数器20保持对RAM12的状态跟踪,也就是说,RAM处于满状态、空状态、或在某些情况下处于这两种状态之间的一种状态。把来自计数器17输入端E上的写入使启动信号加到计数器20的加法计数输入端U上(在此所加给的信号使得计数器20对它的计数值进行递增,即加法计数)。把来自计数器18输入端E上的读出使启动信号加到计数器20的减法计数输入端D上(在此所加给的信号使得计数器20对它的计数值进行递减,即减法计数)。计数器20的输出端O传送出指示RAM12状态的一个计数值(即数字)。换句话说,对比例来说,若RAM12处于空状态,则输出端O是零数字;若RAM12处于满状态,则输出端O是FFF数字(十六进制数);任何处于O与FFF(十六进制)之间的数字,则指示RAM12满状态的程度如何。该数字值越大,则RAM12越是处于比较满的状态上。
这正是由于当RAM12处于空状态时,则计数器20也正是自零开始进行计数所致。当把数据存入RAM12的时候(按照计数器17所寻址的方式),则计数器20进行加法计数;当从RAM12中取出数据(读出)的时候(按照计数器18所寻址的方式),则计数器20进行减法计数。
图2以简化了的形式描述了FIFO存贮器电路110。电路110包括有FIFO控制电路111及FIFO存贮器112。FIFO存贮器112是有数据输入口113、数据输出口114、及地址端口116的一个随机存取存贮器(RAM)。
FIFO控制电路111如图2所描述的那样由相互连接起来的写入计数器117(例如,74F163型加法计数器)、读出计数器118(例如74F163型加法计数器)比较器126(74688型)、及比较器127组成。
通过时钟信号A(4,096MH2)按图示对计数器117及118进行同步。注意到所描述的计数器117及118是由共同的时钟A去进行同步的,但这些计数器也可以通过两个不同的时钟使其同步。然而,为易于控制起见,(例如,设定时间)最好将计数器117及118用两个来自共同时钟信号的相位差为180度的信号(例如A及A)进行同步。如图所示,写入计数器117有一个写入使启动输入端E,而读出计数器118有一个读出使启动输入端E。计数器118的输出的即低于最高有效位或溢出位MSB的部分通过总线112加到多路转换器119的输入口A及比较器127的输入口A上。计数器117的输出即低于最高有效位或溢出位MSB的部分通过总线123加到多路转换器119的输入口B及比较器127的输入口B。注意到,若寻址RAM112需要n位,则计数器117就是一个(n+1)位的计数器,并且计数器118也是一个(n+1)位的计数器。
根据多路转换器119控制端口121上的控制信号的选择,该多路转换器119的输出口C或者把来自输入口A的信号加到总线124上或者把来自输入口B的信号加到总线124上。
注意到,通过引线131把计数器117的最高有效位MSB加到比较器126的输入端IN1上,而通过引线132把计数器118的最高有效位MSB加到比较器126的输入端IN2上。比较器126有一个标记为=的输出端。如果比较器126的两个输入信号相同(即都是逻辑“0”,或都是逻辑“1”),则该比较器126的输出端=(即输出信号就是125)就是逻辑“1”。如果比较器126的两个输入信号不相同,则该比较器126的输出端=(即输出信号125)就是逻辑“0”。将输出信号125加给反相器128,该反相器的输出就是输出信号129。
如图2所示,分别把输出信号125及129加给“与”门133及134。“与”门133及134的另外的输入信号就是来自比较器127输出口137的输出信号136。当加到比较器127输入口A上的信号等于加到比较器127输入口B上的信号时,则该端口137上的输出信号136就是逻辑“1”;否则该输出信号136就是逻辑“0”。
假设FIFO存贮电路110的起始状态没有任何数据存贮在RAM112中,并且计数器117及118具有零输出,因而,在引线131及132上的信号是相同的(都是逻辑“0”),并且比较器126在输出端=上的输出(即信号125)是逻辑“1”。同样,分别加到比较器127的输入端A及B上在总线122及123上的信号是完全相同的,并且来自比较器127的输出信号136是一个逻辑“1”信号。
其结果,“与”门133的输出,即空状态指示,是一个逻辑“1”信号;“与”门134的输出,即满状态指示,是一个逻辑“0”信号。
假设要在RAM112中存贮数据,当把使启动信号(即逻辑“1”)加到计数器117的输入端E上时,将数据顺序地加到RAM112的输入口113。计数器117把通过总线123加给多路转换器119的计数值进行递增。加到多路转换器119的控制输入端121上去的控制信号使得该多路转换器119的输入口B与该多路转换器119的输出口C相连接起来,于是也与总线124相连接起来,而后再连接到RAM112的地址端口116上去。随后,把加到输入口113上的数据按照顺序定位单元存贮在RAM112里,并且由计数器117决定在RAM112中所存贮的地址。
随着计数器117对其计数值的递增,在总线123上的信号将不再等于总线122上的信号,因而比较器127的输出信号136变为一个逻辑“0”的信号。这就会使得“与”门133的输出变成为一个逻辑“0”信号,但“与”门134的输出仍保持在逻辑“0”信号上。注意到,比较器126的输出还没有发生变化。
假如当计数器117停止计数时,RAM112只填满了一部分(例如1K);而后计数器118被启动,开始从RAM112中读取数据。在计数器118的输出等于计数器117的内容之前,“与”门133及134的输出状态仍保持不变(即分别均为逻辑0)。在计数器118的输出等于计数器117的内容的这一时间点上,比较器127的输出信号136变为逻辑“1”,因而“与”门133的输出为逻辑“1”,而“与”门134的输出仍维持逻辑0。这就是指示RAM112处于空状态,因为已存入RAM112的每一数据(即在计数器117的控制下)又从R112中都读取出来了(即在计数器118的控制下)。
现在假如有更多的数据要存入RAM112。如上所述,当把使启动信号(即逻辑“1”)加到计数器117的输入端E上时,则将数据顺序加到RAM112的输入口113上去。计数器117把通过总线123加给多路转换器119的计数值进行递增。加到多路转换器119的控制输入端121上的控制信号使得该多路转换器119的输入口B与该多路转换器119的输出口C相连接起来,于是也与总线124相连接起来,然后再接到RAM112的地址端口116上。随后,将加到输入口113上的数据按照顺序定位单元存入RAM112,并且由计数器117决定在RAM112中的地址。
随着计数器117的数值的增加,总线123上的信号将不再等于总线122上的信号;因而,比较器127的输出信号136会变为逻辑“0”信号。因此,使得“与”门133的输出变成逻辑“0”信号,而“与”门134的输出仍维持在逻辑“0”信号上。这就是指示RAM112既不是处于空状态,也不是处于满状态。注意到,此时比较器126的输出还没有发生变化。
假如计数器117继续增加它的计数值,而且达到它的MSB(最高有效位)是逻辑“0”并且它其余的各位都是逻辑1的情况。换句话说,总线123对RAM112传送最高的可能地址(记住计数器117在其对RAM112寻址所要求的那些位之外,还有一个外加位;也就是说,如果寻址RAM112需要n位,那么计数器117则有n+1位)。在下一个时钟脉冲到来时,计数器117在它的最高有效位MSB上则变成逻辑“1”,而它其余的各位则都是逻辑“0”。
这就使得比较器127的输出信号136保持在逻辑0上(也就是说,该比较器的端口A及B上的输入信号不相等),而且比较器126的输出变成为逻辑“0”。这就是说,“与”门133的两个输入端都是逻辑“0”(当然,它的输出端上也就是逻辑0了),而“与”门134的两个输入端,一个是逻辑0,一个是逻辑1(当然,它的输出端上也是逻辑“0”了)。于是,“与”门133及134的输出继续指示该RAM112既不处于满状态,也不处于空状态。
随着计数器117的计数值继续增加,它就会达到它的在总线123上的输出等于在总线122上的计数器118的输出的情况。在这个时间点上,比较器127的输出信号变成为逻辑“1”。这就使得“与”门133的输出端保持在逻辑“0”上,而“与”门134的输出端变成为逻辑“1”(因为现在它的两个输入端都是逻辑1了),指示该RAM112现在处于满状态。
图3以简化形式描述根据本发明构成的FIFO存贮器电路210。电路210包括有FIFO控制电路211和FIFO存贮器212。FIFO存贮器212是具有数据输入口213、数据输出口214、及地址端口216的随机存取存贮器(RAM)。
FIFO控制电路211包括有如图3所示相互连接起来的写入计数器217(例如,加法计数器74F163型)、读出计数器218(例如,加法计数器74F163型)、多路转换器219(74F157型)、比较器241(74688型)、比较器248(74688型)、比较器251(74688型)、写入寄存器243以及读出寄存器244。
如图所示,由时钟A信号对计数器217及218进行同步。写入计数器217有写入使启动输入端E,读出计数器218有读出使启动输入端E。计数器218通过总线222把包括最高有效位或溢出位MSB的输出加到多路转换器219的输入口A、寄存器244及比较器241的输入口A(注意到多路转换器219或RAM212并不需要该MSB位)。包括最高有效位或溢出位MSB的计数器217输出通过总线223加到多路转换器219的输入口B、寄存器243及比较器242的输入口B(注意到多路转换器219或RAM212并不需要该MSB位)。
根据控制端口221上的控制信号的选择,多路转换器219的输出口C或者把来自输入口A的信号接到总线224上或者把来自输入口B的信号接到总线224上。
注意,由单过程(ingleevent)时钟脉冲B及单过程时钟脉冲C分别将寄存器243及244进行同步。单过程时钟脉冲B是这样地产生的当写入计数器217停止进行加法计数(即写入结束了),并且把计数器217最后达到的计数值存入写寄存器243去。单过程时钟脉冲C是这样产生的当读出计数器218停止进行加法计数(即读出结束了),并且再把计数器218最后达到的计数值存入读寄存器244。
注意图3中的FIFO存贮器电路210是以“信息”方式进行操作的。这是由于在分别完成写入或读出之前,不对存入寄存器243及244中的数值进行更新,所以在指示器上反映出状态变化(即满状态或空状态)之前,需要一些多值增量。换句话说,在出现状态变化之前,必须写入或读出全部的“信息”。
在图3的实施方案里,通过比较器242在写入计数器217与读寄存器244之间进行一种比较,从而指示其满状态;通过比较器241在读出计数器218与写寄存器243之间进行另一种比较,从而指示其空状态。
详细来说,将写寄存器243的内容加到比较器241的输入端B,同时将读出计数器218的输出加到该比较器241的输入端A。若比较器241两个输入端A和B上的信号相同(即相等),则该比较器241的输出信号246就是逻辑“1”信号;否则,该输出信号246就是逻辑“0”信号。
同样,如图3所示,将读寄存器244的内容加到比较器251和248的输入端A,同时把写入计数器217的输出加到比较器251和248的输入端B。注意,比较器248比较这两个最高有效位(MSB),而比较器251比较每个信号中的其余各位。
若比较器248输入端A和B上的信号是相等的,那么该比较器248的输出信号249就是逻辑“0”信号;否则该比较器248的输出信号249就是逻辑“1”信号。若比较器251输入端A和B上的信号是相等的,那么该比较器251“=”输出端上的输出信号252就是逻辑“1”信号否则就是逻辑“0”信号。
如图所示,将信号249和252加到“与”门253上;如图3所示,“与”门253的输出就是信号247(当然,它也是比较器242的输出)。
假设在FIFO存贮器电路210的起始状态没有任何数据存贮在RAM212之中,而且计数器217和218每一个均有零输出,寄存器243和244每一个的寄存内容均等于零。因而,比较器241输入端A和B上的信号是相同的(都是逻辑“0”信号),所以该比较器241的输出信号246是逻辑“1”信号(指示空状态)。同样,比较器248输入端A和B上的信号是相同的(都是逻辑“0”信号),而且比较器251输入A和B上的信号也是相同的(都是逻辑“0”信号);所以,比较器248的输出信号249是逻辑“0”信号,比较器251的输出信号252是逻辑“1”信号。其结果,比较器242的输出信号247是逻辑“0”信号(指示非满状态)。
假如要在RAM212中存贮数据,当把使启动信号(即逻辑“1”)加到计数器217的输入端E上时,则依次把数据加到RAM212的输入口213。计数器217把通过总线223加给多路转换器219的计数值进行递增。加到多路转换器219控制输入端221上的控制信号使该多路转换器219把其输入口B与其输出口C相连接起来,于是也就连接到总线224上,因此也就连接到RAM212的地址端口216上了。随后,把加到输入口213上的数据按照顺序定位单元存入RAM212,而且由计数器217决定存入该RAM212中的地址。
随着计数器217计数值的增加,比较器251输入端B上的信号将不再等于该比较器251输入端A上的信号。直到该计数值到达很高时(即直到其最高有效位成为逻辑“1”时)之前,比较器248的输出信号249保持逻辑“0”,而且比较器251的输出信号252成为逻辑“0”(因为,一旦计数器217开始计数,则比较器251输入端A和B上的信号就会是不相同的了)。其结果,“与”门253的两个输入端都是逻辑“0”信号,于是,输出信号247保持逻辑“0”,指示非满状态。
在出现这种情况的同时,计数器218仍处在零状态,而且寄存器243也仍处在零状态上。因而,加到比较器241输入端A和B上的信号不会发生变化,仍然是相等的(即均为零信号)。其结果,输出信号246仍是逻辑“1”信号,指示空状态。
假如,当计数器217停止计数时,RAM212仅仅填充了一部分(例如1K)。在这种时间点上,寄存器243通过单过程时钟脉冲B进行同步,并且把总线223上的信号(即计数器217所达到的计数值)存入寄存器243。当发生这种情况时,比较器241输入端A和B不再有相同的信号;于是该比较器241的输出信号246成为逻辑“0”信号,指示非空状态。比较器242的输出信号247仍保持不变地处于逻辑“0”,指示非满的状态。
现在假设计数器218被启动,从而开始从RAM212中读出数据。因为至比较器242的输入信号还没有发生变化,所以输出信号247就不会发生变化。在计数器218的输出等于锁存器243的内容之前,输出信号246维持不变(处于逻辑“0”上)。在计数器218的输出等于锁存器243的内容的时间点上,比较器241的两个输入信号相等,于是输出信号246就变成为逻辑“1”信号了,指示RAM212处于空状态。
在计数器218停止计数的时刻,寄存器244由单过程时钟脉冲C进行同步,并且把总线222上的信号(即计数值218达到的计数值)存入寄存器244。当出现这种情况时,比较器251的输入端A和B传送相同的信号,于是比较器242的输出信号247保持逻辑“0”,指示处于非满状态。
假设现在有比较多的数据要存入RAM212。如上所述,当把使启动信号(即逻辑“1”)加到计数器217的输入端E时,则将数据顺序加到RAM212的输入口213上,计数器217把通过总线223加给多路转换器219的计数值进行递增。加到多路转换器219控制输入端221上的控制信号使得多路转换器219的输入口B与该多路转换器219的输出口C相连接,于是也就与总线224相连接,而后再接到RAM212的地址端口216上。随后,把加到输入口213上的数据按照顺序定位单元存入RAM212,并且由计数器217决定存入该RAM中的地址。
随着计数器217计数值的增加,而加到比较器241上的信号还不变,所以输出信号246还是逻辑“1”,指示RAM212处于空状态。
随着计数器217计数值的增加,加到比较器251输入端B上的信号也是变化着的,而加到比较器251输入端A上的信号还保持不变(也就是寄存器244的内容),其结果,输出信号247就是逻辑“0”,指示非满状态了。
假如计数器217的计数值继续增加,并且达到它的MSB是逻辑“0”,而其余各位都是逻辑“1”的情况。换句话说,总线223对RAM212传送最高的可能地址(记住,在寻址RAM212所需要的各位之外,计数器217还有一个外加位,也就是说,寻址RAM212若需要n位,则计数器217有n+1位)。在下一个时钟脉冲到来时,计数器217在其最高有效位MSB上变成为逻辑“1”,而它其余各位都是逻辑“0”。
这就使得比较器248的输入端B和A分别是逻辑“1”和逻辑“0”。因而,比较器248的输出信号249是逻辑“1”信号。比较器251输入端B和信号各位均为逻辑“0”,而输入端A是二进制的1K。所以,该比较器251的输出信号252是逻辑“0”信号(因为输入信号不相等)。这就是说,“与”门253的输入信号一个是逻辑“1”,一个是逻辑“0”,其结果,输出信号247就是指示非满状态的逻辑“0”了。
随着计数器217计数值的继续增加,加到比较器251输入端B上的信号(即计数器217次于最高有效位的输出)最终将等于加到该比较器251输入端A上的信号(即锁存器244次于最高有效位的输出)。当发生这种情况时,该比较器251的输出信号252变成为逻辑“1”信号(因为输入信号相等)。比较器248的输出信号249就是仍是逻辑“1”信号,因此“与”门253的输出信号247就是指示RAM212处于满状态的逻辑“1”信号了。注意此时比较器241的输出信号246仍然是指示RAM212处于非空状态的逻辑“0”。
当信号247变成为逻辑“1”时,指示该RAM212处于满状态,则计数器217停止增加其计值。由单过程时钟脉冲B对寄存器243进行同步,其结果,将计数器217的内容存入寄存器243。这就使得比较器241的输入端B现在具有了新的值。除了最高有效位之外,比较器241输入端B上的值与输入端A上的值是完全相同的;在输入端B上的值,其最高有效位是逻辑“1”,而在输入端A上的值,其最高有效位是逻辑“0”。因而,比较器241的输入信号并不相等,于是输出信号246是指示非空状态的逻辑“0”。
由于此时RAM212处于满状态(信号246是逻辑“0”,而信号247是逻辑“1”),所以任何数据都不能再写入RAM212了,下一步只能是读出数据。
假设现在计数器218被启动,从而开始从RAM212中读出数据。因为比较器242的输入信号还没有来得及变化,所以输出信号247不会立即发生变化(也就是说,信号247仍然是指示处于满状态的逻辑“1”)。在计数器218的输出等于寄存器243的内容之前,输出信号246仍保持不变(处于逻辑“0”)。在计数器218的输出等于寄存器243的内容的时间点上,比较器241的两个输入信号是相等的,于是输出信号246就变成为指示RAM212处于空状态的逻辑“1”信号了。
此时(即当信号246成为逻辑“1”时),计数器218停止计数,并通过单过程时钟脉冲C对寄存器244进行同步,于是将总线222上的信号(即计数器218所达到的计数植)存入寄存器244。当发生这种情况时,比较器248及251的输入端A及B均传送相等的信号,于是输出信号247成为指示非满状态的逻辑“0”。
以图3这种实施方案的方式运行的电路具有面向信息的优点;因此,使得面向信息的数据传送相对来讲比较平滑。
图4的实施方案类似于图3所描述的实施方案;但是,在寄存器244与计数器218之间增加有总线261,并且在寄存器243与计数器217之间增加有总线262。
总线261及262在寄存器243及244与它们所相对应的计数器217及218之间,分别增加了反馈,使得对FIFO存贮器212的内容能够有更多的控制。
通过写寄存器243向写入计数器217的再次装入数据,可以擦除刚刚存入(写入)FIFO存贮器212的信息。出现这种结果是因为在单过程时钟脉冲B对寄存器243实行同步之前,该寄存器243寄存有计数器217开始的计数值,但并不存有该计数器217最后的计数值。所以,不对寄存器243提供单过程时钟脉冲信号B,该寄存器243就寄存有计数器217开始进行的计数值;而后就可以通过总线262把这个起始计数值插入计数器217。其结果,当计数器217再次开始进行计数时,该计数器217将在它的在先计数值的基础上开始进行计数,并且从现在开始存入FIFO存贮器212的数据将会冲掉在此之前已经存贮了的数据。
同样,通过读寄存器244向读出计数器218的再次装入数据,可以把刚刚从FIFO存贮器212中读出的信息保持住,用来进行再次读出。出现这种情况是因为中单过程时钟脉冲C对寄存器244实行同步之前,该寄存器244寄存有计数器218开始的计数值,但并不存有该计数器218最后的计数值。所以,不对寄存器244给出单过程时钟脉冲信号C,该寄存器244就寄存有计数器218开始进行的计数值;而后就可以通过总线261把这个起始计数值插入计数器218。其结果,当计数器218再次开始进行计数时,该计数器218将在它的在先计数值的基础上开始进行计数,并且从现在开始从FIFO存贮器212中读出(寻址)的数据将是在此之前已经从存贮器212中读出过的数据。
在一般的应用当中,当写入一个信息(通过写入计数器217)之后,写寄存器243就将用写入计数器217的内容来进行更新,于是“接收”该信息。如果写入该信息的控制器(未示出)检测到用一个完整性问题(例如,奇偶性)写寄存器243的内容来对写入计数器217进行再次装入数据的以写寄存器243内容来重新装入的写入计数器217则“拒绝”该信息。
在读出操作中,通常由读计数器218将读寄存器244进行更新,于是“清除”(purging)掉存入FIFO存贮器212中的信息。但是,如果接收控制器(未示出)指示出一个完整性问题(例如,奇偶性)时,它可以把读寄器244的内容再次装入计数器218,从而在存贮器212中“保持”该信息,用来再去重试(重新发送)。
在两个指示器(即空状态指示器或信号246;及满状态指示器或信号247)与计数器217及218之间还装有一些内装联锁器,防止当FIFO存贮器212处于满状态时对写入计数器217又进行增加计数,并从而防止把数据冲掉。事实上,在这种情况下,信息终止时将会产生把这部分信息自动排出的动作。如果FIFO存贮器212处于空状态的话,也防止读计数器218又进行增加计数,因而避免出现错误的满状态指示。为了使本发明的描述变得清楚起见,我们在附图中没有示出这些特征。
权利要求
1.一种向FIFO(先进先出)存贮装置(112)提供地址信息的FIFO存贮电路(110)的控制电路(111)包括有给出第一个二进制信号的第一装置(117);给出第二个二进制信号的第二装置(118);将上述第一个二进制信号的最高有效位(131)与上述第二个二进制信号的最高有效位(132)进行比较,并产生指示其比较结果的第一控制信号(125)的第一比较器装置(126);将上述第一个二进制信号的次于最高有效位的各位(123)与上述第二个二进制信号的次于最高有效位的各位(122)进行比较,并产生指示其比较结果的第二控制信号(136)的第二比较器装置(127),响应上述第一控制信号及上述第二控制信号,用来对上述存贮器电路是处于满状态还是非满状态给出指示信号的逻辑装置(128、133、134)。
2.根据权利要求1中的控制电路,其中上述第一装置是一个计数器装置,上述第二装置也是一个计数器装置。
3.根据权利要求2中的控制电路还包括有接收上述第一个二进制信号及上述第二个二进制信号,并且选择第一个二进制信号或者第二个二进制信号作为其输出信号的多路转换器(119);借此,利用该多路转换器输出的次于最高有效位信号去寻址上述FIFO存贮器装置。
4.根据权利要求1中的控制电路,其中上述第一装置是一个计数器装置,上述第二装置也是一个计数器装置。
5.一种FIFO(先进先出)存贮器电路(110)的控制电路(111)包括有给出第一信号的第一计数器装置(117);给出第二信号的第二计数器装置(118);接收上述第一信号及上述第二信号,并且选择上述第一信号或者上述第二信号作为其输出信号的多路转换器装置(119);将上述第一信号的最高有效位(131)与上述第二信号的最高有效位(132)进行比较,并且产生指示其比较结果的第一控制信号(125)的第一比较器装置(126);将上述第一信号的次于最高有效位的各位(123)与上述第二信号的次于最高有效位的各位(122)进行比较,并且产生指示其比较结果的第二控制信号(136)的第二比较器装置(127);以及响应上述第一控制信号及上述第二控制信号,用来产生指示上述存贮器电路处于空状态或非空状态的第一指示信号以及指示上述存贮器电路处于满状态或非满状态的第二指示信号的逻辑装置(128、133、134)。
6.根据权利要求5中的控制电路,其中上述逻辑电路包括有一个反相器装置及两个“与”门装置。
全文摘要
向FIFO(先进先出)存贮器(112)提供地址信息的FIFO控制电路(111)采用二个加法计数器(117、118)。一个计数器给出写地址,另一个计数器给出读地址;还采用了选择地址(读或写)用的多路转换器(119)。另外,与简单的逻辑电路相配合,两个比较器(126、127)给出两个状态输出信号,即满状态(或非满状态)及空状态(或非空状态)。
文档编号G06F5/10GK1035381SQ88108438
公开日1989年9月6日 申请日期1988年10月14日 优先权日1987年10月14日
发明者尤塞夫·艾尔弗雷德·吉达, 马丁·克洛德·勒费弗尔 申请人:北方电信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1