




已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
江蘇科技大學(xué)本 科 畢 業(yè) 設(shè) 計(論文)學(xué) 院 專 業(yè) 學(xué)生姓名 班級學(xué)號 指導(dǎo)教師 二零壹叁年六月江蘇科技大學(xué)本科畢業(yè)論文基于fpga的異步fifo設(shè)計asynchronous fifo design based on fpga江蘇科技大學(xué)本科畢業(yè)設(shè)計(論文)摘 要在現(xiàn)代集成電路芯片中,隨著設(shè)計規(guī)模的不斷擴(kuò)大,一個系統(tǒng)往往包含多個時鐘,如何進(jìn)行異步時鐘間的數(shù)據(jù)傳輸成為了一個很重要的問題。異步fifo(first in first out)是一種先進(jìn)先出電路,可以在兩個不同的時鐘系統(tǒng)間進(jìn)行快速準(zhǔn)確的數(shù)據(jù)傳輸,是解決異步時鐘數(shù)據(jù)傳輸問題的簡單有效的方案。異步fifo在網(wǎng)絡(luò)接口、數(shù)據(jù)采集和圖像處理等方面得到了十分廣泛的應(yīng)用,由于國內(nèi)對該方面研究起步較晚,國內(nèi)的一些研究所和廠商開發(fā)的fifo電路還遠(yuǎn)不能滿足市場和軍事需求。由于在異步電路中,時鐘間的周期和相位完全獨立,以及亞穩(wěn)態(tài)問題的存在,數(shù)據(jù)傳輸時的丟失率不為零,如何實現(xiàn)異步信號同步化和降低亞穩(wěn)態(tài)概率以及正確判斷fifo的儲存狀態(tài)成為了設(shè)計異步fifo電路的難點。本課題介紹了一種基于fpga的異步fifo 電路設(shè)計方法。課題選用quartus ii軟件,在cyclone ii系列的ep2c5t144c8n芯片的基礎(chǔ)上,利用vhdl 硬件描述語言進(jìn)行邏輯描述,采用層次化、描述語言和圖形輸入相結(jié)合的方法設(shè)計了一個ram深度為128 bit,數(shù)據(jù)寬度為8 bit的高速、高可靠的異步fifo電路,并對該電路功能進(jìn)行時序仿真測試和硬件仿真測試。關(guān)鍵詞:異步fifo;同步化;亞穩(wěn)態(tài);仿真測試 abstractin modern ic chips, with the continuous expansion of the scale of design, a system always contains several clocks. how to transmit data between the asynchronous clocks become a very important problem.asynchronous fifo (first in first out) is a first-in, first-out circuit, it can transmit data between two diffent clock systems fastly and accurately, it is also a simple and effective solution to solve the problem of asynchronous clock data transfer. the asynchronous fifo has a very wide range of applications in network interface, data acquisition and image processing.but because of the aspect of a late start, some domestic research institutes and manufacturers which research the fifo circuit also can not meet the needs of the market and the military. in the asynchronous circuit, because of that the clock cycle and phase is completely independent, and the presence of metastability problems, the loss rate of data transmission is not zero. how to implement asynchronous signal synchronization, reduce the probability of metastability and judge the state of the fifo storage correctly become a difficult problem while designing the asynchronous fifo circuit. this paper introduces a method of asynchronous fifo circuit design based on fpga. this topic selects quartus ii software, the cyclone ii family ep2c5t144c8n chip, based on the use of vhdl hardware description language for logical descriptions, using the method of combining hierarchical, description language and graphical input ,this topic designs a high-speed, highly reliable asynchronous fifo circuit as the ram depth is 128 bit and the data width is 8 bit, and tests the circuit function with timing and software simulation.keywords:asynchronous fifo; synchronization; metastability; simulation testing目 錄第一章 緒論11.1 fpga簡介11.2 異步fifo簡介11.3 國內(nèi)外研究現(xiàn)狀及存在的問題11.3.1 研究現(xiàn)狀11.3.2 存在問題21.4 本課題主要研究內(nèi)容3第二章 異步fifo設(shè)計要求及基本原理42.1 設(shè)計要求42.2 異步fifo基本原理52.3 異步fifo設(shè)計難點52.4 系統(tǒng)設(shè)計方案62.5 異步fifo驗證方案72.5.1 驗證復(fù)位功能72.5.2 驗證寫操作功能72.5.3 驗證讀操作功能72.5.4 驗證異步fifo電路整體功能7第三章 模塊設(shè)計與實現(xiàn)83.1 格雷碼計數(shù)器模塊83.2 同步模塊83.3 格雷碼自然碼轉(zhuǎn)換模塊93.4 空滿標(biāo)志產(chǎn)生模塊103.5 雙端口ram13第四章 時序仿真與實現(xiàn)154.1 模塊整合154.2 時序仿真及功能測試174.2.1 復(fù)位功能軟件仿真與測試174.2.2 寫操作功能時序仿真與測試174.2.3 讀操作功能時序仿真與測試184.2.4 異步fifo電路整體功能軟件仿真與測試184.2.5 時序仿真結(jié)果總結(jié)19第五章 硬件仿真與實現(xiàn)205.1 外部電路焊接205.2 引腳分配215.3 調(diào)試電路設(shè)計245.3.1 調(diào)試電路介紹245.3.2 異步時鐘產(chǎn)生模塊255.3.3 偽隨機(jī)數(shù)據(jù)隊列產(chǎn)生模塊255.3.5 調(diào)試電路引腳分配265.3.6 調(diào)試電路硬件仿真275.4 異步fifo電路硬件仿真285.4.1 復(fù)位功能硬件仿真與測試295.4.2 寫操作功能硬件仿真與測試305.4.3 讀操作功能硬件仿真與測試305.4.4 異步fifo硬件電路整體功能軟硬件仿真與測試315.4.5 硬件仿真結(jié)果總結(jié)32結(jié)論33致謝34參考文獻(xiàn)35附錄36iii第1章 緒論1.1 fpga簡介fpga(fieldprogrammable gate array),即現(xiàn)場可編程門陣列,它是在cpld、pal、gal等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物10。利用vhdl或verilog硬件描述語言進(jìn)行電路設(shè)計,經(jīng)過簡單的布局整合之后,快速的燒入至 fpga 上進(jìn)行調(diào)試,是現(xiàn)代 ic設(shè)計驗證技術(shù)的主流。fpga作為一種半定制電路而出現(xiàn)在專用集成電路(asic)領(lǐng)域中,既克服了先前可編程器件的門電路數(shù)目有限的缺點,又彌補(bǔ)了定制電路的不足?;趂pga的異步fifo具有現(xiàn)場可編程,容量改動性大,速度快,實現(xiàn)簡單,開發(fā)時間快,生產(chǎn)周期短,可移植性好的優(yōu)點。1.2 異步fifo簡介在現(xiàn)代集成電路芯片中,設(shè)計規(guī)模不斷擴(kuò)大,一個系統(tǒng)中往往包含多個時鐘。如何在異步時鐘間進(jìn)行數(shù)據(jù)傳輸成為了電路設(shè)計中的一個重要問題。異步fifo(first in first out)是解決這個問題的一個簡單有效的方案。異步fifo是一種先進(jìn)先出電路,常用來緩存數(shù)據(jù)和容納異步信號間的周期和相位差異,使用異步fifo可以在兩個不同的時鐘系統(tǒng)之間進(jìn)行快速準(zhǔn)確的實時數(shù)據(jù)傳輸。異步fifo在網(wǎng)絡(luò)接口、數(shù)據(jù)采集和圖像處理等方面得到了十分廣泛的應(yīng)用2。異步fifo用在異步時鐘數(shù)據(jù)接口部分,由于異步時鐘間的頻率和相位完全獨立,數(shù)據(jù)傳輸時的丟失率不為零,如何降低數(shù)據(jù)丟失率,設(shè)計一個高速可靠的異步fifo便成為了一個難點。本課題介紹了一種基于fpga設(shè)計高速可靠的異步fifo電路的方法。1.3 國內(nèi)外研究現(xiàn)狀及存在的問題1.3.1 研究現(xiàn)狀在20世紀(jì)80年代早期對fifo存儲器的容量和速度需求都很低,所以那時的fifo芯片是基于移位寄存器的中規(guī)模集成(msi)器件,由于這種芯片在容量不會太大,所以其速度也不可能很快。新型的fifo芯片是基于ram結(jié)構(gòu)的大規(guī)模集成(lsi)電路,其內(nèi)部存儲單元使用一個雙端口ram,具有輸入和輸出兩套數(shù)據(jù)線。由于采用ram結(jié)構(gòu),數(shù)據(jù)從寫入到讀出的延遲時間將大大縮短。這種芯片能在存儲寬度和深度上得到很大的發(fā)展。目前,為了更大的提高芯片容量,其內(nèi)部存儲單元使用動態(tài)ram代替靜態(tài)ram,并在芯片內(nèi)部集成刷新電路,通過內(nèi)部仲裁單元控制器件的讀寫及自動刷新操作。隨著微電子技術(shù)的飛速發(fā)展,新一代的fifo芯片容量越來越大,速度越來越快,體積也越來越小。美國idt公司已經(jīng)推出運行速度高達(dá)225mhz,電壓低至2.5v,可在業(yè)內(nèi)各種配置下實現(xiàn)業(yè)內(nèi)最大數(shù)據(jù)流量高達(dá)9 mb的fifo系列。cypress semiconductor公司推出具有80位寬的beast型的高性能fifo存儲器,它的帶寬高達(dá)300bps,可以工作在200 mhz頻率下;honeywell公司推出了一種基于soi的fifo存儲器,它采用專門的抗輻射加固工藝和設(shè)計版圖,主要用于軍事系統(tǒng)和高輻射的空間環(huán)境中;fifo芯片的最新產(chǎn)品是idt公司推出的多隊列fifo存儲器系列,它使用集成的嵌入式fifo存儲器核和高速隊列邏輯來構(gòu)成塊結(jié)構(gòu)。它的數(shù)據(jù)讀寫速度可達(dá)到200 mhz,存儲時間也只有3.6 ns,可以通過最多八個器件的連接來實現(xiàn)容量深度的擴(kuò)展和隊列擴(kuò)展6。目前在國內(nèi)大部分集成芯片中,單獨做fifo芯片的很少,國內(nèi)的一些研究所和廠商也開發(fā)了fifo電路,但還遠(yuǎn)不能滿足市場和軍事需求。1.3.2 存在問題 國內(nèi)外設(shè)計fifo時,通常使用兩種方法,一是利用可編程邏輯器件來構(gòu)造fifo(如xilinx公司),二是利用verilog、vhdl等硬件描述語言來對fifo的功能結(jié)構(gòu)進(jìn)行描述6。在大部分的eda軟件中,都是通過綜合器來完成對eda等硬件語言的編譯的,綜合器將硬件描述語言的描述轉(zhuǎn)變?yōu)槲锢砜蓪崿F(xiàn)的電路形式,由于fifo是基于ram結(jié)構(gòu)的,大部分的參考資料都是建立在數(shù)組存取的基礎(chǔ)上對fifo進(jìn)行描述的,然而綜合器對數(shù)組的綜合一般是將其轉(zhuǎn)變?yōu)榧拇嫫鞯慕Y(jié)構(gòu),這帶來的缺陷是綜合后的結(jié)構(gòu)會非常龐大,造成在大容量的fifo設(shè)計時,會產(chǎn)生大量面積的浪費,甚至無法集成。1.4 本課題主要研究內(nèi)容本課題基于fpga技術(shù),在cyclone ii系列的ep2c5t144c8n芯片的基礎(chǔ)上,選用quartus ii軟件利用vhdl 硬件描述語言進(jìn)行邏輯描述,并采用層次化、描述語言和圖形輸入相結(jié)合的方法設(shè)計了一個ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路,并對其功能進(jìn)行了時序仿真和硬件仿真驗證。論文各章節(jié)的主要內(nèi)容安排如下:第一章為緒論,簡要介紹了fpga的相關(guān)知識以及異步fifo的主要作用、研究背景和國內(nèi)外的發(fā)展現(xiàn)狀,并概括介紹了本課題的主要研究內(nèi)容。第二章為異步fifo設(shè)計要求及基本原理,首先介紹了本課題的設(shè)計要求,然后對異步fifo的結(jié)構(gòu)、基本原理以及其設(shè)計難點進(jìn)行了分析,并由此歸納出系統(tǒng)的設(shè)計模塊和預(yù)期功能。第三章為模塊設(shè)計與實現(xiàn),主要介紹了異步fifo的模塊組成及各模塊的功能和原理,并利用vhdl硬件描述語言,通過quartus ii軟件對各模塊進(jìn)行了編寫和仿真。第四章為時序仿真與實現(xiàn),通過層次化、描述語言和圖形輸入相結(jié)合的方法將各模塊整合為異步fifo頂層模塊,并通過quartus ii軟件的波形編輯器對其進(jìn)行時序仿真和分析。第五章為硬件仿真與實現(xiàn),連接外設(shè)及進(jìn)行引腳分配后,將完成的異步fifo頂層實體下載入開發(fā)板,并通過編寫測試程序產(chǎn)生讀寫時鐘及偽隨機(jī)數(shù)輸入數(shù)據(jù),利用quartus ii軟件的嵌入式邏輯分析儀signaltap ii對實物進(jìn)行硬件仿真和分析,完成設(shè)計任務(wù)。最后結(jié)論對本次畢業(yè)設(shè)計進(jìn)行了歸納和綜合,概括了所取得的成果和存在的不足,以及對進(jìn)一步開展研究的見解與建議。第2章 異步fifo設(shè)計要求及基本原理2.1 設(shè)計要求本課題使用ep2c5t144c8n核心板最小系統(tǒng)設(shè)計一個ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路,其外部接口如圖2-1所示,接口說明如表2-1所示。復(fù)位后,通過讀寫使能控制讀寫操作。當(dāng)寫時鐘脈沖上升沿到來時,判斷寫信號是否有效,有效則寫入一個八位數(shù)據(jù)到ram中;當(dāng)讀時鐘脈沖上升沿到來時,判斷讀信號是否有效,有效則從ram中把一個八位數(shù)據(jù)讀取出來。當(dāng)ram中數(shù)據(jù)寫滿時產(chǎn)生一個寫滿標(biāo)志,不能再往ram寫入數(shù)據(jù);當(dāng)ram中數(shù)據(jù)讀空時產(chǎn)生一個讀空標(biāo)志,不能再從ram讀出數(shù)據(jù)。圖2-1 異步fifo外部接口表2-1 異步fifo外部接口說明管腳名稱方向說明rstin復(fù)位,低電平有效wr_enin寫使能,高電平有效rd_enin讀使能,高電平有效wr_clkin寫時鐘rd_clkin讀時鐘fullout讀空標(biāo)志emptyout寫滿標(biāo)志data7.0out輸入數(shù)據(jù)q7.0out輸出數(shù)據(jù)2.2 異步fifo基本原理異步fifo主要由雙端口ram和讀寫控制邏輯及空滿標(biāo)志產(chǎn)生邏輯構(gòu)成,其基本結(jié)構(gòu)圖如圖2-2所示。讀時鐘讀地址讀控制讀數(shù)據(jù)寫地址寫控制寫數(shù)據(jù)雙端口ram寫地址產(chǎn)生邏輯讀地址產(chǎn)生邏輯同步電路空滿標(biāo)志產(chǎn)生邏輯寫時鐘復(fù)位圖2-2 異步fifo基本結(jié)構(gòu)圖由結(jié)構(gòu)圖可以看出該系統(tǒng)為環(huán)狀結(jié)構(gòu),存在兩個完全獨立的時鐘域?qū)憰r鐘域和讀時鐘域。異步fifo的存儲介質(zhì)是一塊雙端口ram,可以同時進(jìn)行讀寫操作。在寫時鐘域,寫地址產(chǎn)生邏輯產(chǎn)生寫地址和寫控制信號,在讀時鐘域,讀地址產(chǎn)生邏輯產(chǎn)生讀地址和讀控制信號??諠M標(biāo)志產(chǎn)生邏輯通過比較同步后的讀寫地址來產(chǎn)生空滿標(biāo)志信號,同時,產(chǎn)生的空滿標(biāo)志信號又和輸入的讀寫使能信號一起控制讀寫時鐘域進(jìn)行讀寫操作。2.3 異步fifo設(shè)計難點異步fifo設(shè)計存在兩個難點:一是如何同步異步信號,降低亞穩(wěn)態(tài)發(fā)生概率;二是如何正確產(chǎn)生存儲器的空滿標(biāo)志8。其中如何正確產(chǎn)生存儲器的空滿標(biāo)志在下一章節(jié)有詳細(xì)介紹。亞穩(wěn)態(tài)是一種物理現(xiàn)象,必然發(fā)生在異步fifo電路中。在數(shù)字電路中,觸發(fā)器必須滿足建立和保持的時間要求,然而在實際電路中,電路的外部輸入和內(nèi)部時鐘完全獨立,存在很大可能性出現(xiàn)不滿足建立和保持的時間要求的情況,另外,由于在電路內(nèi)部的兩個毫無關(guān)系的時鐘域之間進(jìn)行信號傳遞,也可能出現(xiàn)不滿足建立和保持的時間要求的情況。這種情況會使系統(tǒng)中存在未知態(tài),輸出將有可能是邏輯0或者邏輯1,或者是介于兩者之間的任何值,這個過程稱為亞穩(wěn)態(tài)。由于亞穩(wěn)態(tài)使物理系統(tǒng)產(chǎn)生了一種不可預(yù)知性,所以亞穩(wěn)態(tài)是很危險的。雖然亞穩(wěn)態(tài)沒法避免,但可以通過下面兩種方法降低亞穩(wěn)態(tài)發(fā)生的概率12:(1) 對讀寫地址使用格雷碼計數(shù)器。格雷碼是一種錯誤最小化的編碼方式,使用格雷碼計數(shù)器進(jìn)行計數(shù)時,每一次計數(shù)增加只有一位數(shù)據(jù)位改變,而使用自然二進(jìn)制碼計數(shù)時,每一次計數(shù)增加都可能造成多位數(shù)據(jù)位的變動,這就使得數(shù)據(jù)位變動時,格雷碼計數(shù)器發(fā)生亞穩(wěn)態(tài)的概率大大低于自然二進(jìn)制碼計數(shù)器。(2) 使用觸發(fā)器同步異步信號。使用觸發(fā)器同步或者增加冗余可以很好的降低亞穩(wěn)態(tài)發(fā)生的概率,本課題采用d觸發(fā)器二級同步方式,同步電路圖如圖2-3所示。當(dāng)且僅當(dāng)q1的躍變非常接近時鐘沿的時候,q2才會進(jìn)入亞穩(wěn)態(tài)2,這就大大提高了系統(tǒng)的可靠性。d q clkd q clk異步輸入同步輸出圖2-3 d觸發(fā)器二級同步2.4 系統(tǒng)設(shè)計方案根據(jù)異步fifo基本原理,本課題可采用層次化、描述語言和圖形輸入相結(jié)合的方法設(shè)計異步fifo電路,該系統(tǒng)可分為同步模塊、格雷碼計數(shù)模塊、格雷碼自然碼轉(zhuǎn)換模塊、空滿標(biāo)志產(chǎn)生模塊和雙端口ram幾部分組成。2.5 異步fifo驗證方案根據(jù)異步fifo的基本原理和本課題的設(shè)計方案,若所設(shè)計的異步fifo電路能實現(xiàn)如下預(yù)期設(shè)計功能,則該異步fifo電路符合設(shè)計要求。2.5.1 驗證復(fù)位功能將系統(tǒng)運行后,若按下復(fù)位鍵,無論讀寫使能信號處于什么狀態(tài),讀寫操作都不進(jìn)行,數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。2.5.2 驗證寫操作功能系統(tǒng)復(fù)位后,將寫使能置位,讀使能復(fù)位,則系統(tǒng)只能進(jìn)行寫操作寫入數(shù)據(jù),所以經(jīng)過一段時間后由于雙端口ram存儲器存儲單元被寫滿,異步fifo應(yīng)該始終處于寫滿狀態(tài),數(shù)據(jù)輸出始終不變。2.5.3 驗證讀操作功能系統(tǒng)復(fù)位后,將讀使能置位,寫使能復(fù)位,則系統(tǒng)只能進(jìn)行讀操作讀取數(shù)據(jù),由于雙端口ram存儲器存儲單元數(shù)據(jù)被讀空,異步fifo應(yīng)該始終處于讀空狀態(tài),數(shù)據(jù)輸出始終不變。2.5.4 驗證異步fifo電路整體功能系統(tǒng)復(fù)位后,將讀寫使能均置位,系統(tǒng)能同時進(jìn)行讀寫操作。若輸入的異步讀時鐘頻率大于寫時鐘頻率,則讀操作快于寫操作,異步fifo間歇性處于讀空狀態(tài),但始終不處于寫滿狀態(tài),輸出數(shù)據(jù)隊列應(yīng)與輸入數(shù)據(jù)隊列相同以實現(xiàn)先入先出的功能,但會有一定的延時;若輸入的異步讀時鐘頻率小于寫時鐘頻率,則寫操作快于讀操作,異步fifo間歇性處于寫滿狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊列也應(yīng)與輸入數(shù)據(jù)隊列相同以實現(xiàn)先入先出的功能,但也會有一定的延時。第3章 模塊設(shè)計與實現(xiàn)3.1 格雷碼計數(shù)器模塊為了降低亞穩(wěn)態(tài)發(fā)生的概率,本課題將讀、寫地址轉(zhuǎn)化為格雷碼進(jìn)行計數(shù),由于格雷碼是一種錯誤最小化編碼方式,它在任意相鄰的兩個數(shù)間轉(zhuǎn)換時只有一個數(shù)位發(fā)生變化,其發(fā)生亞穩(wěn)態(tài)的可能性遠(yuǎn)低于自然二進(jìn)制碼,大大增加了電路的可靠性。另外,為了準(zhǔn)確的判斷存儲器的空滿狀態(tài),本課題使用5 bit的格雷碼計數(shù)器,這在后面的空滿標(biāo)志產(chǎn)生模塊章節(jié)有詳細(xì)介紹。5 bit格雷碼計數(shù)器模塊的vhdl設(shè)計程序見附錄。程序編譯成功后生成的格雷碼計數(shù)器模塊如圖3-1所示,利用quartus ii軟件的波形編譯器對該模塊進(jìn)行時序仿真,其仿真波形如圖3-2所示。圖3-1 格雷碼計數(shù)器模塊圖3-2 5 bit格雷碼計數(shù)器仿真波形3.2 同步模塊為了降低亞穩(wěn)態(tài)發(fā)生的概率,本課題使用前章所介紹d觸發(fā)器二級同步將異步信號同步化。在空滿標(biāo)志模塊判斷寫滿標(biāo)志時,同步模塊將讀指針與寫時鐘同步后,和寫指針比較產(chǎn)生寫滿標(biāo)志;判斷讀空標(biāo)志時,同步模塊將寫指針與讀時鐘同步后,和讀指針比較產(chǎn)生讀空標(biāo)志。同步模塊的vhdl設(shè)計程序見附錄。程序編譯成功后生成的同步模塊如圖3-3所示,利用quartus ii軟件的波形編輯器對該模塊進(jìn)行時序仿真,其仿真波形如圖3-4所示。從仿真波形可以看出,該模塊將輸入的異步碼與輸入時鐘同步后輸出同步碼,由延時時間可以看出其滿足二級同步要求。圖3-3 同步模塊圖3-4 同步模塊仿真波形3.3 格雷碼自然碼轉(zhuǎn)換模塊雖然為了降低亞穩(wěn)態(tài)發(fā)生概率而使用格雷碼對讀、寫地址進(jìn)行轉(zhuǎn)換,但在雙端口ram進(jìn)行存儲和空滿產(chǎn)生模塊進(jìn)行讀寫地址比較時仍使用自然二進(jìn)制碼,所以在異步地址信號同步后,仍需將格雷碼地址轉(zhuǎn)換回自然二進(jìn)制碼。n位格雷碼轉(zhuǎn)換為自然二進(jìn)制碼的法則為:bn = gn,bi = gibi+1 (in),其中g(shù)表示格雷碼,b標(biāo)志自然二進(jìn)制碼。格雷碼自然碼轉(zhuǎn)換模塊的vhdl設(shè)計程序見附表。程序編譯成功后生成的格雷碼自然碼轉(zhuǎn)換模塊如圖3-5所示,利用quartus ii軟件的波形編輯器對該模塊進(jìn)行時序仿真,其仿真波形如圖3-6所示。圖3-5 格雷碼自然碼轉(zhuǎn)換模塊圖3-6 格雷碼自然碼轉(zhuǎn)換模塊仿真波形3.4 空滿標(biāo)志產(chǎn)生模塊空滿標(biāo)志產(chǎn)生模塊是整個異步fifo系統(tǒng)的核心部分,該模塊設(shè)計的好壞直接決定了該異步fifo的性能??諠M標(biāo)志產(chǎn)生的基本原則是無論在什么情況下,都不會出現(xiàn)存儲器對同一存儲地址同時進(jìn)行讀寫操作的情況,也就是存儲器寫滿后不產(chǎn)生溢出,讀空后不進(jìn)行多讀2。對于同步的fifo系統(tǒng),讀寫操作同時從存儲單元起始位置開始進(jìn)行讀寫操作,每進(jìn)行完一次讀寫操作后,控制指針就增加一位,指向下一個存儲單元,直到下一次時鐘沿到來后存儲器對該存儲單元進(jìn)行一次讀寫操作,然后指針繼續(xù)增加。當(dāng)指針移動到最后一個存儲單元后,它又重新回到起始位置繼續(xù)進(jìn)行讀寫操作。由于同步fifo讀寫操作同時進(jìn)行,所以存儲器始終處于非空和非滿的狀態(tài),讀寫操作可以一直進(jìn)行。對于異步fifo系統(tǒng),有兩個獨立的控制指針讀指針和寫指針,讀操作和寫操作獨立運行。然而當(dāng)存儲器存儲空間被讀空后,若繼續(xù)讀取數(shù)據(jù)則會造成多讀,使一個無用的信號被讀出;當(dāng)存儲器存儲空間寫滿后,若繼續(xù)寫入數(shù)據(jù)則會產(chǎn)生溢出,造成一個有用的數(shù)據(jù)被覆蓋。為了避免這種情況發(fā)生,異步fifo系統(tǒng)對存儲器設(shè)置了讀空和寫滿兩個狀態(tài)標(biāo)志。當(dāng)存儲器讀空后,讀空標(biāo)志置位,暫停讀操作繼續(xù)讀取數(shù)據(jù),但仍可以執(zhí)行寫操作;當(dāng)存儲器寫滿后,寫滿標(biāo)志置位,暫停寫操作繼續(xù)寫入數(shù)據(jù),但仍可以執(zhí)行讀操作。按照此原理,當(dāng)全局復(fù)位信號復(fù)位后,異步fifo應(yīng)該處于讀空狀態(tài)。由上述原理可以知道,當(dāng)讀指針和寫指針不相等時,讀寫操作互不干擾,異步fifo處于非空和非滿的狀態(tài)。當(dāng)讀指針和寫指針相等時,fifo要么處于讀空狀態(tài),要么處于寫滿狀態(tài)。那么該怎么判斷異步fifo究竟處于什么樣的狀態(tài)呢?判斷的方法有很多,本課題使用讀寫指針比較的方法,通過額外增加狀態(tài)標(biāo)志位來判斷究竟是讀指針追趕寫指針輸出讀空標(biāo)志,還是寫指針追趕讀指針輸出寫滿標(biāo)志。本課題設(shè)計的異步fifo存儲深度為128 bit,那么讀寫指針應(yīng)有4個地址位,本設(shè)計使用5 bit的讀寫指針,其最高位作為額外增加的狀態(tài)標(biāo)志位,剩下的低4位為地址位。地址位隨著相應(yīng)的讀(寫)操作的進(jìn)行依次遞增,當(dāng)讀(寫)指針由最后一個存儲單元重新回到起始位置時狀態(tài)標(biāo)志位取反。當(dāng)讀寫指針的狀態(tài)標(biāo)志位和地址位完全相同時,表明執(zhí)行了相同次數(shù)的讀寫操作,此時異步fifo處于讀空狀態(tài);當(dāng)讀寫指針的狀態(tài)標(biāo)志位不同,而地址位完全相同時,表明寫操作比讀操作多進(jìn)行了一次循環(huán),此時異步fifo處于寫滿狀態(tài)??諠M狀態(tài)的行為描述如下:full = 1 when (wr_addr(4) /= rd_addr(4) and (wr_addr(3 downto 0) = rd_addr(3 downto 0)empty = 1 when (wr_addr(4 downto 0) = rd_addr(4 downto 0)由于空滿標(biāo)志是通過比較同步后的讀寫指針產(chǎn)生的,那么就可能出現(xiàn)這樣的情況:當(dāng)同步寫指針時,實際的寫指針可能已經(jīng)發(fā)生了變化,這意味著此時的寫指針可能是一個無用的值。這樣從讀操作的角度來看,就會發(fā)生就會發(fā)生少寫的的現(xiàn)象,也就是異步fifo判定為讀空時,fifo實際上可能未空,因為寫操作可能正在發(fā)生,寫指針仍在變化,但這從讀操作的角度是“看不到的”;同理從寫操作的角度來看,也會出現(xiàn)類似的情況,即異步fifo判定為寫滿時,fifo實際上可能未滿。上述的情況被稱為保守的報告,當(dāng)fifo未空時判定fifo讀空,而阻止讀操作的繼續(xù)進(jìn)行;當(dāng)fifo未滿時判定fifo寫滿,而阻止寫操作的繼續(xù)進(jìn)行。這種情況從存儲器的角度來看,存儲器的存儲空間好像變小,然而這種情況是毫無壞處的,能很好的避免錯誤的發(fā)生,因為當(dāng)fifo真的讀空或?qū)憹M了,而不去阻止讀操作或?qū)懖僮鞯倪M(jìn)行將會出現(xiàn)多讀或溢出的錯誤,影響異步fifo的性能2。讀空、寫滿狀態(tài)判定的vhdl設(shè)計程序分別見附錄??諠M標(biāo)志產(chǎn)生模塊的頂層設(shè)計電路如圖3-7所示,其中empty_cmp模塊和full_cmp模塊分別是讀空標(biāo)志判定模塊和寫滿標(biāo)志判定模塊。將該頂層電路編譯成功后生成的空滿標(biāo)志產(chǎn)生模塊如圖3-8所示。圖3-7 空滿標(biāo)志產(chǎn)生模塊頂層電路圖圖3-8 空滿標(biāo)志產(chǎn)生模塊3.5 雙端口ram本課題設(shè)計的異步fifo的存儲器是一個存儲深度為128 bit,數(shù)據(jù)寬度為8 bit的雙端口ram,該ram使用altera的mega wizard plug-in manager工具定制,定制主要參數(shù)設(shè)置過程如下:(1)打開mega wizard plug-in manager對話框,選擇“create a new custom megafunction variation”定制新的宏功能模塊。(2) 定制完新的功能模塊后選中memory compiler下的ram:2-port生成雙端口ram。然后選擇cyclone ii器件和vhdl文件格式,輸入ram存放路徑和模塊名。(3) 生成ram后在ram功能設(shè)置界面的ram端口點擊“with one read port and one write port”,選擇一個讀端口和一個寫端口。存儲方式選擇bit方式,即“as a number of bits”。(4) 雙端口ram的存儲深度選擇128 bit,數(shù)據(jù)線寬度選擇8 bit。(5) 設(shè)置完存儲深度和數(shù)據(jù)寬度后進(jìn)入時鐘設(shè)置界面,選擇獨立的讀寫時鐘,并添加讀使能。(6) 在寄存器設(shè)置界面選中“which ports should be registered?”欄下第三個選擇框,增加輸出寄存器。(7) 定制生成的雙端口ram外部接口如圖3-9所示。圖3-9 雙端口ram外部接口第4章 時序仿真與實現(xiàn)4.1 模塊整合本課題采用層次化、描述語言和圖形輸入相結(jié)合的方法設(shè)計異步fifo電路,該系統(tǒng)被分為同步模塊、格雷碼計數(shù)模塊、格雷碼自然碼轉(zhuǎn)換模塊、空滿標(biāo)志產(chǎn)生模塊和雙端口ram幾部分,上一章節(jié)已經(jīng)完成了各模塊的編寫及時序仿真測試。將各模塊整合后的異步fifo電路的頂層實體如圖4-1所示,其中g(shù)ray模塊是格雷碼計數(shù)器模塊,g2b模塊是格雷碼自然碼轉(zhuǎn)換模塊,full_empty是空滿標(biāo)志產(chǎn)生模塊,dram模塊是雙端口ram。圖4-1 異步fifo頂層電路圖4.2 時序仿真及功能測試本課題使用quartus ii 9.0軟件的波形編輯器對設(shè)計的異步fifo電路進(jìn)行時序仿真,并根據(jù)仿真波形對各模塊功能進(jìn)行測試,確認(rèn)該異步fifo是否滿足設(shè)計要求。4.2.1 復(fù)位功能軟件仿真與測試對于復(fù)位功能的時序仿真測試波形如圖4-2所示。從圖中可以看出,當(dāng)系統(tǒng)運行后,復(fù)位端置1,即不按下復(fù)位鍵時,異步fifo系統(tǒng)正常工作;當(dāng)復(fù)位端置0,即按下復(fù)位鍵后,無論讀寫使能信號處于什么狀態(tài),數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。該仿真波形表明所設(shè)計的異步fifo電路的復(fù)位鍵能控制系統(tǒng)的全局操作,復(fù)位功能達(dá)到了預(yù)期的設(shè)計要求。圖4-2 復(fù)位功能時序仿真測試波形4.2.2 寫操作功能時序仿真與測試對于寫操作功能的時序仿真測試波形如圖4-3所示。從圖中可以看出,將系統(tǒng)復(fù)位端置1,將寫使能置位,讀使能復(fù)位,經(jīng)過一段時間后,數(shù)據(jù)輸出始終不變,讀空標(biāo)志始終為0,寫滿標(biāo)志始終為1,這表明異步fifo電路始終處于寫滿狀態(tài)。該仿真波形表明寫使能端控制系統(tǒng)只進(jìn)行寫操作寫入數(shù)據(jù),由于不進(jìn)行讀操作,一段時間后雙端口ram存儲器存儲單元會始終處于寫滿狀態(tài),這表明所設(shè)計的異步fifo電路的寫操作功能達(dá)到了預(yù)期的設(shè)計要求。圖4-3 寫操作功能時序仿真測試波形4.2.3 讀操作功能時序仿真與測試對于讀操作功能的時序仿真測試波形如圖4-4所示。從圖中可以看出,將系統(tǒng)復(fù)位端置1,將寫使能復(fù)位,讀使能置位,數(shù)據(jù)輸出始終不變,寫滿標(biāo)志始終為0,讀空標(biāo)志始終為1,這表明異步fifo電路始終處于讀空狀態(tài)。該仿真波形表明讀使能端控制系統(tǒng)只進(jìn)行讀操作讀取數(shù)據(jù),由于不進(jìn)行寫操作,雙端口ram存儲器存儲單元會始終處于讀空狀態(tài),這表明所設(shè)計的異步fifo電路的讀操作功能達(dá)到了預(yù)期的設(shè)計要求。圖4-4 讀操作功能時序仿真測試波形4.2.4 異步fifo電路整體功能軟件仿真與測試對于異步fifo電路整體功能的時序仿真測試波形如圖4-5和圖4-6所示,其中圖4-5的輸入的讀時鐘頻率是寫時鐘頻率的2倍,圖4-6的輸入的寫時鐘頻率是讀時鐘頻率的2倍。對于圖4-5,將系統(tǒng)復(fù)位端置1,將讀寫使能均置位,一段時間后異步fifo間歇性處于讀空狀態(tài),但始終不處于寫滿狀態(tài),輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,但會有一定的延時。這表明系統(tǒng)能同時進(jìn)行讀寫操作,由于讀操作速度快于寫操作,所以異步fifo只會處于讀空狀態(tài),而不會進(jìn)入寫滿狀態(tài)。另外,輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,也表明該電路實現(xiàn)了先入先出的功能,輸入輸出隊列之間的延時是由同步電路和程序的運行時間造成的。對于圖4-6,將系統(tǒng)復(fù)位端置1,將讀寫使能均置位,一段時間后異步fifo間歇性處于寫滿狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,但會有一定的延時。和圖4-5相似,這同樣表明系統(tǒng)同時進(jìn)行了讀寫操作,由于寫操作速度快于讀操作,異步fifo只會處于寫滿狀態(tài),而不會進(jìn)入讀空狀態(tài)。輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,同樣說明電路實現(xiàn)了先入先出的功能,隊列之間的延時依然是由同步電路和程序的運行時間造成的。圖4-5和圖4-6的仿真波形表明所設(shè)計的異步fifo電路的整體功能達(dá)到了預(yù)期的設(shè)計要求。圖4-5 異步fifo系統(tǒng)時序仿真測試波形1圖4-6 異步fifo系統(tǒng)時序仿真測試波形24.2.5 時序仿真結(jié)果總結(jié)從上述時序仿真測試結(jié)果可以看出,該異步fifo電路在硬件邏輯設(shè)計方面實現(xiàn)了所有的預(yù)期設(shè)計功能,能快速準(zhǔn)確的判定fifo存儲器的空滿狀態(tài),并能通過外部讀寫使能控制系統(tǒng)內(nèi)部讀寫操作,實現(xiàn)寬度為8 bit的數(shù)據(jù)隊列在兩個獨立的異步時鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。第5章 硬件仿真與實現(xiàn)5.1 外部電路焊接由于本課題使用ep2c5t144c8n核心板最小系統(tǒng),其外設(shè)遠(yuǎn)不能滿足設(shè)計要求,所以仍需焊接相應(yīng)的外設(shè)電路板來連接開發(fā)板以完成異步fifo電路的硬件實物設(shè)計。本課題除使用開發(fā)板自帶的按鍵作為系統(tǒng)復(fù)位鍵外,仍需焊接兩個撥動開關(guān)作為讀寫使能控制鍵,撥動開關(guān)原理圖如圖5-1所示。另外,在外設(shè)板上還需要焊接一定數(shù)量的引腳來作為相應(yīng)的讀寫時鐘輸入端和數(shù)據(jù)輸入輸出端,焊接完成的外設(shè)電路板如圖5-2所示。對于圖5-2所示撥碼開關(guān),向上撥碼為0,向下?lián)艽a為1,其中1號開關(guān)為寫使能控制開關(guān),2號開關(guān)為讀使能控制開關(guān),3、4號開關(guān)為預(yù)留的無用開關(guān)。開發(fā)板電路的(18-19,a-c)區(qū)域引腳為寫時鐘輸入引腳,(08-09,a-c)區(qū)域引腳為讀時鐘輸入引腳,(26,m-o)區(qū)域引腳為vcc引腳,(13-14,h)區(qū)域引腳為控制信號輸入引腳,(01,m-o)區(qū)域引腳為接地引腳,(24-26,w-d(右)區(qū)域引腳為輸入數(shù)據(jù)引腳,(18-19,c-e(右)區(qū)域引腳為寫滿狀態(tài)(full)引腳,(08-09,c-e(右)區(qū)域引腳為讀空狀態(tài)(empty)引腳,(01-03,w-d(右)區(qū)域引腳為輸出數(shù)據(jù)引腳。.gnd撥碼開關(guān)1004.7k控制信號輸入.vcc圖5-1 撥動開關(guān)原理圖圖5-2 外設(shè)電路板5.2 引腳分配焊接好外設(shè)電路板后,將外設(shè)電路板使用杜邦線接入ep2c5t144c8n最小系統(tǒng)核心板。但在此之前,仍需對設(shè)計的異步fifo電路進(jìn)行相應(yīng)的引腳分配,使系統(tǒng)下載入核心板后能按照設(shè)計要求正常工作,外設(shè)電路板也需根據(jù)引腳分配情況,將相應(yīng)功能區(qū)域引腳接入核心板。本設(shè)計使用quartus ii 9.0軟件里的pin planner工具欄分配電路引腳,分配完成后的引腳如表5-1所示。其中rst引腳分配為144引腳,其對應(yīng)為核心板的自帶按鍵,本設(shè)計使用此按鍵作為系統(tǒng)復(fù)位鍵。引腳分配完成后點擊settings工具欄,找到里面的device選項欄,選中device and pin options工具欄,將未用引腳設(shè)置為高阻態(tài),防止未用引腳出現(xiàn)其他狀態(tài)而對設(shè)計電路的功能測試產(chǎn)生干擾,將nceo端口設(shè)置為io口。完成這些設(shè)置后點擊start compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號如圖5-3所示。表5-1 異步fifo電路引腳分配表圖5-3 異步fifo端口引腳分配完成5.3 調(diào)試電路設(shè)計5.3.1 調(diào)試電路介紹完成引腳分配后,按照引腳相應(yīng)的功能設(shè)計,使用杜邦線將外設(shè)電路板與核心板連接,連接完成后的異步fifo電路硬件實物如圖5-4所示。其中(18-19,a-c)區(qū)域引腳為寫時鐘輸入端,(08-09,a-c)區(qū)域引腳為讀時鐘輸入端,(24-26,w-d(右)區(qū)域引腳為輸入數(shù)據(jù)端,(18-19,c-e(右)區(qū)域引腳為寫滿標(biāo)志(full)輸出端,(08-09,c-e(右)區(qū)域引腳為讀空標(biāo)志(empty)輸出端,(01-03,w-d(右)區(qū)域引腳為輸出數(shù)據(jù)端。圖5-4 異步fifo硬件電路實物若本課題所設(shè)計的異步fifo電路達(dá)到設(shè)計要求,則將該硬件電路通電并使用programmer工具,通過as接口將設(shè)計電路下載入核心板后,該硬件電路即本課題所設(shè)計完成的異步fifo電路硬件實物。該異步fifo電路能實現(xiàn)任意兩個異步讀寫時鐘輸入,并在讀寫使能開關(guān)的控制下,能實現(xiàn)寬度為8 bit的輸入數(shù)據(jù)隊列在兩個異步時鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。根據(jù)設(shè)計要求,該異步fifo電路不自帶異步時鐘產(chǎn)生模塊和輸入數(shù)據(jù)產(chǎn)生模塊,為了測試完成的異步fifo硬件電路的功能是否達(dá)到設(shè)計要求,本課題仍需設(shè)計一個調(diào)試電路來產(chǎn)生異步的讀寫時鐘信號和寬度為8 bit的輸入數(shù)據(jù)隊列。為了不影響完成的異步fifo硬件電路的功能,該調(diào)試電路使用另一塊核心板裝載運行,將調(diào)試電路輸出的兩個異步時鐘和隨機(jī)數(shù)據(jù)隊列分別作為測試異步fifo硬件電路的異步讀寫時鐘輸入和數(shù)據(jù)輸入。5.3.2 異步時鐘產(chǎn)生模塊該調(diào)試程序使用pll鎖相環(huán)通過將核心板自帶50 mhz時鐘進(jìn)行12分頻和14分頻產(chǎn)生兩個異步時鐘輸出,輸出時鐘頻率分別為25 mhz和12.5 mhz,將這兩個時鐘輸出連入外設(shè)電路板的讀時鐘和寫時鐘引腳區(qū)域即可作為異步fifo硬件電路的異步讀寫時鐘輸入。pll鎖相環(huán)使用altera的mega wizard plug-in manager工具定制。5.3.3 偽隨機(jī)數(shù)據(jù)隊列產(chǎn)生模塊該調(diào)試電路使用描述語言和圖形輸入相結(jié)合的方法設(shè)計一個寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊列產(chǎn)生模塊,將該模塊產(chǎn)生的偽隨機(jī)數(shù)據(jù)連入外設(shè)電路板的輸入數(shù)據(jù)引腳區(qū)域即可作為異步fifo硬件電路的數(shù)據(jù)輸入。8 bit偽隨機(jī)數(shù)據(jù)隊列產(chǎn)生模塊的vhdl設(shè)計程序見附錄。5.3.4 調(diào)試電路時序仿真將調(diào)試電路異步時鐘產(chǎn)生模塊和偽隨機(jī)數(shù)據(jù)產(chǎn)生模塊整合后生成電路如圖5-5所示,其中shuiji模塊為偽隨機(jī)數(shù)據(jù)產(chǎn)生模塊。圖5-5 調(diào)試電路利用quartus ii軟件的波形編輯器對該調(diào)試電路進(jìn)行時序仿真,其仿真波形如圖5-6所示。從仿真波形可以看出該調(diào)試電路能準(zhǔn)確有效的生成兩個異步時鐘信號和寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊列,其時序仿真結(jié)果達(dá)到設(shè)計要求。圖5-6 調(diào)試電路仿真波形5.3.5 調(diào)試電路引腳分配同前面章節(jié)異步fifo電路引腳分配相似,使用quartus ii 9.0軟件里的pin planner工具欄對調(diào)試電路分配引腳,引腳表如表5-2所示。其中inclk0引腳分配為17引腳,其對應(yīng)為核心板的自帶晶振。引腳分配完成后使用同樣的方法將未用引腳設(shè)置為高阻態(tài),將nceo設(shè)置為io口,完成這些設(shè)置后點擊start compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號如圖5-7所示。表5-2 調(diào)試電路引腳分配表圖5-7 調(diào)試電路引腳分配完成5.3.6 調(diào)試電路硬件仿真因為此電路只進(jìn)行調(diào)試,所以下載程序時使用jtag接口。本課題使用quartus ii軟件中的嵌入式邏輯分析儀signaltap ii對系統(tǒng)進(jìn)行硬件仿真3。在new窗口選擇signaltap ii logic analyzer file后生成signaltap ii編輯窗口如圖5-8所示。圖5-8 signaltap ii編輯窗口點擊instance欄里面的auto_signaltap_0,將其更名為check2,此名與所建工程名相同。之后在node欄下面空白處雙擊彈出node finder窗口,選擇“pins: all”后單擊list按鈕選中除inclk0外的所有結(jié)點。結(jié)點選擇后,在signal configuration欄的clock處選擇inclk0結(jié)點作為邏輯分析儀的工作時鐘,接著在data欄的sample depth處選擇采樣深度為128 bit。參數(shù)設(shè)置完成后將signaltap ii文件保存并編譯。編譯成功后,將用于裝載調(diào)試電路的核心板通電,并通過usb-blaster編程器連接電腦,然后利用signaltap ii編輯窗口下載電路程序。單擊右側(cè)setup按鈕選擇usb-blaster編程器模式,之后單擊下方的scan chain按鈕掃描核心板,若連接成功,則device處會顯示核心板的fpga芯片型號,最后單擊下方“.”按鈕選中check2.sof文件,點擊左側(cè)下載標(biāo)志進(jìn)行下載。當(dāng)文件下載完成后,核心板已可以實現(xiàn)調(diào)試電路的功能。然后點擊autorun analysis按鈕對該調(diào)試電路進(jìn)行硬件仿真,仿真波形如圖5-9所示,從該仿真波形可以看出該調(diào)試電路能準(zhǔn)確有效的生成兩個異步時鐘信號和寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊列,其硬件仿真結(jié)果同樣達(dá)到設(shè)計要求。圖5-9 調(diào)試電路硬件仿真波形5.4 異步fifo電路硬件仿真由上一小節(jié)設(shè)計的調(diào)試電路的時序仿真和硬件仿真結(jié)果可以看出,調(diào)試電路能產(chǎn)生兩個異步時鐘信號和深度為8 bit的數(shù)據(jù)隊列,完全達(dá)到了設(shè)計要求,能對該異步fifo硬件電路的功能進(jìn)行測試。根據(jù)調(diào)試電路的引腳分配情況,通過杜邦線將調(diào)試電路和異步fifo硬件電路連接在一起后組成的異步fifo功能測試電路實物如圖5-10所示,其中上面的核心板和外設(shè)電路板一起組成異步fifo硬件電路,下面的核心板為調(diào)試電路板?,F(xiàn)通過quartus ii軟件中的嵌入式邏輯分析儀signaltap ii對異步fifo功能測試電路進(jìn)行硬件仿真,通過仿真結(jié)果測試異步fifo電路的各部分功能,判斷其是否達(dá)到預(yù)期設(shè)計要求。異步fifo功能測試電路的硬件仿真方法與5.3.6小節(jié)調(diào)試電路的硬件仿真相似。圖5-10 異步fifo功能測試電路5.4.1 復(fù)位功能硬件仿真與測試對于復(fù)位功能的硬件仿真測試波形如圖5-11所示。從圖中可以看出,當(dāng)復(fù)位鍵按下后,復(fù)位端顯示為0,系統(tǒng)復(fù)位,即使此時讀寫使能處于有效狀態(tài),數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。該仿真波形表明所設(shè)計的異步fifo硬件電路的復(fù)位鍵能控制系統(tǒng)的全局操作,復(fù)位功能達(dá)到了預(yù)期的設(shè)計要求。圖5-11 復(fù)位功能硬件仿真測試波形5.4.2 寫操作功能硬件仿真與測試對于寫操作功能的硬件仿真測試波形如圖5-12所示。從圖中可以看出,將1號撥碼開關(guān)置1,2號撥碼開關(guān)置0,即寫使能置位,讀使能復(fù)位,經(jīng)過一段時間后,數(shù)據(jù)始終無輸出,讀空標(biāo)志始終為0,寫滿標(biāo)志始終為1,這表明異步fifo電路始終處于寫滿狀態(tài)。該仿真波形表明寫使能端控制系統(tǒng)只進(jìn)行寫操作寫入數(shù)據(jù),由于不進(jìn)行讀操作,一段時間后雙端口ram存儲器存儲單元會始終處于寫滿狀態(tài),這表明所設(shè)計的異步fifo硬件電路的寫操作功能達(dá)到了預(yù)期的設(shè)計要求。圖5-12 寫操作功能硬件仿真測試波形5.4.3 讀操作功能硬件仿真與測試對于讀操作功能的硬件仿真測試波形如圖5-13所示。從圖中可以看出,將1號撥碼開關(guān)置0,2號撥碼開關(guān)置1,即寫使能復(fù)位,讀使能置位,經(jīng)過一段時間后,數(shù)據(jù)始終無輸出,寫滿標(biāo)志始終為0,讀空標(biāo)志始終為1,這表明異步fifo電路始終處于讀空狀態(tài)。該仿真波形表明讀使能端控制系統(tǒng)只進(jìn)行讀操作讀取數(shù)據(jù),由于不進(jìn)行寫操作,一段時間后雙端口ram存儲器存儲單元會始終處于讀空狀態(tài),這表明所設(shè)計的異步fifo硬件電路的讀操作功能達(dá)到了預(yù)期設(shè)計要求。圖5-13 讀操作功能硬件仿真測試波形5.4.4 異步fifo硬件電路整體功能軟硬件仿真與測試對于異步fifo硬件電路整體功能的硬件仿真測試波形如圖5-14和圖5-15所示,其中圖5-14的輸入的讀時鐘頻率為25 mhz,寫時鐘頻率為12.5 mhz,圖5-15的輸入的寫時鐘頻率為25 mhz,讀時鐘頻率為12.5 mhz。對于圖5-14,將1號撥碼開關(guān)置1,2號撥碼開關(guān)置1,即讀寫使能均置位,復(fù)位鍵不按下。一段時間后異步fifo電路間歇性處于讀空狀態(tài),但始終不處于寫滿狀態(tài),輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,但會有一定的延時。這表明系統(tǒng)能同時進(jìn)行讀寫操作,但由于讀操作速度快于寫操作,所以異步fifo只會處于讀空狀態(tài),而不會進(jìn)入寫滿狀態(tài)。另外,輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,也表明該異步fifo硬件電路實現(xiàn)了先入先出的功能,輸入輸出隊列之間的延時是由同步電路和程序的運行時間造成的。同樣對于圖5-15,將1號撥碼開關(guān)置1,2號撥碼開關(guān)置1,復(fù)位鍵不按下。一段時間后異步fifo電路間歇性處于寫滿狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,但會有一定的延時。和圖5-14相似,這同樣表明系統(tǒng)能同時進(jìn)行讀寫操作,由于寫操作速度快于讀操作,異步fifo只會處于寫滿狀態(tài),而不會進(jìn)入讀空狀態(tài)。輸出數(shù)據(jù)隊列與輸入數(shù)據(jù)隊列相同,同樣說明該異步fifo硬件電路實現(xiàn)了先入先出的功能,隊列之間的延時依然是由同步電路和程序的運行時間造成的。圖5-14和圖5-15的硬件仿真波形表明所設(shè)計的異步fifo硬件電路的整體功能達(dá)到了預(yù)期的設(shè)計要求。圖5-14 異步fifo系統(tǒng)硬件仿真測試波形1圖5-15 異步fifo系統(tǒng)硬件仿真測試波形25.4.5 硬件仿真結(jié)果總結(jié)從上述硬件仿真測試結(jié)果可以看出,該異步fifo電路在硬件實物設(shè)計方面也能滿足所有的設(shè)計要求。該異步fifo電路可以實現(xiàn)任意兩個異步讀寫時鐘輸入,通過外部讀寫使能控制系統(tǒng)內(nèi)部讀寫操作,并能快速準(zhǔn)確的判定fifo存儲器的空滿狀態(tài),實現(xiàn)寬度為8 bit的數(shù)據(jù)隊列在兩個獨立的異步時鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。綜合時序仿真和硬件仿真結(jié)果可以證實本課題所設(shè)計的異步fifo電路能滿足設(shè)計要求,達(dá)到實驗?zāi)康?。撤除測試電路核心板,并使用programmer工具,通過as接口將設(shè)計電路下載入核心板后,該硬件電路即本課題所設(shè)計完成的ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路實物。完成的異步fifo實物電路如圖5-16所示,外設(shè)電路板引腳功能與圖5-4所示電路的引腳說明相同。圖5-16 異步fifo電路完成實物結(jié) 論異步fifo電路是現(xiàn)代集成電路芯片飛速發(fā)展的產(chǎn)物,應(yīng)用領(lǐng)域十分廣泛,潛在市場需求量十分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全知識法試題及答案
- 2025年電動汽車電池?zé)峁芾硐到y(tǒng)熱管理效率優(yōu)化與創(chuàng)新研究報告
- 安全技能比武試題及答案
- 安全工作教育試題及答案
- 物業(yè)品質(zhì)培訓(xùn)課件目錄
- 魔鏡檢測皮膚培訓(xùn)課件
- 重疾保險培訓(xùn)課件
- 《編制說明蒙農(nóng)1號蒙古冰草提純復(fù)壯技術(shù)規(guī)程》
- 中班家園共育課件
- 冬季生產(chǎn)安全培訓(xùn)
- 學(xué)術(shù)論文寫作規(guī)范與技巧課件
- 生物高中-基于大數(shù)據(jù)分析的精準(zhǔn)教學(xué)課件
- 工程結(jié)算審計實施方案(共8篇)
- 樂東221氣田投產(chǎn)專家驗收匯報
- 信任五環(huán)(用友營銷技巧)課件
- 2022年廣東省深圳市中考化學(xué)真題試卷
- 危險貨物道路運輸安全生產(chǎn)管理制度
- GB∕T 8110-2020 熔化極氣體保護(hù)電弧焊用非合金鋼及細(xì)晶粒鋼實心焊絲
- 【完美排版】山東科技出版社二年級下冊綜合實踐活動教案
- 制造業(yè)成本核算表格(有自動計算的公式)
- 公共政策學(xué)(第三版)-課件
評論
0/150
提交評論