電子與信息工程畢業論文:基于FPGA的同步fifo設計與仿真.doc
本 科 畢 業 設 計 基于 FPGA 的 同步 fifo 設計 與仿真 所在學院 專業班級 電子與信息工程 學生姓名 學號 指導教師 職稱 完成日期 年 月 I 摘要 RAM 是一種重要的時序邏輯存儲電路,它的邏輯功能是在地址信號的選擇下對指定的存儲單元進行相應的讀寫操作。數據讀入后,存 儲器內的原數據不變;而新數據寫入后,原數據自然消失,并為新數據代替。 FIFO 作為 RAM 下面的一種存儲器,本身的性能和 RAM 十分地相似。本論文中的同步 FIFO 是指讀和寫都在一個時鐘下工作的存儲器。 FIFO 作為一種先進先出的存儲器,應用范圍廣泛,加之現代電子技術的不斷發展,信息量越來越大,人們需要對 數據進行快速存儲和讀取, 尤其體現在大規模的電路設計中,需要較大的存儲,實存存儲已經無法滿足需求,這就需要建立可存儲大量數據的虛擬存儲空間, 而 FIFO 這種先進先出的結構特點很好地適應了這些要求 。 本文中 同步 FIFO 的對 外接口包括時鐘,清零,讀請求,寫請求,數據輸入總線,數據輸出總線,空以及滿信號。 采用 VerilogHDL 描述語言進行編程,運行成功后在 QuartusⅡ開發平臺上進行設計仿真。仿真結果顯示,本論文設計的同步 FIFO 雖然虛擬存儲空間較小,但是程序上可以無限擴展,空滿狀態的檢測方便,雖然程序簡單,但體現了設計的靈活性。 關鍵詞:同步; fifo;可編程邏輯器件; FPGA; Verilog 語言 II Abstract RAM is a kind of important temporal logic storage circuit, it s logical function in the choice to address signals under specified storage unit for the corresponding reading and writing operation. Data read the original, memory after data within changeless; But new data writing, the original data, and disappear naturally for new data instead. FIFO as a memory RAM below the perance and RAM, itself very similar. This thesis of synchronous FIFO refers to read and write all in one clock worked under memory. FIFO as an advanced first out memory, wide range of application, together with the modern electronic technology unceasing development, ination more and more big, people need to read fast storage and data, especially embodied in large-scale circuit design, need large storage, positive storage cannot meet demand, this need to build can store large amounts of data, and virtual storage space first out this advanced FIFO structural features well adapted to these requirements. In this paper the synchronous FIFO foreign interface including clock, reset, read requests, write request, data , data output bus, the bus and full signal empty. Using VerilogHDL describing programming language, after the success of the operation in QuartusⅡ development plat design simulation. Simulation results show that, this thesis design synchronous FIFO although virtual storage space on smaller, but the program can be extended unlimitedly, empty full detecting state of convenient, although procedure is simple, but the reflected design flexibility. Key words: synchronous;fifo; programmable logic device; FPGA; Verilog language III 目錄 第 1 章 緒論 . 1 1.1 引言 1 1.2 國內外研究現狀 1 1.3 本論文所做的主要工作 2 第 2 章 常用存儲器及其原理 . 4 2.1 存儲器 4 2.1.1 存儲器的基本結構 4 2.1.2 存儲器的基本指標 6 2.2 常用的存儲器的分類 . 7 2.2.1 RAM 9 2.2.2 ROM 9 2.2.3 FIFO. 10 2.3 軟 件實現虛擬存儲器功能 . 12 第 3 章 基于 FPGA 的同步 FIFO . 16 3.1 各器件介紹 16 3.1.1 可編程邏輯器件 16 3.1.2 硬件描述語言 VerilogHDL 16 3.1.3 開發工具簡介 17 3.2 整體設計方案 . 19 3.2.1 EP1C3T144C8 芯片介紹 19 3.2.2 FIFO 接口的設計 19 3.3 各種功能模塊結果圖 . 24 3.3.1 滿信號顯示 . 24 3.3.2 NRST 低電平時的情況 25 3.4 結果仿真圖 . 25 第 4 章 調試中錯誤的解決 . 27 小結 . 28 致謝 . 錯誤 !未定義書簽。 參考文獻 . 30 IV 附錄 . 31 1 第 1 章 緒論 1.1 引言 早期的電子管、晶體管、中小規模集成電路早已被現在的超大規模集成電路所取代。但是,隨著電子技術的發展,,設計與制造集成電路的任務已不完全由半導體廠商來獨立承擔。在社會需求下,數字電路系統的設計正朝著速度快、容量大、體積小、重量輕的方向發展。 早期的可編程邏輯器件 (PLD),能夠完成各種數字邏輯功能,并且延續了 EEPROM 工藝,實現了 電可擦除、電可改寫,其輸出結構是可編程的邏輯宏單元,因此具有很強的靈活性,但是過于簡單,無法滿足較大規模的電路。但是 20 世紀 80 年代, Xilinx 推出的 FPGA 具有體系結構和邏輯單元靈活、集成度高以及適用范圍寬等特點。同時又滿足了設計者要求的設計開發周期短、設計制造成本低、開發工具先進、標準產品無需測試、質量穩定以及可實現在線檢驗等優點,立刻占據了市場。 由于用 FPGA 廣泛應用于門陣列、 PLD 和中小規模通用數字集成電路 ,使整個設計更加緊湊、更小巧、靈活、穩定、可靠。把 FIFO 器件集成到其中是替代專用芯片的最 有效的實現方式。常用的 FIFO 是雙端口的存儲器,其中一個端口用于寫入數據,而另一個端口用于讀出數據 , 同時對存儲器 的 字存儲單元進行寫入和讀出操作。 FIFO 型的存儲器由另外的信號線 (或標志 )來指明存儲器的內容狀態 ,不通過 地址來存取數據。 本文提出了一種用 FPGA 芯片實現同步 FIFO 的設計方案 , 重點強調了設計有效、可靠的握手信號 EMPTY 與 FULL 的方法 , 并給出了其 Verilog 語言實現,同時根據程序給出不同情況下的仿真圖。 FIFO(First IN First Out)先進先出電路是一種實現數據先進 先出的存儲器件,普遍用作數據緩沖器。 FIFO 的基本單元是寄存器,作為存儲器件, FIFO 的存儲能力是由其內部定義的存儲寄存器的數量決定。 1.2 國內外研究現狀 ( 1)研究意義 近代信息技術在不斷地發展,尤其是在本世紀在九十年代早期美國在南斯拉夫戰爭和兩次海灣戰爭中運用了大量的電子戰、信息戰,其強大的軍事力量讓全世界震驚,持此以外也獲得了眾多國家的關注和學習,再結合本世紀 70 年代初我國在航天航空事業方面的快速發展,使得我國開始重視和發展信息技術,同樣的,技術越是發展,對信息的存儲容量就提出了要求,對高速、大 容量、高可靠性的靜態存儲器提出了更高的要求。軍隊也對數據存儲器提出了更高的要求。從現有的資料中了解到軍用計算機對數據傳輸速率最大也只在 5Mb/ s,目前采用的最快的數據傳輸方式 — DMA(直接存儲器存取模式)已經無法滿足幾十 Mb/ s 的超高速采樣速率,直接導致數據在采集過程就結束時還沒被計算機讀取。所以傳統的計算機傳輸方法和處理數據的方法已經難以滿足當前的信息技術上的需求,同時,采樣速率達不到要求可能造成數據的丟失與混亂。在這里,提出了本論文的主要意義 —— 對于快速采集,慢速處理的系統能做到緩存。 同步 FIFO 是一 種先進先出電路,它能以普通速度匹配數據緩沖器,能在快速的處理器和、外設之間實現匹配。而且在遠程通信、數字信號處理、圖像處理、大容量存儲系統和周邊系統有著廣泛的應用前景。當 FIFO 芯片在容量、寬度和速度上的提高,芯片也會越來越廣闊的應用前景。 近年來,隨著存儲器在容量以及表現在存儲設備的進一步發展, FIFO 存儲方式得到了越2 來越廣泛的應用。但是國內保密性要求嚴格的存儲器卻幾乎依賴進口。雖然國內有有名的研究所和廠商也開發了 FIFO 電路,在這方面,臺灣企業的技術比國內的有很大的優勢。但是存儲器目前還沒有形成系列化, 遠不能滿足軍事需求,即使是我國引以為傲的航天技術中運用的武器和裝備也是依賴國外進口,我國對進口設備的過分依賴對未來的軍事建設危害巨大。近年來 我國 FIFO 市場發展迅速,產品產出持續擴張,國家鼓勵 FIFO 產業向高技術產品發展,國內企業新增投資項目投資逐漸增多 , FIFO 市場的發展研究增大 ,這么做的目的一方面為了防止國外廠商對我國的封鎖和禁運,另一方面研發出國產的高性能同步 FIFO,這對加強國防建設,發展空間技術有著重大意義。 ( 2)國內外發展概況 早在上世紀 80 年代處資訊并不發達, FIFO 存儲器容量和速度的要求很 低。 FIFO 芯片是基于中規模邏輯器件的移位寄存器中,串行的移位寄存器作為存儲單元,組合邏輯電路構成輸入輸出端。在這種 FIFO 芯片中數據在時鐘的作用下從第一個寄存器到第 N 個寄存器 (N 是FIFO 芯片的容量 )在輸入和輸出的情況下,最后被讀出,從結構的角度看,數據從寫入到讀出要經過 N 個周期的延遲。如果這種 FIFO 芯片的容量 N 很大,那么這種延遲也將很長。我們可以得出 FIFO 芯片中的緩存器可以對間斷性瞬間高速外部數據進行緩存。但從長時間來看,平均速率卻不高。 FIFO 緩存器有兩種組合,一種就是先進先出,后進后出;第二種時 基于 RAM陣列的結構,目前市面上常用的 FIFO 芯片采用基于 RAM 陣列的結構。大規模集成電路中常采用有兩套數據線的雙端口 RAM 存儲器,兩套數據線分別作為輸入和輸出端口, FIFO 芯片內部存儲單元采用雙端口 RAM。讀寫時鐘控制 FIFO 的讀寫地址指針,有順序地從存儲單元讀寫數據,從初地址開始到最后一個存儲單元,最后回到第一個存儲單元。還可以通過讀寫地址來產生空滿的標志。采用 RAM 結構,數據從輸入到輸出的延遲縮小,深度指能緩存數據的個數,寬度是指每個緩存數據的位數。基于能滿足市場不斷擴大的需求,并在存儲深度和寬度上得 到很大發展。新型大規模集成電路技術越來越先進,大容量的 FIFO 芯片必定會成為今后的主流。目前,為了使存儲信息得到完善的保存,適應市場高速緩存的需求。存儲單元采用動態 RAM 代替靜態 RAM,雖然 SRAM 芯片的體積較大,存儲容量也不及動態 RAM,但是不需要刷新,工作速度快 在國內單獨做 FIFO 的很少。國內也有公司開發 FIFO 電路,但目前還遠遠不能滿足軍事需求。通常國內外在設計 FIFO 時有兩種方法,一種是利用可編程邏輯器件構造 FIFO,在這方面 Xilinx 公司開發的器件占領了較大的市場,并且質量上也占據了一定的優勢 。另一種就是利用 Verilog 等描述語言對 FIFO 的功能結構描述,構建一種虛擬的 FIFO 存儲,但是這種虛擬存儲可以構成緩存,對于實存細節上的問題可以忽略。但多數 EDA 軟件中, EDA 和其他硬件語言編輯器是借助綜合器來完成的,綜合器可以將 Verilog 語言轉變成的物理格式的電路,FIFO 是 RAM 存儲器的一種,現在對 FIFO 的描述是體現在它對數據有著存取的功能。但是現在的綜合器對數組的綜合通常是轉變成寄存器的結構。綜合后的 FIFO 結構龐大,一旦設計大容量的 FIFO 時,會浪費大量的面積,加上 SRAM 本身集成度低,成 功實現設計的可能性將變得很低。 1.3 本論文所做的主要工作 所謂同步是指的是讀和寫都在一個時鐘下工作的。讀地址和空標志是由讀時鐘產生的,而寫地址和和滿標志則由寫時鐘產生,當 FIFO 產生空或滿標志時,就要進行讀寫地址的比較,3 但是直接比較會存在問題,我們知道,存儲器在數據的讀取上存在時延,存儲容量越大,時延會越大,讀寫地址直接比較,讓讀寫地址的每一位在讀寫時鐘的作用下,輸出端結果一開始不一致,要過一段時間才能穩定。因此 FIFO 設計要求如下: ( 1)學習和研究了不同方式實現同步 FIFO 的設計方法,對其的原理性 了進行了重點解析。 ( 2)用硬件描述語言 VerilogHDL 來實現同步 FIFO,并對其進行仿真。 ( 3)建立讀寫指針。 4 第 2 章 常用存儲器及其原理 2.1 存儲器 存儲器是計算機系統的重要組成部分之一,有主存儲器和輔助存儲器之分。本文中討論的主存儲器,又可稱為內存儲器。主存儲器用來存放程序和數據, CPU 在工作過程中要頻繁地與主存儲器交換信息,因此主存儲器的性能在很大程度上影響著整個計算機系統的性能。 目前廣泛采用按地址訪問的主存儲器,它由許許多多的存儲元構成,存儲元是存儲器的最小存儲單位,一個存儲元可以 存放一位二進制信息。若干個存儲元構成一個存儲字,每個存儲字有一個相對應的惟一的地址且存儲字長與機器字長相同。 存儲器 作為 計算機系統中的記憶設備,用來存放程序和數據 ,已被越來越多的運到各種超大規模電路中, 尤其在多處理機的系統中,各處理機本身都需與其主存交換信息,而且各處理機在互相通信中,也都需共享存放在存儲器中的數據。因此,存儲器的地位更為重要。從某種意義上講,存儲器的性能已成為 一些 系統的核心 [17]。 2.1.1 存儲器的基本結構 CPU 執行指令的過程實際上分為兩個步驟:一是取指令,二是執行指令。 CPU 與存儲器之間是通過總線連接的,當 CPU 執行一條指令時,首先必須從存儲器中將指令讀出到總線上,再通過總線將指令傳送到 CPU 內部,這一過程稱為取指令;然后對指令進行譯碼分析,最后執行該指令,這一過程稱為執行指令 ,如圖 2.1 所示 。 假設指令從存儲器中讀出的時間為 At ,指令在總線上傳輸的時間為 Bt ,指令在 CPU 中執行的時間為 tE。這樣,一條指令的執行時間為 At + Bt + Et ,稱為指令周期。 Bt 的大小取決于總線傳輸速度,而 At 的大小取決于所配置的存儲器的存取速度,這一時間實際上就是存儲器的讀周期時間,對某一存儲器而言,這一時間是固定的。由此我們可以看出,計算機的性能是?? ADD MOV CPU 指令在總線上傳輸 存儲器 指令從存儲器中被讀出 指令在 CPU 中執行 執行指令 取指令 圖 2.1 指令的執行過程 5 由組成它的各個功能部件的綜合性能來體現的,光有高速的 CPU 還不夠,還要有高速的存儲器和高速的總線傳輸等。 任何計算機系統對 存儲器要求具有大容量、高速度以及 低價格等特點。然而,這三者之間是互相矛盾的, 存儲器速度增大,存儲容量就不可能變得很大,價格也不可能很低;如果要求存儲器容量很大,存儲速度就不可能很高,成本也不可能很低 。為了解決這些矛盾,除了不斷研制新的存儲器,提高存儲器的性能外,還 需要 從存儲器的系統結構上較好地解決存儲器大容量、高速度與低價格之間的矛盾。目前在計算機系統中,通常采用多級存儲器體系結構,即使用寄存器組、高速緩沖存儲器、主存儲器和外存儲器,它們的存取速度依次遞減,存儲容量依次遞增,位價格依次降低 ,圖 2.2 所示 。 最簡單的二級存儲器層次如圖 2.3 所示。整個存儲系統由主存儲器和輔助存儲器兩級構成。主存儲器一般由半導體存儲器構成,它速度快,但容量小,成本較高,通常用來存放程序的“活躍部分”,直接與 CPU 交換信息;輔助存儲器一般由磁表面存儲器構成,它速度慢、但容量大、成本低,通常用來存放程序的“不活躍部分”,即暫時不執行的程序或者暫時不用的數據,需要時,將程序或數據以信息塊為單位從輔助存儲器調入主存儲器中。因此,何時將輔存中的信息塊調入主存,何時將主存中已用完的信息塊調入輔存,所有操作由輔助軟硬件來完成,主、輔存構成的兩級存儲層次才成為一個完整的存儲系 統,對 CPU 來說,訪問存儲器的速度是主存儲器的,而存儲器的容量和成本是輔助存儲器的,滿足了上述三方面的要求。 CACHE 主存 磁盤 CACHE 磁盤 磁帶 光盤 圖 2.2 存儲系統的分級結構 CPU 存儲器