FPGA学习之FIFO
生活随笔
收集整理的這篇文章主要介紹了
FPGA学习之FIFO
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
FIFO是一種先進(jìn)先出的電路,使用在需要產(chǎn)生數(shù)據(jù)接口的部分,用來(lái)存儲(chǔ)、緩沖在兩個(gè)一部時(shí)鐘之間的數(shù)據(jù)傳輸。在一部電路中,由于時(shí)鐘之間周期和相位完全獨(dú)立,因?yàn)閿?shù)據(jù)丟失概率不為零。使用FIFO可以在兩個(gè)不同時(shí)鐘域系統(tǒng)之間快速而方便地傳輸實(shí)時(shí)數(shù)據(jù)。在網(wǎng)絡(luò)接口、圖像處理燈方面,FIFO得到廣泛的應(yīng)用。
FIFO的設(shè)計(jì)難點(diǎn):產(chǎn)生可靠的FIFO讀寫(xiě)指針和生成FIFO“空”、“滿”狀態(tài)標(biāo)識(shí)。
異步FIFO地址最好使用Gray計(jì)數(shù)器,這是因?yàn)?#xff0c;采用二進(jìn)制數(shù)時(shí)又可能變化計(jì)數(shù)一次所有位都會(huì)有所變化,而Gray碼計(jì)數(shù)器就只是計(jì)數(shù)一次數(shù)據(jù)變化一次。
1、FIFO“空”/“滿”狀態(tài) 由于FIFO“空”/“滿”狀態(tài)都表明讀寫(xiě)指針相等,所以必須要準(zhǔn)確區(qū)分是空還是滿。 解決辦法是將FIFO地址空間按最高量為劃分成4個(gè)象限,每當(dāng)讀寫(xiě)地址相等時(shí),通過(guò)對(duì)最高兩位譯碼以申城正空的空”/“滿”標(biāo)志。 如果寫(xiě)指針比讀指針之后一個(gè)象限,則表明FIFO接近滿。此時(shí)置標(biāo)志位direction為1,并且鎖存其值。相應(yīng)的等式為: wire dirset_n = ~(( wptr[N]^rptr[N-1]) & ~(wptr[N-1]^rptr[N]));
如果寫(xiě)指針比讀指針超前一個(gè)象限,則表明FIFO為接近空狀態(tài),如圖所示。此時(shí)置標(biāo)志direction為0,并且鎖存其值。相應(yīng)的等式為: wire dirclr_n = ~((~(wptr[n]^rptr[n-1]) & (wptr[n-1] ^ rptr[n])) | ~wrst_n; 2、FIFO模塊結(jié)構(gòu) (1)頂層模塊,對(duì)所有FIFO模塊進(jìn)行封裝 (2)雙口RAM模塊,用于實(shí)現(xiàn)讀寫(xiě)操作 (3)異步比較器,用于實(shí)現(xiàn)FIFO讀寫(xiě)指針比較,并輸出狀態(tài)信號(hào)以生成正確的FIFO空滿標(biāo)志 (4)FIFO寫(xiě)指針與滿邏輯控制模塊,用于生成FIFO寫(xiě)地址指針并且生成FIFO滿標(biāo)志。 (5)FIFO讀指針與空邏輯控制模塊,用于生成FIFO讀地址指針并且生成FIFO空標(biāo)志。
代碼如下:
1、FIFO“空”/“滿”狀態(tài) 由于FIFO“空”/“滿”狀態(tài)都表明讀寫(xiě)指針相等,所以必須要準(zhǔn)確區(qū)分是空還是滿。 解決辦法是將FIFO地址空間按最高量為劃分成4個(gè)象限,每當(dāng)讀寫(xiě)地址相等時(shí),通過(guò)對(duì)最高兩位譯碼以申城正空的空”/“滿”標(biāo)志。 如果寫(xiě)指針比讀指針之后一個(gè)象限,則表明FIFO接近滿。此時(shí)置標(biāo)志位direction為1,并且鎖存其值。相應(yīng)的等式為: wire dirset_n = ~(( wptr[N]^rptr[N-1]) & ~(wptr[N-1]^rptr[N]));
如果寫(xiě)指針比讀指針超前一個(gè)象限,則表明FIFO為接近空狀態(tài),如圖所示。此時(shí)置標(biāo)志direction為0,并且鎖存其值。相應(yīng)的等式為: wire dirclr_n = ~((~(wptr[n]^rptr[n-1]) & (wptr[n-1] ^ rptr[n])) | ~wrst_n; 2、FIFO模塊結(jié)構(gòu) (1)頂層模塊,對(duì)所有FIFO模塊進(jìn)行封裝 (2)雙口RAM模塊,用于實(shí)現(xiàn)讀寫(xiě)操作 (3)異步比較器,用于實(shí)現(xiàn)FIFO讀寫(xiě)指針比較,并輸出狀態(tài)信號(hào)以生成正確的FIFO空滿標(biāo)志 (4)FIFO寫(xiě)指針與滿邏輯控制模塊,用于生成FIFO寫(xiě)地址指針并且生成FIFO滿標(biāo)志。 (5)FIFO讀指針與空邏輯控制模塊,用于生成FIFO讀地址指針并且生成FIFO空標(biāo)志。
代碼如下:
總結(jié)
以上是生活随笔為你收集整理的FPGA学习之FIFO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux发行版 (列表)
- 下一篇: linux2.6驱动学习笔记之字符驱动