《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于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設計的關鍵是產生讀/寫地址和空滿標志??諠M標志是基于引起指針相等的操作。如果是復位或者讀操作引起
讀/寫指針相等,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亚洲国产精品_日韩亚洲一区二区
久久精品视频免费播放| 性久久久久久| 国产精品久久久久久久9999 | 亚洲欧美激情视频| 亚洲人成网站在线观看播放| 国产日韩亚洲欧美| 欧美日韩国产三区| 看欧美日韩国产| 国产精品亚洲视频| 亚洲国产影院| 国产日韩欧美黄色| 欧美午夜免费| 欧美成年视频| 久久久美女艺术照精彩视频福利播放| 亚洲一区精品视频| 亚洲最新视频在线| 亚洲国产欧美日韩精品| 欧美亚洲视频| 亚洲一区二区伦理| 韩国av一区二区三区| 国产精品一区2区| 欧美日韩系列| 欧美成人午夜剧场免费观看| 久久婷婷色综合| 久久er99精品| 一区二区三区不卡视频在线观看| 91久久精品国产91久久| 亚洲欧美成人一区二区三区| 一区二区三区四区五区在线 | 尤物yw午夜国产精品视频| 国产亚洲精品久久久| 国产精品久久午夜夜伦鲁鲁| 欧美日本三级| 欧美精品一区二区视频 | 久久影视精品| 久久综合伊人77777麻豆| 久久精品国产精品亚洲精品| 亚洲欧美一级二级三级| 亚洲欧美日韩视频二区| 亚洲一区一卡| 亚洲影音一区| 亚洲在线观看视频| 亚洲欧美一区二区三区久久| 亚洲一区三区视频在线观看| 亚洲自拍偷拍色片视频| 亚洲在线播放电影| 午夜精品久久久久久久白皮肤 | 一本久久a久久精品亚洲| 日韩视频一区二区在线观看 | 亚洲国产一区二区视频| 亚洲国产精品一区二区第四页av | 精品成人乱色一区二区| 在线看片日韩| 亚洲国产99精品国自产| 亚洲国产精品第一区二区| 亚洲国产精品久久人人爱蜜臀 | 亚洲精品免费网站| 日韩午夜av电影| 一区二区不卡在线视频 午夜欧美不卡'| 日韩视频在线你懂得| 在线视频精品一区| 亚洲综合大片69999| 欧美亚洲专区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美国产一区视频在线观看| 欧美精品在线免费| 欧美午夜在线视频| 国产精品一二| 欧美日韩另类在线| 欧美午夜电影完整版| 国产精品专区h在线观看| 国产欧美日韩综合精品二区| 精品成人在线视频| 亚洲欧洲在线播放| 亚洲一区精品视频| 亚洲制服丝袜在线| 午夜在线播放视频欧美| 亚洲第一精品夜夜躁人人躁| 99国产精品久久久久久久久久| 亚洲午夜小视频| 久久成人资源| 欧美激情中文字幕在线| 欧美性大战久久久久久久| 国产日韩欧美在线播放| 在线日韩电影| 亚洲调教视频在线观看| 久久精品男女| 亚洲无毛电影| 欧美freesex8一10精品| 国产三区精品| 亚洲伊人久久综合| 亚洲视频在线免费观看| 免费亚洲视频| 韩国成人福利片在线播放| 亚洲午夜日本在线观看| 亚洲精品一区二区三区99| 91久久综合亚洲鲁鲁五月天| 欧美一级午夜免费电影| 欧美日韩一级大片网址| 在线看一区二区| 欧美一区二区三区久久精品茉莉花| 一区二区三区高清视频在线观看| 久久久久久久久久久久久女国产乱 | 亚洲视频电影在线| 欧美成人中文| 精品动漫一区二区| 久久不射中文字幕| 欧美一区二区私人影院日本 | 久久久免费精品视频| 免费观看成人www动漫视频| 国产精品亚洲综合色区韩国| 亚洲人人精品| 亚洲区一区二区三区| 久久久久久久久岛国免费| 国产欧美短视频| 亚洲一区二区三区在线视频| 一区二区三区精品在线| 欧美理论在线播放| 91久久国产综合久久| 最新国产拍偷乱拍精品 | 91久久精品网| 亚洲国产成人精品女人久久久 | 亚洲国产黄色| 久久免费视频网站| 国产午夜亚洲精品不卡| 亚洲影视九九影院在线观看| 亚洲综合日韩在线| 国产精品成人一区二区三区吃奶 | 亚洲一区二区三区成人在线视频精品| 中文av字幕一区| 欧美精品一区二区三区蜜桃| 亚洲欧洲日本一区二区三区| 亚洲欧洲一区二区三区| 欧美a级片网| 91久久精品国产91久久| 亚洲欧美中文另类| 亚洲精品久久久久久久久久久久久| 久久久久久午夜| 黄色成人在线网址| 亚洲第一网站免费视频| 麻豆亚洲精品| 91久久精品网| 在线午夜精品自拍| 欧美午夜精品理论片a级大开眼界| 一本色道久久综合亚洲精品不| 亚洲尤物在线视频观看| 国产麻豆精品久久一二三| 午夜精品一区二区三区在线| 欧美专区18| 国语自产精品视频在线看抢先版结局 | 麻豆freexxxx性91精品| 国产中文一区| 影音先锋中文字幕一区| 国产精品一区二区三区成人| 欧美激情综合色| 亚洲黄色尤物视频| 亚洲桃色在线一区| 国产美女精品免费电影| 久久激情久久| 欧美精彩视频一区二区三区| 99精品视频一区二区三区| 午夜在线观看欧美| 国内成+人亚洲| 日韩视频不卡| 国产精品色午夜在线观看| 欧美一区二区三区免费观看| 老司机午夜免费精品视频| 91久久精品美女高潮| 亚洲影视在线播放| 国模精品一区二区三区色天香| 亚洲免费成人av电影| 国产精品乱人伦中文| 久久riav二区三区| 欧美乱在线观看| 午夜精品久久久久久久| 欧美阿v一级看视频| 亚洲深夜av| 老司机一区二区三区| 在线午夜精品自拍| 老司机精品久久| 亚洲午夜一区二区| 欧美不卡一卡二卡免费版| 9i看片成人免费高清| 久久久久久久久蜜桃| 亚洲看片免费| 久久乐国产精品| 一本久道久久综合狠狠爱| 久久香蕉国产线看观看网| 9人人澡人人爽人人精品| 久久人人97超碰人人澡爱香蕉 | 亚洲最黄网站| 久久亚洲春色中文字幕久久久| 夜夜嗨av一区二区三区四季av | 麻豆91精品91久久久的内涵| 亚洲图片欧美一区| 欧美jizz19性欧美| 午夜亚洲影视| 欧美精选一区| 久久精品亚洲一区二区| 国产精品久久久久影院色老大|