《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于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亚洲国产精品_日韩亚洲一区二区
久久久久一区| 开元免费观看欧美电视剧网站| 国产精品99久久久久久有的能看| 狠狠色综合色综合网络| 国产精品久久久久久久久| 欧美日本网站| 欧美电影电视剧在线观看| 久久亚洲精品视频| 久久久久久穴| 欧美一级专区免费大片| 亚洲欧美国产一区二区三区| 中文国产成人精品| 中国女人久久久| 亚洲先锋成人| 欧美一级艳片视频免费观看| 国产日韩欧美精品| 国产精品主播| 国产欧美一区二区三区在线老狼| 国产精品久久久久av免费| 欧美日韩综合网| 欧美日在线观看| 欧美网站在线| 国产精品视频不卡| 国产女人精品视频| 国产亚洲综合精品| 狠狠色综合播放一区二区| 在线观看欧美| 亚洲精品国产精品国产自| 亚洲六月丁香色婷婷综合久久| 亚洲精品韩国| 这里只有精品在线播放| 亚洲在线第一页| 欧美一区二区网站| 西西裸体人体做爰大胆久久久| 欧美一区二区三区精品电影| 欧美一区二区在线免费观看| 亚洲第一搞黄网站| 亚洲伦理久久| 亚洲图片在线| 久久不见久久见免费视频1| 久久久久久久久综合| 开心色5月久久精品| 欧美日韩1区| 欧美日韩一区在线观看| 国产精品人人做人人爽人人添 | 欧美成人免费全部观看天天性色| 欧美国产综合一区二区| 国产精品福利在线观看| 国产视频精品va久久久久久| 在线日韩视频| 在线一区二区三区四区| 欧美一区二区| 99re国产精品| 欧美夜福利tv在线| 亚洲精品三级| 亚洲三级影片| 亚洲欧美韩国| 亚洲日本精品国产第一区| 亚洲视频在线观看网站| 欧美一区二区观看视频| 欧美ed2k| 国产精品午夜av在线| 在线日韩视频| 亚洲永久字幕| 亚洲日本欧美| 欧美在线免费看| 欧美精品一区在线观看| 国产欧美精品一区 | 激情综合在线| 一区二区三区视频观看| 久久成人精品无人区| 亚洲少妇中出一区| 美女黄网久久| 国产乱码精品一区二区三区av| 亚洲国产精品热久久| 亚洲线精品一区二区三区八戒| 亚洲高清视频一区二区| 亚洲综合国产| 欧美国产日韩xxxxx| 国产日韩欧美视频| 日韩亚洲精品在线| 欧美专区在线播放| 亚洲欧美国产一区二区三区| 欧美国产一区视频在线观看| 久久久国产精品一区| 国产精品s色| 亚洲高清免费| 久久成人在线| 欧美一级专区免费大片| 欧美日韩一区二区国产| 亚洲第一主播视频| 欧美中文在线免费| 欧美一区二区三区免费观看| 欧美日本三区| 亚洲国产精品日韩| 久久国产精品网站| 欧美影院午夜播放| 国产精品区一区| 一本大道av伊人久久综合| 亚洲人在线视频| 久久久久久亚洲综合影院红桃| 国产精品videossex久久发布| 亚洲欧洲一二三| 亚洲欧洲日产国产综合网| 久久久久网址| 国内成人在线| 欧美在线视频播放| 欧美一区三区二区在线观看| 国产精品久久久久一区二区三区 | 欧美精品粉嫩高潮一区二区 | 亚洲欧美999| 亚洲欧美不卡| 欧美三级午夜理伦三级中视频| 亚洲国产老妈| 亚洲三级色网| 欧美高清视频一区| 亚洲黄色性网站| 99精品99| 欧美日韩视频专区在线播放| 亚洲日本精品国产第一区| 日韩亚洲精品在线| 午夜精品福利电影| 国产区在线观看成人精品| 海角社区69精品视频| 亚洲欧美国产毛片在线| 新片速递亚洲合集欧美合集| 欧美三级精品| 亚洲尤物影院| 久久精品国产综合精品| 国产揄拍国内精品对白| 久久国产精品色婷婷| 久久婷婷国产麻豆91天堂| 伊人夜夜躁av伊人久久| 亚洲国产一区二区a毛片| 欧美成人官网二区| 亚洲肉体裸体xxxx137| 一本一本a久久| 欧美三级在线播放| 亚洲尤物在线视频观看| 欧美中文字幕在线| 国外精品视频| 亚洲区一区二区三区| 欧美精品 国产精品| 亚洲美女视频在线观看| 亚洲一区二区三区精品在线| 国产精品剧情在线亚洲| 性伦欧美刺激片在线观看| 久久久久久久网站| 亚洲国产精品高清久久久| 一个人看的www久久| 欧美性猛片xxxx免费看久爱| 亚洲一区免费在线观看| 久久精品夜色噜噜亚洲aⅴ| 影音先锋一区| 一本大道久久精品懂色aⅴ| 国产精品国产一区二区| 亚欧成人在线| 欧美大片va欧美在线播放| 日韩亚洲国产精品| 久久精品99| 亚洲大胆在线| 亚洲综合电影| 在线免费观看日本欧美| 中国成人黄色视屏| 国产主播一区二区三区四区| 亚洲人成在线观看| 国产精品毛片大码女人| 久久国内精品视频| 欧美三级黄美女| 久久国产精品99精品国产| 欧美日韩岛国| 香蕉乱码成人久久天堂爱免费| 欧美 日韩 国产精品免费观看| 日韩亚洲国产欧美| 久久久免费观看视频| 亚洲品质自拍| 久久成人这里只有精品| 91久久国产精品91久久性色| 欧美怡红院视频| 亚洲日本中文字幕| 欧美综合第一页| 亚洲乱码久久| 久久久夜夜夜| 亚洲视频播放| 欧美成熟视频| 午夜精品一区二区三区在线 | 国产精品久久久久久五月尺| 亚洲成人在线网| 欧美视频不卡中文| 亚洲国产精品久久久久婷婷884 | 亚洲欧洲综合| 国产精品日韩专区| 亚洲伦理在线免费看| 国产日韩在线亚洲字幕中文| 一本大道久久a久久精品综合| 国产亚洲一二三区| 国产精品99久久久久久久久| 韩日午夜在线资源一区二区| 亚洲欧美电影在线观看| 亚洲国产精品久久久久婷婷884|