專利名稱:用雙端口隨機(jī)存取存儲(chǔ)器實(shí)現(xiàn)異步先進(jìn)先出數(shù)據(jù)傳輸?shù)闹谱鞣椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及專用集成電路(ASIC)設(shè)計(jì)、數(shù)字電路設(shè)計(jì)技術(shù)領(lǐng)域,特別是一種用雙端口隨機(jī)存取存儲(chǔ)器實(shí)現(xiàn)異步先進(jìn)先出數(shù)據(jù)傳輸?shù)姆椒ā?br>
背景技術(shù):
一般來說,同步FIFO((First-In First-Out,先進(jìn)先出))結(jié)構(gòu)簡單,易于實(shí)現(xiàn);異步FIFO的控制邏輯相對(duì)復(fù)雜,市場(chǎng)上的專用產(chǎn)品也有不少,但只能給出FIFO的滿(Full)、半滿(Half-Full)和空(Empty)三種狀態(tài),不能全面準(zhǔn)確地反映FIFO的內(nèi)部狀態(tài),使得其使用受到一定的局限,也不利于數(shù)據(jù)傳輸性能的提高。
發(fā)明內(nèi)容
本發(fā)明所設(shè)計(jì)的FIFO,是在雙端口RAM(Random-Access Memory,隨機(jī)存取存儲(chǔ)器)的基礎(chǔ)上,通過同步控制邏輯把雙端口RAM包裝成一個(gè)通用的同步FIFO,再用一個(gè)較小的寄存器陣列構(gòu)成異步接口。使用本發(fā)明所設(shè)計(jì)的FIFO,能夠準(zhǔn)確及時(shí)地給出FIFO中數(shù)據(jù)的多少,使得數(shù)據(jù)傳輸雙方可以適時(shí)地發(fā)起數(shù)據(jù)讀寫操作,有效地提高數(shù)據(jù)傳輸?shù)男省?br>
發(fā)明技術(shù)方案一種異步FIFO的實(shí)現(xiàn)方法,用雙端口RAM和控制邏輯實(shí)現(xiàn)異步FIFO。
可實(shí)現(xiàn)不同時(shí)鐘源之間大數(shù)據(jù)流雙向突發(fā)傳輸。
能夠準(zhǔn)確及時(shí)地給出FIFO中數(shù)據(jù)的多少,使得數(shù)據(jù)傳輸雙方可以適時(shí)地發(fā)起數(shù)據(jù)讀寫操作,有效地提高數(shù)據(jù)傳輸?shù)男省?br>
圖一是用雙端口RAM實(shí)現(xiàn)的一個(gè)通用同步FIFO。
圖二是寄存器陣列單元的結(jié)構(gòu)圖。
圖三是本發(fā)明方法實(shí)現(xiàn)流程圖。
具體實(shí)施例方式
用雙端口RAM構(gòu)造異步數(shù)據(jù)傳輸中的橋接FIFO可以分為兩步實(shí)現(xiàn)異步FIFO。
第一步是用雙端口RAM構(gòu)造一個(gè)通用的同步FIFO,如圖一所示,圖中所有信號(hào)都工作在一個(gè)時(shí)鐘域,而且該時(shí)鐘域與外部(數(shù)據(jù)傳輸雙方)兩個(gè)時(shí)鐘源中速度較高者相同。
第二步是在通用的同步FIFO之上,用一個(gè)較小的寄存器陣列構(gòu)成異步接口。寄存器陣列的寬度與FIFO的數(shù)據(jù)寬度相等,且外加狀態(tài)標(biāo)記寄存器;寄存器陣列的深度根據(jù)異步時(shí)鐘域的差距比例來決定。實(shí)際上,深度為n的寄存器陣列是由n個(gè)深度為1的寄存器陣列串連成的一個(gè)小FIFO,因此,把深度為1的寄存器陣列定義為寄存器陣列單元。
圖一中,把雙端口RAM的兩個(gè)端口分別定義成數(shù)據(jù)輸入端口和數(shù)據(jù)輸出端口,寫指針是數(shù)據(jù)輸入端口的地址信號(hào),讀指針是數(shù)據(jù)輸出端口的地址信號(hào)。當(dāng)寫信號(hào)有效時(shí),讀寫控制邏輯把寫指針加1;當(dāng)讀信號(hào)有效時(shí),讀寫控制邏輯把讀指針加1。根據(jù)讀指針和寫指針大小,讀寫控制邏輯可以實(shí)時(shí)地給出雙端口RAM中數(shù)據(jù)量的多少和空/滿狀態(tài)。
圖二中,寄存器陣列單元包含兩個(gè)標(biāo)記寄存器Rf1和Rf2;以及數(shù)據(jù)暫存寄存器R1,R2,…,和Rn。寄存器陣列單元的輸入和輸出工作在兩個(gè)不同的時(shí)鐘域,其工作時(shí)鐘分別為CLK_IN和CLK_OUT。當(dāng)輸入端的數(shù)據(jù)寫入時(shí),數(shù)據(jù)用輸入時(shí)鐘CLK_IN暫存在寄存器R1,R2,…,和Rn中,同時(shí)標(biāo)記寄存器Rf1被置1。標(biāo)記寄存器Rf1的輸出用時(shí)鐘CLK_OUT寫入標(biāo)記寄存器Rf2。當(dāng)數(shù)據(jù)輸出端檢測(cè)到標(biāo)記寄存器Rf2的輸出為1(讀就緒)時(shí),此時(shí)輸入數(shù)據(jù)早已穩(wěn)定地鎖存在暫存寄存器R1,R2,…,和Rn中,可以用時(shí)鐘CLK_OUT和讀信號(hào)把它讀出,在讀出數(shù)據(jù)的同時(shí),標(biāo)記寄存器Rf1和Rf2被清零。當(dāng)多個(gè)寄存器陣列單元串連成一個(gè)小FIFO,就可以實(shí)現(xiàn)不同時(shí)鐘域大數(shù)據(jù)流的突發(fā)傳輸。
圖三中所描述的實(shí)現(xiàn)流程,可以分成S1、S2、S3和S4四個(gè)步驟,分別說明如下步驟S1用雙端口RAM構(gòu)造一個(gè)通用的同步FIFO,具體如圖一所示。步驟S2如果數(shù)據(jù)源域的時(shí)鐘頻率大于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率,同步FIFO工作在數(shù)據(jù)源時(shí)鐘域,并在同步FIFO的輸出端接一個(gè)異步寄存器陣列;否則,同步FIFO工作在數(shù)據(jù)目標(biāo)時(shí)鐘域,并在同步FIFO的輸入端接一個(gè)異步寄存器陣列,異步寄存器陣列的寬度與同步FIFO的數(shù)據(jù)寬度相等,寄存器陣列的深度根據(jù)異步時(shí)鐘域的頻率和相位差來決定,頻率和相位差越大,寄存器陣列的深度越大;當(dāng)頻率和相位差接近于0時(shí),寄存器陣列的深度等于或大于3(這時(shí)才能保證數(shù)據(jù)不間斷流水傳輸);步驟S3當(dāng)數(shù)據(jù)源域的時(shí)鐘頻率大于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率時(shí),同步FIFO輸出端的寄存器陣列具有數(shù)據(jù)預(yù)取能力,即只要同步FIFO中有數(shù)據(jù)且寄存器陣列有空閑的寄存器陣列單元,都及時(shí)從同步FIFO預(yù)取數(shù)據(jù)到寄存器陣列中,并給出數(shù)據(jù)就緒標(biāo)志;當(dāng)數(shù)據(jù)源域的時(shí)鐘頻率小于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率時(shí),只要同步FIFO輸入端的寄存器陣列中有數(shù)據(jù),都被及時(shí)地讀入同步FIFO中,同時(shí)寄存器陣列給出空閑標(biāo)志;步驟S4以上通過同步控制邏輯把雙端口RAM包裝成一個(gè)通用的同步FIFO,再用一個(gè)異步寄存器陣列構(gòu)成異步接口,從而實(shí)現(xiàn)異步FIFO功能的方法,只要異步寄存器陣列有足夠大的深度,就可以保證異步數(shù)據(jù)大流量連續(xù)傳輸。
權(quán)利要求
1.一種異步FIFO的實(shí)現(xiàn)方法,其特征在于,用雙端口RAM和控制邏輯實(shí)現(xiàn)異步FIFO。
2.根據(jù)權(quán)利要求1所述的異步FIFO的實(shí)現(xiàn)方法,其特征在于,可實(shí)現(xiàn)不同時(shí)鐘源之間大數(shù)據(jù)流雙向突發(fā)傳輸。
3.根據(jù)權(quán)利要求1所述的異步FIFO的實(shí)現(xiàn)方法,其特征在于,能夠準(zhǔn)確及時(shí)地給出FIFO中數(shù)據(jù)的多少,使得數(shù)據(jù)傳輸雙方可以適時(shí)地發(fā)起數(shù)據(jù)讀寫操作,有效地提高數(shù)據(jù)傳輸?shù)男省?br>
4.一種異步數(shù)據(jù)傳輸中用雙端口RAM實(shí)現(xiàn)橋接FIFO的方法,在雙端口RAM的基礎(chǔ)上,通過同步控制邏輯把雙端口RAM包裝成一個(gè)通用的同步FIFO,再用一個(gè)較小的寄存器陣列構(gòu)成異步接口。
5.根據(jù)權(quán)利要求4的異步數(shù)據(jù)傳輸中用雙端口RAM實(shí)現(xiàn)橋接FIFO的方法,其具體步驟如下步驟S1用雙端口RAM構(gòu)造一個(gè)通用的同步FIFO;步驟S2如果數(shù)據(jù)源域的時(shí)鐘頻率大于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率,同步FIFO工作在數(shù)據(jù)源時(shí)鐘域,并在同步FIFO的輸出端接一個(gè)異步寄存器陣列;否則,同步FIFO工作在數(shù)據(jù)目標(biāo)時(shí)鐘域,并在同步FIFO的輸入端接一個(gè)異步寄存器陣列,異步寄存器陣列的寬度與同步FIFO的數(shù)據(jù)寬度相等,寄存器陣列的深度根據(jù)異步時(shí)鐘域的頻率和相位差來決定,頻率和相位差越大,寄存器陣列的深度越大;當(dāng)頻率和相位差接近于0時(shí),寄存器陣列的深度等于或大于3;步驟S3當(dāng)數(shù)據(jù)源域的時(shí)鐘頻率大于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率時(shí),同步FIFO輸出端的寄存器陣列具有數(shù)據(jù)預(yù)取能力,即只要同步FIFO中有數(shù)據(jù)且寄存器陣列有空閑的寄存器陣列單元,都及時(shí)從同步FIFO預(yù)取數(shù)據(jù)到寄存器陣列中,并給出數(shù)據(jù)就緒標(biāo)志;當(dāng)數(shù)據(jù)源域的時(shí)鐘頻率小于數(shù)據(jù)目標(biāo)域的時(shí)鐘頻率時(shí),只要同步FIFO輸入端的寄存器陣列中有數(shù)據(jù),都被及時(shí)地讀入同步FIFO中,同時(shí)寄存器陣列給出空閑標(biāo)志;步驟S4以上通過同步控制邏輯把雙端口RAM包裝成一個(gè)通用的同步FIFO,再用一個(gè)異步寄存器陣列構(gòu)成異步接口,從而實(shí)現(xiàn)異步FIFO功能的方法,只要異步寄存器陣列有足夠大的深度,就可以保證異步數(shù)據(jù)大流量連續(xù)傳輸。
全文摘要
本發(fā)明涉及專用集成電路設(shè)計(jì)、數(shù)字電路設(shè)計(jì)技術(shù)領(lǐng)域,特別是一種用雙端口隨機(jī)存取存儲(chǔ)器實(shí)現(xiàn)異步先進(jìn)先出數(shù)據(jù)傳輸?shù)姆椒?。本發(fā)明設(shè)計(jì)了一種適用于異步數(shù)據(jù)傳輸?shù)臉蚪覨IFO,這種新型FIFO是在雙端口RAM的基礎(chǔ)上,通過同步控制邏輯把雙端口RAM包裝成一個(gè)通用的同步FIFO,再用一個(gè)較小的寄存器陣列構(gòu)成異步接口。其步驟S1用雙端口RAM構(gòu)造一個(gè)通用的同步FIFO,S2確定數(shù)據(jù)時(shí)鐘域,S3讀取數(shù)據(jù),S4實(shí)現(xiàn)異步數(shù)據(jù)傳輸。使用本發(fā)明所設(shè)計(jì)的FIFO,能夠準(zhǔn)確及時(shí)地給出FIFO中數(shù)據(jù)的多少,使得數(shù)據(jù)傳輸雙方可以適時(shí)地發(fā)起數(shù)據(jù)讀寫操作,有效地提高數(shù)據(jù)傳輸?shù)男省?br>
文檔編號(hào)G11C7/00GK1560868SQ20041000388
公開日2005年1月5日 申請(qǐng)日期2004年2月10日 優(yōu)先權(quán)日2004年2月10日
發(fā)明者張亮, 韓承德, 張 亮 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所