本發(fā)明涉及通信領域,尤其涉及一種用于通信的異步雙向FIFO及總線橋接系統(tǒng)。
背景技術(shù):
FIFO(First Input First Out,先進先出陣列)是一種在通信系統(tǒng)中應用非常廣泛的技術(shù),它可以緩存暫時來不及處理的數(shù)據(jù)。FIFO除了數(shù)據(jù)線外,輸入端有寫、滿等控制信號,輸出端有讀、空等控制信號。FIFO還可以在兩個不同時鐘域之間進行誤差做通信,當FIFO兩側(cè)的讀寫時鐘頻率、相位相同時,該FIFO稱為同步FIFO,否則為異步FIFO。
同步FIFO由于時鐘域相同,讀寫兩方的信息可以直接傳送到對方,同步FIFO可以非常方便按各種策略需求進行控制。而異步FIFO是電路設計中跨時鐘域處理的主要實現(xiàn)方法之一,通常用于時鐘域的過渡,是雙時鐘設計。換言之,設計時異步FIFO需要處理兩個時鐘,因此在大多數(shù)情況下,F(xiàn)IFO工作于獨立的兩個時鐘之間。
圖1示出傳統(tǒng)雙向FIFO的結(jié)構(gòu)示意圖。如圖所示,F(xiàn)IFO(First In First Out)是一種采用環(huán)形存儲結(jié)構(gòu)的先進先出存儲器。其使用一個雙端口存儲器存放數(shù)據(jù),數(shù)據(jù)發(fā)送方在一端寫入數(shù)據(jù),接收方在另一端讀出數(shù)據(jù),能夠協(xié)調(diào)好兩個時鐘域的工作,滿足高時鐘頻率的要求。FIFO在FPGA設計中主要用來緩沖數(shù)據(jù)和隔離時鐘或相位差異。訪問FIFO時不需要地址線,只需要數(shù)據(jù)線和讀寫控制信號線,且數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成。
根據(jù)FIFO的工作時鐘,可將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘,在時鐘沿來臨時同時進行讀寫操作;異步FIFO是指讀寫時鐘不是同一個時鐘,而是相互獨立的。實際上,工作在同一時鐘的FIFO很少用到,多數(shù)都是讀寫時鐘獨立的異步FIFO。
雙端口RAM存儲器12具有獨立的讀寫端口。如果用一個單端口RAM 存儲器實現(xiàn)異步FIFO,還應該包含一個仲裁器來保證同一時刻只能有一種操作(讀或?qū)懖僮?。圖中所示雙端口RAM并不一定是真正的雙端口,只要有獨立的讀寫端口即可。讀寫控制邏輯11、13由加法計數(shù)器構(gòu)成,實現(xiàn)讀寫地址的自動加1功能。
一般而言,對于FIFO中的RAM存儲器,一般采用具有獨立讀端口和獨立寫端口的雙口RAM(Dual Port RAM)。這樣,讀、寫端口擁有兩個計數(shù)器產(chǎn)生的相互獨立的讀、寫地址,即“讀指針”(Read Pointer縮寫為rptr)和“寫指針”(Write Pointer縮寫為wptr)。每次寫操作使能(Write Increase縮寫為winc)使寫指針加1,讀操作使能(Read Increase縮寫為rinc)使讀指針加1。
對于讀寫指針模塊,其另一個任務是提供“空”(rempty)和“滿”(wfull)信號。這些信號告訴外部電路FIFO已達到了臨界條件:如果出現(xiàn)“滿”信號,那么FIFO為寫操作的臨界狀態(tài);如果出現(xiàn)“空”信號,則FIFO為讀操作的臨界狀態(tài)。寫操作的臨界狀態(tài)表示FIFO已經(jīng)沒有空間來存儲更多的數(shù)據(jù),讀操作的臨界表示FIFO沒有更多的數(shù)據(jù)可以讀出。讀寫指針模塊還可告訴FIFO中“滿”或“空”位置的數(shù)值,這是由指針的算術(shù)運算來完成了。
在“空”、“滿”信號產(chǎn)生過程中,牽扯到對讀、寫指針跨時鐘域的比較。處理方式通常為:首先,將讀、寫指針在本時鐘域完成二進制自然碼到格雷碼的轉(zhuǎn)換,以減少亞穩(wěn)態(tài)情形出現(xiàn)錯誤數(shù)值的概率。然后,通過兩級同步觸發(fā)器,將格雷碼指針同步到另一時鐘域。最后,在另一時鐘域內(nèi)完成格雷碼到二進制自然碼的轉(zhuǎn)換,與另一指針完成比較,以產(chǎn)生“空”、“滿”信號。同時產(chǎn)生空/滿標志位給系統(tǒng)提供空(empty)和滿(full)信號。
傳統(tǒng)總線橋接系統(tǒng)中,異步FIFO通常每一端功能固定為寫端口或讀端口,即從PCI到AHB發(fā)起的寫操作需要一個FIFO,讀操作需要一個讀FIFO。這種單向FIFO需要耗費大量的硬件資源。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明利用雙端口隨機存儲器具有獨立讀、寫端口的特性,提供了一種雙向FIFO,該結(jié)構(gòu)包括:
雙端口隨機存儲器、第一套端口和第二套端口,其中,
所述第一套端口包括第一時鐘信號輸入端、第一使能信號輸入端、第一讀寫控制信號輸入端、第一操作地址輸入端、第一數(shù)據(jù)輸入端以及第一數(shù)據(jù)輸出端;
所述第二套端口包括第二時鐘信號輸入端、第二使能信號輸入端、第二讀寫控制信號輸入端、第二操作地址輸入端、第二數(shù)據(jù)輸入端以及第二數(shù)據(jù)輸出端;
所述第一使能信號輸入端、第一讀寫控制信號輸入端、第二使能信號輸入端以及第二讀寫控制信號輸入端的輸入信號為外部讀寫信號的組合邏輯輸出信號。
其中,所述第一套端口和第二套端口相互獨立。
其中,所述外部讀寫信號的組合邏輯由兩個邏輯門組成,具有兩個輸入端口和兩個輸出端口,其輸入信號為外部提供的讀、寫控制信號,輸出信號為第一套端口和第二套端口的使能信號和讀寫控制信號。
其中,所述組合邏輯的有效輸出信號包括3種,控制使能信號和讀寫控制信號使FIFO處于三種工作狀態(tài),分別為第一套端口時讀第二套端口寫、第二套端口時讀第一套端口寫以及第一套端口和第二套端口同時空閑。
相應的,本發(fā)明還提供了一種總線橋接結(jié)構(gòu),包括:
外部控制器接口總線、外部控制器接口總線控制器、雙向FIFO、高級高性能總線控制器、高級高性能總線,其中,所述模塊依次連接。
其中,所述雙向FIFO具有兩套獨立的輸入輸出端口,具有同時讀寫功能。
利用雙向FIFO,當需要從外部控制器接口總線向高級高性能總線寫數(shù)據(jù)操作時,將FIFO配置為寫FIFO;當需要從外部控制器接口總線向高級高性能總線讀數(shù)據(jù)操作時,將FIFO兩側(cè)讀、寫功能對調(diào),配置為讀FIFO。與現(xiàn)有技術(shù)相比,本發(fā)明可將FIFO部分的硬件開銷幾乎降低為原來的一半,其使用效率亦由50%提高到100%。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為根據(jù)傳統(tǒng)雙向FIFO的結(jié)構(gòu)示意圖;
圖2為根據(jù)本發(fā)明一個實施例的雙向FIFO示意圖;
圖3為根據(jù)本發(fā)明一個實施例的雙向FIFO及其端口組合邏輯示意圖;
圖4為傳統(tǒng)的總線橋接系統(tǒng)的結(jié)構(gòu)示意圖;
圖5為根據(jù)本發(fā)明一個實施例的總線橋接系統(tǒng)的結(jié)構(gòu)示意圖。
附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施方式
下面結(jié)合附圖及本發(fā)明的具體實施例對本發(fā)明作進一步詳細描述。需要理解的是,本發(fā)明并不局限于下述特定實施方式,本領域技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。
本發(fā)明提供了一種新的雙向FIFO,該結(jié)構(gòu)包括:
雙端口隨機存儲器、第一套端口和第二套端口,其中,
所述第一套端口包括第一時鐘信號輸入端、第一使能信號輸入端、第一讀寫控制信號輸入端、第一操作地址輸入端、第一數(shù)據(jù)輸入端以及第一數(shù)據(jù)輸出端;
所述第二套端口包括第二時鐘信號輸入端、第二使能信號輸入端、第二讀寫控制信號輸入端、第二操作地址輸入端、第二數(shù)據(jù)輸入端以及第二數(shù)據(jù)輸出端;
所述第一使能信號輸入端、第一讀寫控制信號輸入端、第二使能信號輸入端以及第二讀寫控制信號輸入端的輸入信號為外部讀寫信號的組合邏輯輸出信號。
其中,所述第一套端口和第二套端口相互獨立。
其中,所述外部讀寫信號的組合邏輯由兩個邏輯門組成,具有兩個輸入端口和兩個輸出端口,其輸入信號為外部提供的讀、寫控制信號,輸出信號為第一套端口和第二套端口的使能信號和讀寫控制信號。
其中,所述組合邏輯的有效輸出信號包括3種,控制使能信號和讀寫控制信號使FIFO處于三種工作狀態(tài),分別為第一套端口讀時第二套端口寫、第二套端口時讀第一套端口寫以及第一套端口和第二套端口同時空閑。
相應的,本發(fā)明還提供了一種總線橋接結(jié)構(gòu),包括:
外部控制器接口總線、外部控制器接口總線控制器、雙向FIFO、高級高性能總線控制器、高級高性能總線,其中,所述模塊依次連接。
其中,所述雙向FIFO具有兩套獨立的輸入輸出端口,具有同時讀寫功能。
首先參見圖2,在實施例一中,本發(fā)明的雙向FIFO結(jié)構(gòu)在圖2中示出,該結(jié)構(gòu)具有獨立的兩套端口:端口A 21和端口B 22。端口A包括:時鐘信號輸入端CLKA、使能信號輸入端CENA、讀寫控制信號輸入端WENA、操作地址輸入端AA、數(shù)據(jù)輸入端DA以及數(shù)據(jù)輸出端QA;端口B包括:時鐘信號輸入端CLKB、使能信號輸入端CENB、讀寫控制信號輸入端WENB、操作地址輸入端AB、數(shù)據(jù)輸入端DB以及數(shù)據(jù)輸出端QB。
其中,CLK為時鐘,CEN控制著端口數(shù)據(jù)傳輸?shù)氖鼓?低電平有效),WEN控制端口的讀、寫操作類型(低電平為寫,高電平為讀),A代表操作地址,D代表端口輸入數(shù)據(jù),Q代表端口輸出數(shù)據(jù)。
圖3示出圖中A、B兩側(cè)端口的CEN和WEN輸入端與第一和第二寫信號輸入端a_wen、b_wen以及第一和第二讀信號輸入端a_ren和b_ren之間的邏輯關系,其讀、寫狀態(tài)如表一所示。
表1
具體來說,圖3所示的本發(fā)明的雙向FIFO包括第一組合邏輯31和第二組合邏輯32。第一組合邏輯31的輸入為第一寫信號輸入a_wen和第一讀信號輸入a_ren,其輸出提供給第一使能信號輸入端CENA和第一讀寫控制信號輸入端WENA;第二組合邏輯32的輸入為第二寫信號輸入b_wen和第二讀信號輸入b_ren,其輸出提供給第一使能信號輸入端CENB和第一讀寫控制信號輸入端 WENB。
所述第一組合邏輯31由第一同或門和輸入端帶反向器的第一或門組成,其中,第一同或門的一個輸入端和第一或門帶反向器的輸入端連接第一寫信號a_wen,第一同或門的另一個輸入端和第一或門不帶反相器的輸入端連接讀信號a_ren,第一同或門的輸出端連接第一使能信號輸入端CENA,第一或門的輸出連接第一讀寫控制信號輸入端WENA;
所述第二組合邏輯32由第二同或門和輸入端帶反向器的第二或門組成,其中,第二同或門的一個輸入端和第二或門帶反向器的輸入端連接第二寫信號b_wen,第二同或門的另一個輸入端和第二或門不帶反相器的輸入端連接讀信號b_ren,第二同或門的輸出端連接第二使能信號輸入端CENB,第二或門的輸出連接第二讀寫控制信號輸入端WENB。
所述第一和第二同或門的輸入輸出關系為:CEN=wen^~ren。
所述第一和第二或門的輸入輸出關系為:WEN=!wen|ren。
其中CEN為由所述同或門輸出的提供給所述雙端口隨機存儲器的使能信號,WEN為提供給所述雙端口隨機存儲器的讀寫控制信號,wen為輸入到所述同或門和或門的寫信號,ren為輸入到所述同或門和或門的讀信號。
可見,A、B端工作方式共有三種,空閑或分別讀寫。具體設計中,應控制wen和ren的值,避免出現(xiàn)異常工作狀態(tài)。在實施例一中,其電路示意圖如圖3,其Verilog代碼如下:
這樣,由于A、B皆可進行讀、寫操作,a_addr與b_addr便沒有讀、寫地址之分,這一點也是本發(fā)明雙向FIFO區(qū)別于普通單向FIFO一個特點。于是,在空、滿信號產(chǎn)生邏輯中,A、B任何一側(cè)都需要產(chǎn)生讀空、寫滿兩套信號,以在每側(cè)讀、寫狀態(tài)時分別指示。代碼如下。
當A讀B寫時,指示信號a_rempty,b_wfull有效,而忽略a_wfull,b_rempty的狀態(tài)。同理,A寫B(tài)讀時亦如此??梢?,A、B側(cè)皆通過讀、寫兩套邏輯的控制,都可實現(xiàn)讀、寫功能。當然,兩側(cè)無法同為讀或同為寫,如上所述,這需在具體設計中避免。
如圖5所示,本發(fā)明的實施例2提供了一種總線橋接結(jié)構(gòu),包括:
外部控制器接口總線53、外部控制器接口總線控制器54、雙向FIFO 50、高級高性能總線控制器55、高級高性能總線56,其中,所述模塊依次連接。
其中,所述雙向FIFO 50為本發(fā)明所公開的雙向FIFO,其具有兩套獨立的輸入輸出端口,具有同時讀寫功能。并且具有如實施例1中所述的雙向FIFO結(jié)構(gòu)。
在傳統(tǒng)橋接模塊中,通常從PCI到AHB發(fā)起的寫操作需要一個寫FIFO, 讀操作需要一個讀FIFO,如圖4所示。其中所用到的FIFO均為單向異步FIFO,即每一端功能固定為讀端口或?qū)懚丝凇T谶@種橋接模塊中,因為PCI Master一次只能發(fā)起一種操作由于讀、寫操作無法同時進行,故在同一時刻讀FIFO和寫FIFO只有一個是工作的,另一個處于閑置狀態(tài),對于硬件資源是一個很大的浪費。
在本實施例中,利用雙向FIFO代替上述結(jié)構(gòu)中的單向FIFO結(jié)構(gòu),則可通過一個雙向FIFO結(jié)構(gòu)就可實現(xiàn)兩個單向FIFO的功能。具體的,當需要從PCI向AHB寫數(shù)據(jù)操作時,將FIFO配置為寫FIFO;當需要從PCI向AHB讀數(shù)據(jù)操作時,將FIFO兩側(cè)讀、寫功能對調(diào),配置為讀FIFO。整個橋接模塊結(jié)構(gòu)如圖5所示。
與現(xiàn)有技術(shù)相比,本發(fā)明可將FIFO部分的硬件開銷幾乎降低為原來的一半,其使用效率亦由50%提高到100%。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領域技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。