當前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 氣體傳感器
發(fā)布日期:2022-04-17 點擊率:77
隨著數(shù)字電子系統(tǒng)設計規(guī)模的擴大,一些實際應用系統(tǒng)中往往含有多個時鐘,數(shù)據(jù)不可避免地要在不同的時鐘域之間傳遞。如何在異步時鐘之間傳輸數(shù)據(jù),是數(shù)據(jù)傳輸中一個至關重要的問題,而采用FIFO正是解決這一問題的有效方法。異步FIFO是一種在電子系統(tǒng)中得到廣泛應用的器件,多數(shù)情況下它都是以一個獨立芯片的方式在系統(tǒng)中應用。本文介紹一種充分利用FPGA內(nèi)部的RAM資源,在FPGA內(nèi)部實現(xiàn)異步FIFO模塊的設計方法。這種異步FIFO比外部FIFO 芯片更能提高系統(tǒng)的穩(wěn)定性。
1 FIFO的基本結(jié)構(gòu)和工作原理
FIFO(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完成,因此利用FIFO實現(xiàn)數(shù)據(jù)的緩存具有接口簡單、讀寫方便的優(yōu)點。
根據(jù)FIFO的工作時鐘,可將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘,在時鐘沿來臨時同時進行讀寫操作;異步FIFO是指讀寫時鐘不是同一個時鐘,而是相互獨立的。實際上,工作在同一時鐘的FIFO很少用到,多數(shù)都是讀寫時鐘獨立的異步FIFO。本文設計的異步FIFO位寬為8,深度(即FIFO可以存儲8位數(shù)據(jù)的個數(shù))為1 024。異步FIFO的結(jié)構(gòu)如圖1所示。 
2 異步FIFO設計中的問題與解決辦法
2.1 亞穩(wěn)態(tài)問題
在含有觸發(fā)器的電路中往往會出現(xiàn)亞穩(wěn)態(tài)問題。亞穩(wěn)態(tài)會使異步FIFO的讀寫地址發(fā)生錯誤,產(chǎn)生誤讀或者誤寫。為此異步FIFO設計中亞穩(wěn)態(tài)問題也是一個比較重要的問題。亞穩(wěn)態(tài)不可能完全消除,只能使其出現(xiàn)的概率降到最低。主要有2種方法來降低亞穩(wěn)態(tài)出現(xiàn)的概率:
?、俨捎糜|發(fā)器冗余方式。即采用多個觸發(fā)器級聯(lián)的方式,使本來出現(xiàn)概率為P的亞穩(wěn)態(tài),其出現(xiàn)概率降低到P2,但這種方式會導致延時增加。
?、谑褂酶窭状a。格雷碼的相臨碼元之間只有一位發(fā)生變化,這就大大地降低了亞穩(wěn)態(tài)出現(xiàn)的概率。本文采用格雷碼方式。
2.2 空/滿標志位的判斷
為保證數(shù)據(jù)的正確寫入和讀出,不發(fā)生寫滿和讀空操作,怎樣判斷空/滿標志位的產(chǎn)生就成為異步FIFO設計的核心問題。異步FIFO是環(huán)形存儲的,當讀寫地址指針相等時,意味著空標志位或者滿標志位的產(chǎn)生。但是卻不能確定是寫滿還是讀空狀態(tài)。為解決這一問題,本文將轉(zhuǎn)換為格雷碼后的讀寫地址指針分別經(jīng)過檢測和計數(shù)器。每當讀寫指針遍歷一圈(當讀寫地址指針指向雙端口RAM的最后一個地址)時,寫計數(shù)i加1,讀計數(shù)j加1。這樣寫滿狀態(tài)和讀空狀態(tài)的判斷就需要同時滿足兩個條件。下面分別給出寫滿和讀空狀態(tài)的判斷。
?、賹憹M狀態(tài)的判別:當讀地址指針等于寫地址指針,并且i>j時,產(chǎn)生滿標志。
②讀空狀態(tài)的判別:當寫地址指針等于讀地址指針,并且i=j時,產(chǎn)生空標志。
由于空/滿標志位產(chǎn)生的結(jié)構(gòu)圖對稱,故本文只給出滿標志位產(chǎn)生的結(jié)構(gòu)圖,如圖2所示。其中,主數(shù)i為寫地址指針遍歷的圈數(shù),計數(shù)j為讀地址指針遍歷的圈數(shù)。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV