基于veriloghdl的異步FIFO設計說明_第1頁
基于veriloghdl的異步FIFO設計說明_第2頁
基于veriloghdl的異步FIFO設計說明_第3頁
基于veriloghdl的異步FIFO設計說明_第4頁
基于veriloghdl的異步FIFO設計說明_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 PAGE38 / NUMPAGES38題 目 基于verilog hdl的異步FIFO設計 畢業(yè)設計(論文)原創(chuàng)性聲明和使用授權說明原創(chuàng)性聲明本人重承諾:所呈交的畢業(yè)設計(論文),是我個人在指導教師的指導下進行的研究工作與取得的成果。盡我所知,除文中特別加以標注和致的地方外,不包含其他人或組織已經發(fā)表或公布過的研究成果,也不包含我為獲得與其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了意。作 者 簽 名:日 期:指導教師簽名: 日期:使用授權說明本人完全了解大學關于收集、保存、使用畢業(yè)設計(論文)的規(guī)定,即:按照學校要求提交

2、畢業(yè)設計(論文)的印刷本和電子版本;學校有權保存畢業(yè)設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學??梢圆捎糜坝?、縮印、數(shù)字化或其它復制手段保存論文;在不以贏利為目的前提下,學??梢怨颊撐牡牟糠只蛉咳?。作者簽名: 日 期:學位論文原創(chuàng)性聲明本人重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的容外,本論文不包含任何其他個人或集體已經發(fā)表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律后果由本人承擔。作者簽名: 日期: 年 月 日學位論文使用授權書本學位論文作者完全了解學校有

3、關保留、使用學位論文的規(guī)定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位論文的全部或部分容編入有關數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規(guī)定處理。作者簽名:日期: 年 月 日導師簽名: 日期: 年 月 日注意事項1.設計(論文)的容包括:1)封面(按教務處制定的標準封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關鍵詞4)外文摘要、關鍵詞5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結論7)參考文獻8)致9)附錄(對論文支持必要時)2.論文字數(shù)要求:理工

4、類設計(論文)正文字數(shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字數(shù)不少于1.2萬字。3.附件包括:任務書、開題報告、外文譯文、譯文原文(復印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體與大小符合要求,無錯別字,不準請他人代寫2)工程設計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機繪制,所有圖紙應符合國家技術標準規(guī)。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應繪制于無格子的頁面上5)軟件工程類課題應有程序清單,并提供電子文檔5.裝訂順序1)設計(論文)2)附件:按照任務書、

5、開題報告、外文譯文、譯文原文(復印件)次序裝訂基于Verilog HDL的異步FIFO設計與實現(xiàn)摘 要在現(xiàn)代IC設計中,特別是在模塊與外圍芯片的通信設計中,多時鐘域的情況不可避免。當數(shù)據(jù)從一個時鐘域傳遞到另一個域,并且目標時鐘域與源時鐘域不相關時,這些域中的動作是不相關的,從而消除了同步操作的可能性,并使系統(tǒng)重復地進入亞穩(wěn)定狀態(tài),造成系統(tǒng)時鐘時序上的紊亂。為了有效的解決這個問題,我們采用一種異步FIFO(先進先 出)存儲器來實現(xiàn)。本文提出一種新穎的異步FIFO設計方案,它通過先比較讀寫地址并結合象限檢測法產生異步的空/滿標志,再把異步的空/滿標志同步到相應的時鐘域。通過仿真驗證,該方法是穩(wěn)定有

6、效的。關鍵詞:異步;FIFO;亞穩(wěn)態(tài);格雷碼;結繩法Design and accomplishasynchronous FIFO based on Verilog HDLAbstractIn modern IC design, particularly in the communications module and peripheral chip design, multiple clock domains of the inevitable. When data passes from one clock domain to another domain, and the target c

7、lock domains are not associated with the source clock domain, these domains are not related movements, thus eliminating the possibility of simultaneous operation and allows the system to enter the sub-repeat steady-state, causing disorder on the system clock timing. In order to effectively solve thi

8、s problem, we use a asynchronous FIFO (FIFO) memory to achieve. This paper proposes a novel asynchronous FIFO design, which compared reading and writing through the first address and generate an asynchronous combination of quadrant detection empty / full flag, then asynchronous empty / full flag syn

9、chronized to the corresponding clock domain. The simulation results that the method is stable and effective.Key Words: asynchronous; FIFO; metastable state; Gray code; tie knots France目 錄 TOC o 1-4 h z u HYPERLINK l _Toc2468487701 引言 PAGEREF _Toc246848770 h 1HYPERLINK l _Toc2468487711.1 FIFO研究意義 PAG

10、EREF _Toc246848771 h 1HYPERLINK l _Toc2468487721.2 生產需求狀況 PAGEREF _Toc246848772 h 1HYPERLINK l _Toc2468487731.3 存儲器外發(fā)展狀況 PAGEREF _Toc246848773 h 2HYPERLINK l _Toc2468487741.4 FIFO設計技術簡介 PAGEREF _Toc246848774 h 4HYPERLINK l _Toc2468487751.4.1 基于信元的FIFO設計方法 PAGEREF _Toc246848775 h 4HYPERLINK l _Toc246

11、8487761.4.2 基于SRAM/DRAM的大容量FIFO的設計與實現(xiàn) PAGEREF _Toc246848776 h 4HYPERLINK l _Toc2468487771.5 異步FIFO設計中存在的問題與解決辦法 PAGEREF _Toc246848777 h 5HYPERLINK l _Toc2468487781.5.1 亞穩(wěn)態(tài) PAGEREF _Toc246848778 h 5HYPERLINK l _Toc2468487791.5.2 空/滿指針的解決方法 PAGEREF _Toc246848779 h 6HYPERLINK l _Toc2468487801.6 論文主要容 P

12、AGEREF _Toc246848780 h 6HYPERLINK l _Toc2468487812 異步FIFO工作原理簡介 PAGEREF _Toc246848781 h 7HYPERLINK l _Toc2468487822.1 關于異步信號 PAGEREF _Toc246848782 h 7HYPERLINK l _Toc2468487832.2 異步FIFO芯片簡介 PAGEREF _Toc246848783 h 8HYPERLINK l _Toc2468487842.3 FIFO的一些重要參數(shù) PAGEREF _Toc246848784 h 9HYPERLINK l _Toc246

13、8487852.4 異步FIFO設計的難點 PAGEREF _Toc246848785 h 10HYPERLINK l _Toc2468487862.4.1 異步FIFO設計難點概述 PAGEREF _Toc246848786 h 10HYPERLINK l _Toc24684878 解決FIFO的滿/空技術方法概述和特點 PAGEREF _Toc246848787 h 10HYPERLINK l _Toc24684878 亞穩(wěn)態(tài)問題的產生與解決 PAGEREF _Toc246848788 h 10HYPERLINK l _Toc2468487892.5 FIF

14、O的功能簡介 PAGEREF _Toc246848789 h 11HYPERLINK l _Toc2468487902.6 Modelsim仿真工具簡介 PAGEREF _Toc246848790 h 11HYPERLINK l _Toc2468487912.6.1 主要特點 PAGEREF _Toc246848791 h 11HYPERLINK l _Toc2468487922.7 Verilog HDL語言的簡介 PAGEREF _Toc246848792 h 12HYPERLINK l _Toc2468487932.8 HDL語言 PAGEREF _Toc246848793 h 12HY

15、PERLINK l _Toc2468487942.8.1 HDL與原理圖輸入法的關系 PAGEREF _Toc246848794 h 13HYPERLINK l _Toc2468487952.8.2 HDL開發(fā)流程 PAGEREF _Toc246848795 h 13HYPERLINK l _Toc2468487963 異步FIFO實現(xiàn)的技所涉與的技術與其解決方法 PAGEREF _Toc246848796 h 14HYPERLINK l _Toc2468487973.1格雷碼 PAGEREF _Toc246848797 h 14HYPERLINK l _Toc2468487983.2結繩法

16、PAGEREF _Toc246848798 h 14HYPERLINK l _Toc2468487994 異步FIFO具體實現(xiàn)方法 PAGEREF _Toc246848799 h 16HYPERLINK l _Toc2468488004.1 亞穩(wěn)態(tài)問題的解決方案 PAGEREF _Toc246848800 h 16HYPERLINK l _Toc2468488014.1.1 問題的產生 PAGEREF _Toc246848801 h 16HYPERLINK l _Toc2468488024.1.2 常見的解決方法 PAGEREF _Toc246848802 h 16HYPERLINK l _T

17、oc24684880 格雷碼編碼法 PAGEREF _Toc246848803 h 16HYPERLINK l _Toc24684880 雙觸發(fā)器法 PAGEREF _Toc246848804 h 17HYPERLINK l _Toc24684880 結繩法 PAGEREF _Toc246848805 h 17HYPERLINK l _Toc2468488064.2 基于異步比較FIFO邏輯標志的產生 PAGEREF _Toc246848806 h 18HYPERLINK l _Toc2468488074.2.1 設計思想 PAGEREF _To

18、c246848807 h 18HYPERLINK l _Toc2468488084.2.2 標志位的產生 PAGEREF _Toc246848808 h 19HYPERLINK l _Toc24684880 異步比較FIFO邏輯標志與時鐘的同步 PAGEREF _Toc246848809 h 19HYPERLINK l _Toc2468488 保守的空/滿標志 PAGEREF _Toc246848810 h 21HYPERLINK l _Toc2468488 半滿、將近滿、將近空的產生 PAGEREF _Toc246848811 h 22HY

19、PERLINK l _Toc2468488FIFO異步空/滿信號的同步 PAGEREF _Toc246848812 h 23HYPERLINK l _Toc2468488134.3 仿真驗證和綜合 PAGEREF _Toc246848813 h 23HYPERLINK l _Toc2468488145 總結 PAGEREF _Toc246848814 h 24HYPERLINK l _Toc2468488155.1 異步FIFO設計的總結 PAGEREF _Toc246848815 h 24HYPERLINK l _Toc2468488165.2 設計方法的不足之處 PAGE

20、REF _Toc246848816 h 24HYPERLINK l _Toc246848817附錄一 PAGEREF _Toc246848817 h 25HYPERLINK l _Toc246848818參考文獻 PAGEREF _Toc246848818 h 30HYPERLINK l _Toc2468488191 引言1.1 FIFO研究意義隨著計算機、多媒體和數(shù)據(jù)通信技術的高速發(fā)展,數(shù)字圖像、語音等數(shù)據(jù)傳輸技術近年來得到了極大的重視和長足的發(fā)展,并取得了廣泛的應用。如何保障這些語音、圖像等數(shù)據(jù)傳輸?shù)臏蚀_性、與時性?如何高效率高速度地傳輸這些數(shù)據(jù)?這些都是當今信息領域的科研人員所必須回答和

21、解決的問題。而往往在這些數(shù)據(jù)傳輸系統(tǒng)中,又會遇到不同系統(tǒng)接口間數(shù)據(jù)的傳輸。通常在兩個相連接的不同電路系統(tǒng)之間,因為每個系統(tǒng)的數(shù)據(jù)傳輸速度不同,在系統(tǒng)的接口部分就會出現(xiàn)數(shù)據(jù)輸入速度和輸出速度不同,也就是會發(fā)生數(shù)據(jù)傳輸速率不匹配的問題。這種情況往往會讓傳輸?shù)臄?shù)據(jù)產生復寫或丟失,降低數(shù)據(jù)的傳輸速率,同時也因為數(shù)據(jù)復寫、丟失和無效數(shù)據(jù)的讀入,將會產生數(shù)據(jù)出錯,因此需要在不同系統(tǒng)的接口處設計數(shù)據(jù)傳輸單元來實現(xiàn)數(shù)據(jù)的高速高效傳輸。在現(xiàn)代的系統(tǒng)設計中,為了提高系統(tǒng)的性能,設計者對數(shù)據(jù)的傳輸率、數(shù)據(jù)的傳輸量,對系統(tǒng)各部分之間的接口部分不同的數(shù)據(jù)輸入和接收傳輸率的匹配有越來越高的要求,而 FIFO存儲器以其合理

22、的價格、使用的方便靈活性以與上述的對速度匹配的應用而成為解決這類問題的理想途徑,因此FIFO 存儲器在計算機、多媒體和數(shù)據(jù)通信領域都有著廣泛的應用,因此對FIFO的研究與設計應用具有理論上和實際應用上的雙重意義。 在現(xiàn)在的設計中,F(xiàn)IFO的設計方法主要有兩種。一種是在FPGA中基于信元的FIFO設計方法,另一種是基于SDRAM/DRAM的大容量的FIFO的設計方法。1.2 生產需求狀況3FPGA(現(xiàn)場可編程邏輯器件)產品的應用領域已經從原來的 HYPERLINK :/trs.cena .cn/trsweb/search.wct?channelid=3560 t _blank 通信擴展到 HYP

23、ERLINK :/trs.cena .cn/trsweb/search.wct?channelid=7713 t _blank 消費電子、汽車 HYPERLINK :/trs.cena .cn/trsweb/search.wct?channelid=8453 t _blank 電子、工業(yè)控制、測試測量等廣泛的領域。而應用的變化也使FPGA產品近幾年的演進趨勢越來越明顯:一方面,F(xiàn)PGA供應商致力于采用當前最先進的工藝來提升產品的性能,降低產品的成本;另一方面,越來越多的通用IP(知識產權)或客戶定制IP被引入FPGA中,以滿足客戶產品快速上市的要求。此外,F(xiàn)PGA企業(yè)都在大力降低產品的功耗,滿

24、足業(yè)界越來越苛刻的低功耗需求。在FPGA設計中,F(xiàn)IFO(先進先出隊列)的設計是一種在電子系統(tǒng)得到廣泛應用的器件,通常用于數(shù)據(jù)的緩存和用于容納異步信號的頻率或相位的差異。電子產品的更新速度很快,品種也在也逐漸增多,所以緩存對于電子產品的工作速度來說是相當重要的,這也就使得FIFO的應用更加廣泛。所以FIFO的研發(fā)在一定意義上已經盡量的滿足了市場對產品的高速度的要求。1.3 存儲器的發(fā)展狀況FIFO,簡單的說就是一種存儲器。下面簡單介紹一下存儲器的發(fā)展狀況。(1)汞延遲線汞延遲線是基于汞在室溫時是液體,同時又是導體,每比特數(shù)據(jù)用機械波的波峰機械波從汞柱的一端開始,一定厚度的熔融態(tài)金屬汞通過一振動

25、膜片沿著縱向從一端傳到另一端,這樣就得名“汞延遲線”。在管的另一端,一傳感器得到每一比特的信息,并反饋到起點。設想是汞獲取并延遲這些數(shù)據(jù),這樣它們便能存儲了。這個過程是機械和電子的奇妙結合。缺點是由于環(huán)境條件的限制,這種存儲器方式會受各種環(huán)境因素影響而不精確。1950年,世界上第一臺具有存儲程序功能的計算機EDVAC由.諾依曼博士領導設計。它的主要特點是采用二進制,使用汞延遲線作存儲器,指令和程序可存入計算機中。1951年3月,由ENIAC的主要設計者莫克利和??颂卦O計的第一臺通用自動計算機UNIVAC-I交付使用。它不僅能作科學計算,而且能作數(shù)據(jù)處理。 (2) 磁帶UNIVAC-I第一次采用

26、磁帶機作外存儲器,首先用奇偶校驗方法和雙重運算線路來提高系統(tǒng)的可靠性,并最先進行了自動編程的試驗。磁帶是所有存儲媒體中單位存儲信息成本最低、容量最大、標準化程度最高的常用存儲介質之一。它互換性好、易于保存,近年來,由于采用了具有高糾錯能力的編碼技術和即寫即讀的通道技術,大大提高了磁帶存儲的可靠性和讀寫速度。根據(jù)讀寫磁帶的工作原理可分為螺旋掃描技術、線性記錄(數(shù)據(jù)流)技術、DLT技術以與比較先進的LTO技術。根據(jù)讀寫磁帶的工作原理,磁帶機可以分為六種規(guī)格。其中兩種采用螺旋掃描讀寫方式的是面向工作組級的DAT(4mm)磁帶機和面向部門級的8mm磁帶機,另外四種則是選用數(shù)據(jù)流存儲技術設計的設備,它們

27、分別是采用單磁頭讀寫方式、磁帶寬度為1/4英寸、面向低端應用的Travan和DC系列,以與采用多磁頭讀寫方式、磁帶寬度均為1/2英寸、面向高端應用的DLT和IBM的3480/3490/3590系列等。(3) 磁鼓1953年,第一臺磁鼓應用于IBM 701,它是作為存儲器使用的。磁鼓是利用鋁鼓筒表面涂覆的磁性材料來存儲數(shù)據(jù)的。鼓筒旋轉速度很高,因此存取速度快。它采用飽和磁記錄,從固定式磁頭發(fā)展到浮動式磁頭,從采用磁膠發(fā)展到采用電鍍的連續(xù)磁介質。這些都為后來的磁盤存儲器打下了基礎。磁鼓最大的缺點是利用率不高, 一個大圓柱體只有表面一層用于存儲,而磁盤的兩面都利用來存儲,顯然利用率要高得多。 因此,

28、當磁盤出現(xiàn)后,磁鼓就被淘汰了。 (4) 磁芯美國物理學家王安1950年提出了利用磁性材料制造存儲器的思想。福雷斯特則將這一思想變成了現(xiàn)實。為了實現(xiàn)磁芯存儲,福雷斯特需要一種物質,這種物質應該有一個非常明確的磁化閾值。他找到在新澤西生產電視機用鐵氧體變換器的一家公司的德國老瓷專家,利用熔化鐵礦和氧化物獲取了特定的磁性質。對磁化有明確閾值是設計的關鍵。最先獲得這些專利許可證的是IBM,IBM最終獲得了在北美防衛(wèi)軍事基地安裝“旋風”的商業(yè)合同。更重要的是,自20世紀50年代以來,所有大型和中型計算機也采用了這一系統(tǒng)。磁芯存儲從20世紀50年代、60年代,直至70年代初,一直是計算機主存的標準方式。

29、(5)磁盤世界第一臺硬盤存儲器是由IBM公司在1956年發(fā)明的,其型號為IBM 350 RAMAC(Random Access Method of Accounting and Control)。這套系統(tǒng)的總容量只有5MB,共使用了50個直徑為24英寸的磁盤。1968年,IBM公司提出“溫徹斯特/Winchester”技術,其要點是將高速旋轉的磁盤、磁頭與其尋道機構等全部密封在一個無塵的封閉體中,形成一個頭盤組合件(HDA),與外界環(huán)境隔絕,避免了灰塵的污染,并采用小型化輕浮力的磁頭浮動塊,盤片表面涂潤滑劑,實行接觸起停,這是現(xiàn)代絕大多數(shù)硬盤的原型。1979年,IBM發(fā)明了薄膜磁頭,進一步減輕

30、了磁頭重量,使更快的存取速度、更高的存儲密度成為可能。20世紀80年代末期,IBM公司又對磁盤技術作出一項重大貢獻,發(fā)明了MR(Magneto Resistive)磁阻磁頭,這種磁頭在讀取數(shù)據(jù)時對信號變化相當敏感,使得盤片的存儲密度比以往提高了數(shù)十倍。1991年,IBM生產的3.5英寸硬盤使用了MR磁頭,使硬盤的容量首次達到了1GB,從此,硬盤容量開始進入了GB數(shù)量級。另一種磁盤存儲設備是軟盤,從早期的8英寸軟盤、5.25英寸軟盤到3.5英寸軟盤,主要為數(shù)據(jù)交換和小容量備份之用。其中,3.5英寸1.44MB軟盤占據(jù)計算機的標準配置地位近20年之久,之后出現(xiàn)過24MB、100MB、200MB的高

31、密度過渡性軟盤和軟驅產品。(6)光盤光盤主要分為只讀型光盤和讀寫型光盤。只讀型指光盤上的容是固定的,不能寫入、修改,只能讀取其中的容。讀寫型則允許人們對光盤容進行修改,可以抹去原來的容,寫入新的容。用于微型計算機的光盤主要有CD-ROM、CD-R/W和DVD-ROM等幾種。(7) 納米存儲納米是一種長度單位,符號為nm。1納米=1毫微米,約為10個原子的長度。假設一根頭發(fā)的直徑為0.05毫米,把它徑向平均剖成5萬根,每根的厚度即約為1納米。與納米存儲有關的主要進展有如下容。1998年,美國明尼達大學和普林斯頓大學制備成功量子磁盤,這種磁盤是由磁性納米棒組成的納米陣列體系。一個量子磁盤相當于我們

32、現(xiàn)在的10萬100萬個磁盤,而能源消耗卻降低了1萬倍。1988年,法國人首先發(fā)現(xiàn)了巨磁電阻效應,到1997年,采用巨磁電阻原理的納米結構器件已在美國問世,它在磁存儲、磁記憶和計算機讀寫磁頭等方面均有廣闊的應用前景。2002年9月,美國威斯康星州大學的科研小組宣布,他們在室溫條件下通過操縱單個原子,研制出原子級的硅記憶材料,其存儲信息的密度是目前光盤的100萬倍。這是納米存儲材料技術研究的一大進展。1.4 FIFO設計技術簡介1.4.1 基于信元的FIFO設計方法2設計者通常在FPGA上實現(xiàn)FIFO(先進先出寄存器)的時候,都會使用由芯片提供商所提供的FIFO。但是,由于其通用性使得其針對性變差

33、,某些情況下會變得不方便或者將增加硬件成本。此時,需要進行自行FIFO設計。有一種基于信元的FIFO設計方法以供設計者在適當?shù)臅r候選用。這種方法也適合于不定長包的處理。以ATM的設計為例,在ATM的相關設計中,設計者則更多希望一個FIFO對外給出的信息是“現(xiàn)在FIFO中還剩下幾個信元”。要實現(xiàn)這一功能通常有兩種方法:(1)調用廠商提供的以操作粒度為基本單元的通用FIFO,然后在這個FIFO的外面再加上一個“套子”。這個套子里面設計一些計數(shù)器,根據(jù)計數(shù)容對外提供相應的信息。(2)設計操作粒度為信元的定制FIFO。這樣對外直接提供設計者最希望得到的信息,即FIFO中還有多少個信元。設定FIFO最多

34、可以存放4個信元。基本單元為字節(jié),因此RAM的數(shù)據(jù)寬度為8位,一個信元的長度為53字節(jié)。把RAM分成4個信元區(qū)域,讀寫地址的高二位指明信元區(qū)域,低六位指明信元區(qū)域的字節(jié)地址,這樣組合成8位讀寫地址。讀寫雙方的信息交換是互相通知對方還有多少個信元在FIFO中。讀寫雙方都擁有自己的記分牌(Scoreboard),這個記分牌可以由一個四位的寄存器來實現(xiàn),每一位對應一個信元區(qū)域。當一個信元區(qū)域中有一個完整的信元的時候,記分牌的相應的寄存器被設置為1,否則為0。讀出方讀出一個信元,修改自己記分牌的動作叫做清位。寫入方寫入一個完整信元,修改自己記分牌的動作叫置位。從邏輯上說,只需要讀出方把自己的記分牌的信

35、息(清位信息)傳送給寫入方,同時寫入方把自己的記分牌的信息(置位信息)傳送給讀出方就可以了,即只要構成兩條邏輯通道就可以滿足需求。但是,在硬件上的實現(xiàn)卻要比這種只從邏輯上的思考要復雜。由于讀寫雙方有可能處在不同的時鐘域,所以當讀寫雙方交換信息的時候就需要處理信號采樣的亞穩(wěn)態(tài)情況。1.4.2基于SRAM/DRAM的大容量FIFO的設計與實現(xiàn)2許多系統(tǒng)都需要大容量FIFO作為緩存,但是由于成本和容量限制,常采用多個FIFO芯片級聯(lián)擴展,這往往導致系統(tǒng)結構復雜,成本高。靜態(tài)隨機存取存儲器SRAM(Static Random Access Memory)是一種非常重要的易失性存儲器,它的速度非??欤?/p>

36、且能在快速讀取和刷新時保持數(shù)據(jù)完整性。SRAM器件采用Hynix公司的HY64UD16322A。HY64UD16322A是高速、超低功耗32 Mbit SRAM,部具有2 097 152個16 bit字容量。采用了CMOS制造工藝、TTL電平接口以與三態(tài)輸出,具有較大的輸入電壓和溫度圍。同時HY64UD16322A支持DPD(Deep Power Down)模式,保證其在待機模式下功耗進一步降低。系統(tǒng)采用CPLD作為總控制器件。根據(jù)FIFO的特點,需要將SRAM按地址存儲用程序控制成先進先出的結構。這里采用指針算法來實現(xiàn)這種結構設計:設置兩個指針變量StartPos和EndPos。分別作為進入

37、數(shù)據(jù)頭尾指針。當有新數(shù)據(jù)寫入時,數(shù)據(jù)從上一次存儲最后位置的下一個位置開始存入一個數(shù)據(jù),EndPos就自動加1,保持與最后數(shù)據(jù)位置同步。當EndPos超過整個RAM的最大容量(RAM_SIZE)時,就需要循環(huán)返回,從0 x000位置存放,一直到EndPos與StartPos重合。這時可以認為RAM已經存滿。同理,讀出數(shù)據(jù)時。起始位置StartPos自動加1。當StartPos超過整個RAM的最大容量時,就從0 x000位置讀取。一直到StartPos與EndPos重合,這時可以認為RAM已經讀空。在這兩個過程當中,CPLD需要對地址線進行控制。不難發(fā)現(xiàn),寫數(shù)據(jù)的時候Address與EndPos一

38、致,讀數(shù)據(jù)的時候Address與StartPos一致。1.5 異步FIFO設計中存在的問題與解決辦法11.5.1 亞穩(wěn)態(tài)對于亞穩(wěn)態(tài)的解決方法主要有三種:1:對寫地址/讀地址采用格雷碼。由實踐可知,同步多個異步輸入信號出現(xiàn)亞穩(wěn)態(tài)的概率遠遠大于同步一個異步信號的概率。對多個觸發(fā)器的輸出所組成的寫地址/讀地址可以采用格雷碼。由于格雷碼每次只變化一位,采用格雷碼可以有效地減少亞穩(wěn)態(tài)的產生。2:采用兩極觸發(fā)器來同步異步輸入信號。信號同步的目的是防止新時鐘域中第一級觸發(fā)器的亞穩(wěn)態(tài)信號對下級邏輯造成影響。兩級寄存器的同步化處理單元由兩個觸發(fā)器串聯(lián)而成,中問沒有其它組合電路。這種設計可以保證后面的觸發(fā)器獲得前

39、一個觸發(fā)器輸出時,前一個觸發(fā)器已退出了亞穩(wěn)態(tài),并且輸出已穩(wěn)定。但是,這種方法同時帶來了對輸入信號的一級延時,需要在設計時鐘的時候加以注意。3:在信號從快時鐘域向慢時鐘域過渡時,如果信號變化太快,慢時鐘將可能無法對該信號進行正確采樣,即采樣失敗。所以在使用雙鎖存器法時,應該使原始信號保持足夠長的時間,以便另一個時鐘域的鎖存器對其進行正確的采樣。 對上述問題,一般采用“結繩法”的設計方法,將慢時鐘周期信號通過分頻的方式將其周期增長,經過雙鎖存采樣以后再使其恢復原來的時鐘周期。即用“結繩”將信號延長,用“同步”實現(xiàn)雙latch采樣,用“解繩”還原為原來的時鐘,保證另一個時鐘域也可以正確采樣,而接收方

40、用相反的流程送回響應信號。1.5.2 空/滿指針的解決方法空/滿標志產生的原則是:寫滿不溢出,讀空不多讀。即無論在什么進修,都不應出現(xiàn)讀寫地址同時對一個存儲器地址操作的情況。在讀寫地址相等或相差一個或多個地址的時候,滿標志應該有效,表示此時FIFO已滿,外部電路應對FIFO發(fā)數(shù)據(jù)。在滿信號有效時寫數(shù)據(jù),應根據(jù)設計的要求,或保持、或拋棄重發(fā)。同理,空標志的產生也是如此,即:空標志=(|寫地址-讀地址|=預定值)AND(寫地址超前讀地址)滿標志=(|寫地址-讀地址|=預定值)AND(讀地址超前寫地址)最直接的做法是,采用讀寫地址相比較來產生空滿標志。當讀寫地址的差值等于一個預設值的時候,空/滿信號

41、被置位。這種實現(xiàn)方法邏輯簡單,但它是減法器形成的一個比較大的組合邏輯,因而限制了FIFO的速度。所以,一般只采用相等不相等的比較邏輯,避免使用減法器。1.6論文主要容第一章引言。簡單介紹了所研究題目的發(fā)展狀況,以與它的研究有意義。第二章FIFO工作原理簡介。通過簡單的與原理圖介紹了異步FIFO的實現(xiàn)框圖以與設計的相關技術和簡要工作原理。第三章FIFO的實現(xiàn)方法與技術。分析了異步FIFO的參數(shù)和設計的難點。第四章異步FIFO實現(xiàn)與主要方法。通過第二章第三章對異步FIFO具體介紹,在這容中,重點描述了異步FIFO的實現(xiàn)方法。第五章總結。對異步FIFO的設計方法作了簡要的總結,簡述了設計方法的不足之

42、處,以與應采取的措施。2 異步FIFO工作原理簡介2.1關于異步信號9在許多情況下,數(shù)據(jù)在跨越時鐘域時需要“堆積”起來,因此使用單個保持寄存器無法完成工作。例如一種情況是某個傳輸電路猝發(fā)式發(fā)送數(shù)據(jù),接收電路來不與采樣。另一種情況是接收電路采樣速度超出傳輸電路發(fā)送數(shù)據(jù)的速度,但采樣的數(shù)據(jù)寬度不夠。這些情況就要使用 FIFO 了。基本上,人們使用 FIFO 有兩個目的:速度匹配或數(shù)據(jù)寬度匹配。在速度匹配時,F(xiàn)IFO 較快的端口處理猝發(fā)的數(shù)據(jù)傳輸,而較慢的端口則維持恒定的數(shù)據(jù)流。但是,雖然訪問方式和速度不同,但進出 FIFO 的平均數(shù)據(jù)速率必須是一樣的,否則 FIFO 就會出現(xiàn)上溢(oveRFlow

43、)或下溢(underflow)問題。與單寄存器設計一樣,F(xiàn)IFO 將數(shù)據(jù)保存在寄存器或存儲器中,同時HYPERLINK :/article.ednchina /word/66469.aspx o 同步同步狀態(tài)HYPERLINK :/article.ednchina /word/66470.aspx o 信號信號,判斷何時可以把數(shù)據(jù)寫入 FIFO 或從 FIFO 中讀出。在速度匹配應用中,每個端口(讀或寫)的時鐘不同。FIFO 中的寄存器使用寫端口時鐘,就像保持寄存器使用電路時鐘來改變寄存器容一樣。信號同步發(fā)生在指針邏輯中,而且比握手信號要復雜得多?,F(xiàn)在指針邏輯的設計有多種方法。第一種方法是將讀

44、、寫選通進行同步,同時在各個時鐘域使用計數(shù)器來跟蹤 FIFO 中可用的項。計數(shù)器反映出可用于讀寫的 FIFO 項目號,計數(shù)器也與相應的端口同步。讀計數(shù)器跟蹤包含有效數(shù)據(jù)的項數(shù),而寫計數(shù)器則跟蹤可以存儲數(shù)據(jù)的項數(shù)。當對指針邏輯進行復位時,由于沒有數(shù)據(jù)可讀,讀計數(shù)器從零起始。寫計數(shù)器則從 FIFO 中項的總數(shù)開始計數(shù),即所有項均可用來存儲數(shù)據(jù)。讀選通信號累減讀計數(shù)器,并與寫時鐘域同步,因為它同時也累加寫計數(shù)器。寫選通信號則累減寫計數(shù)器,并與讀時鐘域同步,因為它同時也累加讀計數(shù)器。這種設計需要單時鐘寬度脈沖以與用于讀、寫選通的脈沖同步器,因為當一個電平信號從一個時鐘域跨越到另一個更快的時鐘域時,在較

45、快時鐘域中它能在更多的時鐘周期中保持有效。由于只要讀或寫信號是有效的,每個計數(shù)器就會發(fā)生變化,因此較快的時鐘域就檢測到更多的讀、寫,超出較慢時鐘域實際發(fā)生的數(shù)量。脈沖同步器可以將一個時鐘域的時鐘寬度脈沖轉換為新時鐘域的時鐘寬度脈沖,每個脈沖都表示一次 FIFO 的讀或寫。這種 FIFO 狀態(tài)技術對讀、寫狀態(tài)都不太有利。當 FIFO 中所有項均充滿時,寫端口狀態(tài)指示為滿,并在讀選通觸發(fā)后繼續(xù)指示 FIFO 滿,因為同步過程會使選通信號延遲送給寫計數(shù)器。讀端口為空時也會出現(xiàn)這種情況,因為同步過程會使寫選通信號延遲到達讀計數(shù)器。這種設計的另一種考慮是與時檢測全滿/全空狀態(tài)。如果 FIFO 還有一項可

46、用,并且有寫選通觸發(fā),則 FIFO 必須立即置為全滿狀態(tài)。這樣才能提前一個時鐘給出全滿標志,使 FIFO 有足夠時間防止下一個數(shù)據(jù)寫入而產生溢出。對 FIFO 的讀端口也是這樣。這種情況下,如果 FIFO 里只有一個數(shù),并且有讀選通觸發(fā),則必須置全空狀態(tài),以給讀電路足夠的時間防止讀空 FIFO。這種指針邏輯限制電路在每個時鐘周期中訪問 FIFO,即使在慢速時鐘域中也是這樣。這一功能的優(yōu)點在于訪問 FIFO 的電路至少有一個時鐘周期來評估 FIFO 的狀態(tài)。FIFO 可以將所有項都填滿數(shù)據(jù),而不會出現(xiàn)數(shù)據(jù)被覆蓋或全空無數(shù)據(jù)可讀的情況。這種設計的另一個優(yōu)點是每一端都可以讀其相應的計數(shù)器,來判斷 F

47、IFO 中還有多少項可用。人們可以將這種 FIFO設計用在進行多次數(shù)據(jù)讀/寫的電路中,而不會造成上溢或下溢的情況。這種設計的不足之處是由計數(shù)器來判斷狀態(tài),而不是直接比較讀、寫指針。對大型 FIFO 來說,這些計數(shù)器也很大。而且,由于使用脈沖同步時,來自較快時鐘域的讀、寫脈沖在較慢時鐘域的脈沖間至少必須有兩個時鐘周期,因此平均數(shù)據(jù)速率為最低時鐘頻率的一半。解決這些問題的一種方法是采用直接指針比較法。在這種 FIFO 設計中,讀、寫指針的比較決定了 FIFO 的狀態(tài)。HYPERLINK :/article.ednchina /word/66471.aspx o 異步異步設計中的指針比較更富有挑戰(zhàn)性

48、,因為每個指針位于不同的時鐘域中,對信號總線的同步要求在同步握手信號期間總線不發(fā)生改變。將這種技術用于指針同步的 FIFO 設計可能會很慢。要解決這個問題,F(xiàn)IFO 指針邏輯使用了格雷碼,代替指針使用的二進制碼。格雷碼如表 2-1所示,在每一次計數(shù)增減時只改變其中的一位??梢栽诟窭状a總線上使用同步器,因為每一次總線改變時只有一根信號線有變化,于是就消除了格雷碼總線各位通過不同同步器時的競爭情況。這種設計的指針為格雷碼計數(shù)器。使用二進制指針時需要將其變換成格雷碼后的同步指針,而使用變換邏輯會違反對同步信號的限制,即同步的信號在跨越時鐘域前要來自觸發(fā)器。Decimal012345678910111

49、2131415Binary01101110010111011110001001101010111100110111101111Gray01111011011110110011001101111111101010101110011000表2-1 格雷碼與十進制,二進制的轉換關系表2.2 異步FIFO芯片簡介3FIFO芯片是一種具有存儲功能的高速邏輯芯片,可在高速數(shù)字系統(tǒng)中用作數(shù)據(jù)緩存。FIFO通常利用雙口RAM和讀寫地址產生模塊來實現(xiàn)其功能。FIFO的接口信號包括異步寫時鐘(wr-clk)和讀時鐘(rd-clk)、與寫時鐘同步的寫有效(wren)和寫數(shù)據(jù)(wr-data)、與讀時鐘同步的讀有效(

50、rden)和讀數(shù)據(jù)(rd-data)。寫地址產生模塊一般還根據(jù)讀地址和寫地址來產生FIFO的滿標志。讀地址產生模塊一般根據(jù)讀地址和寫地址的差來產生FIFO的空標志。為了實現(xiàn)正確的讀寫和避免FIFO的上溢或下溢,通常還應給出與讀時鐘和寫時鐘同步的FIFO的空標志(empty)和滿標志(full),以禁止讀寫操作。寫地址產生模塊通常根據(jù)寫時鐘和寫有效信號來產生遞增的寫地址,而讀地址產生模塊則根據(jù)讀時鐘和讀有效信號來產生遞增的讀地址。FIFO一般在操作時,首先在寫時鐘wr clk的上升沿且當wren有效時,將wrdata寫入雙口RAM中寫地址對應的位置中,然后將讀地址對應的雙口RAM中的數(shù)據(jù)輸出到讀

51、數(shù)據(jù)總線上,這樣就可實現(xiàn)先進先出功能。讀寫操作一般會自動訪問存儲器中連續(xù)的存儲單元。從FIFO中讀出的數(shù)據(jù)順序與寫入的順序一樣,而地址的順序則在部已經預先定義好,因此,對FIFO芯片的操作不需要額外的地址信息。另外,F(xiàn)IFO芯片還能提供對讀寫指針的復位功能。這些結構上的特點使FIFO的應用大大簡化了電路的復雜程度,提高了系統(tǒng)的可靠性和穩(wěn)定性。2.3 FIFO的一些重要參數(shù)7FIFO的寬度:也就是英文資料里常看到的THE WIDTH,它只的是FIFO一次讀寫操作的數(shù)據(jù)位,就像MCU有8位和16位,ARM 32位等等,F(xiàn)IFO的寬度在單片成品IC中是固定的,也有可選擇的,如果用FPGA自己實現(xiàn)一個

52、FIFO,其數(shù)據(jù)位,也就是寬度是可以自己定義的。FIFO的深度:THE DEEPTH,它指的是FIFO可以存儲多少個N位的數(shù)據(jù)(如果寬度為N)。如一個8位的FIFO,若深度為8,它可以存儲8個8位的數(shù)據(jù),深度為12 ,就可以存儲12個8位的數(shù)據(jù),F(xiàn)IFO的深度可大可小,個人認為FIFO深度的計算并無一個固定的公式。在FIFO實際工作中,其數(shù)據(jù)的滿/空標志可以控制數(shù)據(jù)的繼續(xù)寫入或讀出。在一個具體的應用中也不可能由一些參數(shù)算數(shù)精確的所需FIFO深度為多少,這在寫速度大于讀速度的理想狀態(tài)下是可行的,但在實際中用到的FIFO深度往往要大于計算值。一般來說根據(jù)電路的具體情況,在兼顧系統(tǒng)性能和FIFO成本

53、的情況下估算一個大概的寬度和深度就可以了。而對于寫速度慢于讀速度的應用,F(xiàn)IFO的深度要根據(jù)讀出的數(shù)據(jù)結構和讀出數(shù)據(jù)的由那些具體的要求來確定。 滿標志:FIFO已滿或將要滿時由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的寫操作繼續(xù)向FIFO中寫數(shù)據(jù)而造成溢出(overflow)空標志:FIFO已空或將要空時由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的讀操作繼續(xù)從FIFO中讀出數(shù)據(jù)而造成無效數(shù)據(jù)的讀出(underflow)。讀時鐘:讀操作所遵循的時鐘,在每個時鐘沿來臨時讀數(shù)據(jù)。寫時鐘:寫操作所遵循的時鐘,在每個時鐘沿來臨時寫數(shù)據(jù)。讀指針:指向下一個讀出地址。讀完后自動加1。寫指針:

54、指向下一個要寫入的地址的,寫完自動加1。 讀寫指針其實就是讀寫的地址,只不過這個地址不能任意選擇,而是連續(xù)的。2.4 異步FIFO設計的難點92.4.1 異步FIFO設計難點概述計異步FIFO有兩個難點:一是如何正確地設計空、滿指針以與幾乎滿等信號的控制電路;二是如何同步異步信號,使觸發(fā)器不產生亞穩(wěn)態(tài)。 解決FIFO的滿/空技術方法概述和特點怎樣判斷FIFO的空/滿狀態(tài)?為了保證數(shù)據(jù)正確的寫入或讀出,而不發(fā)生益處或讀空的狀態(tài)出現(xiàn),必須保證FIFO在滿的情況下,不能進行寫操作。在空的狀態(tài)下不能進行讀操作。怎樣判斷FIFO的滿/空就成了FIFO設計的核心問題。由于同步FIFO幾乎很少

55、用到,這里只描述異步FIFO的空/滿標志產生問題???滿標志產生的原則是:寫滿不溢出,讀空不多讀。即無論在什么進修,都不應出現(xiàn)讀寫地址同時對一個存儲器地址操作的情況。在讀寫地址相等或相差一個或多個地址的時候,滿標志應該有效,表示此時FIFO已滿,外部電路應對FIFO發(fā)數(shù)據(jù)。在滿信號有效時寫數(shù)據(jù),應根據(jù)設計的要求,或保持、或拋棄重發(fā)。同理,空標志的產生也是如此,即:空標志=(|寫地址-讀地址|=預定值)AND(寫地址超前讀地址)滿標志=(|寫地址-讀地址|=預定值)AND(讀地址超前寫地址)最直接的做法是,采用讀寫地址相比較來產生空滿標志。當讀寫地址的差值等于一個預設值的時候,空/滿信號被置位。

56、這種實現(xiàn)方法邏輯簡單,但它是減法器形成的一個比較大的組合邏輯,因而限制了FIFO的速度。所以,一般只采用相等不相等的比較邏輯,避免使用減法器。 亞穩(wěn)態(tài)問題的產生與解決在用到觸發(fā)器的設計中,不可避免的會遇到亞穩(wěn)態(tài)的問題。在涉與到觸發(fā)器的電路中,亞穩(wěn)態(tài)無法徹底消除,只能想辦法將其發(fā)生的概率將到最低。其中的一個方法就是使用格雷碼。格雷碼在相鄰的兩個碼元之間只由一位變換(二進制碼在很多情況下是很多碼元在同時變化)。這就會避免計數(shù)器與時鐘同步的時候發(fā)生亞穩(wěn)態(tài)現(xiàn)象。但是格雷碼有個缺點就是只能定義2n的深度,而不能像二進制碼那樣隨意的定義FIFO的深度,因為格雷碼必須循環(huán)一個2n,否則就不能保

57、證兩個相鄰碼元之間相差一位的條件,因此也就不是真正的格雷碼了。第二就是使用冗余的觸發(fā)器,假設一個觸發(fā)器發(fā)生亞穩(wěn)態(tài)的概率為P,那么兩個與聯(lián)的觸發(fā)器發(fā)生亞穩(wěn)態(tài)的概率就為P的平方。但這會導致延時的增加。亞穩(wěn)態(tài)的發(fā)生會使得FIFO出現(xiàn)錯誤,讀/寫時鐘采樣的地址指針會與真實的值之間不同,這就導致寫入或讀出的地址錯誤。由于考慮延時的作用,空/滿標志的產生并不一定出現(xiàn)在FIFO真的空/滿時才出現(xiàn)??赡蹻IFO還未空/滿時就出現(xiàn)了空/滿標志。這并沒有什么不好,只要保證FIFO不出現(xiàn)overflow或underflow 就足夠了。2.5 異步FIFO的功能簡介9FIFO(First In First Out)存

58、儲器是一個先入先出的雙口緩沖器,即第一個進入其的數(shù)據(jù)第一個被移出,其中一個存儲器的輸入口,另一個口是存儲器的輸出口。對于單片F(xiàn)IFO來說,主要有兩種結構:觸發(fā)導向結構和零導向傳輸結構。觸發(fā)導向傳輸結構的FIFO是由寄存器陣列構成的,是由具有讀和寫地址指針的雙口RAM構成。本文所描述的是零導向傳輸結構的FIFO。FIFO存儲器是系統(tǒng)的緩沖環(huán)節(jié),如果沒有FIFO存儲器,整個系統(tǒng)就不可能正常工作,它主要有幾方面的功能:(1)對連續(xù)的數(shù)據(jù)流進行緩存,防止在進機和存儲操作時丟失數(shù)據(jù);(2)數(shù)據(jù)集中起來進行進機和存儲,可避免頻繁的總線操作,減輕CPU的負擔;(3)允許系統(tǒng)進行DMA(Direct Memo

59、ry Access,直接存儲器存取)操作,提高數(shù)據(jù)的傳輸速度。這是至關重要的一點,如果不采用DMA操作,數(shù)據(jù)傳輸將達不到傳輸要求,而且大大增加CPU的負擔,無法同時完成數(shù)據(jù)的存儲工作。FIFO設計的難點在于怎樣判斷FIFO的空/滿狀態(tài)。為了保證數(shù)據(jù)正確的寫入或讀出,而不發(fā)生益處或讀空的狀態(tài)出現(xiàn),必須保證FIFO在滿的情況下,不能進行寫操作。在空的狀態(tài)下不能進行讀操作。怎樣判斷FIFO的滿/空就成了FIFO設計的核心問題。2.6 Quartus仿真工具簡介5 Quartus是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán) 境,Altera是世界上最大可編程邏輯器件的供應商之一。Quartus

60、界面友好,使用便捷,被譽為業(yè)界最易用易學的EDA軟件。在Quartus上可以完成設計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一種與結構無關的設計環(huán)境,是設計者能方便地進行設計輸入、快速處理和器件編程。2.6.1主要特點一、開放的界面Quartus支持與Cadence,Exemplarlogic,MentorGraphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。 二、與結構無關Quartus系統(tǒng)的核心Complier支持Altera公司所有可編程邏輯器件,提供了世界上唯一真正與結構無關的可編程邏輯設計環(huán)境。三、完全集成化Quartus的設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論