《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于VHDL的異步FIFO設計
基于VHDL的異步FIFO設計
現代電子技術
李 輝,王 暉 中國空空導彈研究院
摘要: 摘要:FIFO經常應用于從一個時鐘域傳輸數據到另一個異步時鐘域。為解決異步FIFO設計過程中空滿標志判斷難以及FPGA亞穩態的問題,提出一種新穎的設計方案,即利用格雷碼計數器(每次時鐘到來僅有1位發生改變)表示讀/寫
Abstract:
Key words :

摘要:FIFO經常應用于從一個時鐘域傳輸數據到另一個異步時鐘域。為解決異步FIFO設計過程中空滿標志判斷難以及FPGA亞穩態的問題,提出一種新穎的設計方案,即利用格雷碼計數器(每次時鐘到來僅有1位發生改變)表示讀/寫指針,設計二級同步鏈為跨越不同時鐘域的讀/寫指針,以提供充足的穩定時間,并通過對比格雷碼指針產生空滿標志位。該設計采用VHDL語言進行設計,利用ALTERA公司的FPGA得以實現。經驗證進一步表明,模塊化的設計不僅避免了亞穩態的產生,增大平均無故障工作時間(MBTF),也使工作效率大為提升。
關鍵詞:FIFO;異步;亞穩態;格雷碼

    先進先出緩存電路讀/寫(FIFO)在大規模邏輯設計中被廣泛應用,幾乎每個芯片都要涉及,同樣在空空導彈的數據傳輸體系中也得以大量應用。FIFO類型可以分為兩種,第一種為同步FIFO,即讀/寫時鐘是同步的,這里的同步不僅僅是指讀/寫時鐘為同一個時鐘,即屬于同一個時終域。當讀/寫時鐘頻率為倍數關系,即相位關系確定時,也歸屬同步FIFO的范疇。另一種為異步FIFO,讀/寫時鐘頻率不成倍數關系或相位關系不確定,即跨時鐘域。異步FIFO可以在不同的時鐘域之間快速方便地傳輸實時數據,因此在遙測數據傳輸中,異步FIFO實用性更好。然而如何正確地產生空滿標志以及如果解決亞穩態問題是異步FIFO設計的難點。

1 FIFO結構
    首先,典型的FIFO結構框圖如圖1所示。FIFO的數據存儲在具有獨立寫端口和讀端口的RAM中。讀指針r0_pointer指向下一個將要讀取的位置,寫指針wrpointer指向下一個將要寫入的位置,每1次寫操作后寫指針加1,讀操作使讀指針加1。狀態產生模塊中,full和empty表示FIFO讀/寫的臨界狀態。FIFO設計的關鍵是產生讀/寫地址和空滿標志。空滿標志是基于引起指針相等的操作。如果是復位或者讀操作引起
讀/寫指針相等,FIFO認為是空;如果原因是寫操作,那么FIFO認為是滿。異步FIFO設計的難點是如何同步跨時鐘域的指針以及空滿標志的產生。

a.jpg



2 亞穩態
    亞穩態是當信號在無關的電路中或異步時鐘域之間傳輸時導致FPGA系統失效的一種現象。包括FPGA在內的所有數字器件的寄存器都定義了信號時序要求,以保證每一個寄存器都能夠從輸入端獲取數據和在輸出端產生數據。為了確保可靠的操作,輸入信號必須在時鐘沿之前穩定一段時間(寄存器建立時間tsu),并且在時鐘沿之后穩定一段時間(寄存器保持時間th),然后寄存器輸出經過一個特定的時鐘到輸出延時后有效。滿足此要求寄存器才可以正確的在輸入端獲取數據在輸出端產生數據,否則輸出有可能是亞穩態。在亞穩態時,寄存器的輸出電壓在高低電平之間搖擺,即輸出將有可能是邏輯0(0 V)或者邏輯1(+5 V),或者是介于0~5 V中間的某個值。亞穩態產生機制圖如圖2所示,當建立時間或者保持時間不滿足時序要求時便會產生亞穩態。

b.jpg


    在同步系統中,輸入信號必須總是滿足寄存器時序要求,所以亞穩態不會發生。亞穩態問題通常發生在當一個信號在無關的線路中或異步時鐘域中傳輸。一個寄存器進入亞穩態和從亞穩態進入穩態的時間依賴于制造商的制造工藝和使用環境。大部分情況下,寄存器會很快的進入一個定義的穩態中。在異步FIFO設計中就要避免亞穩態的產生。

3 解決問題的方法
3.1 同步寄存器
    當信號在不相關或者異步時鐘域傳輸時,在新的時鐘域使用這個信號之前必須進行同步,比如異步FIFO的讀指針被同步到寫時鐘域或寫指針被同步到讀時鐘域。新時鐘域里的第一個寄存器的作用就是一個同步寄存器。同步裝置中寄存器到寄存器路徑上的時序裕量可以為亞穩態信號提供穩定時間。由兩個寄存器組成的二級同步鏈如圖3所示,它大大的提高了系統的平均無故障工作時間(MTBF),減少了信號傳輸過程中亞穩態問題的風險。此外,可以通過三級同步進一步增加MTBF值,但在實際中很少需要。

c.jpg


3.2 格雷碼(Gray code)計數器
    設計異步FIFO的原則是安全可靠地把數據從一個時鐘域傳輸到另一個時鐘域。如果用一個相對于計數器時鐘是異步的時鐘來取樣計數器的值,就要考慮計數器的每一位在哪個范圍內變化,每一位都有機會同時發生變化,比如從FFFF變化到0000,這時每個單獨的位都處于亞穩態。這種變化意味著讀數有可能是0000~FFFF之間的任意一個值。這種情況下FIFO將無法正常工作,于是設計一個格雷碼來表示的計數器,
因為格雷碼是最小距離碼,相鄰的碼元只有1位不同,它可以避免因延遲不一致而引起的毛刺現象。
    d.jpg
    計數器由觸發器組和累加器組成,處理格雷碼計數器的辦法為:將格雷碼轉換為二進制碼元,然后加1,再將它轉換回格雷碼并存儲,這是解決產生N位格雷碼算法棘手問題的一個辦法。異步FIFO的寫地址和讀地址由格雷碼計數器來實現計數,讀/寫指針均用格雷碼來表示,格雷碼計數器指針原理如圖4所示,當FIFO非空或者非滿時,讀指針或者寫指針實現加1操作。

e.jpg


3.3 一種新穎的設計方法產生空滿標志
    空滿標志位是通過比較讀/寫指針來判斷的,空滿標志的判斷方法:對于二進制地址來說,如果RAM大小為M,那么它需要的地址位寬度為N=log2 M。假設雙口RAM大小是8 B,所需尋址地址位寬度是3 b。如果讀/寫指針均用3位來表示的話,那么當讀/寫指針相等時,無法判別是讀時針追上了寫時針造成讀空還是寫時針追上了讀時針造成寫滿,這樣就無法正確判斷空、滿標志。為了方便的區分空、滿,讀/寫指針各增加1位,取地址指針寬度為log2M+1,尋址中沒有使用的最高位地址標記為MSB,即讀/寫指針為N+1位,尋址范圍為2n。表1為格雷碼表示的4位地址指針。

f.jpg


    仔細觀察表1并分析數據,一種新穎的判斷空滿標志的方法為:當讀/寫指針的最高位(MSB)不相等且讀/寫指針的次高位不相等,剩余的N-2位地址相等時,此時寫指針追上了讀指針,即寫指針比讀指針多轉一圈,狀態模塊輸出滿標志;當讀/寫指針N+1位都相等時,狀態模塊輸出空標志。判斷滿標志部分的VHDL代碼:
f.jpg
    h.jpg
3.4 異步FIFO總體設計
    通過時針比較產生的異步FIFO框圖如圖5所示。WCLK和RCLK分別為讀時鐘和寫時鐘,wrst_n和rrst_n分別為讀/寫模塊的復位信號。  rdata為數據輸出端口,wdata為數據輸入端口。異步FIFO通過讀/寫指針來尋址一個雙口RAM來實現對數據的讀/寫,雙口RAM的大小為2nB。讀指針被二級同步鏈到寫時鐘域,然后與寫時針比較產生滿標志,讀指針產生讀地址raddress;寫時針被二級同步鏈同步到讀時鐘域,然后與讀時鐘比較產生空標志,寫指針產生寫地址waddress。需要注意的是此異步FIFO設計中,空滿標志是保守的空滿標志,比如滿標志,當讀時針通過二級同步鏈同步到寫時鐘域且滿足滿標志的條件時,寫指針停止加1操作,而同步讀指針的過程中,讀時針則移動到了其他的地址,同樣的適合于空標志,當輸出空,滿時,其實FIFO的真實狀態是還有空間沒被寫滿或者讀空,這就是保守的空和滿,而這正保證了FIFO不會向上會向下溢出,進一步提高了FIFO工作的可靠性。

i.jpg


    表2為平均無故障工作時間的對比,C1和C2依賴于器件工藝。

j.jpg



4 結語
    一個高的平均無故障工作時間表明一個設計是優秀的,提高亞穩態的平均無故障工作時間減少信號傳輸中導致亞穩態問題的風險。本文通過研究FIFO的基本結構以及FPGA亞穩態的產生機理,提出了利用二級同步鏈和格雷碼計數器指針解決了同步以及空滿狀態判斷的難題,給出了VHDL軟件代碼,且該設計已經通過QuartusⅡ的時序仿真驗證,作為獨立模塊可以應用到需要異步時鐘域傳輸數據的電路中,大大提高異步數據傳輸效率及平均無故障工作時間。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品成人精品| 一本色道久久88亚洲综合88| 在线国产欧美| 国产伦精品一区二区三区四区免费| 免费亚洲婷婷| 欧美在线视频观看免费网站| 亚洲小视频在线观看| 亚洲人成人99网站| 欧美在线视频免费观看| 亚洲女人天堂av| 亚洲午夜激情免费视频| 日韩午夜黄色| 亚洲精品日日夜夜| 最新亚洲一区| 亚洲高清视频中文字幕| 国模精品一区二区三区色天香| 国产精品九九| 欧美三级网址| 欧美日韩国产精品专区 | 久久综合999| 久久久久欧美精品| 久久精品国产成人| 欧美一区午夜精品| 欧美亚洲综合另类| 性久久久久久久久久久久| 亚洲男人影院| 亚洲女同同性videoxma| 亚洲一区二区三区国产| 一区二区欧美日韩| 亚洲视频成人| 亚洲午夜精品久久| 亚洲欧美制服另类日韩| 亚久久调教视频| 久久不射中文字幕| 久久久www成人免费无遮挡大片| 久久久精品动漫| 麻豆freexxxx性91精品| 欧美福利视频一区| 欧美精品久久久久久| 欧美日韩国产免费| 国产精品久久久999| 国产精品久久久久毛片软件 | 亚洲欧美日韩在线不卡| 羞羞色国产精品| 久久久一二三| 欧美成人国产va精品日本一级| 欧美国产视频在线观看| 欧美日韩精品三区| 国产久一道中文一区| 国产一区二区三区奇米久涩 | 狠狠做深爱婷婷久久综合一区| 激情亚洲网站| 亚洲三级网站| 一区二区三区四区五区精品| 亚洲欧美国产高清| 亚洲第一精品在线| 亚洲日本一区二区三区| 一区二区三区日韩欧美精品| 性色一区二区三区| 老鸭窝毛片一区二区三区| 欧美日本高清| 国产日韩欧美精品一区| 黄色一区二区三区四区| 亚洲日本黄色| 亚洲尤物在线视频观看| 久久电影一区| 9色精品在线| 久久精品国产视频| 欧美激情aⅴ一区二区三区| 国产精品久久久久久户外露出| 国产揄拍国内精品对白| 亚洲精品极品| 午夜性色一区二区三区免费视频| 亚洲国产欧美在线| 亚洲一区欧美| 久久免费精品视频| 欧美日韩国产免费| 国内久久婷婷综合| 99热这里只有精品8| 欧美一区二区视频在线观看| 一本大道久久a久久综合婷婷| 午夜精品视频| 免费在线播放第一区高清av| 国产精品大片| 永久免费毛片在线播放不卡| 亚洲视频一二| 亚洲国产欧美一区二区三区丁香婷| 亚洲中字黄色| 免费观看日韩av| 国产精品久久久久一区二区| 亚洲国产一区二区在线| 亚洲欧美日韩人成在线播放| 亚洲最新色图| 你懂的网址国产 欧美| 国产日产欧产精品推荐色 | 亚洲欧洲一区二区天堂久久| 午夜一区二区三区在线观看| 99视频一区二区| 久久性色av| 国产精品外国| 亚洲理论电影网| 久久精品国产2020观看福利| 亚洲欧美www| 欧美精品一区二区高清在线观看| 国产一区二区三区无遮挡| 一区二区欧美视频| 亚洲看片免费| 麻豆精品视频在线观看| 国产免费成人在线视频| 一区二区三区黄色| 99re热这里只有精品免费视频| 久久视频这里只有精品| 国产麻豆精品theporn| 在线一区观看| 国产精品99久久久久久白浆小说 | 欧美在线中文字幕| 欧美在线网站| 国产精品久久久久久影院8一贰佰| 亚洲精品一区二区三区樱花 | 亚洲激情二区| 久久综合给合久久狠狠狠97色69| 国产精品视频免费| 一本色道久久综合精品竹菊| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产日韩欧美在线一区| 中文在线资源观看网站视频免费不卡 | 亚洲一区二区动漫| 欧美日韩成人精品| 亚洲精品日韩久久| 亚洲美女av黄| 欧美国产激情二区三区| 激情另类综合| 久久精品夜色噜噜亚洲a∨| 久久成人一区| 国产乱码精品一区二区三区忘忧草| 一本色道88久久加勒比精品| 一区二区高清| 欧美日韩一区二区视频在线观看| 亚洲国语精品自产拍在线观看| 久久精品国产免费观看| 久久亚洲不卡| 激情成人综合| 亚洲国产精品一区二区www在线 | 久久国产一区二区| 国产一区二区三区四区在线观看| 欧美一区二区高清在线观看| 欧美在线免费视屏| 国产亚洲一区在线播放| 久久精品国产99国产精品| 久久天天躁狠狠躁夜夜爽蜜月| 国产一区二区日韩精品| 亚洲福利小视频| 免费永久网站黄欧美| 亚洲三级观看| 午夜精品国产精品大乳美女| 国产欧美日韩不卡| 亚洲丰满在线| 欧美片在线观看| 亚洲性图久久| 久久成人18免费网站| 激情欧美一区二区三区| 亚洲福利专区| 欧美高清在线视频观看不卡| 夜夜嗨av一区二区三区网页| 午夜精品免费视频| 国产一区二区高清不卡| 亚洲激情第一页| 欧美日韩免费观看一区| 亚洲亚洲精品三区日韩精品在线视频 | 国产亚洲欧美日韩美女| 亚洲激情欧美激情| 欧美日韩亚洲一区二区三区在线观看| 一本到12不卡视频在线dvd| 性欧美18~19sex高清播放| 狠狠色伊人亚洲综合成人| 99视频国产精品免费观看| 国产精品久久久久免费a∨大胸| 欧美一区二区三区四区在线观看地址| 久久综合色综合88| 日韩亚洲国产精品| 久久se精品一区精品二区| 亚洲第一色中文字幕| 亚洲一卡二卡三卡四卡五卡| 国产伪娘ts一区| 亚洲精品资源| 国产精品视频免费| 亚洲欧洲日本专区| 国产精品第一区| 久久精彩视频| 欧美另类高清视频在线| 亚洲免费视频在线观看| 欧美不卡视频| 亚洲一区二区高清| 免费成人性网站| 亚洲视频狠狠| 久热精品视频在线免费观看| 夜夜嗨av一区二区三区中文字幕 | 亚洲黄色小视频| 国产精品人人做人人爽| 91久久中文|