国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

FPGA異步FIFO設計中的問題與解決辦法

發布時間:2010-1-16 15:47    發布者:李寬
關鍵詞: FIFO , FPGA , 辦法 , 設計 , 異步
隨著數字電子系統設計規模的擴大,一些實際應用系統中往往含有多個時鐘,數據不可避免地要在不同的時鐘域之間傳遞。如何在異步時鐘之間傳輸數據,是數據傳輸中一個至關重要的問題,而采用FIFO正是解決這一問題的有效方法。異步FIFO是一種在電子系統中得到廣泛應用的器件,多數情況下它都是以一個獨立芯片的方式在系統中應用。本文介紹一種充分利用FPGA內部的RAM資源,在FPGA內部實現異步FIFO模塊的設計方法。這種異步FIFO比外部 FIFO 芯片更能提高系統的穩定性。

1 FIFO的基本結構和工作原理

FIFO(First In First Out)是一種采用環形存儲結構的先進先出存儲器。其使用一個雙端口存儲器存放數據,數據發送方在一端寫入數據,接收方在另一端讀出數據,能夠協調好兩個時鐘域的工作,滿足高時鐘頻率的要求。FIFO在FPGA設計中主要用來緩沖數據和隔離時鐘或相位差異。訪問FIFO時不需要地址線,只需要數據線和讀寫控制信號線,且數據地址由內部讀寫指針自動加1完成,因此利用FIFO實現數據的緩存具有接口簡單、讀寫方便的優點。

根據FIFO的工作時鐘,可將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘,在時鐘沿來臨時同時進行讀寫操作;異步FIFO是指讀寫時鐘不是同一個時鐘,而是相互獨立的。實際上,工作在同一時鐘的FIFO很少用到,多數都是讀寫時鐘獨立的異步FIFO。本文設計的異步FIFO位寬為8,深度(即FIFO可以存儲8位數據的個數)為1 024。異步FIFO的結構如圖1所示。



雙端口RAM存儲器具有獨立的讀寫端口。如果用一個單端口RAM存儲器實現異步FIFO,還應該包含一個仲裁器來保證同一時刻只能有一種操作(讀或寫操作)。本文選擇的雙端口RAM并不一定是真正的雙端口,只要有獨立的讀寫端口即可。讀寫控制邏輯由加法計數器構成,實現讀寫地址的自動加1功能。空/滿標志位的產生邏輯給系統提供空(empty)和滿(full)信號。

2 異步FIFO設計中的問題與解決辦法

2.1 亞穩態問題

在含有觸發器的電路中往往會出現亞穩態問題。亞穩態會使異步FIFO的讀寫地址發生錯誤,產生誤讀或者誤寫。為此異步FIFO設計中亞穩態問題也是一個比較重要的問題。亞穩態不可能完全消除,只能使其出現的概率降到最低。主要有2種方法來降低亞穩態出現的概率:

①采用觸發器冗余方式。即采用多個觸發器級聯的方式,使本來出現概率為P的亞穩態,其出現概率降低到P2,但這種方式會導致延時增加。

②使用格雷碼。格雷碼的相臨碼元之間只有一位發生變化,這就大大地降低了亞穩態出現的概率。本文采用格雷碼方式。

2.2 空/滿標志位的判斷

為保證數據的正確寫入和讀出,不發生寫滿和讀空操作,怎樣判斷空/滿標志位的產生就成為異步FIFO設計的核心問題。異步FIFO是環形存儲的,當讀寫地址指針相等時,意味著空標志位或者滿標志位的產生。但是卻不能確定是寫滿還是讀空狀態。為解決這一問題,本文將轉換為格雷碼后的讀寫地址指針分別經過檢測和計數器。每當讀寫指針遍歷一圈(當讀寫地址指針指向雙端口RAM的最后一個地址)時,寫計數i加1,讀計數j加1。這樣寫滿狀態和讀空狀態的判斷就需要同時滿足兩個條件。下面分別給出寫滿和讀空狀態的判斷。

①寫滿狀態的判別:當讀地址指針等于寫地址指針,并且i>j時,產生滿標志。

②讀空狀態的判別:當寫地址指針等于讀地址指針,并且i=j時,產生空標志。

由于空/滿標志位產生的結構圖對稱,故本文只給出滿標志位產生的結構圖,如圖2所示。其中,主數i為寫地址指針遍歷的圈數,計數j為讀地址指針遍歷的圈數。



從圖2中可看出,地址指針轉換為格雷碼后,經過檢測和計數環節,將讀寫地址和讀寫指針遍歷的圈數分別送入比較器進行比較,從而準確地產生滿標志位。

3 FPGA內部軟異步FIFO設計

本設計中FPGA采用的是Xilinx Spartan3系列中的XC3S400PQ208。內部有56 Kb的分布式RAM和288 Kb的RAM,以及4個DCM(數字時鐘管理器)單元,為系統提供獨立的讀寫時鐘頻率。可以利用這些資源在FPGA內部實現異步FIFO模塊。本文采用 VHDL語言對雙端口RAM的讀寫操作進行編程,實現FPGA內部軟FIFO的設計。部分讀寫雙端口RAM和空/滿標志位的判斷源程序如下:





4 系統仿真

如果系統的讀時鐘頻率大于寫時鐘頻率,就有可能出現讀空的情況;如果系統的寫時鐘頻率大于讀時鐘頻率,就可能出現寫滿的情況。在實際系統中,一般都設置寫時鐘頻率大于讀時鐘頻率,故本文只考慮后一種情況。

本系統采用QuartusIl8.1對系統進行仿真,由于系統深度較大,所以設定仿真時間為100 μs。系統剛上電時,雙端口RAM中暫時沒有數據,此時系統處于讀空狀態,empty變為高電平,full保持低電平,如圖3所示。隨著RAM中數據的不斷寫入,系統進入寫滿狀態,此時full變為高電平,而empty變為低電平,如圖4所示。





結 語

本文根據異步FIFO設計的難點和要點,提出了具體的解決方案。在空/滿標志位產生條件的判斷上提出了“檢測+計數器”的新思路,使系統設計方便實用,并采用格雷碼方式降低了亞穩態出現的概率。通過驗證,這種方法在有效判斷空/滿標志位方面有很大的優勢。

參考文獻

1. 雷海衛,劉俊.FPGA中軟FIFO的設計與實現[J].微計算機信息,2008,24(2):207-209.
2. 于海,樊曉椏.基于FPGA異步FIFO的研究與實現[J].微電子學與計算機,2007,24(3):210-216.
3. 楊軍,孔兵,宋克儉,等.基于FPGA的高速異步FIFO存儲器設計[J].云南大學學報:自然科學版,2007,29(6):560-565.
4. 潘松,黃繼業.EDA技術使用教程[M],北京:科學出版社,2007.

作者:謝文華 高文華 太原科技大學 ) 來源:《單片機嵌入式系統應用》 2009(8)
本文地址:http://m.qingdxww.cn/thread-7739-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 無線充電基礎知識及應用培訓教程2
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 為何選擇集成電平轉換?
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 少妇太爽了在线观看 | 国产盗摄一区二区欧美精品 | 久久青青草原精品国产麻豆 | 国产v精品欧美精品v日韩 | 四虎免费看黄 | 4438色 | 激情综合五月亚洲婷婷 | 国产三级在线观看视频不卡 | 中文字幕在线国产 | 日韩高清专区 | 国产亚洲女人久久久久久 | 国产成人亚洲精品91专区手机 | 最新欧美精品 | 天天se天天cao综合网蜜芽 | 四虎影院wwww | 欧美日操 | 日韩视频高清免费看 | 日本免费色网站 | 亚州中文 | 久久久全国免费视频 | 四虎最新入口 | 国产精品视频一区牛牛视频 | 中国美女大战黑人国产 | 精品日韩一区二区三区视频 | 欧美日韩国产在线观看 | 亚洲图片在线播放 | 在线视频一区二区三区 | 久久99精品国产免费观看 | 四虎永久免费影院在线 | 啊用力太猛了啊好深视频免费 | 国产精成人品 | 免费在线观看污网站 | 亚洲激情在线播放 | 国产日韩精品欧美一区视频 | 国产亚洲精品自在久久77 | 成年女人毛片免费观看不卡 | 欧美三级在线观看视频 | 日本大片免费观看 | 国产精品麻豆a在线播放 | 麻豆视频成人 | 中文字幕在线二区 |