專利名稱:混合異步同步系統(tǒng)的低等待時間fifo電路的制作方法
說明書相關(guān)申請交叉參考本申請要求通過引用而完全結(jié)合于此的2000年6月9日提交的題為“Low-Latency FIFO For Mixed-Clock Systems”的美國臨時專利申請序列號60/210,642的優(yōu)先權(quán)。
背景技術(shù):
發(fā)明領(lǐng)域本發(fā)明涉及FIFO電路,尤其涉及與以不同速度工作的子系統(tǒng)接口并可以是同步或異步的,并且在子系統(tǒng)之間具有非常長的互連延遲的低等待時間FIFO設(shè)計。
相關(guān)技術(shù)背景VLSI中的趨勢正日益朝向涉及許多時鐘域的“芯片上系統(tǒng)”。一個富有挑戰(zhàn)性的問題是要牢固地與這些域接口。適當(dāng)?shù)慕鉀Q方案,尤其是提供可靠的低等待時間的通信的那些解決方案是很少的。
在設(shè)計芯片上系統(tǒng)中存在兩個基本的挑戰(zhàn)問題。第1個挑戰(zhàn)涉及在不同的定時假設(shè)下運(yùn)行的系統(tǒng)。這些定時假設(shè)包括不同的時鐘速度,以及同步和異步環(huán)境。第2個挑戰(zhàn)涉及在系統(tǒng)之間的通信中具有長延遲的設(shè)計。
已經(jīng)發(fā)展了許多FIFO電路和組件來處理子系統(tǒng)之間的定時偏差。某些設(shè)計限于處理單時鐘系統(tǒng)。已提出了這些方法來處理時鐘脈沖相位差、漂移和抖動(R.Kol等人的“Adaptive Synchronization for Multi-SynchronousSystem”,IEEE國際計算機(jī)設(shè)計會議(ICCD’98)第188-189頁,1998年10月;以及M.Greenstreet的“Implementing a STARI Chip”,IEEE國際計算機(jī)設(shè)計會議(ICCD’98)會刊第38-43頁,1995年)。為了處理長互連延遲,已提出了“等待時間不敏感協(xié)議”(L.Caloni等人的“A Methodology forCorrect-by-Construction Latency Insensitive Design”,1999年ICCAD);然而這些解決方案僅限于單個時鐘域。
還已提出了若干設(shè)計,來處理混合定時域。一類設(shè)計方法試圖使數(shù)據(jù)項和/或控制信號與接收機(jī)同步,而不干擾其時鐘。尤其是Seizovic通過“同步FIFO”與同步環(huán)境的牢固的異步接口。(1994年11月,國際異步電路和系統(tǒng)高級研究學(xué)術(shù)討論會上的J.Seizovic的“Pipeline Synchronization”第87-96頁)。然而,該設(shè)計的等待時間與FIFO級數(shù)成比例,其實現(xiàn)包括昂貴的同步器。此外,他的設(shè)計要求發(fā)送器以恒定的速率產(chǎn)生數(shù)據(jù)項。
其它設(shè)計通過暫時修改接收機(jī)的時鐘,來實現(xiàn)混合時鐘系統(tǒng)的牢固接口。通過暫?;蛘箤捊邮諜C(jī)的本地時鐘,避免了同步故障。各個通信同步系統(tǒng)以異步邏輯環(huán)繞,后者負(fù)責(zé)與其它系統(tǒng)的通信以及調(diào)整時鐘。該方法改變了本地系統(tǒng)的時鐘,并可在重啟它們時引入等待時間損失。
Jerry Jex等人的美國專利號5,598,113描述了一種混合時鐘FIFO電路。然而,在′113中描述的該FIFO電路在實現(xiàn)同步中有很大的面積開銷。例如,對于每個單元,該設(shè)計具有兩個同步器。
因此,在本領(lǐng)域中存在對一種具有低等待時間和高吞吐量的并能夠在混合同步/異步環(huán)境中運(yùn)行的FIFO電路的需要。
發(fā)明概述本發(fā)明的一個目的是提供一種具有低等待時間和高吞吐量的FIFO電路。
本發(fā)明的另一個目的是提供一種用于混合同步/異步環(huán)境中的FIFO電路。
本發(fā)明的又一個目的提供了一種用作與長延遲和混合同步/異步環(huán)境有關(guān)的中繼站的FIFO電路。
本發(fā)明的又一個目的是提供一種FIFO電路部件,它配置成適用于某一特定的操作協(xié)議,即同步或異步,并能夠連同其它部件一起使用,而不管其它部件的操作協(xié)議。
參考下面的揭示,本發(fā)明的這些和其它目的將變得清楚,并由在操作于第1操作協(xié)議下的發(fā)送器子系統(tǒng)與操作于第2操作協(xié)議下的接收機(jī)子系統(tǒng)之間對數(shù)據(jù)項的傳送進(jìn)行接口的FIFO電路得到實現(xiàn)。
置數(shù)接口配置成按照第1操作協(xié)議操作,并包括置數(shù)數(shù)據(jù)總線,以傳送來自發(fā)送器子系統(tǒng)的數(shù)據(jù)項,以及置數(shù)數(shù)據(jù)請求輸入,以接收來自發(fā)送器子系統(tǒng)的置數(shù)請求,使來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項入隊。取數(shù)接口配置成按照第2時域操作,并包括取數(shù)數(shù)據(jù)總線,以向接收機(jī)子系統(tǒng)傳送數(shù)據(jù)項,以及取數(shù)數(shù)據(jù)請求輸入,以接收來自接收機(jī)子系統(tǒng)的取數(shù)請求,把數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線。
提供了單元陣列。各單元具有配置成從置數(shù)數(shù)據(jù)總線接收數(shù)據(jù)項并向取數(shù)數(shù)據(jù)總線傳送數(shù)據(jù)項的寄存器,提供單元的狀態(tài)的指示的狀態(tài)控制器,配置成按照第1操作協(xié)議操作的置數(shù)部件,以及配置成按照第2操作協(xié)議操作的取數(shù)部件。
置數(shù)部件接收來自第1相鄰單元的置數(shù)標(biāo)記,根據(jù)置數(shù)請求、置數(shù)標(biāo)記以及單元的狀態(tài),將所接收的來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項鎖存到寄存器,并將置數(shù)標(biāo)記傳送到第2相鄰單元。取數(shù)部件接收來自第1相鄰單元的取數(shù)標(biāo)記,根據(jù)取數(shù)請求、取數(shù)標(biāo)記以及單元的狀態(tài),從寄存器中將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線,并將取數(shù)標(biāo)記傳送到第2相鄰單元。
根據(jù)本發(fā)明,已滿足了上述目的,并且已實質(zhì)上滿足了對具有低等待時間和高吞吐量并能夠在混合同步/異步環(huán)境中操作的FIFO電路的需要。通過附圖和下面的說明性實施例的詳細(xì)描述,本發(fā)明的另一些特征,特性和各種優(yōu)點將變得更清楚。
附圖簡述
圖1是根據(jù)本發(fā)明的同步置數(shù)接口的示意圖。
圖2是根據(jù)本發(fā)明的同步取數(shù)接口的示意圖。
圖3是根據(jù)本發(fā)明的異步置數(shù)接口的示意圖。
圖4是根據(jù)本發(fā)明的異步取數(shù)接口的示意圖。
圖5是根據(jù)本發(fā)明的第1實施例的示例性FIFO電路的示意框圖。
圖6是圖5中所說明的FIFO電路的較詳細(xì)的示意框圖。
圖7是根據(jù)本發(fā)明的第2實施例的示例性FIFO電路的示意框圖。
圖8是圖7中所說明的FIFO電路的較詳細(xì)的示意框圖。
圖9是根據(jù)本發(fā)明的第3實施例的示例性FIFO電路的示意框圖。
圖10是圖9中所說明的FIFO電路的較詳細(xì)的示意框圖。
圖11是關(guān)于根據(jù)本發(fā)明的同步置數(shù)協(xié)議而施加的示例性信號的時間曲線圖。
圖12是關(guān)于根據(jù)本發(fā)明的同步取數(shù)協(xié)議而施加的示例性信號的時間曲線圖。
圖13是關(guān)于根據(jù)本發(fā)明的異步置數(shù)協(xié)議而施加的示例性信號的時間曲線圖。
圖14是關(guān)于根據(jù)本發(fā)明的同步取數(shù)協(xié)議而施加的示例性信號的時間曲線圖。
圖15是根據(jù)本發(fā)明的說明圖5和圖6的FIFO電路的一部分的放大的示意框圖。
圖16是根據(jù)本發(fā)明的圖15中所說明的FIFO電路的一部分的較詳細(xì)的示意框圖。
圖17是根據(jù)本發(fā)明的圖5和圖6中所示的FIFO電路的滿檢測器的示意框圖。
圖18是根據(jù)本發(fā)明的圖5和圖6中所示的FIFO電路的第1空檢測器的示意框圖。
圖19是根據(jù)本發(fā)明的圖5和圖6中所示的FIFO電路的第2空檢測器的示意框圖。
圖20是根據(jù)本發(fā)明的圖5和圖6中所示的FIFO電路的另一部分的示意框圖。
圖21是根據(jù)本發(fā)明的圖5和圖6中所示的FIFO電路的又一部分的示意框圖。
圖22是根據(jù)本發(fā)明的說明圖7和圖8中所示的FIFO電路的一部分的放大的示意框圖。
圖23是根據(jù)本發(fā)明的圖22中所示的FIFO電路的該部分的較詳細(xì)的示意框圖。
圖24是根據(jù)本發(fā)明的圖23中所示的FIFO電路的一部分的突發(fā)模式(burst-mode)說明。
圖25(a)是根據(jù)本發(fā)明的圖23中所說明的FIFO電路的一部分的較詳細(xì)的示意框圖。
圖25(b)是根據(jù)本發(fā)明的圖23中所說明的FIFO電路的另一部分的較詳細(xì)的示意框圖。
圖26是根據(jù)本發(fā)明的圖23中所說明的FIFO電路的又一部分的較詳細(xì)的示意框圖。
圖27是根據(jù)本發(fā)明的圖23中所說明的FIFO電路的又一部分的較詳細(xì)的示意框圖。
圖28是根據(jù)本發(fā)明的圖23中所說明的FIFO電路的一部分的皮特里網(wǎng)(petri-net)說明。
圖29是根據(jù)本發(fā)明的說明圖29中所示的FIFO電路的一部分的放大的示意框圖。
圖30是根據(jù)本發(fā)明的圖29中所說明的FIFO電路的該部分的較詳細(xì)的示意框圖。
圖31(a)是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的一部分的較詳細(xì)的示意框圖。
圖31(b)是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的一部分的另一實施例的較詳細(xì)的框圖。
圖32是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的突發(fā)模式說明。
圖33是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的又一部分的較詳細(xì)的示意框圖。
圖34是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的又一部分的較詳細(xì)的示意框圖。
圖35是根據(jù)本發(fā)明的圖30中所說明的FIFO電路的一部分的皮特里網(wǎng)說明。
圖36是現(xiàn)有技術(shù)系統(tǒng)的示意框圖。
圖37是結(jié)合中繼站現(xiàn)有技術(shù)系統(tǒng)的示意框圖。
圖38是現(xiàn)有技術(shù)中繼站的示意框圖。
圖39是說明根據(jù)本發(fā)明的FIFO電路中繼站的示意框圖。
圖40是根據(jù)本發(fā)明的說明圖39中所說明的FIFO電路中繼站的較詳細(xì)的示意框圖。
圖41是根據(jù)本發(fā)明的圖40中所說明的FIFO電路中繼站的一部分的詳細(xì)示意圖。
圖42是根據(jù)本發(fā)明的圖40中所說明的FIFO電路中繼站的另一部分的詳細(xì)示意圖。
圖43是說明根據(jù)本發(fā)明的另一FIFO電路中繼站系統(tǒng)的示意框圖。
圖44是根據(jù)本發(fā)明的說明圖43中所說明的FIFO電路中繼站系統(tǒng)的較詳細(xì)的示意框圖。
圖45是根據(jù)本發(fā)明的說明圖44中所說明的FIFO電路中繼站的較詳細(xì)的示意框圖。
圖46是根據(jù)本發(fā)明的圖45中所說明的FIFO電路中繼站的一部分的詳細(xì)示意圖。
圖47是說明根據(jù)本發(fā)明又一FIFO電路中繼站系統(tǒng)的示意框圖。
圖48是根據(jù)本發(fā)明的說明圖47中所說明的FIFO電路中繼站系統(tǒng)的較詳細(xì)的示意框圖。
圖49是根據(jù)本發(fā)明的說明圖48中所說明的FIFO電路中繼站的較詳細(xì)的示意框圖。
圖50是根據(jù)本發(fā)明的圖49中所說明的FIFO電路中繼站的一部分的詳細(xì)示意圖。
示例性實施例的詳細(xì)描述根據(jù)本發(fā)明的FIFO電路處于兩個子系統(tǒng)之間一個是產(chǎn)生數(shù)據(jù)項的發(fā)送器子系統(tǒng),另一個是使用數(shù)據(jù)項的接收機(jī)子系統(tǒng)。把FIFO電路實現(xiàn)為相同單元的環(huán)形緩沖器,其中各單元在公共數(shù)據(jù)總線上與兩個子系統(tǒng)通信。單元的輸入和輸出行為由環(huán)繞環(huán)的兩個標(biāo)記流指出一個用于使數(shù)據(jù)入隊,一個用于使數(shù)據(jù)出隊。一旦把數(shù)據(jù)排入隊列,數(shù)據(jù)項就不能在環(huán)繞環(huán)中移動,從而提供了低等待時間的機(jī)會一旦將數(shù)據(jù)排入隊列,在此后不久就可使數(shù)據(jù)出隊。
如下所述,各FIFO電路劃分成模塊部件,這些模塊部件可與許多不同的系統(tǒng)中的其它模塊部件一起使用。如下將要描述的那樣,可以把一組接口或FIFO電路的部數(shù)據(jù)包合在一起,以獲得完整的FIFO電路,該電路可滿足發(fā)送器端和接收機(jī)端所希望的定時假設(shè)。如這里所使用的,“時域”將涉及子系統(tǒng)是同步的還是異步的。
按照本發(fā)明,各FIFO電路具有兩個接口或設(shè)計成與環(huán)境相協(xié)調(diào)的部分FIFO電路。首先,置數(shù)接口是FIFO電路的一部分,它與發(fā)送器子系統(tǒng)通信。圖1中說明了一個同步置數(shù)接口,圖3中說明了一個異步置數(shù)接口。其次,取數(shù)接口是FIFO電路的一部分,它與接收機(jī)子系統(tǒng)通信。圖2說明了一個同步取數(shù)接口,以及圖4說明了一個異步取數(shù)接口。與環(huán)境接口的FIFO電路,無論發(fā)送器和接收機(jī)子系統(tǒng)都是同步的,還是分別是同步的和異步的,或者異步的和同步的,都可通過連接適當(dāng)對應(yīng)于所呈現(xiàn)的條件的一個置數(shù)接口和一個取數(shù)接口來組合裝配。
圖1-2說明了根據(jù)本發(fā)明的兩個同步接口。圖1中所說明的同步置數(shù)接口10由發(fā)送器時鐘信號12(CLK_put)控制。對同步置數(shù)接口10有兩個輸入,一個是置數(shù)請求信號14(req_put),它傳送發(fā)送器的請求以使數(shù)據(jù)入隊,另外一個是發(fā)送器數(shù)據(jù)總線16(data_put),它是數(shù)據(jù)項的總線。僅當(dāng)FIFO電路滿時,才提供全局滿信號18(full),否則不提供。
圖2說明了異步取數(shù)接口20,它由接收機(jī)時鐘信號22(CLK_get)控制。來自接收機(jī)的用以使數(shù)據(jù)項出隊的單個控制輸入是取數(shù)請求信號24(req_get)。數(shù)據(jù)置于接收機(jī)數(shù)據(jù)總線26上(data_get)。僅當(dāng)FIFO電路空時,才提供全局空信號28(empty)。有效數(shù)據(jù)信號30(valid_get)指示出數(shù)據(jù)項是有效的。
圖3-4中說明的異步接口不與時鐘信號同步。圖3說明了一種具有2個輸入的異步置數(shù)接口40,這兩個輸入與同步置數(shù)接口10(圖1)的輸入基本上類似。首先,提供了置數(shù)請求信號44(put_req),它傳送發(fā)送器的請求,以使數(shù)據(jù)入隊,以及其次提供了發(fā)送器數(shù)據(jù)總線46(put_data),用于數(shù)據(jù)項的輸出。與同步置數(shù)接口10相反,當(dāng)完成置數(shù)操作時,異步置數(shù)接口40提供了置數(shù)確認(rèn)信號45(put_ack)。
圖4中所說明的異步取數(shù)接口50,具有取數(shù)請求信號54(get_req)和輸出數(shù)據(jù)總線58(get_data)。不同于類似的同步取數(shù)接口,該接口50提供了取數(shù)確認(rèn)信號55(get_ack),該信號指示出完成了取數(shù)操作。
可以按照本發(fā)明來分別連接圖1、2、3和4的模塊接口10、20、40和50,以建立可在不同環(huán)境之間傳送數(shù)據(jù)的FIFO電路。例如,如下面將參考示例性實施例FIFO電路100描述的那樣,可通過使用同步置數(shù)接口10和同步取數(shù)接口20來形成在同步發(fā)送器子系統(tǒng)和同步接收機(jī)子系統(tǒng)之間接口的FIFO電路,以便形成在此稱為“同步—同步”FIFO電路的FIFO電路。類似地,如下面將參考示例性實施例FIFO電路200詳細(xì)描述的那樣,在異步發(fā)送器子系統(tǒng)和同步接收機(jī)子系統(tǒng)之間接口的FIFO電路將結(jié)合異步置數(shù)接口40和同步取數(shù)接口20,可把該電路稱為“異步—同步”FIFO。同樣地,如下面參考示例性實施例FIFO電路300所描述的那樣,為了在同步發(fā)送器子系統(tǒng)和異步接收機(jī)子系統(tǒng)之間接口,被稱為“同步—異步”FIFO的電路可利用同步置數(shù)接口10和異步取數(shù)接口50。
圖6、8和10的FIFO電路100、200和300實質(zhì)上是類似的,只帶有這里所注釋的差異。例如,各個FIFO電路100、200和300具有相同單元的環(huán)形陣列,這些單元在公共數(shù)據(jù)總線上與置數(shù)和取數(shù)接口通信。各操作的控制邏輯分布于單元之間,并允許兩個接口之間的并行。數(shù)據(jù)在單元陣列中是固定的。因此,一旦數(shù)據(jù)項加入隊列,它就不被移動,并且僅從原位出隊。
任何時候,在FIFO電路100、200和300中都存在兩個標(biāo)記,即置數(shù)標(biāo)記和取數(shù)標(biāo)記。由這些標(biāo)記來控制FIFO電路100、200和300的輸入和輸出行為。置數(shù)標(biāo)記用于允許使數(shù)據(jù)項入隊,而取數(shù)標(biāo)記用于允許使數(shù)據(jù)項出隊??砂丫哂兄脭?shù)標(biāo)記的單元認(rèn)為是隊列的“尾部”,而把具有取數(shù)標(biāo)記的單元認(rèn)為是隊列的“頭部”。在正常操作中,置數(shù)標(biāo)記一般在取數(shù)標(biāo)記之前。一旦一單元已使用一標(biāo)記進(jìn)行數(shù)據(jù)操作,在相應(yīng)的操作完成之后把該標(biāo)記傳遞給下一單元。如下面將要更詳細(xì)描述的那樣,標(biāo)記的移動由接口請求以及FIFO的狀態(tài)控制,所述狀態(tài)即空或滿。
FIFO電路100、200和300的結(jié)構(gòu)具有若干共同的優(yōu)點。由于在從輸入到輸出的單元之間不傳遞數(shù)據(jù),所以FIFO電路具有潛在的低等待時間。因此,在數(shù)據(jù)入隊的同時,它就能夠用于出隊。其次,F(xiàn)IFO電路提供潛在的低功率當(dāng)數(shù)據(jù)處于FIFO電路中時,它們是固定的。最后,這些結(jié)構(gòu)是可高度伸縮的;可用非常少的設(shè)計修改來改變FIFO電路的容量和數(shù)據(jù)項的寬度。
圖5和圖6中說明了根據(jù)本發(fā)明的第1實施例的FIFO電路100。當(dāng)發(fā)送器子系統(tǒng)是同步的,且接收機(jī)子系統(tǒng)也是同步的時候,可使用FIFO電路100。因此,如圖5中所說明的那樣,模塊化的同步置數(shù)接口10與模塊化的同步取數(shù)接口20一起使用。發(fā)送器子系統(tǒng)根據(jù)發(fā)送器時鐘信號12(CLK_put)操作,而接收機(jī)子系統(tǒng)根據(jù)接收機(jī)時鐘信號22(CLK_get)操作。
如圖6所示,F(xiàn)IFO電路100由相同單元170a、170b、170c和170d的環(huán)形陣列構(gòu)成,并與兩個外部接口通信,這兩個接口即發(fā)送器數(shù)據(jù)總線16(data_put)上的同步置數(shù)接口10和接收機(jī)數(shù)據(jù)總線26(data_get)上的同步取數(shù)接口20。
同步接口10和20具有兩個另外類型的部件(1)檢測器,它確定FIFO電路100的當(dāng)前狀態(tài),即空或滿,以及(2)外部控制器,它有條件地把對數(shù)據(jù)操作的請求傳遞給單元陣列。如本領(lǐng)域中所知的那樣,在一個時鐘周期內(nèi)完成同步接口上的一次數(shù)據(jù)操作;因此,該環(huán)境不需要明確的確認(rèn)信號。然而,如果FIFO電路100變得滿(或空),需要阻止該環(huán)境在置數(shù)(或取數(shù))接口上通信。檢測器和控制器操作于FIFO電路100之中,以檢測異常情況,并且如果不能安全的進(jìn)行數(shù)據(jù)操作,則停止相應(yīng)的接口。如圖6所說明的那樣,滿檢測器72和空檢測器74觀測單元170a、170b、170c和170d的狀態(tài),并計算FIFO電路100的全局狀態(tài),即滿或空。滿檢測器72的輸出可傳送到置數(shù)接口10,而空檢測器74的輸出可傳送到取數(shù)接口20。置數(shù)控制器176和取數(shù)控制器178濾波對FIFO電路100的數(shù)據(jù)操作請求。從而,置數(shù)控制器176通常傳送來自發(fā)送器子系統(tǒng)的置數(shù)請求,但當(dāng)FIFO電路滿時,則禁止這些請求。類似地,取數(shù)控制器178一般傳送來自接收機(jī)子系統(tǒng)的取數(shù)請求,但當(dāng)FIFO電路100空時,則阻塞這些請求。下面將更詳細(xì)地描述檢測器72和74,外部控制器176和178以及“空”和“滿”的定義。
圖7和圖8說明了根據(jù)第2示例性實施例的FIFO電路200。當(dāng)發(fā)送器子系統(tǒng)是異步的,而接收機(jī)子系統(tǒng)是同步的時候,可使用FIFO電路200。因此,如圖7所說明的那樣,模塊化的異步置數(shù)接口40與模塊化的同步取數(shù)接口20一起使用。發(fā)送器子系統(tǒng)異步地操作,而接收機(jī)子系統(tǒng)根據(jù)接收機(jī)時鐘信號22(CLK_get)操作。
如圖8中所說明的那樣,F(xiàn)IFO電路200由相同單元270a、270b、270c和270d的陣列構(gòu)成,并在公共數(shù)據(jù)總線(發(fā)送器數(shù)據(jù)總線46(data_put)以及接收機(jī)數(shù)據(jù)總線(get_data))上與兩個外部接口通信,這兩個外部接口是異步置數(shù)接口40和同步取數(shù)接口20。
如上述參考圖6所述,同步取數(shù)接口20包括空檢測器74和取數(shù)控制器278。取數(shù)控制器278一般傳送來自接收機(jī)子系統(tǒng)的取數(shù)請求,但當(dāng)FIFO電路200空時,則禁止這樣的請求。與同步接口相反,諸如異步置數(shù)接口40之類的異步接口不包括滿或空檢測器或外部控制器。由于異步接口不根據(jù)時鐘信號操作,因此它不需要產(chǎn)生諸如“滿”或“空”之類的異常信號,來暫時停止數(shù)據(jù)操作。因此,當(dāng)具有異步接口的FIFO電路變得滿(或空)時,可長時期地抑制置數(shù)(或取數(shù))確認(rèn),直到能安全執(zhí)行數(shù)據(jù)操作為止。在FIFO電路200的情況下,當(dāng)FIFO電路200滿時,抑制取數(shù)確認(rèn)信號45(put_ack),并當(dāng)能安全地執(zhí)行數(shù)據(jù)操作時,再傳送該信號。
圖9和圖10說明了根據(jù)第3示例性實施例的FIFO電路300。當(dāng)發(fā)送器子系統(tǒng)是同步的,而接收機(jī)子系統(tǒng)是異步的時候,可使用FIFO電路300。如圖9中所說明的那樣,同步置數(shù)接口10與異步取數(shù)接口50一起使用。發(fā)送器子系統(tǒng)根據(jù)發(fā)送器時鐘信號12(CLK_put)操作,而接收機(jī)子系統(tǒng)異步地操作。
如圖10中所說明的那樣,F(xiàn)IFO電路300包括相同單元370a、370b、370c和370d的環(huán)形陣列,并在公共數(shù)據(jù)總線(發(fā)送器數(shù)據(jù)總線16(data_put)和接收機(jī)數(shù)據(jù)總線56(get_data))上與兩個外部接口通信,這兩個外部接口是同步置數(shù)接口10和異步取數(shù)接口50。
如上參考圖6所述,同步置數(shù)接口10包括滿檢測器72和置數(shù)控制器376。FIFO電路300不具有空檢測器;相反,當(dāng)FIFO電路300空時,抑制取數(shù)確認(rèn)信號55(get_ack),并當(dāng)能安全地執(zhí)行取數(shù)操作時傳送該信號。
圖11中說明了同步置數(shù)協(xié)議,并連同圖1一起討論。當(dāng)同步置數(shù)接口10接收到置數(shù)請求信號14(put_req)和置數(shù)數(shù)據(jù)總線16(data_put)上的數(shù)據(jù)項時,緊接著在發(fā)送器時鐘信號12(CLK_put)的上升沿,它開始置數(shù)操作。緊接著在下一時鐘周期的上升沿,數(shù)據(jù)項入隊(未示出)。如圖11中所說明的那樣,如果FIFO電路變得滿了,那么在下一時鐘周期之前提供全局滿信號18(full),并且阻止該同步置數(shù)接口10進(jìn)行下一步的操作。
圖12說明了同步取數(shù)協(xié)議,連同上述圖2一起討論。同步取數(shù)操作由緊接著接收機(jī)時鐘信號22(CLK_get)的上升沿之后提供的取數(shù)請求信號24(req_get)使能。在該時鐘周期結(jié)束時,數(shù)據(jù)項及其有效性信號30(valid_get)置于取數(shù)數(shù)據(jù)總線28(data_get)之上。如果FIFO電路在該時鐘周期期間變空,那么緊接著下一時鐘周期的上升沿之后提供全局空信號28(empty),并且停止同步取數(shù)接口20,直到FIFO電路變得非空為止。在取數(shù)請求24(req_get)之后,有效性信號30(valid_get)和全局空信號28(empty)可指示3種結(jié)果(a)可使數(shù)據(jù)項出隊,并且更多的數(shù)據(jù)項可用(即valid_get=1,empty=0);(b)可使數(shù)據(jù)項出隊,并且FIFO電路變空(即valid_get=1,empty=1);(c)FIFO電路為空,無數(shù)據(jù)項出隊(即valid_get=0,empty=1)。
圖13和14中說明了異步置數(shù)和取數(shù)協(xié)議。由于異步接口無時鐘,因此如本領(lǐng)域中所知的那樣,它們使用4相數(shù)據(jù)束形式的通信(數(shù)據(jù)束通信的詳細(xì)內(nèi)容見于S.Furber的“Asynchronous Design”(1997)亞微米電子學(xué)會刊461-492頁;H.van Gageldonk的“An Asynchronous Low-Power 805C51Microcontroller”國際異步電路和系統(tǒng)高級研究討論會(1998)96-107頁,通過引用而把它們完全結(jié)合于此)。在請求數(shù)據(jù)操作之前,數(shù)據(jù)項必須在數(shù)據(jù)總線上具有穩(wěn)定值。
如圖13中所示,發(fā)送器通過在發(fā)送器數(shù)據(jù)總線46(put_data)上放置數(shù)據(jù)項,并對FIFO電路發(fā)出請求,以通過提供置數(shù)請求信號44(put_req)將數(shù)據(jù)項輸入,來開始置數(shù)操作。通過提供置數(shù)確認(rèn)信號45(ptu_ack)來指示出入隊操作的完成。接著把兩條控制線復(fù)位為空閑狀態(tài),首先是置數(shù)請求44(put_req),然后是置數(shù)確認(rèn)45(put_ack)。
類似地,圖14中說明了異步取數(shù)操作。通過提供取數(shù)請求信號54(get_req)以及通過把數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線56(get_data)上,來執(zhí)行取數(shù)操作。一旦完成該操作,就提供取數(shù)確認(rèn)信號55(gert_ack)。隨后,取消取數(shù)請求信號54(get_req),并然后取消取數(shù)確認(rèn)信55(get_ack)。
為了構(gòu)造與同步和異步系統(tǒng)都能正確地運(yùn)行的FIFO電路100、200和300,各單元具有這樣的配置,它由選擇以與發(fā)送機(jī)或接收機(jī)環(huán)境接口的4個不同的、可互換的組成部件組成(1)置數(shù)部件,執(zhí)行置數(shù)操作并配置成與發(fā)送器環(huán)境操作,即同步或異步,(2)取數(shù)部件,執(zhí)行取數(shù)操作并與接收機(jī)環(huán)境操作,即同步或異步,(3)數(shù)據(jù)有效性(DV)控制器,提供單元是否具有數(shù)據(jù)項的指示,并配置成與發(fā)送器和接收機(jī)環(huán)境兩者操作,以及(4)寄存器,配置成與發(fā)送器和接收機(jī)兩者操作。因此,單元170a-d以及370a-d中的置數(shù)部件將基本上是相同的,因為它們配置成與同步發(fā)送器環(huán)境操作。單元170a-d和270a-d中的取數(shù)部件將基本上是相同的,因為它們配置成與同步接收機(jī)環(huán)境操作。單元270a-d中的置數(shù)部件配置成與異步發(fā)送器環(huán)境操作,以及單元370a-d中的取數(shù)部件配置成與異步接收機(jī)環(huán)境操作。
數(shù)據(jù)有效性控制器的作用是指示單元何時為滿,以及何時為空,以及何時具有有效數(shù)據(jù)。各單元中的寄存器分成兩個部分,一個屬于置數(shù)部件(寫端口),一個屬于取數(shù)部件(讀端口)。置數(shù)部件、取數(shù)部件、數(shù)據(jù)有效性控制器以及寄存器連接在一起,從而構(gòu)成一個完整的單元。
上面關(guān)于圖5和圖6,連同相同單元170a、170b、170c和170d一起描述了可連同同步發(fā)送器和同步接收機(jī)一起使用的FIFO電路100。圖15和圖16中說明了FIFO電路100的一個示例性單個單元,如單元170a。(下面對單元170a的描述也適用于單元170b、170c和170d)。各單元170a具有4個接口(1)同步置數(shù)接口171,(2)同步取數(shù)接口172,(3)與單元陣列中的右邊一單元的接口173,以及(4)與單元陣列中的左邊一單元的接口174。在同步置數(shù)接口171上,單元170a接受公共置數(shù)數(shù)據(jù)總線16(data_put)上的數(shù)據(jù),該數(shù)據(jù)是置數(shù)控制器76(見圖6)的輸出。置數(shù)請求信號14(req_put)指示出數(shù)據(jù)有效性(在該實施例中始終提供)。圖6已省略了置數(shù)請求信號14(req_put)向單元170a的傳送,以避免使圖復(fù)雜化。單元170a用空比特182(e_i)(當(dāng)單元170a空時提供該信號)與滿檢測器72通信。示例性單元170a的狀態(tài)由數(shù)據(jù)有效性(DV)控制器指示,后者諸如異步SR鎖存器180。在同步取數(shù)接口172上(圖15),單元170a把數(shù)據(jù)及其有效性信號184(valid_i)(在該實施例中始終提供該信號)輸出到公共取數(shù)數(shù)據(jù)總線26(data_get)上。如圖6中所示,有效性信號184(valid_i)不用于FIFO電路100,但將用于下面描述的若干實施例之中。同步取數(shù)接口172由取數(shù)使能信號186(en_get)使能,后者是取數(shù)控制器78(見圖6)的輸出。單元170a用滿比特188a(f_i)(當(dāng)單元170a滿時提供該信號)與空檢測器74通信。在與右邊單元的接口173上,各單元170a-d接受置數(shù)標(biāo)記輸入190(ptok_in)上的標(biāo)記,也接受來自右邊單元的取數(shù)標(biāo)記輸入192(gtok_in)。在與左邊的單元的接口174上,各單元170向左邊的單元傳送置數(shù)標(biāo)記輸出194(ptok_out)上的標(biāo)記,以及取數(shù)標(biāo)記輸出196(gtok_out)。
圖16中也示出了根據(jù)第1實施例的單元170a??赏ㄟ^跟蹤通過單元170a的一次置數(shù)操作以及隨后跟蹤一次取數(shù)操作來說明單元170a的行為。一開始,單元170a以空狀態(tài)(即e_i=1以及f_i=0)起始,而且不具有任何標(biāo)記。單元170a等待在發(fā)送器時鐘信號12(CLK_put)的上升沿上接收來自右邊單元的置數(shù)標(biāo)記輸入190(ptok_in=1)上的置數(shù)標(biāo)記,并等待發(fā)送器將有效數(shù)據(jù)項置于置數(shù)數(shù)據(jù)總線16(data_put)之上。通過置數(shù)使能信號180(en_put=1)對所有單元指示一有效數(shù)據(jù)項,該置數(shù)使能信號是置數(shù)控制器176(見圖6)的輸出。
當(dāng)存在有效數(shù)據(jù),并且單元已獲得置數(shù)標(biāo)記(即AND 181)時,單元170a執(zhí)行以下3個動作(1)它使能寄存器191(REG),以鎖存數(shù)據(jù)項以及置數(shù)請求信號14(req_put);(2)它指示出該單元170a具有一有效數(shù)據(jù)項(異步地設(shè)置f_i=1);以及(3)它使能左上邊沿觸發(fā)的D型觸發(fā)器ETDFF 193(en_put=1),以在置數(shù)標(biāo)記輸出194(ptok_out)上把置數(shù)標(biāo)記傳送給左邊的單元。在發(fā)送器時鐘信號12(CLK_put)的下一時鐘周期的上升沿,數(shù)據(jù)項和有效性比特最終被鎖存,并且置數(shù)標(biāo)記傳送到左邊的單元。
單元170a進(jìn)行的是數(shù)據(jù)出隊隨后以相同的方式進(jìn)行,這里注釋其中的差異。單元170a等待接收來自右邊的單元的取數(shù)標(biāo)記輸入192(gtok_in=1)上的取數(shù)標(biāo)記。當(dāng)此發(fā)生時,單元170使有效比特183(v_i),即經(jīng)鎖存的置數(shù)請求信號14(req_put)傳播到有效總線184(valid_i)上。當(dāng)在取數(shù)標(biāo)記輸入192(gtok_in=1)上接收到取數(shù)標(biāo)記,以及接收機(jī)用取數(shù)使能信號186(en_get=1)請求數(shù)據(jù)項時,如由與門181所實現(xiàn)的那樣,單元170a異步地使數(shù)據(jù)項置于公共取數(shù)數(shù)據(jù)總線26(data_get)上,并指示出該單元170是空的(異步地設(shè)置e_i=1)。提供的取數(shù)使能186(en_get)的到達(dá)使左下邊沿觸發(fā)的D型觸發(fā)器ETDFF 195在取數(shù)標(biāo)記輸出196(gtok_out)上傳送取數(shù)標(biāo)記。在下一時鐘周期的開始處,該取數(shù)標(biāo)記傳送到左邊的單元。
各FIFO電路100、200和300可具有至少一個同步接口。因此,F(xiàn)IFO電路操作一定是同步的?;旌蠒r鐘FIFO電路具有高度并行的操作在任何時刻,F(xiàn)IFO電路的狀態(tài),即滿或空,可由置數(shù)接口10和/或取數(shù)接口20修改,各接口可在不同的時鐘下或異步地操作。在同一時刻,各接口根據(jù)自己的時鐘“讀取”FIFO電路的狀態(tài)。全局滿信號18(full)(圖6和圖10)由置數(shù)接口讀取,而全局空信號28(empty)(圖6和圖8)由取數(shù)接口讀取。因此,為了避免不一致的讀取,已把同步器添加到兩個全局控制信號中的每一個,滿信號18(full)和空信號28(empty)。各同步器把對應(yīng)的全局信號調(diào)節(jié)到適當(dāng)?shù)臅r鐘。在示例性實施例中,使用一對同步鎖存器;然而,為了提高的穩(wěn)定性,注意到也可使用多于兩個鎖存器。如下面圖17、18和19所說明的那樣,同步器添加到滿檢測器72和空檢測器74的輸出,并由發(fā)送器時鐘信號12(CLK_put)和接收機(jī)時鐘信號22(CLK_get)分別控制。
這里所描述的同步器增加了額外的時鐘周期延遲,以讀取FIFO電路的當(dāng)前狀態(tài)。因此,僅指示FIFO電路的即時狀態(tài)的簡單的滿和空檢測器可能導(dǎo)致故障,即溢出或下溢。例如,當(dāng)使用一對同步鎖存器的FIFO電路變滿時,在兩個時鐘周期之后停止發(fā)送器接口。在下一時鐘周期,發(fā)送器可能存放一新的數(shù)據(jù)項,有效地覆蓋一未讀取的數(shù)據(jù)項。相反,當(dāng)FIFO電路變空時,在兩個時鐘周期之后停止接收機(jī)接口,使得在下一時鐘周期,接收機(jī)可讀取一空的單元。
按照本發(fā)明的一個解決方案是修改全局滿信號18(full)和全局空信號28(empty)的定義和實現(xiàn),以預(yù)期“即將來臨的”空或滿狀態(tài),以及時地停止接口,既不過早也不太晚。根據(jù)該定義,當(dāng)少于預(yù)定數(shù)量的單元是空的時候,則認(rèn)為FIFO電路是“滿”的。(下面更詳細(xì)地考慮了“空”的定義)。按照第1示例性實施例,當(dāng)無單元或一個單元是空的時候,則認(rèn)為FIFO電路是滿的。從而,當(dāng)存在少于兩個空單元時,則提供FIFO電路是滿的,并且在隨后的兩個時鐘周期的停止之前,發(fā)送器子系統(tǒng)能夠安全地存儲最后的數(shù)據(jù)項,并發(fā)出一新的未答復(fù)的請求。上述參考圖11-12描述的協(xié)議保持不變。唯一的效果是某些時候這兩個系統(tǒng)可把一n位(n-place)FIFO電路看作一n-1位(n-1 place)FIFO電路。
圖17中所示的滿檢測器72實現(xiàn)了上述的“滿”的定義。當(dāng)少于預(yù)定數(shù)量的連續(xù)單元為空時,則提供FIFO電路100是滿的。如圖17中所示,對連續(xù)單元對的空比特182(e_i)進(jìn)行估值,即e_0和e_1;e_1和e_2;e_2和e_3;e_3和e_0;如果這些連續(xù)對的單元都沒有發(fā)現(xiàn)是空的,則提供FIFO電路100是滿的。添加了一對鎖存器171和173,以使全局滿信號18(full)和發(fā)送器時鐘信號12(CLK_put)同步。
當(dāng)FIFO電路100中少于預(yù)定數(shù)量的單元是滿的時候,則適用類似的“空”的定義。在示例性實施例中,當(dāng)存在少于兩個數(shù)據(jù)項時,可提供FIFO電路是空的。在這些情況下,在隨后的兩個時鐘周期的停止之前,接收機(jī)子系統(tǒng)可隨后移除最后的數(shù)據(jù)項,并發(fā)出一新的未答復(fù)的請求。然而,如上所述,對“空”的早先定義可能造成FIFO電路100死鎖?!敖瓶铡?ne)定義(FIFO電路中有0個或1個數(shù)據(jù)項)的一個缺點是可能提供FIFO電路100為空,然而它仍然包含一個數(shù)據(jù)項,但是作出請求的接收機(jī)仍然停止。
如眾所周知,空的另一定義是“真正空”(oe),它是電路中是否存在任何數(shù)據(jù)項的指示。由于一般通過同步來提供真正空信號(oe),真正空信號的一個缺點是它可導(dǎo)致下溢。
按照本發(fā)明的一個解決方案是適用雙模態(tài)空檢測器74(如下面更詳細(xì)的描述那樣,圖18-19中所描述的部件)。雙模態(tài)檢測器判定“近似空”(ne)狀態(tài)以及“真正空”(oe)狀態(tài)。然后,兩個空信號與接收機(jī)同步,并組合成全局空信號28(empty)。然而,近似空定義一般將優(yōu)先于真正空(oe)。
雙模態(tài)空檢測器部分地根據(jù)來自接收機(jī)的最近的取數(shù)請求的出現(xiàn)來提供全局空信號28(empty)。如果在至少一個時鐘周期內(nèi)不存在最近的取數(shù)請求,那么真正空信號(oe)處于支配地位。當(dāng)在FIFO電路100中有一個數(shù)據(jù)項時,這就變得重要。近似空信號(ne)指示出FIFO電路是空的,而真正空信號(oe)指示出FIFO電路不是空的。在該條件下,取數(shù)接口20需要接收數(shù)據(jù)項,使得真正空信號(oe)用于指示FIFO狀態(tài),即“不空”,并取消。然而,當(dāng)取數(shù)接口剛移除了一個數(shù)據(jù)項時,必須適用近似空信號(ne)來指示狀態(tài),即“空”,以便防止真正空信號(oe)的同步延遲可能造成的FIFO下溢。
根據(jù)另一個情況,F(xiàn)IFO電路可變空持續(xù)至少一個周期,即提供全局空信號28(empty)。在下一時鐘周期期間,真正空信號(oe)處于支配地位。
按照第1示例性實施例,用2個檢測器,即近似空檢測器120(圖18)和真正空檢測器130(圖19)來實現(xiàn)雙模態(tài)空檢測器74。如下參考圖19所述,把兩個信號組合在一起,以產(chǎn)生全局空信號28(empty)。圖18中所說明的近似空檢測器120與上述的滿檢測器72類似,它估計連續(xù)單元對(即f_0和f_1;f_1和f_2;f_2和f_3以及f_3和f_0)的滿比特188(f_i)。如果沒有發(fā)現(xiàn)兩個連續(xù)的單元對具有各自的數(shù)據(jù)項,則在信號121(empty_p)上提供FIFO電路100為空。使用一對鎖存器124和126使近似空信號122(ne)與取數(shù)時鐘信號22(CLK_get)同步。
圖19中說明的真正空檢測器130判定FIFO電路的“真正空”(oe)狀態(tài)。按照此定義,如果存在0個數(shù)據(jù)項,則FIFO電路100為空,在該情況下提供真正空信號132(oe)。從而,真正空檢測器130估計滿比特88(f_i),以判定是否存在任何數(shù)據(jù)項。通過同步使該真正空信號132(oe)延遲,這可導(dǎo)致下溢。為了避免該情況,在每次取數(shù)操作之后,把該真正空信號132(oe)同步地設(shè)置到一中性的“FIFO電路空”值。這是通過第1鎖存器134定時后的輸出信號138與第2鎖存器136之前的取數(shù)使能信號186(en_get)求邏輯或來實現(xiàn)。作為在每次取數(shù)操作之后設(shè)置“真正空”信號的結(jié)果,“真正空”信號(oe)沒有必要指示出在FIFO電路中沒有數(shù)據(jù)項。具體來說,如果存在多于一個數(shù)據(jù)項,并且提供了取數(shù)使能信號186(en_get),則真正空檢測器130將輸出真正空信號132(oe)。
按照本發(fā)明,通過近似空信號122和真正空信號132的組合,解決了潛在的死鎖問題。在大多數(shù)情況下,近似空檢測器120和真正空檢測器130產(chǎn)生相同的結(jié)果,即近似空信號122(ne)和真正空信號132(oe)是相同的。當(dāng)FIFO電路100包含一些數(shù)據(jù)項,以及在對鎖存器134定時與在對鎖存器136定時的時間間隔期間沒有提供取數(shù)使能信號186(en_get)時,真正空信號132(oe)和近似空信號122(ne)都指示出FIFO電路100是不空的,即這兩個信號都取消。類似地,當(dāng)FIFO電路100包含0個數(shù)據(jù)項時,真正空信號132(oe)和近似空信號122(ne)都指示出FIFO電路是空的,即提供兩個信號。
當(dāng)FIFO電路100恰好只包含1個數(shù)據(jù)項時,發(fā)生不同的情況,即近似空信號122指示出FIFO電路“空”(ne=1),而在隨后的間隔期間缺少提供取數(shù)使能信號186(en_get)的情況下,真正空信號132卻指示出FIFO電路“不空”(oe=0)。在取數(shù)接口使FIFO中的倒數(shù)第二個數(shù)據(jù)項移除之后,該情況會發(fā)生。下一步驟將取決于是否有另一個取數(shù)請求(1)如果在當(dāng)前時鐘周期中有另一個取數(shù)請求,則滿足該請求,并且近似空檢測器120將提供FIFO空(即提供近似空信號(ne))并將在下一時鐘周期停止該取數(shù)接口。(2)如果沒有取數(shù)請求,則真正空檢測器130將在下一時鐘周期中占支配地位,并提供FIFO不空(即取消真正空信號(oe)),允許滿足隨后的取數(shù)請求。只要最后一個數(shù)據(jù)項出隊,近似空信號(ne)立即再次占據(jù)支配地位,并即時停止取數(shù)接口。此時,不能滿足進(jìn)一步的取數(shù)請求,從而再次使用近似空信號(ne)來指示FIFO 100的狀態(tài)。
圖20中示出了置數(shù)控制器176。置數(shù)控制器176使能或禁用的FIFO電路100中置數(shù)操作和置數(shù)標(biāo)記的移動。如圖20中所說明的那樣,僅當(dāng)在data_put上存在有效數(shù)據(jù)項,即已提供置數(shù)請求信號18(req_put)并且FIFO電路不滿,即還未提供全局滿信號18(full)時,使能這些操作。在上述的情況下,其中FIFO電路變空持續(xù)至少一個周期,取消取數(shù)使能信號186(en_get),不管接收機(jī)是否作出取數(shù)請求信號24(req_get)。在這樣的情況下,在下一時鐘周期中真正空信號18(oe)不被復(fù)位,并能夠進(jìn)行支配。在該情況下,一旦FIFO空,如果置數(shù)接口使一單個數(shù)據(jù)項入隊,則真正空信號(oe)仍將處于支配地位,最終將取消oe,并且隨后將取消全局空信號28(empty),取數(shù)接口20將能夠移除數(shù)據(jù)項,從而避免死鎖。
圖21中所說明的取數(shù)控制器178使能和禁用FIFO電路100中取數(shù)操作和取數(shù)標(biāo)記的移動。僅當(dāng)存在來自接收機(jī)的請求,即提供了取數(shù)請求信號24(req_get),并且近似空檢測器120和真正空檢測器130中至少一個指示出FIFO電路100不空時,提供取數(shù)使能信號186(en_get)。
按照本發(fā)明的第2實施例的FIFO電路200(圖7和圖8)和按照本發(fā)明的第3實施例的FIFO電路300(圖9和圖10)中的每一個都具有一個異步接口和一個同步接口。如上參考圖7-8所述,F(xiàn)IFO電路200具有異步置數(shù)接口和同步取數(shù)接口,而如上參考圖9-10所述的FIFO電路300具有同步置數(shù)接口和異步取數(shù)接口。因此,F(xiàn)IFO電路200和300的每一個利用上述FIFO電路100的某些同步部件。特別地,同步置數(shù)接口10用作FIFO電路300中的置數(shù)接口。類似地,F(xiàn)IFO電路100中的同步取數(shù)接口20用于FIFO電路200之中,作為取數(shù)接口。
如上所述,各單元具有4個不同的部分置數(shù)部件、取數(shù)部件、數(shù)據(jù)有效性(DV)控制器以及寄存器。單元270a-d和370a-d中的每一個分別使用一種型式的數(shù)據(jù)有效性控制器,即數(shù)據(jù)有效性控制器280和數(shù)據(jù)有效性控制器380。在上述單元170a中(圖16),數(shù)據(jù)有效性控制器是簡單的(SR鎖存器180)。然而,對于具有同步和異步部件兩者的FIFO電路200和300來說,其行為變得更為復(fù)雜。這些設(shè)計允許對同一單元的寫操作和讀操作之間的更多個并行。因此,如下面將描述的那樣,數(shù)據(jù)有效性控制器必須考慮這種提高的并行性。
上面參考圖7描述了按照第2實施例的FIFO電路的接口,即異步-同步FIFO電路200。通過使用異步置數(shù)接口40(圖3)和同步取數(shù)接口20(圖2)來實現(xiàn)。參考圖12-13描述了這些接口上的FIFO電路協(xié)議,并且圖7-8中示出了FIFO電路200的結(jié)構(gòu)。具體參考圖8,F(xiàn)IFO電路200使用若干上面已描述的部件,即諸如取數(shù)控制器278、空檢測器74和同步單元部件之類的接口部件。單元270a-d中剩余的部件,即異步置數(shù)部件和數(shù)據(jù)有效性控制器將在這里參考圖22-23進(jìn)行描述。
圖23中所示的單元270a的同步部分與FIFO電路100(圖6)中的單元170a(圖16)的對應(yīng)部件等同。單元270a的異步部分可分解成若干塊。置數(shù)部件部分包括“獲得置數(shù)標(biāo)記”塊293(OPT)以及C元件295?!矮@得置數(shù)標(biāo)記”塊293(OPT)從右邊的接口在置數(shù)標(biāo)記輸入290(wel)上獲得相應(yīng)的置數(shù)標(biāo)記。它實現(xiàn)為如圖24所示的突發(fā)模式(Burst-mode)機(jī)。(突發(fā)模式機(jī)也詳細(xì)地描述于通過引用而完全結(jié)合于此的IEEE ASYNCH’00研討會中的T.Chelcea等人的“Low-Latency Asynchronous FIFO’s using Token Rings”210-220頁)。如圖24的突發(fā)模式說明所示,“獲得置數(shù)標(biāo)記”塊293觀測右邊的單元,并等待一次置數(shù)操作。一次完整的標(biāo)記傳送由右邊的單元指出,該單元首先在步驟402設(shè)置置數(shù)標(biāo)記輸入290(wel),然后在步驟404復(fù)位置數(shù)標(biāo)記輸入290(wel)。在該操作發(fā)生以后,置數(shù)標(biāo)記處于當(dāng)前的單元之中,即設(shè)置了置數(shù)標(biāo)記信號297(ptok)(步驟404)。當(dāng)設(shè)置了置數(shù)標(biāo)記信號297(ptok)時,也可以產(chǎn)生另一置數(shù)操作。一旦該置數(shù)操作開始,則復(fù)位置數(shù)標(biāo)記信號297(ptok),并且在步驟406設(shè)置置數(shù)標(biāo)記輸出294(we)。當(dāng)該置數(shù)操作結(jié)束時,復(fù)位置數(shù)標(biāo)記輸出294(we),把該置數(shù)標(biāo)記發(fā)送到下一單元,并且該循環(huán)重新開始。圖25(a)中說明了“獲得置數(shù)標(biāo)記”塊293(OPT)的第1示例性實施例。圖25(b)中說明了“獲得置數(shù)標(biāo)記”塊293’(OPT)的第2示例性實施例。
如圖26中所示,置數(shù)操作由C元件295控制。如本領(lǐng)域中所知的那樣,當(dāng)所有的輸入都是1時,異步C元件295的輸出為1;當(dāng)其所有輸入變?yōu)?時,它的輸出變?yōu)?。在異步C元件中,某些輸入(以‘+’標(biāo)記)僅參與把該元件的輸出設(shè)置到1;它們的值對于其它輸出轉(zhuǎn)換來說是無關(guān)的。
對于異步置數(shù)操作,單元270a(圖23)的行為如下進(jìn)行一開始,單元270a起始于空狀態(tài)(e_i=1以及f_i=0),并且置數(shù)標(biāo)記或取數(shù)標(biāo)記都不存在。在置數(shù)標(biāo)記輸入290(wel)上的一對轉(zhuǎn)換之后,置數(shù)標(biāo)記處于單元中(ptok=1)。當(dāng)環(huán)境在置數(shù)請求信號44上請求置數(shù)操作(put_req=1),并且單元為空(e_i=1)時,設(shè)置置數(shù)標(biāo)記輸出294(we)。該事件引起若干并行操作由數(shù)據(jù)有效性控制器280(DV_as)將單元的狀態(tài)改變到滿(即提供了滿比特288a(f_i));寄存器291(REG)得到使能,以鎖存數(shù)據(jù),并且單元270a開始把置數(shù)標(biāo)記發(fā)送到左邊的單元,并復(fù)位OPT(ptok=0)。當(dāng)取消置數(shù)請求信號44(put_req)時,也取消了置數(shù)標(biāo)記輸出294(we)。該事件完成了把置數(shù)標(biāo)記發(fā)送到左邊的單元?,F(xiàn)在,單元270準(zhǔn)備好在寄存器291(REG)中的數(shù)據(jù)出隊之后開始另一次置數(shù)操作。
單元270a中的同步取數(shù)操作在數(shù)據(jù)項存在于單元中之后開始。一旦設(shè)置了滿比特288a(f_i),空檢測器74(圖8)把FIFO電路200的狀態(tài)計算為“不空”,并在取數(shù)使能信號86(en_get)上傳送取數(shù)請求24(req_get)。當(dāng)單元270a具有取數(shù)標(biāo)記時,于是寄存器291(REG)中的內(nèi)容輸出到取數(shù)數(shù)據(jù)總線26(data_get);在接收機(jī)時鐘信號22(CLK_get)的下一上升沿,該取數(shù)標(biāo)記傳送到下一單元。同時,數(shù)據(jù)有效性控制器280(DV_as)把該單元的狀態(tài)改變到“空”。注意當(dāng)單元具有取數(shù)標(biāo)記時(gtok=1),就把單元的有效性比特在有效性數(shù)據(jù)總線284(valid_i)上傳播,而不管取數(shù)請求86(en_get)上的信號。這確保了有效性總線284(valid_i)上的信號始終是驅(qū)動到某一值。
如圖27中所示,數(shù)據(jù)有效性控制器280(DV_as)指示出單元何時包含數(shù)據(jù)項;從而它控制置數(shù)和取數(shù)操作。它接受置數(shù)標(biāo)記輸出294(we)和讀取使能信號299(re)作為輸入,前者用信號通知正在發(fā)生置數(shù)操作,后者用信號通知正在發(fā)生取數(shù)操作。數(shù)據(jù)有效性控制器280(DV_as)的輸出是空比特282a(e_i)以及滿比特288a(f_i),前者指示出單元270a為空(在該實施例中僅內(nèi)部使用),后者指示出單元270a為滿(在該實施例中用于空檢測器之中)。
圖28中按皮特里網(wǎng)(Petri-Net)410示出了數(shù)據(jù)有效性控制器280(DV_as)的協(xié)議。(皮特里網(wǎng)是眾所周知的通常用于描述并行行為的圖形表示)。它由轉(zhuǎn)移組成,這些轉(zhuǎn)移由標(biāo)記的事件、位置指出,存儲著由黑點指示出的標(biāo)記。當(dāng)其所有進(jìn)入弧線具有標(biāo)記時,激發(fā)一次轉(zhuǎn)移,然后標(biāo)記存儲在該此轉(zhuǎn)移的所有輸出弧線上。(關(guān)于皮特里網(wǎng)的更詳細(xì)的內(nèi)容討論于IEEE會刊1989年4月的77(4)Tadao Murata的“Petri NetsProperties,Analysisand Applications”;國際時控皮特里網(wǎng)專題討論會(意大利托里諾,1985年7月)會刊中的L.Y.Rosenblum和A.V.Yakolev的“Signal GraphsFromSelf-Timed to Timed Ones”;以及集成VLSI雜志(1986年6月4(2)99-113頁)中的Tam-Anh Chu的“On the Models for Designing VLSI AsynchronousDigital Circuits”,通過引用把它們完全結(jié)合于此。)一旦一次置數(shù)操作開始,數(shù)據(jù)有效性控制器280(DV_as)復(fù)位空比特282(e_i=0),并設(shè)置滿比特288a(f_i=1),從而在412提供該單元滿得能夠進(jìn)行取數(shù)操作。在414處的取數(shù)操作開始之后(re+),在415,在CLK_get時鐘周期的中間異步地提供該單元“不滿”(fi=0)。當(dāng)在416該取數(shù)操作結(jié)束(在CLK_get的下一上升沿上),在417,數(shù)據(jù)有效性控制器280(DV_as)把單元270a設(shè)置到“空”(ei=1)。在418復(fù)位置數(shù)標(biāo)記輸出294(we),并且該行為可重新開始。這種不對稱的行為延遲了置數(shù)標(biāo)記的傳送,以防止在取數(shù)操作仍在進(jìn)行的同時由置數(shù)操作引起的數(shù)據(jù)訛誤。
這里將詳細(xì)描述按照所述第3示例性實施例的FIFO電路,即同步-異步FIFO電路300(圖9和圖10)。上面參考圖9描述了FIFO電路300的接口。通過“選用”同步置數(shù)接口10(見圖1)和異步取數(shù)接口50(見圖4)來獲得這些接口。參考圖11和14描述了這些接口上的FIFO電路協(xié)議,并且圖9-10中說明了FIFO電路300的結(jié)構(gòu)。參考圖10,F(xiàn)IFO電路300使用若干上述已描述的部件,即諸如置數(shù)控制器376、滿檢測器72和同步單元部件之類的接口部件。這里將參考圖29和30描述單元370a中剩余的部件,如異步取數(shù)部件和數(shù)據(jù)有效性控制器(DV_sa)。
圖29中示出了示例性單元390a的接口(單元370a、370b、370c和370d的每一個都是等同的)。單元370a在4個接口上通信(1)同步置數(shù)接口371,(2)異步取數(shù)接口372,(3)與右邊的(即前一個)單元的接口,以獲得標(biāo)記,以及(4)與左邊的(即下一個)單元的接口,以傳送標(biāo)記。在同步置數(shù)接口上,單元370a接收公共置數(shù)數(shù)據(jù)總線16(data_put)上的數(shù)據(jù)。置數(shù)使能信號80(en_put)使其能夠執(zhí)行置數(shù)操作,該信號是置數(shù)控制器76(見圖10)的輸出。置數(shù)請求信號14(req_put)指示出數(shù)據(jù)有效性(在本實施例中始終提供)。單元370a用空比特82(e_i)與滿檢測器72(圖10)通信,當(dāng)單元370a是空的時候,提供所述空比特。置數(shù)操作由發(fā)送器時鐘信號12(CLK_put)控制。各個單元370a-d與異步取數(shù)接口372通信,以在取數(shù)數(shù)據(jù)總線56(get_data)上傳送數(shù)據(jù),各個單元370a-d接收對一次取數(shù)操作的全局請求54(get_req),并且各個單元370a-d在55(get_ack)上指示出出隊操作的結(jié)束。由于異步取數(shù)接口50僅傳送有效數(shù)據(jù)(見圖4),所以有效比特不用于單元370a的異步取數(shù)接口。各個單元接收置數(shù)標(biāo)記輸入90(ptok_in)上的置數(shù)標(biāo)記,以及取數(shù)標(biāo)記輸入392(rel)上的取數(shù)標(biāo)記;它在置數(shù)標(biāo)記輸出94(ptok_out)上傳送標(biāo)記,以及在取數(shù)標(biāo)記輸出396(re)上傳送取數(shù)標(biāo)記。
單元370a的同步部分與FIFO電路100(見圖16)的單元170的對應(yīng)部件等同。參考圖30,單元370a的異步部分可分解成若干塊,如“獲得取數(shù)標(biāo)記”塊393(OGT)以及不對稱C元件395?!矮@得取數(shù)標(biāo)記”塊393(OGT)獲得來自右邊的接口的取數(shù)標(biāo)記輸入392(rel)上的取數(shù)標(biāo)記?!矮@得取數(shù)標(biāo)記”塊393(OGT)實現(xiàn)為圖31(a)中所說明的突發(fā)模式異步狀態(tài)機(jī)。圖31(b)中說明了“獲得取數(shù)標(biāo)記”塊393’(OGT)的另一示例性實現(xiàn)。圖32中說明了突發(fā)模式說明420。“獲得取數(shù)標(biāo)記”塊393(OGT)觀測右邊的單元,并等待一次取數(shù)操作。右邊的單元分別在步驟422和424,通過首先設(shè)置,然后復(fù)位取數(shù)標(biāo)記輸入392(rel)(圖30),來指示出完整的標(biāo)記傳送。隨著那些操作完成,取數(shù)標(biāo)記就處于當(dāng)前的單元之中,即在圖32中設(shè)置了(步驟424)取數(shù)標(biāo)記信號397(gtok)。按不對稱C元件395(圖30)的控制,在步驟426(圖32)設(shè)置取數(shù)標(biāo)記輸出396(re)(圖30)。當(dāng)單元滿時,當(dāng)它具有取數(shù)標(biāo)記時,以及當(dāng)接收機(jī)請求數(shù)據(jù)項時,開始取數(shù)操作。一旦完成了出隊,通過復(fù)位請求以及隨后復(fù)位確認(rèn),結(jié)束了與接收機(jī)的通信。在427,連同當(dāng)前單元的取數(shù)標(biāo)記信號397(gtok)一起,復(fù)位取數(shù)標(biāo)記輸出366(re)。
單元370a以與單元170a類似的方式執(zhí)行置數(shù)操作。當(dāng)單元在置數(shù)使能信號80(en_put)上得到使能,并具有置數(shù)標(biāo)記(ptok_in=1)時,寄存器(REG)得到使能,以使數(shù)據(jù)以及用作有效性比特的置數(shù)請求14(req_put)入隊。并行地,數(shù)據(jù)有效性控制器380(DV_sa)提供單元370滿。在發(fā)送器時鐘12(CLK_put)的時鐘周期的起始處,數(shù)據(jù)鎖存入寄存器,并且取數(shù)標(biāo)記傳送到下一單元。
取數(shù)操作如下執(zhí)行。一開始,單元370a在沒有取數(shù)標(biāo)記(gtok=0)的條件下開始?!矮@得取數(shù)標(biāo)記”塊393(OGT)等待取數(shù)標(biāo)記輸入392(rel)上的上下轉(zhuǎn)換;一旦這些發(fā)生,取數(shù)標(biāo)記就處于單元之中(gtok=1),并且把寄存器391(REG)的輸出驅(qū)動到取數(shù)數(shù)據(jù)總線56(get_data)上。異步取數(shù)接口不使用經(jīng)鎖存的有效性比特。單元370a等待接收機(jī)子系統(tǒng)(或環(huán)境)請求數(shù)據(jù)項,以便提供取數(shù)請求信號54(get_req=1)。當(dāng)這發(fā)生時,僅當(dāng)單元獲得數(shù)據(jù)項時,即提供了滿比特388a(f_i=1)時,單元370a才確認(rèn)它取數(shù)請求信號。當(dāng)滿足這3個條件時(即gtok=1、get_req=1以及f_i=1),設(shè)置取數(shù)標(biāo)記輸出396(re);該事件向環(huán)境確認(rèn)數(shù)據(jù)操作,開始復(fù)位“獲得取數(shù)標(biāo)記”塊393(OGT),開始在數(shù)據(jù)有效性控制器380(DV_sa)中復(fù)位單元的狀態(tài),以及開始向下一單元發(fā)送取數(shù)標(biāo)記。通過取消取數(shù)請求信號54(get_req),完成了取數(shù)接口上的操作循環(huán),前者引起了取數(shù)標(biāo)記輸出396(re)的取消以及在取數(shù)標(biāo)記輸出396(re)的上升沿上開始的所有操作的完成。
數(shù)據(jù)有效性控制器380(DV_sa)指示出單元何時是滿的或空的,并示于圖34。圖35中以皮特里網(wǎng)430示出了數(shù)據(jù)有效性控制器380(DV_sa)的協(xié)議。在正常的空狀態(tài)下,提供空比特382a(e_i=1),而取消滿比特388(f_i=0)。當(dāng)置數(shù)操作開始時,數(shù)據(jù)有效性控制器380(DV_sa)并行地在步驟431復(fù)位空比特382(e_i)以及在步驟432設(shè)置滿比特(f_i)(即單元370a的狀態(tài)變成“滿”),從而使能一次取數(shù)操作??膳c取數(shù)操作并行地執(zhí)行置數(shù)操作的結(jié)束,即寫使能信號394(we)的取消(步驟433)。在信號re發(fā)生下落轉(zhuǎn)移之后,由取數(shù)標(biāo)記輸出396(re)上的一對轉(zhuǎn)移用信號表示取數(shù)操作(步驟434和435),在步驟436和437,單元的狀態(tài)改變到“空”(e_i=0以及f_i=0),并且該正常操作可重新開始。
這里描述的若干另外的實施例基本上類似于上述FIFO電路100、200和300,但已經(jīng)過修改,以作為發(fā)送器和接收機(jī)之間的中繼站操作。如圖36中所說明的那樣,系統(tǒng)450可包括兩個子系統(tǒng),如發(fā)送器子系統(tǒng)452和接收機(jī)子系統(tǒng)454,通過非常長的導(dǎo)線456和458把它們相連。按此配置,在子系統(tǒng)452和子系統(tǒng)454之間傳播的信號可能要花費(fèi)若干時鐘周期來傳播,并且可能引入延遲損失。如圖37中所示,經(jīng)修改的系統(tǒng)460引入了中繼站462a、462b、462c、462d,來緩解子系統(tǒng)464和子系統(tǒng)466之間的連接延遲損失,兩個基站都必須工作于相同的時鐘之下。中繼站462a、462b、462c和462d的插入將長導(dǎo)線劃分成段468和470,各自對應(yīng)于少于一個時鐘周期的延遲。通過從一個系統(tǒng)發(fā)送數(shù)據(jù)包到另一個系統(tǒng),中繼站鏈以類似于FIFO電路的方式操作。
圖38中給出了本領(lǐng)域中已知的諸如中繼站462b之類的單時鐘中繼站的實現(xiàn)。正常情況下,來自左邊的中繼站的數(shù)據(jù)包傳送到右邊的中繼站。在圖37中,一般從中繼站462a把數(shù)據(jù)包傳送到中繼站462b。右邊的中繼站,即中繼站462b也能夠通過停止左邊的中繼站,即中繼站462a來在數(shù)據(jù)流設(shè)置反壓力。如圖38所示,示例性中繼站462b位于中繼站462a和中繼站462c之間(見圖37)。參考圖38,中繼站462b具有兩個寄存器。主寄存器472(MR)用于正常操作,而輔助寄存器474(AR)用于當(dāng)停止時存儲額外的數(shù)據(jù)包。不同于混合時鐘周期FIFO電路100,中繼站不包括滿和空信號,也不包括置數(shù)請求和取數(shù)請求。相反,在正常操作中,在每個時鐘周期上傳送數(shù)據(jù)。由于數(shù)據(jù)傳送通常是連續(xù)的,有效的和無效的數(shù)據(jù)都得到傳送,其中只要無有效數(shù)據(jù)入隊,便傳送了無效數(shù)據(jù)。因此,有效比特依附于置數(shù)和取數(shù)數(shù)據(jù)總線兩者,在各接口上形成數(shù)據(jù)包。
參考圖37-38,中繼站462b(基本上等同于中繼站462a、462c和462d)如下操作。在正常操作中,在每個時鐘周期的開始處,根據(jù)來自左邊的中繼站462a的數(shù)據(jù)包輸入信號468(packetIn)所接收的數(shù)據(jù)包復(fù)制到主寄存器472(MR)中,并然后根據(jù)數(shù)據(jù)包輸出信號470(packetOut)上發(fā)送到右邊的中繼站462c。一個數(shù)據(jù)包由一條數(shù)據(jù)總線上的一個數(shù)據(jù)項和一個有效比特組成,該有效比特指示出該數(shù)據(jù)包中的數(shù)據(jù)的有效性。如果接收機(jī)系統(tǒng)466想要停止接收數(shù)據(jù),它就提供stopIn 476。在下一時鐘沿上,中繼站462b提供stopOut 478,并將下一數(shù)據(jù)包鎖存到輔助寄存器474(AR)中。此時,該單元將停止。當(dāng)中繼站462b處于非停止的時候,它將首先從主寄存器472(MR)向右邊的中繼站462c發(fā)送數(shù)據(jù)包,并隨后從輔助寄存器474(AR)發(fā)送一個數(shù)據(jù)包。
參考圖39,F(xiàn)IFO電路500作為混合時鐘中繼站操作。FIFO電路500基本上等同于FIFO電路100(圖5和圖6中所示),這里僅注釋其差異。圖39中說明了FIFO電路500與中繼站的接口。FIFO電路500置于如圖37所示的中繼站鏈之中,并在左邊的一個中繼站和右邊的一個中繼站之間接口,所述左邊的中繼站諸如包括中繼站462a和462b,所述右邊的中繼站諸如包括中繼站462c和462d。不同于圖37中所說明的工作于單時鐘之下的系統(tǒng)460,各中繼站鏈可工作于不同的時鐘之下,如中繼站鏈462a/462b操作于第1時鐘域502之下,中繼站鏈462c/462d操作于第2時鐘域504之下。
與上述FIFO電路100相反,F(xiàn)IFO電路500總是從左邊置數(shù)接口506向右邊取數(shù)接口508傳送有效數(shù)據(jù)項。在FIFO電路500的協(xié)議中,在任一接口上無主動請求。相反,取數(shù)接口508和置數(shù)接口506配置成能主動停止或中斷數(shù)據(jù)項的連續(xù)流。取數(shù)接口508在接收機(jī)時鐘22(CLK_get)的每個時鐘周期上根據(jù)數(shù)據(jù)包輸出信號470(PacketOut)從FIFO電路500將數(shù)據(jù)項從隊列取出。為了停止該流,中繼站462c提供stopIn 476。類似地,F(xiàn)IFO電路500總是從置數(shù)接口506根據(jù)數(shù)據(jù)包輸入信號468(packetIn)使數(shù)據(jù)項入隊。從而,不同于FIFO電路100,置數(shù)請求信號514(req_put)僅用于指示數(shù)據(jù)有效性,而把它作為數(shù)據(jù)包輸入信號468(packetIn)的一部分進(jìn)行處理,而不是作為控制信號。當(dāng)FIFO電路500變滿時,它通過提供stopOut 512來停止置數(shù)接口506,所述信號stopOut是全局滿信號18(full)。從而,不同于單時鐘中繼站系統(tǒng)460,混合時鐘FIFO電路中繼站500可在置數(shù)接口506被停止,以及提供StopOut 478,即使在取數(shù)接口508中還未提供StopIn 476。
FIFO電路500類似于FIFO電路100,這里僅注釋其中的若干修改。參考圖40,把滿檢測器72基本上實現(xiàn)為上述參考圖17-19所述的滿檢測器,以確定各個單元570a、570b、570c和570d中的空比特數(shù)582a、582b、582c和582d(e_i)。FIFO電路100的雙模態(tài)空檢測器74(見圖18-19)不需要了,因為FIFO電路中繼站一般在每個時鐘周期傳送數(shù)據(jù),固不會發(fā)生死鎖。相反,空檢測器574基本上等同于圖18中所示的近似空檢測器120。上述參考圖20-21所述的FIFO電路100的置數(shù)控制器176和取數(shù)控制器178在FIFO電路500中得到了修改。在FIFO電路100中,置數(shù)控制器176當(dāng)接收到置數(shù)請求信號14(req_put)時,使能有效數(shù)據(jù)項的入隊。FIFO電路500的置數(shù)控制器576簡單地允許有效數(shù)據(jù)通過。置數(shù)控制器576連續(xù)地使數(shù)據(jù)項入隊,直到FIFO電路變滿為止。從而,在示例性實施例中把置數(shù)控制器576實現(xiàn)為全局滿信號18(full)的倒相器(見圖41)。與FIFO電路100的取數(shù)控制器178相反,在其中按需進(jìn)行出隊,取數(shù)控制器578能夠連續(xù)進(jìn)行數(shù)據(jù)項的出隊。如圖42所示,僅當(dāng)FIFO電路500變空(如上所述,提供了近似空信號122(ne))或取數(shù)接口通過提供stopIn 476來用信號通知不再接受數(shù)據(jù)項時,中斷出隊操作。由于有效的和無效的數(shù)據(jù)都可傳送,取數(shù)控制器678還使用有效比特584(valid_i)來計算有效性信號30(valid_get)。
參考圖43、44、45、47、48和49,F(xiàn)IFO電路600和700是兩個另外的實施例,它們作為中繼站操作,配置成分別與混合異步-同步接口以及同步-異步接口操作。FIFO電路600和700同時針對兩個關(guān)鍵的設(shè)計挑戰(zhàn)混合異步/同步環(huán)境之間接口的能力以及長互連延遲。
圖43中說明了異步發(fā)送器490和同步接收機(jī)466之間帶有中繼站的通信的基本結(jié)構(gòu)。異步域把數(shù)據(jù)包發(fā)送到(可能通過異步中繼站(ARS)鏈494a和494b,這里將詳細(xì)討論)FIFO電路600。然后將所述數(shù)據(jù)包傳送到同步域,并通過同步中繼站鏈462a和462b發(fā)送到接收機(jī)466。
原則上,可使異步接口處的通信任意穩(wěn)固,使得在異步域輸出處不需要中繼站。然而實際上,在FIFO設(shè)計需要強(qiáng)調(diào)正確性和性能問題。本領(lǐng)域中已知兩種普通的異步數(shù)據(jù)編碼形式雙軌和單軌成束數(shù)據(jù)(bundled data)。(單軌成束數(shù)據(jù)詳細(xì)描述于“亞微米電子學(xué)”的會刊中的S.Furber的“Asynchronous Design”461-492頁(1997年)。)雙軌形式在一對導(dǎo)線上對各個數(shù)據(jù)比特的值和有效性進(jìn)行編碼,它相對于導(dǎo)線延遲是任意穩(wěn)固的(但具有顯著的開銷)并且不需要ARS鏈。單軌成束數(shù)據(jù)類型在數(shù)據(jù)自身和控制線之間具有定時假設(shè),使得希望有ARS鏈來把級間的導(dǎo)線長度限制到短的中繼段。最后,對于性能問題,即使不要求ARS,也希望有ARS來提高吞吐量??赏ㄟ^使用通常稱為微流水線(micro-pipeline)的異步FIFO電路來直接實現(xiàn)ARS鏈(微流水線的詳細(xì)內(nèi)容描述于1989年ACM通信32(6)中的I Sutherland的“Micropipelines”720-738頁,以及2000年ACM TAU-00專題討論會中的M.Singh等人的“MOUSETRAPUltra High-Speed Transition-SignalingAsynchronous Pipelines”,通過引用而把它們完全結(jié)合于此)。
不同于同步數(shù)據(jù)包,異步數(shù)據(jù)包不需要有效性比特。相反,在控制請求線上用信號通知有效數(shù)據(jù)包的存在,并且ARS能夠在接受數(shù)據(jù)包之間無限地等待。因此,標(biāo)準(zhǔn)的微流水線實現(xiàn)了所希望的ARS行為。
圖44和45中說明的FIFO電路600在異步域602和同步域604之間操作。異步接口640與先前描述的FIFO電路200中的異步接口40等同,并支持相同的通信協(xié)議。該接口能精確地與微流水線接口相匹配。類似地,同步接口620與FIFO電路500中相應(yīng)的同步接口508等同,并支持相同的通信協(xié)議。參考圖45,在結(jié)構(gòu)層上,F(xiàn)IFO電路600等同于圖8中所示的FIFO電路200。單元670a、670b、670c和670d基本上等同于單元270a、270b、270c和270d。如下將描述的那樣,取數(shù)控制器678不同于取數(shù)控制器278(后者基本上等同于取數(shù)控制器178)。空檢測器674基本上等同于FIFO電路500中的空檢測器574。并且對應(yīng)于上述圖18中所示的近似空檢測器120。
FIFO電路600如下操作。只要在異步接口640存在數(shù)據(jù)項,F(xiàn)IFO電路600就使之入隊。在同步接口620上,除非FIFO電路600為空或者右邊的中繼站將其停止,否則它每個時鐘周期輸出一個數(shù)據(jù)項。從而,不同于FIFO電路500,只要FIFO電路600被停止時,數(shù)據(jù)包才是無效的。當(dāng)FIFO電路600是空的或從右邊被停止時,停止取數(shù)接口620。然而,由于FIFO電路600不使無效數(shù)據(jù)包入隊,除非FIFO電路600停止,否則右邊的接口僅接收有效數(shù)據(jù)包。
圖46中說明了取數(shù)控制器678的實現(xiàn)。當(dāng)從右邊停止取數(shù)控制器678(stiopIn=0)時,以及當(dāng)中繼站不空(ne=0)時,取數(shù)控制器678使能取數(shù)操作(en_get=1)。該操作與FIFO電路100的取數(shù)控制器178類似。如果中繼站停止或者它是空的,發(fā)送到右邊的數(shù)據(jù)包則是無效的。因此,從異步接口接收的所有數(shù)據(jù)包都是有效地,并且從而不需要明顯的有效性比特,相反,取數(shù)使能信號686(en_get)用作有效性信號30(valid_get)。
圖47中說明了同步發(fā)送器464和異步接收機(jī)492之間帶有中繼站的通信的基本結(jié)構(gòu)。同步域通過同步中繼站鏈462a和462b向FIFO電路800發(fā)送數(shù)據(jù)包。然后最好通過異步域中的ARS鏈494a和494b,把數(shù)據(jù)包傳送到異步接收機(jī)492。
圖48中說明了FIFO電路700的接口。異步接口750基本上等同于圖9中所示的FIFO電路500的異步接口50,并支持相同的通信協(xié)議。類似地,圖48中所示的同步接口710基本上等同于FIFO電路300的同步接口10,并支持相同的通信協(xié)議。圖49中示出的FIFO電路700的單元770a、770b、770c和770d基本上等同于圖10中所示的FIFO電路的單元370a、370b、370c和370d。FIFO電路700和FIFO電路300中的唯一顯著差異是各FIFO電路的置數(shù)控制器。
在正常操作期間,F(xiàn)IFO電路700從同步接口將數(shù)據(jù)包發(fā)送到異步接口。只要FIFO電路700提供數(shù)據(jù),右邊的異步中繼站就使數(shù)據(jù)包入隊。然而,在同步接口上,F(xiàn)IFO電路700充當(dāng)過濾器,因為所有的異步數(shù)據(jù)包必須有效。進(jìn)入的同步數(shù)據(jù)包的有效性比特14(valid_put)用于對異步數(shù)據(jù)包進(jìn)行過濾。特別地,當(dāng)數(shù)據(jù)包是有效的時候,F(xiàn)IFO電路700配置成使之入隊;否則,它配置成丟棄該數(shù)據(jù)包。FIFO電路700僅使有效數(shù)據(jù)包入隊,并當(dāng)FIFO電路700滿時,停止置數(shù)接口。如上所述,F(xiàn)IFO電路500使所接收的所有數(shù)據(jù)包入隊,并且當(dāng)沒有滿的單元時停止。相反,F(xiàn)IFO電路700在下面的條件下停止(1)當(dāng)FIFO電路是滿的時,和/或(2)當(dāng)接收到無效數(shù)據(jù)包時。
圖50中給出了置數(shù)控制器776的示例性實現(xiàn)。僅當(dāng)中繼站不滿(full=0)并且進(jìn)入的數(shù)據(jù)包是有效的(valid_put=1)時候,置數(shù)控制器776才使能置數(shù)操作(en_put=1)。置數(shù)控制器776的實現(xiàn)類似于置數(shù)控制器176,但是顯式的置數(shù)請求信號(如req_put)的作用已由伴隨每個數(shù)據(jù)包的隱式的有效比特14(valid_put)替代。
實例為了評估各種FIFO電路設(shè)計的性能,對各個示例性FIFO電路100、200、300、500、600和700進(jìn)行模擬。使用商用和學(xué)術(shù)用工具對各個FIFO電路進(jìn)行模擬。使用庫存電路或定制電路來構(gòu)建諸設(shè)計,并使用Cadence HSPICE進(jìn)行模擬。使用Minimalist(Minimalist詳細(xì)描述于CUCS-020-99中的R.Fuhrer等人的“MINIMALISTAn Environment for Synthesis,Verification andTestability of Burst-Mode Asynchronous Machines”之中,通過引用把它完全結(jié)合于此)來綜合突發(fā)模式控制器,并且使用Petrify來綜合皮特里網(wǎng)控制器(Petrify詳細(xì)描述于1997年3月的IEICE信息和系統(tǒng)學(xué)報卷E80-D,第3號中的J.Cortadella等人的“PetrifyA Tool for ManipulatingConcurrent Specifications and Synthesis of Asynchronous Controller”315-325頁,通過引用而把它完全結(jié)合于此)。以0.6μ的HP的CMOS技術(shù),以3.3V和300K的條件,對FIFO電路設(shè)計進(jìn)行模擬。
下述是對控制和數(shù)據(jù)全局總線的建模中的特別考慮控制總線put_req/en_put以及get_req/en_get插入適當(dāng)?shù)木彌_。把確認(rèn)信號put_ack和get_ack構(gòu)造成或門樹形結(jié)構(gòu),該結(jié)構(gòu)將單獨(dú)的確認(rèn)信號合并成一單個全局信號。在對get_data和data_get建模中,總線中的各個比特由三態(tài)緩沖器驅(qū)動。對環(huán)境和FIFO電路之內(nèi)的長導(dǎo)線所貢獻(xiàn)的負(fù)載進(jìn)行建模。該模型作出這樣的假設(shè),即環(huán)境對負(fù)載貢獻(xiàn)兩個反相器(粗略地對應(yīng)于一個鎖存器),以及各導(dǎo)線貢獻(xiàn)每個單元兩個反相器的電容(粗略地是每導(dǎo)線2n個反相器)。
對各種設(shè)計模擬兩種度量等待時間和吞吐量。等待時間是從置數(shù)接口上數(shù)據(jù)的輸入到它在一空的FIFO電路中的取數(shù)接口上的輸出所出現(xiàn)的延遲。吞吐量定義為一次置數(shù)或取數(shù)操作循環(huán)時間的反轉(zhuǎn)。已對于不同的FIFO電路容量和數(shù)據(jù)項寬度計算了吞吐量和等待時間。已把FIFO電路的容量設(shè)置成4個、8個或16個單元。對于這些FIFO電路中的每一個,已把數(shù)據(jù)項寬度設(shè)置為8比特或16比特。
表1和2給出了最大吞吐量的結(jié)果。對于同步接口,吞吐量表示為該接口定時的最大時鐘頻率。由于異步接口不具有時鐘,則以MegaOps/s(每秒鐘接口可執(zhí)行的數(shù)據(jù)操作數(shù))給出吞吐量。
表1
表2吞吐量結(jié)果符合FIFO電路設(shè)計。同步取數(shù)接口比同步置數(shù)接口慢,這是由于空檢測器74的復(fù)雜程度。同樣地,中繼站同步置數(shù)接口比它們的FIFO電路的對應(yīng)接口快一點,這是由于在前者中的置數(shù)檢測器的簡化。在同步端,取數(shù)接口趨于比置數(shù)接口快,因為在數(shù)據(jù)總線上較早地使能寄存器的輸出。
僅對8比特數(shù)據(jù)項的設(shè)計示出了通過空FIFO電路的等待時間(表3)。等待時間的實驗性設(shè)定如下在空FIFO電路中,取數(shù)接口請求數(shù)據(jù)項。在任意時間之后,置數(shù)接口設(shè)置一數(shù)據(jù)項。按照當(dāng)置數(shù)數(shù)據(jù)總線具有有效數(shù)據(jù)時的時刻到當(dāng)取數(shù)接口取得數(shù)據(jù)項并能使用它的時刻之間所流逝的時間來計算等待時間。
表3具有同步接收機(jī)的FIFO電路的等待時間不是唯一限定的。等待時間隨著數(shù)據(jù)項安全地入隊于一單元的時間而變化。如果緊接著CLK_get的上升沿之后由置數(shù)接口使數(shù)據(jù)項入隊,則等待時間增加(表中的“最大”欄)。如果正好在空檢測器開始計算之前使數(shù)據(jù)項入隊,那么等待時間減少(欄“最小”)。然而,異步接收機(jī)能夠緊接著數(shù)據(jù)項入隊之后就取得數(shù)據(jù)項;因此,等待時間是唯一限定的。更有趣的是,由于異步接收機(jī)不需要同步,可以使對異步域的通信的等待時間快得多。
吞吐量和等待時間結(jié)果對于基于總線的設(shè)計是相當(dāng)好的。如所期望的那樣,當(dāng)FIFO電路的容量和數(shù)據(jù)項寬度增加時,吞吐量和等待時間都減少。對于同步接口,吞吐量趨于比異步接口更高。當(dāng)接收機(jī)是異步的時候,通過空FIFO電路的等待時間較少。
應(yīng)該理解,上述僅是本發(fā)明的原理的說明,并且本領(lǐng)域的技術(shù)人員可以不背離本發(fā)明的范圍和要旨來對作出各種修改。
權(quán)利要求
1.一種FIFO電路,它在操作于第1時域下的發(fā)送器子系統(tǒng)和操作于第2時域下的接收機(jī)子系統(tǒng)之間接口數(shù)據(jù)項的傳送,其中所述第1時域和第2時域是不同的,并且至少一個時域按照一時鐘信號進(jìn)行操作,其特征在于所述FIFO電路包括配置成按照所述第1時域操作的置數(shù)接口,包括用于發(fā)送來自發(fā)送器子系統(tǒng)的數(shù)據(jù)項的置數(shù)數(shù)據(jù)總線,以及用于接收來自發(fā)送器子系統(tǒng)的置數(shù)請求的置數(shù)數(shù)據(jù)請求輸入,以將來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項入隊;配置成按照所述第2時域操作的取數(shù)接口,包括向接收機(jī)子系統(tǒng)傳送數(shù)據(jù)項的取數(shù)數(shù)據(jù)總線,以及接收來自發(fā)送器子系統(tǒng)的取數(shù)請求的取數(shù)數(shù)據(jù)請求輸入,以將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線;以及單元陣列,各單元包括寄存器,配置成接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,并向取數(shù)數(shù)據(jù)總線傳送數(shù)據(jù)項;狀態(tài)控制器,提供單元的狀態(tài)的指示;置數(shù)部件,配置成按照第1時域操作以接收來自第1相鄰單元的置數(shù)標(biāo)記,根據(jù)置數(shù)請求、置數(shù)標(biāo)記以及單元的狀態(tài)將從置數(shù)數(shù)據(jù)總線接收的數(shù)據(jù)項鎖存到寄存器,并將置數(shù)標(biāo)記傳送到第2相鄰單元;以及取數(shù)部件,配置成按照第2時域操作以接收來自第1相鄰單元的取數(shù)標(biāo)記,根據(jù)取數(shù)請求、取數(shù)標(biāo)記以及單元的狀態(tài)從寄存器將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線,以及將取數(shù)標(biāo)記傳送到第2相鄰單元。
2.如權(quán)利要求1所述的FIFO電路,其特征在于所述置數(shù)接口是同步的,并由第1時鐘信號控制,并且該置數(shù)接口還包括滿檢測器,它產(chǎn)生與第1時鐘信號同步的全局滿信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于空狀態(tài)時,提供該信號;以及置數(shù)控制器,配置成當(dāng)未提供全局滿信號時,將置數(shù)請求分發(fā)到單元陣列中的各單元的置數(shù)部件。
3.如權(quán)利要求2所述的FIFO電路,其特征在于所述單元陣列中的各單元的置數(shù)部件還包括由置數(shù)請求使能的同步鎖存器,它把置數(shù)標(biāo)記傳送到所述第2相鄰單元;配置成用信號通知狀態(tài)控制器根據(jù)置數(shù)請求和置數(shù)標(biāo)記來提供取消單元的空狀態(tài)的指示的電路。
4.如權(quán)利要求2所述的FIFO電路,其特征在于所述寄存器由置數(shù)請求使能,以接收數(shù)據(jù)項。
5.如權(quán)利要求2所述的FIFO電路,其特征在于所述控制接口是同步的,并由第2時鐘信號控制,并且該取數(shù)接口還包括第1空檢測器,它產(chǎn)生與第2時鐘信號同步的第1全局空信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于滿狀態(tài)時,提供該信號;產(chǎn)生第2全局空信號的第2空檢測器,包括產(chǎn)生第1中間信號的電路,當(dāng)陣列中無單元處于滿狀態(tài)時提供該信號;第1和第2鎖存器,使所述第1中間信號與所述第2時鐘信號同步;以及組合元件,它把第2中間信號與第1鎖存器和第2鎖存器之間的第1中間信號組合,其中當(dāng)取消所述第2中間信號時,所述第2全局空信號是第1中間信號,而當(dāng)提供所述第2中間信號時,所述第2全局空信號是第2中間信號;以及取數(shù)控制器,配置成當(dāng)取消所述第1全局空信號和所述第2全局空信號之一時,將取數(shù)請求分發(fā)到所述單元陣列中的各單元的取數(shù)部件。
6.如權(quán)利要求5所述的FIFO電路,其特征在于所述單元陣列中的各單元的取數(shù)部件還包括由取數(shù)請求使能的同步鎖存器,它把取數(shù)標(biāo)記傳送給所述第2相鄰單元;以及配置成用信號通知狀態(tài)控制器根據(jù)所述取數(shù)請求和取數(shù)標(biāo)記來提供取消單元的滿狀態(tài)的指示的電路。
7.如權(quán)利要求5所述的FIFO電路,其特征在于所述寄存器由所述取數(shù)請求和取數(shù)標(biāo)記使能,以把數(shù)據(jù)項傳送到取數(shù)數(shù)據(jù)總線。
8.如權(quán)利要求2所述的FIFO電路,其特征在于所述取數(shù)接口是異步的,并且單元陣列中的各單元的取數(shù)部件包括取數(shù)標(biāo)記傳送電路,該電路配置成根據(jù)來自所述第1相鄰單元的指示從第1相鄰單元的寄存器把數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線的信號,來接收單元陣列中的相應(yīng)單元的取數(shù)標(biāo)記。
9.如權(quán)利要求8所述的FIFO電路,其特征在于所述寄存器由所述取數(shù)標(biāo)記使能,以將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線。
10.如權(quán)利要求9所述的FIFO電路,其特征在于所述取數(shù)接口還包括取數(shù)確認(rèn)信號,并且所述取數(shù)部件還包括由所述取數(shù)標(biāo)記、取數(shù)請求和單元的狀態(tài)使能的取數(shù)控制電路,以用信號通知狀態(tài)控制器復(fù)位該單元的狀態(tài),以提供取數(shù)確認(rèn)信號。
11.如權(quán)利要求10所述的FIFO電路,其特征在于通過對傳送取數(shù)標(biāo)記到第2相鄰單元的取數(shù)請求取消來禁用取數(shù)控制電路。
12.如權(quán)利要求1所述的FIFO電路,其特征在于所述置數(shù)接口是異步的,并且單元陣列中的各單元的置數(shù)部件包括置數(shù)標(biāo)記傳送電路,該電路配置成根據(jù)來自第1相鄰單元的指示從置數(shù)數(shù)據(jù)總線將數(shù)據(jù)項鎖存到第1相鄰單元的寄存器的信號,來將置數(shù)標(biāo)記接收進(jìn)單元陣列中的相應(yīng)單元。
13.如權(quán)利要求12所述的FIFO電路,其特征在于所述置數(shù)接口還提供置數(shù)確認(rèn)信號,并且所述置數(shù)部件還包括由所述置數(shù)標(biāo)記、置數(shù)請求和單元的空狀態(tài)使能的置數(shù)控制電路,使寄存器能接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,用信號通知狀態(tài)控制器提供對單元狀態(tài)復(fù)位的指示,以及提供置數(shù)確認(rèn)信號。
14.如權(quán)利要求12所述的FIFO電路,其特征在于通過對傳送置數(shù)標(biāo)記到第2相鄰單元的置數(shù)請求的取消來禁用置數(shù)控制電路。
15.如權(quán)利要求12所述的FIFO電路,其特征在于所述第2時間域是同步的,并由第2時鐘信號控制,并且所述取數(shù)接口還包括第1空檢測器,它產(chǎn)生與第2時鐘信號同步的第1全局空信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于滿狀態(tài)時,提供該信號;產(chǎn)生第2全局空信號的第2空檢測器,包括產(chǎn)生第1中間信號的電路,當(dāng)陣列中無單元處于滿狀態(tài)時提供該信號;第1和第2鎖存器,使所述第1中間信號與所述第2時鐘信號同步;以及組合元件,它把第2中間信號與第1鎖存器和第2鎖存器之間的第1中間信號組合,其中當(dāng)取消所述第2中間信號時,所述第2全局空信號是第1中間信號,而當(dāng)提供所述第2中間信號時,所述第2全局空信號是第2中間信號;以及取數(shù)控制器,配置成當(dāng)取消所述第1全局空信號和所述第2全局空信號之一時,將取數(shù)請求分發(fā)到所述單元陣列中的各單元的取數(shù)部件。
16.如權(quán)利要求15所述的FIFO電路,其特征在于所述單元陣列中的各單元的取數(shù)部件還包括由取數(shù)請求使能的同步鎖存器,它把取數(shù)標(biāo)記傳送給所述第2相鄰單元;以及配置成用信號通知狀態(tài)控制器根據(jù)所述取數(shù)請求和取數(shù)標(biāo)記來提供單元的空狀態(tài)的指示的電路。
17.如權(quán)利要求16所述的FIFO電路,其特征在于所述寄存器由所述取數(shù)請求和取數(shù)標(biāo)記使能,以把數(shù)據(jù)項傳送到取數(shù)數(shù)據(jù)總線。
18.一種電路,它對從由第1時鐘信號控制的發(fā)送器子系統(tǒng)向由第2時鐘信號控制的接收機(jī)子系統(tǒng)的數(shù)據(jù)項的傳送進(jìn)行接口,所述數(shù)據(jù)項的傳送經(jīng)受發(fā)送器子系統(tǒng)和接收機(jī)子系統(tǒng)之間的延遲,其特征在于該電路包括第1中繼站鏈,依附于所述發(fā)送器子系統(tǒng)來傳送置數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有第1操作協(xié)議;第2中繼站鏈,依附于所述接收機(jī)子系統(tǒng)來接收取數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有第2操作協(xié)議;以及混合時鐘中繼站,它接收第1時鐘信號和第2時鐘信號,并按照所述第1中繼站鏈的操作協(xié)議和所述第2中繼站鏈的協(xié)議將數(shù)據(jù)項從第1中繼站鏈傳送到第2中繼站鏈,其中該混合時鐘中繼站包括單元陣列;滿檢測器,它產(chǎn)生與第1時鐘信號同步的滿信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于空狀態(tài)時,提供該信號;置數(shù)控制器,配置成如果沒有提供滿信號,則在所述第1時鐘信號的每個時鐘周期上將數(shù)據(jù)項入隊;空檢測器,它產(chǎn)生與第2時鐘信號同步的空信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于滿狀態(tài)時,提供該信號;以及取數(shù)控制器,配置成接收來自連接至混合時鐘站的第2中繼站鏈的一中繼站的停止信號,并配置成如果沒有提供空信號以及如果沒有提供停止信號,則在所述第2時鐘信號的每個時鐘周期上使能數(shù)據(jù)項的出隊。
19.如權(quán)利要求18所述的電路,其特征在于所述單元陣列中的各單元包括寄存器,配置成接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,并向取數(shù)數(shù)據(jù)總線傳送數(shù)據(jù)項;狀態(tài)控制器,提供單元的狀態(tài)的指示;置數(shù)部件,配置成按照第1操作協(xié)議操作以接收來自第1相鄰單元的置數(shù)標(biāo)記,根據(jù)置數(shù)請求、置數(shù)標(biāo)記以及單元的狀態(tài)將從置數(shù)數(shù)據(jù)總線接收的數(shù)據(jù)項鎖存到寄存器,并將置數(shù)標(biāo)記傳送到第2相鄰單元;以及取數(shù)部件,配置成按照第2操作協(xié)議操作以接收來自第1相鄰單元的取數(shù)標(biāo)記,根據(jù)取數(shù)請求、取數(shù)標(biāo)記以及單元的狀態(tài)從寄存器將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線,以及將取數(shù)標(biāo)記傳送到第2相鄰單元。
20.如權(quán)利要求19所述的電路,其特征在于所述第1中繼站鏈的一個中繼站提供置數(shù)請求,并且所述單元陣列中的各單元的置數(shù)部件還包括由置數(shù)請求使能的同步鎖存器,它把置數(shù)標(biāo)記傳送到所述第2相鄰單元;配置成用信號通知狀態(tài)控制器根據(jù)置數(shù)請求和置數(shù)標(biāo)記來提供取消單元的空狀態(tài)的指示的電路。
21.如權(quán)利要求20所述的電路,其特征在于所述寄存器由所述置數(shù)請求和置數(shù)標(biāo)記使能,以接收數(shù)據(jù)項。
22.如權(quán)利要求21所述的電路,其特征在于所述第2中繼站鏈的一個中繼站提供取數(shù)請求,并且所述單元陣列中的各陣列的取數(shù)部件還包括由取數(shù)請求使能的同步鎖存器,它把取數(shù)標(biāo)記傳送給所述第2相鄰單元;以及配置成用信號通知狀態(tài)控制器根據(jù)所述取數(shù)請求和取數(shù)標(biāo)記來提供取消單元的滿狀態(tài)的指示的電路。
23.如權(quán)利要求22所述的電路,其特征在于所述寄存器由所述取數(shù)請求和取數(shù)標(biāo)記使能,以把數(shù)據(jù)項傳送到取數(shù)數(shù)據(jù)總線。
24.一種電路,它對從異步發(fā)送器子系統(tǒng)向由時鐘信號控制的同步接收機(jī)子系統(tǒng)的數(shù)據(jù)項的傳送進(jìn)行接口,其中所述數(shù)據(jù)項的傳送經(jīng)受所述發(fā)送器子系統(tǒng)和所述接收機(jī)子系統(tǒng)之間的延遲,其特征在于該電路包括第1中繼站鏈,依附于所述發(fā)送器子系統(tǒng)來傳送置數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有異步操作協(xié)議;第2中繼站鏈,依附于所述接收機(jī)子系統(tǒng)來接收取數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有同步操作協(xié)議;以及中繼站,它接收所述時鐘信號,并按照所述第1中繼站鏈的異步操作協(xié)議和所述第2中繼站鏈的同步操作協(xié)議將數(shù)據(jù)項從第1中繼站鏈傳送到第2中繼站鏈,其中該中繼站包括單元陣列;空檢測器,它產(chǎn)生與第2時鐘信號同步的空信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于滿狀態(tài)時,提供該信號;以及取數(shù)控制器,配置成接收來自連接至混合時鐘站的第2中繼站鏈的一中繼站的停止信號,并配置成如果沒有提供空信號以及如果沒有提供停止信號,則在所述第2時鐘信號的每個時鐘周期上使能數(shù)據(jù)項的出隊。
25.如權(quán)利要求24所述的電路,其特征在于所述單元陣列中的各單元包括寄存器,配置成接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,并向取數(shù)數(shù)據(jù)總線傳送數(shù)據(jù)項;狀態(tài)控制器,提供單元的狀態(tài)的指示;置數(shù)部件,配置成按照第1操作協(xié)議操作以接收來自第1相鄰單元的置數(shù)標(biāo)記,根據(jù)置數(shù)請求、置數(shù)標(biāo)記以及單元的狀態(tài)將從置數(shù)數(shù)據(jù)總線接收的數(shù)據(jù)項鎖存到寄存器,并將置數(shù)標(biāo)記傳送到第2相鄰單元;以及取數(shù)部件,配置成按照第2操作協(xié)議操作以接收來自第1相鄰單元的取數(shù)標(biāo)記,根據(jù)取數(shù)請求、取數(shù)標(biāo)記以及單元的狀態(tài)從寄存器將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線,以及將取數(shù)標(biāo)記傳送到第2相鄰單元。
26.如權(quán)利要求25所述的電路,其特征在于所述單元陣列中的各單元的置數(shù)部件包括置數(shù)標(biāo)記傳送電路,該電路配置成根據(jù)來自第1相鄰單元的指示出將來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項鎖存入第1相鄰單元的寄存器的信號,來把置數(shù)標(biāo)記接收進(jìn)所述單元陣列中的相應(yīng)的單元。
27.如權(quán)利要求26所述的電路,其特征在于所述第1中繼站鏈提供置數(shù)請求,并且所述置數(shù)接口還提供置數(shù)確認(rèn)信號,并且所述置數(shù)部件還包括由所述置數(shù)標(biāo)記、置數(shù)請求和單元的空狀態(tài)使能的置數(shù)控制電路,是寄存器能接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,用信號通知狀態(tài)控制器提供對單元狀態(tài)的復(fù)位的指示,以及提供置數(shù)確認(rèn)信號。
28.如權(quán)利要求26所述的電路,其特征在于通過對傳送置數(shù)標(biāo)記到第2相鄰單元的置數(shù)請求的取消來禁用置數(shù)控制電路。
29.如權(quán)利要求28所述的電路,其特征在于所述第2中繼站鏈的一個中繼站提供取數(shù)請求,并且所述單元陣列中的各單元的取數(shù)部件還包括由置數(shù)請求使能的同步鎖存器,它把置數(shù)標(biāo)記傳送到所述第2相鄰單元;配置成用信號通知狀態(tài)控制器根據(jù)取數(shù)請求和取數(shù)標(biāo)記來提供單元的空狀態(tài)的指示的電路。
30.如權(quán)利要求29所述的電路,其特征在于所述寄存器由所述取數(shù)請求和取數(shù)標(biāo)記使能,以把數(shù)據(jù)項傳送到取數(shù)數(shù)據(jù)總線。
31.一種電路,它對從由一時鐘信號控制的同步發(fā)送器子系統(tǒng)向異步接收機(jī)子系統(tǒng)的數(shù)據(jù)項的傳送進(jìn)行接口,其中所述數(shù)據(jù)項的傳送經(jīng)受所述發(fā)送器子系統(tǒng)和所述接收機(jī)子系統(tǒng)之間的延遲,其特征在于該電路包括第1中繼站鏈,依附于所述發(fā)送器子系統(tǒng)來傳送置數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有同步操作協(xié)議以及提供有效性信號;第2中繼站鏈,依附于所述接收機(jī)子系統(tǒng)來接收取數(shù)數(shù)據(jù)總線上的數(shù)據(jù)項,并具有異步操作協(xié)議;以及中繼站,它接收所述時鐘信號,并按照所述第1中繼站鏈的同步操作協(xié)議和所述第2中繼站鏈的異步操作協(xié)議將數(shù)據(jù)項從第1中繼站鏈傳送到第2中繼站鏈,其中該中繼站包括單元陣列;滿檢測器,它產(chǎn)生與第1時鐘信號同步的滿信號,當(dāng)單元陣列中少于預(yù)定數(shù)量的連續(xù)單元處于空狀態(tài)時,提供該信號;置數(shù)控制器,配置成如果沒有提供滿信號,并且提供了有效性信號,則在所述第1時鐘信號的每個時鐘周期上將數(shù)據(jù)項入隊。
32.如權(quán)利要求31所述的電路,其特征在于所述單元陣列中的各單元包括寄存器,配置成接收來自置數(shù)數(shù)據(jù)總線的數(shù)據(jù)項,并向取數(shù)數(shù)據(jù)總線傳送數(shù)據(jù)項;狀態(tài)控制器,提供單元的狀態(tài)的指示;置數(shù)部件,配置成按照第1操作協(xié)議操作以接收來自第1相鄰單元的置數(shù)標(biāo)記,根據(jù)置數(shù)請求、置數(shù)標(biāo)記以及單元的狀態(tài)將從置數(shù)數(shù)據(jù)總線接收的數(shù)據(jù)項鎖存到寄存器,并將置數(shù)標(biāo)記傳送到第2相鄰單元;以及取數(shù)部件,配置成按照第2操作協(xié)議操作以接收來自第1相鄰單元的取數(shù)標(biāo)記,根據(jù)取數(shù)請求、取數(shù)標(biāo)記以及單元的狀態(tài)從寄存器將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線,以及將取數(shù)標(biāo)記傳送到第2相鄰單元。
33.如權(quán)利要求32所述的電路,其特征在于所述第1中繼站鏈的一個中繼站提供置數(shù)請求,并且所述單元陣列中的各單元的置數(shù)部件還包括由置數(shù)請求使能的同步鎖存器,它把置數(shù)標(biāo)記傳送到所述第2相鄰單元;配置成用信號通知狀態(tài)控制器根據(jù)置數(shù)請求和置數(shù)標(biāo)記來提供單元的空狀態(tài)的指示的電路。
34.如權(quán)利要求33所述的電路,其特征在于所述寄存器由置數(shù)請求使能,以接收數(shù)據(jù)項。
35.如權(quán)利要求34所述的電路,其特征在于所述單元陣列中的各單元的取數(shù)部件包括取數(shù)標(biāo)記傳送電路,該電路配置成根據(jù)來自所述第1相鄰單元的指示從第1相鄰單元的寄存器把數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線的信號,來接收單元陣列中的相應(yīng)單元的取數(shù)標(biāo)記。
36.如權(quán)利要求35所述的電路,其特征在于所述寄存器由取數(shù)標(biāo)記使能,以將數(shù)據(jù)項從隊列中取出到取數(shù)數(shù)據(jù)總線。
37.如權(quán)利要求36所述的電路,其特征在于所述第2中繼站鏈的一中繼站提供取數(shù)請求,并且所述取數(shù)接口還包括取數(shù)確認(rèn)信號,并且所述取數(shù)部件還包括由所述取數(shù)標(biāo)記、取數(shù)請求和單元的狀態(tài)使能的取數(shù)控制電路,以用信號通知狀態(tài)控制器復(fù)位該單元的狀態(tài),以提供取數(shù)確認(rèn)信號。
38.如權(quán)利要求37所述的電路,其特征在于通過對傳送取數(shù)標(biāo)記到第2相鄰單元的取數(shù)請求取消來禁用取數(shù)控制電路。
全文摘要
一種FIFO設(shè)計,它對操作于不同時域上的發(fā)送器子系統(tǒng)和接收機(jī)子系統(tǒng)進(jìn)行接口。發(fā)送器子系統(tǒng)和接收機(jī)子系統(tǒng)可以是同步的或異步的。FIFO電路包括配置成按照發(fā)送器時域操作的置數(shù)接口以及按照接收機(jī)時域操作的取數(shù)接口。FIFO電路包括單元陣列,該單元陣列具有寄存器以及狀態(tài)控制器,后者指示出單元的狀態(tài)。各單元還具有按照發(fā)送器時域操作的置數(shù)部件部分,包括置數(shù)標(biāo)記傳送電路和置數(shù)控制器電路。各單元具有配置成按照接收機(jī)時域操作的取數(shù)部件部分,包括取數(shù)部件傳送電路和取數(shù)控制器電路。混合時鐘中繼站設(shè)計對工作于不同時域的發(fā)送器子系統(tǒng)和接收機(jī)子系統(tǒng),以及發(fā)送器和接收機(jī)之間等待時間大的地方進(jìn)行接口。
文檔編號G06F5/10GK1478226SQ01813819
公開日2004年2月25日 申請日期2001年6月8日 優(yōu)先權(quán)日2000年6月9日
發(fā)明者T·切爾塞雅, S·M·諾維克, T 切爾塞雅, 諾維克 申請人:紐約市哥倫比亞大學(xué)托管會