異步FIFO控制器的設(shè)計(jì)
摘 要: 異步FIFO是一種先進(jìn)先出電路,可以有效解決異步時(shí)鐘之間的數(shù)據(jù)傳遞。通過(guò)分析異步FIFO設(shè)計(jì)中的難點(diǎn),以降低電路中亞穩(wěn)態(tài)出現(xiàn)的概率為主要目的,提出了一種格雷碼計(jì)數(shù)器的技術(shù),通過(guò)仿真驗(yàn)證,有效地實(shí)現(xiàn)了異步FIFO控制器的設(shè)計(jì)。該設(shè)計(jì)將大大提高工作頻率和資源利用率。
關(guān)鍵詞: 異步FIFO;亞穩(wěn)態(tài);格雷碼計(jì)數(shù)器
隨著現(xiàn)代芯片設(shè)計(jì)規(guī)模的不斷擴(kuò)大,集成電路越來(lái)越復(fù)雜,一個(gè)系統(tǒng)中往往包含多個(gè)時(shí)鐘,如何設(shè)計(jì)異步時(shí)鐘之間的接口電路是多時(shí)鐘領(lǐng)域的關(guān)鍵問(wèn)題。異步FIFO(First In First Out)是一種先進(jìn)先出電路,用來(lái)存儲(chǔ)、緩沖在兩個(gè)異步時(shí)鐘之間的數(shù)據(jù)傳輸,使用異步FIFO可以在兩個(gè)不同的時(shí)鐘系統(tǒng)之間快速準(zhǔn)確地傳輸實(shí)時(shí)數(shù)據(jù),是用來(lái)解決異步時(shí)鐘接口電路的一個(gè)有效方案。并且異步FIFO高速、可靠性好,在網(wǎng)絡(luò)接口、圖像處理等方面都得到了廣泛的應(yīng)用。
1異步FIFO控制器的設(shè)計(jì)
1.1 異步FIFO時(shí)鐘域結(jié)構(gòu)設(shè)計(jì)
FIFO主要由FIFO控制器和RAM兩個(gè)部分組成。FIFO控制器最重要的功能就是產(chǎn)生RAM的讀寫地址以及相應(yīng)的使能信號(hào);產(chǎn)生FIFO的狀態(tài)標(biāo)志,包括空(Empty)、滿(Full)、溢出(Underflow,Overflow)以及其他根據(jù)設(shè)計(jì)需要產(chǎn)生的狀態(tài)標(biāo)志。異步FIFO由兩個(gè)時(shí)鐘域構(gòu)成:push clock domain(記為clk_push domain)和pop clock domain(記為clk_pop domain)。
所以異步FIFO可以劃分為下列時(shí)鐘域結(jié)構(gòu),如圖1所示。
1.2 簡(jiǎn)單計(jì)數(shù)器實(shí)現(xiàn)讀寫地址輸出結(jié)構(gòu)設(shè)計(jì)
由時(shí)鐘域結(jié)構(gòu)可知,作為FIFO控制器,最基本的就是要根據(jù)外部的輸入信號(hào)push和pop,產(chǎn)生對(duì)RAM訪問(wèn)的讀寫地址。FIFO控制器內(nèi)首先要實(shí)現(xiàn)對(duì)RAM的讀寫地址輸出,所以FIFO控制器內(nèi)有一組基于clk_push domain的邏輯產(chǎn)生寫地址:push_addr,和一組基于clk_pop domain的邏輯產(chǎn)生讀地址:pop_addr。然后對(duì)地址信息采用二進(jìn)制編碼,每一次push操作,使push_addr增加1,即指向下一個(gè)push操作的RAM空間;每一次pop操作,使pop_addr增加1,即指向下一個(gè)pop操作的RAM空間。按照這種思路,異步FIFO控制器可進(jìn)一步細(xì)化為如圖2所示結(jié)構(gòu)。