專利名稱:先進(jìn)先出(fifo)緩沖控制器的制作方法
一般來講,本發(fā)明涉及FIFO(先進(jìn)先出)存貯器;更具體來講本發(fā)明涉及對(duì)FIFO存貯器的一種控制電路。
FIFO存貯器是眾所周知的。一種類型的FIFO存貯器是由連接有控制電路的隨機(jī)存取存貯器(RAM)所組成的。該控制電路用來控制向RAM的數(shù)據(jù)寫入以及從RAM中的數(shù)據(jù)讀出。
像這樣的FIFO系統(tǒng),例如已由如下美國(guó)專利所揭示Helen等人1986年10月7日的美國(guó)專利US4,616,338;Huang等人1986年3月27日的美國(guó)專利US4,592,019;Torii等人1984年2月21日的美國(guó)專利US4,433,394;Suzuki等人1979年7月31日的美國(guó)專利US4,163,291;及Gray等人1971年8月24日的美國(guó)專利US3,601,809。
以上這些已有的FIFO存貯器的一個(gè)缺點(diǎn)是它們所使用的可逆計(jì)數(shù)器相對(duì)來說大而復(fù)雜。
本發(fā)明與現(xiàn)有技術(shù)的區(qū)別在于所使用的兩個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器都還使用了一個(gè)附加位,當(dāng)與適當(dāng)?shù)倪壿嬰娐废嗯浜线\(yùn)用時(shí),可對(duì)該FIFO存貯器產(chǎn)生出狀態(tài)(或控制)信號(hào);也就是滿狀態(tài)信號(hào)或空狀態(tài)信號(hào)。本發(fā)明并不采用可逆計(jì)數(shù)器,因而也隨之得到很大簡(jiǎn)化。
換句話說,本發(fā)明是用于向FIFO存貯器提供地址信息的FIFO(先進(jìn)先出)存貯器電路的一種控制電路;該控制電路包括有給出第一個(gè)二進(jìn)制信號(hào)的第一裝置;給出第二個(gè)二進(jìn)制信號(hào)的第二裝置;用來將第一個(gè)二進(jìn)制信號(hào)的最高有效位與第二個(gè)二進(jìn)制信號(hào)的最高有效位進(jìn)行比較并產(chǎn)生出指示其比較結(jié)果的第一控制信號(hào)的第一比較器;用來將第一個(gè)二進(jìn)制信號(hào)的次于最高有效位的各位與其第二個(gè)二進(jìn)制信號(hào)的次于最高有效位的各位進(jìn)行比較并產(chǎn)生出指示其比較結(jié)果的第二控制信號(hào)的第二比較器;響應(yīng)于該第一控制信號(hào)及第二控制信號(hào),用來對(duì)存貯器電路究竟是處于滿狀態(tài)還是非滿狀態(tài)產(chǎn)生出指示信號(hào)的邏輯電路裝置。
換句話說,本發(fā)明是用于FIFO(先進(jìn)先出)存貯器電路的一種控制電路;該控制電路包括有給出第一信號(hào)的第一計(jì)數(shù)器;
給出第二信號(hào)的第二計(jì)數(shù)器;
用來對(duì)第一信號(hào)及第二信號(hào)進(jìn)行接收并且選擇第一信號(hào)或者選擇第二信號(hào)作為其輸出信號(hào)的多路轉(zhuǎn)換器;
用來將第一信號(hào)的最高有效位與第二信號(hào)的最高有效位進(jìn)行比較并產(chǎn)生出指示其比較結(jié)果的第一控制信號(hào)的第一比較器;
用來將第一信號(hào)的次于最高有效位的各位與第二信號(hào)的次于最高有效位的各位進(jìn)行比較并產(chǎn)生出指示其比較結(jié)果的第二控制信號(hào)的第二比較器;以及響應(yīng)于該第一控制信號(hào)及第二控制信號(hào),用來對(duì)存貯器電路是否處于空狀態(tài)或非空狀態(tài)給出指示而產(chǎn)生出第一指示信號(hào)以及對(duì)存貯器電路是否處于滿狀態(tài)給出指示而產(chǎn)生出第二指示信號(hào)的邏輯裝置。
以下,結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述。其中在各附圖里,凡是相同的部件均采用相同的數(shù)字、符號(hào)表示。
圖1是現(xiàn)有技術(shù)中FIFO存貯器簡(jiǎn)化了的方框圖;
圖2是為利于理解本發(fā)明運(yùn)行操作簡(jiǎn)化了的FIFO存貯器方框圖;
圖3是根據(jù)本發(fā)明構(gòu)成的FIFO存貯器的一個(gè)實(shí)施方案簡(jiǎn)化了的方框圖;
圖4是根據(jù)本發(fā)明構(gòu)成的FIFO存貯器的最佳實(shí)施方案簡(jiǎn)化了的方框圖。
圖1以簡(jiǎn)化了的形式描述了根據(jù)公知技術(shù)所構(gòu)成的一個(gè)FIFO存貯器電路10。電路10包括有FIFO控制電路11及FIFO存貯器12。FIFO存貯器12是有數(shù)據(jù)輸入口13、數(shù)據(jù)輸出口14及地址端口16的隨機(jī)存取存貯器(RAM)。
FIFO控制電路11包括有如圖1所示相互連接起來的加法計(jì)數(shù)器17、加法計(jì)數(shù)器18、多路轉(zhuǎn)換器19以及可逆計(jì)數(shù)器20。計(jì)數(shù)器17及18如圖所示用時(shí)鐘信號(hào)A進(jìn)行同步。如圖所示,加法計(jì)數(shù)器17有寫入使啟動(dòng)輸入端E,而加法計(jì)數(shù)器18有讀出使啟動(dòng)輸入端E。總線22將計(jì)數(shù)器18的輸出信號(hào)加給多路轉(zhuǎn)換器19的輸入口A;總線23將計(jì)數(shù)器17的輸出信號(hào)加給多路轉(zhuǎn)換器19的輸入口B。根據(jù)在控制端口21上的控制信號(hào)的選擇,在多路轉(zhuǎn)換器19的輸出口C上,或者把來自輸入口A的信號(hào)、或者把來自輸入口B的信號(hào)傳送給總線24。在此,加法計(jì)數(shù)器17是74F163型、加法計(jì)數(shù)器18是74F163型、多路轉(zhuǎn)換器19是74F157型、而可逆計(jì)數(shù)器20是74F199型。
假設(shè),在FIFO存貯器電路10的起始狀態(tài),沒有任何數(shù)據(jù)存貯在RAM12之中,因而計(jì)數(shù)器17及18的輸出為零,而且計(jì)數(shù)器20在其輸出端O上指示RAM12處于空狀態(tài)(也就是輸出端O是零)。假如要將數(shù)據(jù)存入RAM12,當(dāng)把使啟動(dòng)信號(hào)(即,邏輯1)加到計(jì)數(shù)器17的輸入端時(shí),順序地把數(shù)據(jù)送到了RAM12的輸入口13。計(jì)數(shù)器17將其經(jīng)過總線23加給多路轉(zhuǎn)換器19的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器19的控制輸入端21上的控制信號(hào)使多路轉(zhuǎn)換器19的輸入口B連接到多路轉(zhuǎn)換器19的輸出口C上,于是也就連接到總線24,而后接到RAM12的地址端口16上。隨后,把加到輸入口13上的數(shù)據(jù)按照順序定位單元而存入RAM12,并且由計(jì)數(shù)器17決定存入各單元的地址。
假設(shè)現(xiàn)在把所有要存貯的數(shù)據(jù)都存入RAM12,然后現(xiàn)在我們想要再取回所有這些數(shù)據(jù)或某些數(shù)據(jù)(即從RAM12中讀出數(shù)據(jù)),那么則把讀使啟動(dòng)信號(hào)(即邏輯1)加到加法計(jì)數(shù)器18的E輸入端上。計(jì)數(shù)器18把經(jīng)過總線22加給多路轉(zhuǎn)換器19的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器19的控制輸入端21上的控制信號(hào)則使得多路轉(zhuǎn)換器19的輸入口A與多路轉(zhuǎn)換器19的輸出口C相連接起來,于是也就與總線24相連接起來,而后接到RAM12的地址端16上。隨后,把相繼的這些地址加到RAM12上,并且依次把這些地址定位單元中所存貯的數(shù)據(jù)加到RAM12的數(shù)據(jù)輸出口14上。
利用可逆計(jì)數(shù)器20保持對(duì)RAM12的狀態(tài)跟蹤,也就是說,RAM處于滿狀態(tài)、空狀態(tài)、或在某些情況下處于這兩種狀態(tài)之間的一種狀態(tài)。把來自計(jì)數(shù)器17輸入端E上的寫入使啟動(dòng)信號(hào)加到計(jì)數(shù)器20的加法計(jì)數(shù)輸入端U上(在此所加給的信號(hào)使得計(jì)數(shù)器20對(duì)它的計(jì)數(shù)值進(jìn)行遞增,即加法計(jì)數(shù))。把來自計(jì)數(shù)器18輸入端E上的讀出使啟動(dòng)信號(hào)加到計(jì)數(shù)器20的減法計(jì)數(shù)輸入端D上(在此所加給的信號(hào)使得計(jì)數(shù)器20對(duì)它的計(jì)數(shù)值進(jìn)行遞減,即減法計(jì)數(shù))。計(jì)數(shù)器20的輸出端O傳送出指示RAM12狀態(tài)的一個(gè)計(jì)數(shù)值(即數(shù)字)。換句話說,對(duì)比例來說,若RAM12處于空狀態(tài),則輸出端O是零數(shù)字;若RAM12處于滿狀態(tài),則輸出端O是FFF數(shù)字(十六進(jìn)制數(shù));任何處于O與FFF(十六進(jìn)制)之間的數(shù)字,則指示RAM12滿狀態(tài)的程度如何。該數(shù)字值越大,則RAM12越是處于比較滿的狀態(tài)上。
這正是由于當(dāng)RAM12處于空狀態(tài)時(shí),則計(jì)數(shù)器20也正是自零開始進(jìn)行計(jì)數(shù)所致。當(dāng)把數(shù)據(jù)存入RAM12的時(shí)候(按照計(jì)數(shù)器17所尋址的方式),則計(jì)數(shù)器20進(jìn)行加法計(jì)數(shù);當(dāng)從RAM12中取出數(shù)據(jù)(讀出)的時(shí)候(按照計(jì)數(shù)器18所尋址的方式),則計(jì)數(shù)器20進(jìn)行減法計(jì)數(shù)。
圖2以簡(jiǎn)化了的形式描述了FIFO存貯器電路110。電路110包括有FIFO控制電路111及FIFO存貯器112。FIFO存貯器112是有數(shù)據(jù)輸入口113、數(shù)據(jù)輸出口114、及地址端口116的一個(gè)隨機(jī)存取存貯器(RAM)。
FIFO控制電路111如圖2所描述的那樣由相互連接起來的寫入計(jì)數(shù)器117(例如,74F163型加法計(jì)數(shù)器)、讀出計(jì)數(shù)器118(例如74F163型加法計(jì)數(shù)器)比較器126(74688型)、及比較器127組成。
通過時(shí)鐘信號(hào)A(4,096MH2)按圖示對(duì)計(jì)數(shù)器117及118進(jìn)行同步。注意到所描述的計(jì)數(shù)器117及118是由共同的時(shí)鐘A去進(jìn)行同步的,但這些計(jì)數(shù)器也可以通過兩個(gè)不同的時(shí)鐘使其同步。然而,為易于控制起見,(例如,設(shè)定時(shí)間)最好將計(jì)數(shù)器117及118用兩個(gè)來自共同時(shí)鐘信號(hào)的相位差為180度的信號(hào)(例如A及A)進(jìn)行同步。如圖所示,寫入計(jì)數(shù)器117有一個(gè)寫入使啟動(dòng)輸入端E,而讀出計(jì)數(shù)器118有一個(gè)讀出使啟動(dòng)輸入端E。計(jì)數(shù)器118的輸出的即低于最高有效位或溢出位MSB的部分通過總線112加到多路轉(zhuǎn)換器119的輸入口A及比較器127的輸入口A上。計(jì)數(shù)器117的輸出即低于最高有效位或溢出位MSB的部分通過總線123加到多路轉(zhuǎn)換器119的輸入口B及比較器127的輸入口B。注意到,若尋址RAM112需要n位,則計(jì)數(shù)器117就是一個(gè)(n+1)位的計(jì)數(shù)器,并且計(jì)數(shù)器118也是一個(gè)(n+1)位的計(jì)數(shù)器。
根據(jù)多路轉(zhuǎn)換器119控制端口121上的控制信號(hào)的選擇,該多路轉(zhuǎn)換器119的輸出口C或者把來自輸入口A的信號(hào)加到總線124上或者把來自輸入口B的信號(hào)加到總線124上。
注意到,通過引線131把計(jì)數(shù)器117的最高有效位MSB加到比較器126的輸入端IN1上,而通過引線132把計(jì)數(shù)器118的最高有效位MSB加到比較器126的輸入端IN2上。比較器126有一個(gè)標(biāo)記為=的輸出端。如果比較器126的兩個(gè)輸入信號(hào)相同(即都是邏輯“0”,或都是邏輯“1”),則該比較器126的輸出端=(即輸出信號(hào)就是125)就是邏輯“1”。如果比較器126的兩個(gè)輸入信號(hào)不相同,則該比較器126的輸出端=(即輸出信號(hào)125)就是邏輯“0”。將輸出信號(hào)125加給反相器128,該反相器的輸出就是輸出信號(hào)129。
如圖2所示,分別把輸出信號(hào)125及129加給“與”門133及134?!芭c”門133及134的另外的輸入信號(hào)就是來自比較器127輸出口137的輸出信號(hào)136。當(dāng)加到比較器127輸入口A上的信號(hào)等于加到比較器127輸入口B上的信號(hào)時(shí),則該端口137上的輸出信號(hào)136就是邏輯“1”;否則該輸出信號(hào)136就是邏輯“0”。
假設(shè)FIFO存貯電路110的起始狀態(tài)沒有任何數(shù)據(jù)存貯在RAM112中,并且計(jì)數(shù)器117及118具有零輸出,因而,在引線131及132上的信號(hào)是相同的(都是邏輯“0”),并且比較器126在輸出端=上的輸出(即信號(hào)125)是邏輯“1”。同樣,分別加到比較器127的輸入端A及B上在總線122及123上的信號(hào)是完全相同的,并且來自比較器127的輸出信號(hào)136是一個(gè)邏輯“1”信號(hào)。
其結(jié)果,“與”門133的輸出,即空狀態(tài)指示,是一個(gè)邏輯“1”信號(hào);“與”門134的輸出,即滿狀態(tài)指示,是一個(gè)邏輯“0”信號(hào)。
假設(shè)要在RAM112中存貯數(shù)據(jù),當(dāng)把使啟動(dòng)信號(hào)(即邏輯“1”)加到計(jì)數(shù)器117的輸入端E上時(shí),將數(shù)據(jù)順序地加到RAM112的輸入口113。計(jì)數(shù)器117把通過總線123加給多路轉(zhuǎn)換器119的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器119的控制輸入端121上去的控制信號(hào)使得該多路轉(zhuǎn)換器119的輸入口B與該多路轉(zhuǎn)換器119的輸出口C相連接起來,于是也與總線124相連接起來,而后再連接到RAM112的地址端口116上去。隨后,把加到輸入口113上的數(shù)據(jù)按照順序定位單元存貯在RAM112里,并且由計(jì)數(shù)器117決定在RAM112中所存貯的地址。
隨著計(jì)數(shù)器117對(duì)其計(jì)數(shù)值的遞增,在總線123上的信號(hào)將不再等于總線122上的信號(hào),因而比較器127的輸出信號(hào)136變?yōu)橐粋€(gè)邏輯“0”的信號(hào)。這就會(huì)使得“與”門133的輸出變成為一個(gè)邏輯“0”信號(hào),但“與”門134的輸出仍保持在邏輯“0”信號(hào)上。注意到,比較器126的輸出還沒有發(fā)生變化。
假如當(dāng)計(jì)數(shù)器117停止計(jì)數(shù)時(shí),RAM112只填滿了一部分(例如1K);而后計(jì)數(shù)器118被啟動(dòng),開始從RAM112中讀取數(shù)據(jù)。在計(jì)數(shù)器118的輸出等于計(jì)數(shù)器117的內(nèi)容之前,“與”門133及134的輸出狀態(tài)仍保持不變(即分別均為邏輯0)。在計(jì)數(shù)器118的輸出等于計(jì)數(shù)器117的內(nèi)容的這一時(shí)間點(diǎn)上,比較器127的輸出信號(hào)136變?yōu)檫壿嫛?”,因而“與”門133的輸出為邏輯“1”,而“與”門134的輸出仍維持邏輯0。這就是指示RAM112處于空狀態(tài),因?yàn)橐汛嫒隦AM112的每一數(shù)據(jù)(即在計(jì)數(shù)器117的控制下)又從R112中都讀取出來了(即在計(jì)數(shù)器118的控制下)。
現(xiàn)在假如有更多的數(shù)據(jù)要存入RAM112。如上所述,當(dāng)把使啟動(dòng)信號(hào)(即邏輯“1”)加到計(jì)數(shù)器117的輸入端E上時(shí),則將數(shù)據(jù)順序加到RAM112的輸入口113上去。計(jì)數(shù)器117把通過總線123加給多路轉(zhuǎn)換器119的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器119的控制輸入端121上的控制信號(hào)使得該多路轉(zhuǎn)換器119的輸入口B與該多路轉(zhuǎn)換器119的輸出口C相連接起來,于是也與總線124相連接起來,然后再接到RAM112的地址端口116上。隨后,將加到輸入口113上的數(shù)據(jù)按照順序定位單元存入RAM112,并且由計(jì)數(shù)器117決定在RAM112中的地址。
隨著計(jì)數(shù)器117的數(shù)值的增加,總線123上的信號(hào)將不再等于總線122上的信號(hào);因而,比較器127的輸出信號(hào)136會(huì)變?yōu)檫壿嫛?”信號(hào)。因此,使得“與”門133的輸出變成邏輯“0”信號(hào),而“與”門134的輸出仍維持在邏輯“0”信號(hào)上。這就是指示RAM112既不是處于空狀態(tài),也不是處于滿狀態(tài)。注意到,此時(shí)比較器126的輸出還沒有發(fā)生變化。
假如計(jì)數(shù)器117繼續(xù)增加它的計(jì)數(shù)值,而且達(dá)到它的MSB(最高有效位)是邏輯“0”并且它其余的各位都是邏輯1的情況。換句話說,總線123對(duì)RAM112傳送最高的可能地址(記住計(jì)數(shù)器117在其對(duì)RAM112尋址所要求的那些位之外,還有一個(gè)外加位;也就是說,如果尋址RAM112需要n位,那么計(jì)數(shù)器117則有n+1位)。在下一個(gè)時(shí)鐘脈沖到來時(shí),計(jì)數(shù)器117在它的最高有效位MSB上則變成邏輯“1”,而它其余的各位則都是邏輯“0”。
這就使得比較器127的輸出信號(hào)136保持在邏輯0上(也就是說,該比較器的端口A及B上的輸入信號(hào)不相等),而且比較器126的輸出變成為邏輯“0”。這就是說,“與”門133的兩個(gè)輸入端都是邏輯“0”(當(dāng)然,它的輸出端上也就是邏輯0了),而“與”門134的兩個(gè)輸入端,一個(gè)是邏輯0,一個(gè)是邏輯1(當(dāng)然,它的輸出端上也是邏輯“0”了)。于是,“與”門133及134的輸出繼續(xù)指示該RAM112既不處于滿狀態(tài),也不處于空狀態(tài)。
隨著計(jì)數(shù)器117的計(jì)數(shù)值繼續(xù)增加,它就會(huì)達(dá)到它的在總線123上的輸出等于在總線122上的計(jì)數(shù)器118的輸出的情況。在這個(gè)時(shí)間點(diǎn)上,比較器127的輸出信號(hào)變成為邏輯“1”。這就使得“與”門133的輸出端保持在邏輯“0”上,而“與”門134的輸出端變成為邏輯“1”(因?yàn)楝F(xiàn)在它的兩個(gè)輸入端都是邏輯1了),指示該RAM112現(xiàn)在處于滿狀態(tài)。
圖3以簡(jiǎn)化形式描述根據(jù)本發(fā)明構(gòu)成的FIFO存貯器電路210。電路210包括有FIFO控制電路211和FIFO存貯器212。FIFO存貯器212是具有數(shù)據(jù)輸入口213、數(shù)據(jù)輸出口214、及地址端口216的隨機(jī)存取存貯器(RAM)。
FIFO控制電路211包括有如圖3所示相互連接起來的寫入計(jì)數(shù)器217(例如,加法計(jì)數(shù)器74F163型)、讀出計(jì)數(shù)器218(例如,加法計(jì)數(shù)器74F163型)、多路轉(zhuǎn)換器219(74F157型)、比較器241(74688型)、比較器248(74688型)、比較器251(74688型)、寫入寄存器243以及讀出寄存器244。
如圖所示,由時(shí)鐘A信號(hào)對(duì)計(jì)數(shù)器217及218進(jìn)行同步。寫入計(jì)數(shù)器217有寫入使啟動(dòng)輸入端E,讀出計(jì)數(shù)器218有讀出使啟動(dòng)輸入端E。計(jì)數(shù)器218通過總線222把包括最高有效位或溢出位MSB的輸出加到多路轉(zhuǎn)換器219的輸入口A、寄存器244及比較器241的輸入口A(注意到多路轉(zhuǎn)換器219或RAM212并不需要該MSB位)。包括最高有效位或溢出位MSB的計(jì)數(shù)器217輸出通過總線223加到多路轉(zhuǎn)換器219的輸入口B、寄存器243及比較器242的輸入口B(注意到多路轉(zhuǎn)換器219或RAM212并不需要該MSB位)。
根據(jù)控制端口221上的控制信號(hào)的選擇,多路轉(zhuǎn)換器219的輸出口C或者把來自輸入口A的信號(hào)接到總線224上或者把來自輸入口B的信號(hào)接到總線224上。
注意,由單過程(ingleevent)時(shí)鐘脈沖B及單過程時(shí)鐘脈沖C分別將寄存器243及244進(jìn)行同步。單過程時(shí)鐘脈沖B是這樣地產(chǎn)生的當(dāng)寫入計(jì)數(shù)器217停止進(jìn)行加法計(jì)數(shù)(即寫入結(jié)束了),并且把計(jì)數(shù)器217最后達(dá)到的計(jì)數(shù)值存入寫寄存器243去。單過程時(shí)鐘脈沖C是這樣產(chǎn)生的當(dāng)讀出計(jì)數(shù)器218停止進(jìn)行加法計(jì)數(shù)(即讀出結(jié)束了),并且再把計(jì)數(shù)器218最后達(dá)到的計(jì)數(shù)值存入讀寄存器244。
注意圖3中的FIFO存貯器電路210是以“信息”方式進(jìn)行操作的。這是由于在分別完成寫入或讀出之前,不對(duì)存入寄存器243及244中的數(shù)值進(jìn)行更新,所以在指示器上反映出狀態(tài)變化(即滿狀態(tài)或空狀態(tài))之前,需要一些多值增量。換句話說,在出現(xiàn)狀態(tài)變化之前,必須寫入或讀出全部的“信息”。
在圖3的實(shí)施方案里,通過比較器242在寫入計(jì)數(shù)器217與讀寄存器244之間進(jìn)行一種比較,從而指示其滿狀態(tài);通過比較器241在讀出計(jì)數(shù)器218與寫寄存器243之間進(jìn)行另一種比較,從而指示其空狀態(tài)。
詳細(xì)來說,將寫寄存器243的內(nèi)容加到比較器241的輸入端B,同時(shí)將讀出計(jì)數(shù)器218的輸出加到該比較器241的輸入端A。若比較器241兩個(gè)輸入端A和B上的信號(hào)相同(即相等),則該比較器241的輸出信號(hào)246就是邏輯“1”信號(hào);否則,該輸出信號(hào)246就是邏輯“0”信號(hào)。
同樣,如圖3所示,將讀寄存器244的內(nèi)容加到比較器251和248的輸入端A,同時(shí)把寫入計(jì)數(shù)器217的輸出加到比較器251和248的輸入端B。注意,比較器248比較這兩個(gè)最高有效位(MSB),而比較器251比較每個(gè)信號(hào)中的其余各位。
若比較器248輸入端A和B上的信號(hào)是相等的,那么該比較器248的輸出信號(hào)249就是邏輯“0”信號(hào);否則該比較器248的輸出信號(hào)249就是邏輯“1”信號(hào)。若比較器251輸入端A和B上的信號(hào)是相等的,那么該比較器251“=”輸出端上的輸出信號(hào)252就是邏輯“1”信號(hào)否則就是邏輯“0”信號(hào)。
如圖所示,將信號(hào)249和252加到“與”門253上;如圖3所示,“與”門253的輸出就是信號(hào)247(當(dāng)然,它也是比較器242的輸出)。
假設(shè)在FIFO存貯器電路210的起始狀態(tài)沒有任何數(shù)據(jù)存貯在RAM212之中,而且計(jì)數(shù)器217和218每一個(gè)均有零輸出,寄存器243和244每一個(gè)的寄存內(nèi)容均等于零。因而,比較器241輸入端A和B上的信號(hào)是相同的(都是邏輯“0”信號(hào)),所以該比較器241的輸出信號(hào)246是邏輯“1”信號(hào)(指示空狀態(tài))。同樣,比較器248輸入端A和B上的信號(hào)是相同的(都是邏輯“0”信號(hào)),而且比較器251輸入A和B上的信號(hào)也是相同的(都是邏輯“0”信號(hào));所以,比較器248的輸出信號(hào)249是邏輯“0”信號(hào),比較器251的輸出信號(hào)252是邏輯“1”信號(hào)。其結(jié)果,比較器242的輸出信號(hào)247是邏輯“0”信號(hào)(指示非滿狀態(tài))。
假如要在RAM212中存貯數(shù)據(jù),當(dāng)把使啟動(dòng)信號(hào)(即邏輯“1”)加到計(jì)數(shù)器217的輸入端E上時(shí),則依次把數(shù)據(jù)加到RAM212的輸入口213。計(jì)數(shù)器217把通過總線223加給多路轉(zhuǎn)換器219的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器219控制輸入端221上的控制信號(hào)使該多路轉(zhuǎn)換器219把其輸入口B與其輸出口C相連接起來,于是也就連接到總線224上,因此也就連接到RAM212的地址端口216上了。隨后,把加到輸入口213上的數(shù)據(jù)按照順序定位單元存入RAM212,而且由計(jì)數(shù)器217決定存入該RAM212中的地址。
隨著計(jì)數(shù)器217計(jì)數(shù)值的增加,比較器251輸入端B上的信號(hào)將不再等于該比較器251輸入端A上的信號(hào)。直到該計(jì)數(shù)值到達(dá)很高時(shí)(即直到其最高有效位成為邏輯“1”時(shí))之前,比較器248的輸出信號(hào)249保持邏輯“0”,而且比較器251的輸出信號(hào)252成為邏輯“0”(因?yàn)?,一旦?jì)數(shù)器217開始計(jì)數(shù),則比較器251輸入端A和B上的信號(hào)就會(huì)是不相同的了)。其結(jié)果,“與”門253的兩個(gè)輸入端都是邏輯“0”信號(hào),于是,輸出信號(hào)247保持邏輯“0”,指示非滿狀態(tài)。
在出現(xiàn)這種情況的同時(shí),計(jì)數(shù)器218仍處在零狀態(tài),而且寄存器243也仍處在零狀態(tài)上。因而,加到比較器241輸入端A和B上的信號(hào)不會(huì)發(fā)生變化,仍然是相等的(即均為零信號(hào))。其結(jié)果,輸出信號(hào)246仍是邏輯“1”信號(hào),指示空狀態(tài)。
假如,當(dāng)計(jì)數(shù)器217停止計(jì)數(shù)時(shí),RAM212僅僅填充了一部分(例如1K)。在這種時(shí)間點(diǎn)上,寄存器243通過單過程時(shí)鐘脈沖B進(jìn)行同步,并且把總線223上的信號(hào)(即計(jì)數(shù)器217所達(dá)到的計(jì)數(shù)值)存入寄存器243。當(dāng)發(fā)生這種情況時(shí),比較器241輸入端A和B不再有相同的信號(hào);于是該比較器241的輸出信號(hào)246成為邏輯“0”信號(hào),指示非空狀態(tài)。比較器242的輸出信號(hào)247仍保持不變地處于邏輯“0”,指示非滿的狀態(tài)。
現(xiàn)在假設(shè)計(jì)數(shù)器218被啟動(dòng),從而開始從RAM212中讀出數(shù)據(jù)。因?yàn)橹帘容^器242的輸入信號(hào)還沒有發(fā)生變化,所以輸出信號(hào)247就不會(huì)發(fā)生變化。在計(jì)數(shù)器218的輸出等于鎖存器243的內(nèi)容之前,輸出信號(hào)246維持不變(處于邏輯“0”上)。在計(jì)數(shù)器218的輸出等于鎖存器243的內(nèi)容的時(shí)間點(diǎn)上,比較器241的兩個(gè)輸入信號(hào)相等,于是輸出信號(hào)246就變成為邏輯“1”信號(hào)了,指示RAM212處于空狀態(tài)。
在計(jì)數(shù)器218停止計(jì)數(shù)的時(shí)刻,寄存器244由單過程時(shí)鐘脈沖C進(jìn)行同步,并且把總線222上的信號(hào)(即計(jì)數(shù)值218達(dá)到的計(jì)數(shù)值)存入寄存器244。當(dāng)出現(xiàn)這種情況時(shí),比較器251的輸入端A和B傳送相同的信號(hào),于是比較器242的輸出信號(hào)247保持邏輯“0”,指示處于非滿狀態(tài)。
假設(shè)現(xiàn)在有比較多的數(shù)據(jù)要存入RAM212。如上所述,當(dāng)把使啟動(dòng)信號(hào)(即邏輯“1”)加到計(jì)數(shù)器217的輸入端E時(shí),則將數(shù)據(jù)順序加到RAM212的輸入口213上,計(jì)數(shù)器217把通過總線223加給多路轉(zhuǎn)換器219的計(jì)數(shù)值進(jìn)行遞增。加到多路轉(zhuǎn)換器219控制輸入端221上的控制信號(hào)使得多路轉(zhuǎn)換器219的輸入口B與該多路轉(zhuǎn)換器219的輸出口C相連接,于是也就與總線224相連接,而后再接到RAM212的地址端口216上。隨后,把加到輸入口213上的數(shù)據(jù)按照順序定位單元存入RAM212,并且由計(jì)數(shù)器217決定存入該RAM中的地址。
隨著計(jì)數(shù)器217計(jì)數(shù)值的增加,而加到比較器241上的信號(hào)還不變,所以輸出信號(hào)246還是邏輯“1”,指示RAM212處于空狀態(tài)。
隨著計(jì)數(shù)器217計(jì)數(shù)值的增加,加到比較器251輸入端B上的信號(hào)也是變化著的,而加到比較器251輸入端A上的信號(hào)還保持不變(也就是寄存器244的內(nèi)容),其結(jié)果,輸出信號(hào)247就是邏輯“0”,指示非滿狀態(tài)了。
假如計(jì)數(shù)器217的計(jì)數(shù)值繼續(xù)增加,并且達(dá)到它的MSB是邏輯“0”,而其余各位都是邏輯“1”的情況。換句話說,總線223對(duì)RAM212傳送最高的可能地址(記住,在尋址RAM212所需要的各位之外,計(jì)數(shù)器217還有一個(gè)外加位,也就是說,尋址RAM212若需要n位,則計(jì)數(shù)器217有n+1位)。在下一個(gè)時(shí)鐘脈沖到來時(shí),計(jì)數(shù)器217在其最高有效位MSB上變成為邏輯“1”,而它其余各位都是邏輯“0”。
這就使得比較器248的輸入端B和A分別是邏輯“1”和邏輯“0”。因而,比較器248的輸出信號(hào)249是邏輯“1”信號(hào)。比較器251輸入端B和信號(hào)各位均為邏輯“0”,而輸入端A是二進(jìn)制的1K。所以,該比較器251的輸出信號(hào)252是邏輯“0”信號(hào)(因?yàn)檩斎胄盘?hào)不相等)。這就是說,“與”門253的輸入信號(hào)一個(gè)是邏輯“1”,一個(gè)是邏輯“0”,其結(jié)果,輸出信號(hào)247就是指示非滿狀態(tài)的邏輯“0”了。
隨著計(jì)數(shù)器217計(jì)數(shù)值的繼續(xù)增加,加到比較器251輸入端B上的信號(hào)(即計(jì)數(shù)器217次于最高有效位的輸出)最終將等于加到該比較器251輸入端A上的信號(hào)(即鎖存器244次于最高有效位的輸出)。當(dāng)發(fā)生這種情況時(shí),該比較器251的輸出信號(hào)252變成為邏輯“1”信號(hào)(因?yàn)檩斎胄盘?hào)相等)。比較器248的輸出信號(hào)249就是仍是邏輯“1”信號(hào),因此“與”門253的輸出信號(hào)247就是指示RAM212處于滿狀態(tài)的邏輯“1”信號(hào)了。注意此時(shí)比較器241的輸出信號(hào)246仍然是指示RAM212處于非空狀態(tài)的邏輯“0”。
當(dāng)信號(hào)247變成為邏輯“1”時(shí),指示該RAM212處于滿狀態(tài),則計(jì)數(shù)器217停止增加其計(jì)值。由單過程時(shí)鐘脈沖B對(duì)寄存器243進(jìn)行同步,其結(jié)果,將計(jì)數(shù)器217的內(nèi)容存入寄存器243。這就使得比較器241的輸入端B現(xiàn)在具有了新的值。除了最高有效位之外,比較器241輸入端B上的值與輸入端A上的值是完全相同的;在輸入端B上的值,其最高有效位是邏輯“1”,而在輸入端A上的值,其最高有效位是邏輯“0”。因而,比較器241的輸入信號(hào)并不相等,于是輸出信號(hào)246是指示非空狀態(tài)的邏輯“0”。
由于此時(shí)RAM212處于滿狀態(tài)(信號(hào)246是邏輯“0”,而信號(hào)247是邏輯“1”),所以任何數(shù)據(jù)都不能再寫入RAM212了,下一步只能是讀出數(shù)據(jù)。
假設(shè)現(xiàn)在計(jì)數(shù)器218被啟動(dòng),從而開始從RAM212中讀出數(shù)據(jù)。因?yàn)楸容^器242的輸入信號(hào)還沒有來得及變化,所以輸出信號(hào)247不會(huì)立即發(fā)生變化(也就是說,信號(hào)247仍然是指示處于滿狀態(tài)的邏輯“1”)。在計(jì)數(shù)器218的輸出等于寄存器243的內(nèi)容之前,輸出信號(hào)246仍保持不變(處于邏輯“0”)。在計(jì)數(shù)器218的輸出等于寄存器243的內(nèi)容的時(shí)間點(diǎn)上,比較器241的兩個(gè)輸入信號(hào)是相等的,于是輸出信號(hào)246就變成為指示RAM212處于空狀態(tài)的邏輯“1”信號(hào)了。
此時(shí)(即當(dāng)信號(hào)246成為邏輯“1”時(shí)),計(jì)數(shù)器218停止計(jì)數(shù),并通過單過程時(shí)鐘脈沖C對(duì)寄存器244進(jìn)行同步,于是將總線222上的信號(hào)(即計(jì)數(shù)器218所達(dá)到的計(jì)數(shù)植)存入寄存器244。當(dāng)發(fā)生這種情況時(shí),比較器248及251的輸入端A及B均傳送相等的信號(hào),于是輸出信號(hào)247成為指示非滿狀態(tài)的邏輯“0”。
以圖3這種實(shí)施方案的方式運(yùn)行的電路具有面向信息的優(yōu)點(diǎn);因此,使得面向信息的數(shù)據(jù)傳送相對(duì)來講比較平滑。
圖4的實(shí)施方案類似于圖3所描述的實(shí)施方案;但是,在寄存器244與計(jì)數(shù)器218之間增加有總線261,并且在寄存器243與計(jì)數(shù)器217之間增加有總線262。
總線261及262在寄存器243及244與它們所相對(duì)應(yīng)的計(jì)數(shù)器217及218之間,分別增加了反饋,使得對(duì)FIFO存貯器212的內(nèi)容能夠有更多的控制。
通過寫寄存器243向?qū)懭胗?jì)數(shù)器217的再次裝入數(shù)據(jù),可以擦除剛剛存入(寫入)FIFO存貯器212的信息。出現(xiàn)這種結(jié)果是因?yàn)樵趩芜^程時(shí)鐘脈沖B對(duì)寄存器243實(shí)行同步之前,該寄存器243寄存有計(jì)數(shù)器217開始的計(jì)數(shù)值,但并不存有該計(jì)數(shù)器217最后的計(jì)數(shù)值。所以,不對(duì)寄存器243提供單過程時(shí)鐘脈沖信號(hào)B,該寄存器243就寄存有計(jì)數(shù)器217開始進(jìn)行的計(jì)數(shù)值;而后就可以通過總線262把這個(gè)起始計(jì)數(shù)值插入計(jì)數(shù)器217。其結(jié)果,當(dāng)計(jì)數(shù)器217再次開始進(jìn)行計(jì)數(shù)時(shí),該計(jì)數(shù)器217將在它的在先計(jì)數(shù)值的基礎(chǔ)上開始進(jìn)行計(jì)數(shù),并且從現(xiàn)在開始存入FIFO存貯器212的數(shù)據(jù)將會(huì)沖掉在此之前已經(jīng)存貯了的數(shù)據(jù)。
同樣,通過讀寄存器244向讀出計(jì)數(shù)器218的再次裝入數(shù)據(jù),可以把剛剛從FIFO存貯器212中讀出的信息保持住,用來進(jìn)行再次讀出。出現(xiàn)這種情況是因?yàn)橹袉芜^程時(shí)鐘脈沖C對(duì)寄存器244實(shí)行同步之前,該寄存器244寄存有計(jì)數(shù)器218開始的計(jì)數(shù)值,但并不存有該計(jì)數(shù)器218最后的計(jì)數(shù)值。所以,不對(duì)寄存器244給出單過程時(shí)鐘脈沖信號(hào)C,該寄存器244就寄存有計(jì)數(shù)器218開始進(jìn)行的計(jì)數(shù)值;而后就可以通過總線261把這個(gè)起始計(jì)數(shù)值插入計(jì)數(shù)器218。其結(jié)果,當(dāng)計(jì)數(shù)器218再次開始進(jìn)行計(jì)數(shù)時(shí),該計(jì)數(shù)器218將在它的在先計(jì)數(shù)值的基礎(chǔ)上開始進(jìn)行計(jì)數(shù),并且從現(xiàn)在開始從FIFO存貯器212中讀出(尋址)的數(shù)據(jù)將是在此之前已經(jīng)從存貯器212中讀出過的數(shù)據(jù)。
在一般的應(yīng)用當(dāng)中,當(dāng)寫入一個(gè)信息(通過寫入計(jì)數(shù)器217)之后,寫寄存器243就將用寫入計(jì)數(shù)器217的內(nèi)容來進(jìn)行更新,于是“接收”該信息。如果寫入該信息的控制器(未示出)檢測(cè)到用一個(gè)完整性問題(例如,奇偶性)寫寄存器243的內(nèi)容來對(duì)寫入計(jì)數(shù)器217進(jìn)行再次裝入數(shù)據(jù)的以寫寄存器243內(nèi)容來重新裝入的寫入計(jì)數(shù)器217則“拒絕”該信息。
在讀出操作中,通常由讀計(jì)數(shù)器218將讀寄存器244進(jìn)行更新,于是“清除”(purging)掉存入FIFO存貯器212中的信息。但是,如果接收控制器(未示出)指示出一個(gè)完整性問題(例如,奇偶性)時(shí),它可以把讀寄器244的內(nèi)容再次裝入計(jì)數(shù)器218,從而在存貯器212中“保持”該信息,用來再去重試(重新發(fā)送)。
在兩個(gè)指示器(即空狀態(tài)指示器或信號(hào)246;及滿狀態(tài)指示器或信號(hào)247)與計(jì)數(shù)器217及218之間還裝有一些內(nèi)裝聯(lián)鎖器,防止當(dāng)FIFO存貯器212處于滿狀態(tài)時(shí)對(duì)寫入計(jì)數(shù)器217又進(jìn)行增加計(jì)數(shù),并從而防止把數(shù)據(jù)沖掉。事實(shí)上,在這種情況下,信息終止時(shí)將會(huì)產(chǎn)生把這部分信息自動(dòng)排出的動(dòng)作。如果FIFO存貯器212處于空狀態(tài)的話,也防止讀計(jì)數(shù)器218又進(jìn)行增加計(jì)數(shù),因而避免出現(xiàn)錯(cuò)誤的滿狀態(tài)指示。為了使本發(fā)明的描述變得清楚起見,我們?cè)诟綀D中沒有示出這些特征。
權(quán)利要求
1.一種向FIFO(先進(jìn)先出)存貯裝置(112)提供地址信息的FIFO存貯電路(110)的控制電路(111)包括有給出第一個(gè)二進(jìn)制信號(hào)的第一裝置(117);給出第二個(gè)二進(jìn)制信號(hào)的第二裝置(118);將上述第一個(gè)二進(jìn)制信號(hào)的最高有效位(131)與上述第二個(gè)二進(jìn)制信號(hào)的最高有效位(132)進(jìn)行比較,并產(chǎn)生指示其比較結(jié)果的第一控制信號(hào)(125)的第一比較器裝置(126);將上述第一個(gè)二進(jìn)制信號(hào)的次于最高有效位的各位(123)與上述第二個(gè)二進(jìn)制信號(hào)的次于最高有效位的各位(122)進(jìn)行比較,并產(chǎn)生指示其比較結(jié)果的第二控制信號(hào)(136)的第二比較器裝置(127),響應(yīng)上述第一控制信號(hào)及上述第二控制信號(hào),用來對(duì)上述存貯器電路是處于滿狀態(tài)還是非滿狀態(tài)給出指示信號(hào)的邏輯裝置(128、133、134)。
2.根據(jù)權(quán)利要求1中的控制電路,其中上述第一裝置是一個(gè)計(jì)數(shù)器裝置,上述第二裝置也是一個(gè)計(jì)數(shù)器裝置。
3.根據(jù)權(quán)利要求2中的控制電路還包括有接收上述第一個(gè)二進(jìn)制信號(hào)及上述第二個(gè)二進(jìn)制信號(hào),并且選擇第一個(gè)二進(jìn)制信號(hào)或者第二個(gè)二進(jìn)制信號(hào)作為其輸出信號(hào)的多路轉(zhuǎn)換器(119);借此,利用該多路轉(zhuǎn)換器輸出的次于最高有效位信號(hào)去尋址上述FIFO存貯器裝置。
4.根據(jù)權(quán)利要求1中的控制電路,其中上述第一裝置是一個(gè)計(jì)數(shù)器裝置,上述第二裝置也是一個(gè)計(jì)數(shù)器裝置。
5.一種FIFO(先進(jìn)先出)存貯器電路(110)的控制電路(111)包括有給出第一信號(hào)的第一計(jì)數(shù)器裝置(117);給出第二信號(hào)的第二計(jì)數(shù)器裝置(118);接收上述第一信號(hào)及上述第二信號(hào),并且選擇上述第一信號(hào)或者上述第二信號(hào)作為其輸出信號(hào)的多路轉(zhuǎn)換器裝置(119);將上述第一信號(hào)的最高有效位(131)與上述第二信號(hào)的最高有效位(132)進(jìn)行比較,并且產(chǎn)生指示其比較結(jié)果的第一控制信號(hào)(125)的第一比較器裝置(126);將上述第一信號(hào)的次于最高有效位的各位(123)與上述第二信號(hào)的次于最高有效位的各位(122)進(jìn)行比較,并且產(chǎn)生指示其比較結(jié)果的第二控制信號(hào)(136)的第二比較器裝置(127);以及響應(yīng)上述第一控制信號(hào)及上述第二控制信號(hào),用來產(chǎn)生指示上述存貯器電路處于空狀態(tài)或非空狀態(tài)的第一指示信號(hào)以及指示上述存貯器電路處于滿狀態(tài)或非滿狀態(tài)的第二指示信號(hào)的邏輯裝置(128、133、134)。
6.根據(jù)權(quán)利要求5中的控制電路,其中上述邏輯電路包括有一個(gè)反相器裝置及兩個(gè)“與”門裝置。
全文摘要
向FIFO(先進(jìn)先出)存貯器(112)提供地址信息的FIFO控制電路(111)采用二個(gè)加法計(jì)數(shù)器(117、118)。一個(gè)計(jì)數(shù)器給出寫地址,另一個(gè)計(jì)數(shù)器給出讀地址;還采用了選擇地址(讀或?qū)?用的多路轉(zhuǎn)換器(119)。另外,與簡(jiǎn)單的邏輯電路相配合,兩個(gè)比較器(126、127)給出兩個(gè)狀態(tài)輸出信號(hào),即滿狀態(tài)(或非滿狀態(tài))及空狀態(tài)(或非空狀態(tài))。
文檔編號(hào)G06F5/10GK1035381SQ88108438
公開日1989年9月6日 申請(qǐng)日期1988年10月14日 優(yōu)先權(quán)日1987年10月14日
發(fā)明者尤塞夫·艾爾弗雷德·吉達(dá), 馬丁·克洛德·勒費(fèi)弗爾 申請(qǐng)人:北方電信有限公司