設(shè)計(jì)者為了提升FIFO的速度使用了將二進(jìn)制計(jì)數(shù)器和格雷碼計(jì)數(shù)器結(jié)合在一起的方法,從最開(kāi)始用一組寄存器來(lái)進(jìn)行格雷碼到二進(jìn)制碼的轉(zhuǎn)換,二進(jìn)制碼的遞增和二進(jìn)制碼到格雷碼的轉(zhuǎn)換,到后來(lái)的style#2(如圖)。
在本篇當(dāng)中,作者進(jìn)一步對(duì)此設(shè)計(jì)進(jìn)行了說(shuō)明,使用這種格雷碼計(jì)數(shù)器的目的是利用了二進(jìn)制數(shù)進(jìn)位的機(jī)制簡(jiǎn)化了格雷碼到二進(jìn)制碼的轉(zhuǎn)換電路來(lái)減少組合邏輯電路,這樣整個(gè)計(jì)數(shù)器的工作頻率上限就會(huì)有所提升。
Dual n-bit Gray Code counter style#2
但是,可以看到這里的設(shè)計(jì)需要使用兩組寄存器,這里可能會(huì)體現(xiàn)到PPA trade-off的思想了(因?yàn)槲乙矝](méi)有實(shí)驗(yàn)過(guò)這種替換方式會(huì)不會(huì)帶來(lái)更大的面積損耗)。不過(guò),對(duì)FPGA來(lái)講,FPGA包含著許多寄存器資源,所以使用FPGA來(lái)實(shí)現(xiàn)這種設(shè)計(jì)方法就不需要考慮面積上的損耗,更能凸顯出速度提升上的優(yōu)勢(shì)!
上文說(shuō)到,設(shè)計(jì)FIFO中最重要的部分也是最難的部分之一就是如何產(chǎn)生空滿標(biāo)志信號(hào)。一種方法就是上一篇提到的使用發(fā)送到對(duì)面時(shí)鐘域的同步后的格雷碼指針來(lái)進(jìn)行比較,從而判斷空滿信號(hào)的產(chǎn)生。而另外一種方法就是本篇文章所提到的,指針的比較不再是同步的了,而是通過(guò)“異步”比較,并判斷空滿信號(hào)。
上篇文章提到的判斷空滿信號(hào)的方法是比較指針是否一樣,并通過(guò)多增加一個(gè)bit位來(lái)討論指針被套圈的問(wèn)題。不同于上個(gè)設(shè)計(jì),本篇文章提出了一個(gè)更有創(chuàng)意的思路來(lái)判斷空滿信號(hào)的產(chǎn)生。
作者將FIFO的地址分成了四個(gè)區(qū)間并通過(guò)編碼兩個(gè)指針計(jì)數(shù)器最高的兩位來(lái)比較判斷FIFO將要空滿的 趨勢(shì) 。舉個(gè)栗子,如果寫指針落在讀指針后面一個(gè)區(qū)間則表示FIFO將要滿,然后當(dāng)指針重合時(shí)則將direction寄存器置位,如下圖。
FIFO is going full because the wptr trails the rptr by one quadrant
而如果寫指針落在讀指針前面一個(gè)區(qū)間則代表FIFO將要空,然后當(dāng)指針重合的時(shí)候則將direction寄存器復(fù)位。
FIFO is going empty because the rptr trails the wptr by one quadrant
結(jié)語(yǔ):
這篇文章理解起來(lái)可能要比前一篇更難理解一點(diǎn),給我的感覺(jué)就是看起來(lái)很暈。沒(méi)有把握給大家闡明清楚,所以就不再做更深入的探討了。還是推薦大家如果對(duì)這個(gè)設(shè)計(jì)方法感興趣的話可以讀一下原文。
-
編碼器
+關(guān)注
關(guān)注
45文章
3875瀏覽量
140532 -
寄存器
+關(guān)注
關(guān)注
31文章
5495瀏覽量
127803 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
808瀏覽量
42691 -
FIFO存儲(chǔ)
+關(guān)注
關(guān)注
0文章
103瀏覽量
6259 -
組合邏輯電路
+關(guān)注
關(guān)注
6文章
71瀏覽量
15020
發(fā)布評(píng)論請(qǐng)先 登錄
用FPGA芯片實(shí)現(xiàn)高速異步FIFO的一種方法
基于FPGA的異步FIFO的實(shí)現(xiàn)

關(guān)于異步fifo的安全問(wèn)題:
請(qǐng)問(wèn)怎樣去設(shè)計(jì)一種異步FIFO?
異步FIFO結(jié)構(gòu)及FPGA設(shè)計(jì)
一種異步FIFO的設(shè)計(jì)方法

異步FIFO結(jié)構(gòu)及FPGA設(shè)計(jì)

基于FPGA的異步FIFO設(shè)計(jì)方法詳解

基于異步FIFO結(jié)構(gòu)原理

關(guān)于一種面向異步FIFO的低開(kāi)銷容錯(cuò)機(jī)制研究

一種基于FPGA內(nèi)部存儲(chǔ)器的適合音頻解嵌的高效異步FIFO設(shè)計(jì)

同步FIFO和異步FIFO的區(qū)別 同步FIFO和異步FIFO各在什么情況下應(yīng)用
請(qǐng)問(wèn)異步FIFO的溢出操作時(shí)怎么樣判斷的?
同步FIFO和異步FIFO區(qū)別介紹

評(píng)論