基于FPGA的異步FIFO設(shè)計(jì)(畢業(yè)設(shè)計(jì)論文).doc_第1頁(yè)
基于FPGA的異步FIFO設(shè)計(jì)(畢業(yè)設(shè)計(jì)論文).doc_第2頁(yè)
基于FPGA的異步FIFO設(shè)計(jì)(畢業(yè)設(shè)計(jì)論文).doc_第3頁(yè)
基于FPGA的異步FIFO設(shè)計(jì)(畢業(yè)設(shè)計(jì)論文).doc_第4頁(yè)
基于FPGA的異步FIFO設(shè)計(jì)(畢業(yè)設(shè)計(jì)論文).doc_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

江蘇科技大學(xué)本 科 畢 業(yè) 設(shè) 計(jì)(論文)學(xué) 院 專(zhuān) 業(yè) 學(xué)生姓名 班級(jí)學(xué)號(hào) 指導(dǎo)教師 二零壹叁年六月江蘇科技大學(xué)本科畢業(yè)論文基于fpga的異步fifo設(shè)計(jì)asynchronous fifo design based on fpga江蘇科技大學(xué)本科畢業(yè)設(shè)計(jì)(論文)摘 要在現(xiàn)代集成電路芯片中,隨著設(shè)計(jì)規(guī)模的不斷擴(kuò)大,一個(gè)系統(tǒng)往往包含多個(gè)時(shí)鐘,如何進(jìn)行異步時(shí)鐘間的數(shù)據(jù)傳輸成為了一個(gè)很重要的問(wèn)題。異步fifo(first in first out)是一種先進(jìn)先出電路,可以在兩個(gè)不同的時(shí)鐘系統(tǒng)間進(jìn)行快速準(zhǔn)確的數(shù)據(jù)傳輸,是解決異步時(shí)鐘數(shù)據(jù)傳輸問(wèn)題的簡(jiǎn)單有效的方案。異步fifo在網(wǎng)絡(luò)接口、數(shù)據(jù)采集和圖像處理等方面得到了十分廣泛的應(yīng)用,由于國(guó)內(nèi)對(duì)該方面研究起步較晚,國(guó)內(nèi)的一些研究所和廠商開(kāi)發(fā)的fifo電路還遠(yuǎn)不能滿(mǎn)足市場(chǎng)和軍事需求。由于在異步電路中,時(shí)鐘間的周期和相位完全獨(dú)立,以及亞穩(wěn)態(tài)問(wèn)題的存在,數(shù)據(jù)傳輸時(shí)的丟失率不為零,如何實(shí)現(xiàn)異步信號(hào)同步化和降低亞穩(wěn)態(tài)概率以及正確判斷fifo的儲(chǔ)存狀態(tài)成為了設(shè)計(jì)異步fifo電路的難點(diǎn)。本課題介紹了一種基于fpga的異步fifo 電路設(shè)計(jì)方法。課題選用quartus ii軟件,在cyclone ii系列的ep2c5t144c8n芯片的基礎(chǔ)上,利用vhdl 硬件描述語(yǔ)言進(jìn)行邏輯描述,采用層次化、描述語(yǔ)言和圖形輸入相結(jié)合的方法設(shè)計(jì)了一個(gè)ram深度為128 bit,數(shù)據(jù)寬度為8 bit的高速、高可靠的異步fifo電路,并對(duì)該電路功能進(jìn)行時(shí)序仿真測(cè)試和硬件仿真測(cè)試。關(guān)鍵詞:異步fifo;同步化;亞穩(wěn)態(tài);仿真測(cè)試 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簡(jiǎn)介11.2 異步fifo簡(jiǎn)介11.3 國(guó)內(nèi)外研究現(xiàn)狀及存在的問(wèn)題11.3.1 研究現(xiàn)狀11.3.2 存在問(wèn)題21.4 本課題主要研究?jī)?nèi)容3第二章 異步fifo設(shè)計(jì)要求及基本原理42.1 設(shè)計(jì)要求42.2 異步fifo基本原理52.3 異步fifo設(shè)計(jì)難點(diǎn)52.4 系統(tǒng)設(shè)計(jì)方案62.5 異步fifo驗(yàn)證方案72.5.1 驗(yàn)證復(fù)位功能72.5.2 驗(yàn)證寫(xiě)操作功能72.5.3 驗(yàn)證讀操作功能72.5.4 驗(yàn)證異步fifo電路整體功能7第三章 模塊設(shè)計(jì)與實(shí)現(xiàn)83.1 格雷碼計(jì)數(shù)器模塊83.2 同步模塊83.3 格雷碼自然碼轉(zhuǎn)換模塊93.4 空滿(mǎn)標(biāo)志產(chǎn)生模塊103.5 雙端口ram13第四章 時(shí)序仿真與實(shí)現(xiàn)154.1 模塊整合154.2 時(shí)序仿真及功能測(cè)試174.2.1 復(fù)位功能軟件仿真與測(cè)試174.2.2 寫(xiě)操作功能時(shí)序仿真與測(cè)試174.2.3 讀操作功能時(shí)序仿真與測(cè)試184.2.4 異步fifo電路整體功能軟件仿真與測(cè)試184.2.5 時(shí)序仿真結(jié)果總結(jié)19第五章 硬件仿真與實(shí)現(xiàn)205.1 外部電路焊接205.2 引腳分配215.3 調(diào)試電路設(shè)計(jì)245.3.1 調(diào)試電路介紹245.3.2 異步時(shí)鐘產(chǎn)生模塊255.3.3 偽隨機(jī)數(shù)據(jù)隊(duì)列產(chǎn)生模塊255.3.5 調(diào)試電路引腳分配265.3.6 調(diào)試電路硬件仿真275.4 異步fifo電路硬件仿真285.4.1 復(fù)位功能硬件仿真與測(cè)試295.4.2 寫(xiě)操作功能硬件仿真與測(cè)試305.4.3 讀操作功能硬件仿真與測(cè)試305.4.4 異步fifo硬件電路整體功能軟硬件仿真與測(cè)試315.4.5 硬件仿真結(jié)果總結(jié)32結(jié)論33致謝34參考文獻(xiàn)35附錄36iii第1章 緒論1.1 fpga簡(jiǎn)介fpga(fieldprogrammable gate array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在cpld、pal、gal等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物10。利用vhdl或verilog硬件描述語(yǔ)言進(jìn)行電路設(shè)計(jì),經(jīng)過(guò)簡(jiǎn)單的布局整合之后,快速的燒入至 fpga 上進(jìn)行調(diào)試,是現(xiàn)代 ic設(shè)計(jì)驗(yàn)證技術(shù)的主流。fpga作為一種半定制電路而出現(xiàn)在專(zhuān)用集成電路(asic)領(lǐng)域中,既克服了先前可編程器件的門(mén)電路數(shù)目有限的缺點(diǎn),又彌補(bǔ)了定制電路的不足?;趂pga的異步fifo具有現(xiàn)場(chǎng)可編程,容量改動(dòng)性大,速度快,實(shí)現(xiàn)簡(jiǎn)單,開(kāi)發(fā)時(shí)間快,生產(chǎn)周期短,可移植性好的優(yōu)點(diǎn)。1.2 異步fifo簡(jiǎn)介在現(xiàn)代集成電路芯片中,設(shè)計(jì)規(guī)模不斷擴(kuò)大,一個(gè)系統(tǒng)中往往包含多個(gè)時(shí)鐘。如何在異步時(shí)鐘間進(jìn)行數(shù)據(jù)傳輸成為了電路設(shè)計(jì)中的一個(gè)重要問(wèn)題。異步fifo(first in first out)是解決這個(gè)問(wèn)題的一個(gè)簡(jiǎn)單有效的方案。異步fifo是一種先進(jìn)先出電路,常用來(lái)緩存數(shù)據(jù)和容納異步信號(hào)間的周期和相位差異,使用異步fifo可以在兩個(gè)不同的時(shí)鐘系統(tǒng)之間進(jìn)行快速準(zhǔn)確的實(shí)時(shí)數(shù)據(jù)傳輸。異步fifo在網(wǎng)絡(luò)接口、數(shù)據(jù)采集和圖像處理等方面得到了十分廣泛的應(yīng)用2。異步fifo用在異步時(shí)鐘數(shù)據(jù)接口部分,由于異步時(shí)鐘間的頻率和相位完全獨(dú)立,數(shù)據(jù)傳輸時(shí)的丟失率不為零,如何降低數(shù)據(jù)丟失率,設(shè)計(jì)一個(gè)高速可靠的異步fifo便成為了一個(gè)難點(diǎn)。本課題介紹了一種基于fpga設(shè)計(jì)高速可靠的異步fifo電路的方法。1.3 國(guó)內(nèi)外研究現(xiàn)狀及存在的問(wèn)題1.3.1 研究現(xiàn)狀在20世紀(jì)80年代早期對(duì)fifo存儲(chǔ)器的容量和速度需求都很低,所以那時(shí)的fifo芯片是基于移位寄存器的中規(guī)模集成(msi)器件,由于這種芯片在容量不會(huì)太大,所以其速度也不可能很快。新型的fifo芯片是基于ram結(jié)構(gòu)的大規(guī)模集成(lsi)電路,其內(nèi)部存儲(chǔ)單元使用一個(gè)雙端口ram,具有輸入和輸出兩套數(shù)據(jù)線(xiàn)。由于采用ram結(jié)構(gòu),數(shù)據(jù)從寫(xiě)入到讀出的延遲時(shí)間將大大縮短。這種芯片能在存儲(chǔ)寬度和深度上得到很大的發(fā)展。目前,為了更大的提高芯片容量,其內(nèi)部存儲(chǔ)單元使用動(dòng)態(tài)ram代替靜態(tài)ram,并在芯片內(nèi)部集成刷新電路,通過(guò)內(nèi)部仲裁單元控制器件的讀寫(xiě)及自動(dòng)刷新操作。隨著微電子技術(shù)的飛速發(fā)展,新一代的fifo芯片容量越來(lái)越大,速度越來(lái)越快,體積也越來(lái)越小。美國(guó)idt公司已經(jīng)推出運(yùn)行速度高達(dá)225mhz,電壓低至2.5v,可在業(yè)內(nèi)各種配置下實(shí)現(xiàn)業(yè)內(nèi)最大數(shù)據(jù)流量高達(dá)9 mb的fifo系列。cypress semiconductor公司推出具有80位寬的beast型的高性能fifo存儲(chǔ)器,它的帶寬高達(dá)300bps,可以工作在200 mhz頻率下;honeywell公司推出了一種基于soi的fifo存儲(chǔ)器,它采用專(zhuān)門(mén)的抗輻射加固工藝和設(shè)計(jì)版圖,主要用于軍事系統(tǒng)和高輻射的空間環(huán)境中;fifo芯片的最新產(chǎn)品是idt公司推出的多隊(duì)列fifo存儲(chǔ)器系列,它使用集成的嵌入式fifo存儲(chǔ)器核和高速隊(duì)列邏輯來(lái)構(gòu)成塊結(jié)構(gòu)。它的數(shù)據(jù)讀寫(xiě)速度可達(dá)到200 mhz,存儲(chǔ)時(shí)間也只有3.6 ns,可以通過(guò)最多八個(gè)器件的連接來(lái)實(shí)現(xiàn)容量深度的擴(kuò)展和隊(duì)列擴(kuò)展6。目前在國(guó)內(nèi)大部分集成芯片中,單獨(dú)做fifo芯片的很少,國(guó)內(nèi)的一些研究所和廠商也開(kāi)發(fā)了fifo電路,但還遠(yuǎn)不能滿(mǎn)足市場(chǎng)和軍事需求。1.3.2 存在問(wèn)題 國(guó)內(nèi)外設(shè)計(jì)fifo時(shí),通常使用兩種方法,一是利用可編程邏輯器件來(lái)構(gòu)造fifo(如xilinx公司),二是利用verilog、vhdl等硬件描述語(yǔ)言來(lái)對(duì)fifo的功能結(jié)構(gòu)進(jìn)行描述6。在大部分的eda軟件中,都是通過(guò)綜合器來(lái)完成對(duì)eda等硬件語(yǔ)言的編譯的,綜合器將硬件描述語(yǔ)言的描述轉(zhuǎn)變?yōu)槲锢砜蓪?shí)現(xiàn)的電路形式,由于fifo是基于ram結(jié)構(gòu)的,大部分的參考資料都是建立在數(shù)組存取的基礎(chǔ)上對(duì)fifo進(jìn)行描述的,然而綜合器對(duì)數(shù)組的綜合一般是將其轉(zhuǎn)變?yōu)榧拇嫫鞯慕Y(jié)構(gòu),這帶來(lái)的缺陷是綜合后的結(jié)構(gòu)會(huì)非常龐大,造成在大容量的fifo設(shè)計(jì)時(shí),會(huì)產(chǎn)生大量面積的浪費(fèi),甚至無(wú)法集成。1.4 本課題主要研究?jī)?nèi)容本課題基于fpga技術(shù),在cyclone ii系列的ep2c5t144c8n芯片的基礎(chǔ)上,選用quartus ii軟件利用vhdl 硬件描述語(yǔ)言進(jìn)行邏輯描述,并采用層次化、描述語(yǔ)言和圖形輸入相結(jié)合的方法設(shè)計(jì)了一個(gè)ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路,并對(duì)其功能進(jìn)行了時(shí)序仿真和硬件仿真驗(yàn)證。論文各章節(jié)的主要內(nèi)容安排如下:第一章為緒論,簡(jiǎn)要介紹了fpga的相關(guān)知識(shí)以及異步fifo的主要作用、研究背景和國(guó)內(nèi)外的發(fā)展現(xiàn)狀,并概括介紹了本課題的主要研究?jī)?nèi)容。第二章為異步fifo設(shè)計(jì)要求及基本原理,首先介紹了本課題的設(shè)計(jì)要求,然后對(duì)異步fifo的結(jié)構(gòu)、基本原理以及其設(shè)計(jì)難點(diǎn)進(jìn)行了分析,并由此歸納出系統(tǒng)的設(shè)計(jì)模塊和預(yù)期功能。第三章為模塊設(shè)計(jì)與實(shí)現(xiàn),主要介紹了異步fifo的模塊組成及各模塊的功能和原理,并利用vhdl硬件描述語(yǔ)言,通過(guò)quartus ii軟件對(duì)各模塊進(jìn)行了編寫(xiě)和仿真。第四章為時(shí)序仿真與實(shí)現(xiàn),通過(guò)層次化、描述語(yǔ)言和圖形輸入相結(jié)合的方法將各模塊整合為異步fifo頂層模塊,并通過(guò)quartus ii軟件的波形編輯器對(duì)其進(jìn)行時(shí)序仿真和分析。第五章為硬件仿真與實(shí)現(xiàn),連接外設(shè)及進(jìn)行引腳分配后,將完成的異步fifo頂層實(shí)體下載入開(kāi)發(fā)板,并通過(guò)編寫(xiě)測(cè)試程序產(chǎn)生讀寫(xiě)時(shí)鐘及偽隨機(jī)數(shù)輸入數(shù)據(jù),利用quartus ii軟件的嵌入式邏輯分析儀signaltap ii對(duì)實(shí)物進(jìn)行硬件仿真和分析,完成設(shè)計(jì)任務(wù)。最后結(jié)論對(duì)本次畢業(yè)設(shè)計(jì)進(jìn)行了歸納和綜合,概括了所取得的成果和存在的不足,以及對(duì)進(jìn)一步開(kāi)展研究的見(jiàn)解與建議。第2章 異步fifo設(shè)計(jì)要求及基本原理2.1 設(shè)計(jì)要求本課題使用ep2c5t144c8n核心板最小系統(tǒng)設(shè)計(jì)一個(gè)ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路,其外部接口如圖2-1所示,接口說(shuō)明如表2-1所示。復(fù)位后,通過(guò)讀寫(xiě)使能控制讀寫(xiě)操作。當(dāng)寫(xiě)時(shí)鐘脈沖上升沿到來(lái)時(shí),判斷寫(xiě)信號(hào)是否有效,有效則寫(xiě)入一個(gè)八位數(shù)據(jù)到ram中;當(dāng)讀時(shí)鐘脈沖上升沿到來(lái)時(shí),判斷讀信號(hào)是否有效,有效則從ram中把一個(gè)八位數(shù)據(jù)讀取出來(lái)。當(dāng)ram中數(shù)據(jù)寫(xiě)滿(mǎn)時(shí)產(chǎn)生一個(gè)寫(xiě)滿(mǎn)標(biāo)志,不能再往ram寫(xiě)入數(shù)據(jù);當(dāng)ram中數(shù)據(jù)讀空時(shí)產(chǎn)生一個(gè)讀空標(biāo)志,不能再?gòu)膔am讀出數(shù)據(jù)。圖2-1 異步fifo外部接口表2-1 異步fifo外部接口說(shuō)明管腳名稱(chēng)方向說(shuō)明rstin復(fù)位,低電平有效wr_enin寫(xiě)使能,高電平有效rd_enin讀使能,高電平有效wr_clkin寫(xiě)時(shí)鐘rd_clkin讀時(shí)鐘fullout讀空標(biāo)志emptyout寫(xiě)滿(mǎn)標(biāo)志data7.0out輸入數(shù)據(jù)q7.0out輸出數(shù)據(jù)2.2 異步fifo基本原理異步fifo主要由雙端口ram和讀寫(xiě)控制邏輯及空滿(mǎn)標(biāo)志產(chǎn)生邏輯構(gòu)成,其基本結(jié)構(gòu)圖如圖2-2所示。讀時(shí)鐘讀地址讀控制讀數(shù)據(jù)寫(xiě)地址寫(xiě)控制寫(xiě)數(shù)據(jù)雙端口ram寫(xiě)地址產(chǎn)生邏輯讀地址產(chǎn)生邏輯同步電路空滿(mǎn)標(biāo)志產(chǎn)生邏輯寫(xiě)時(shí)鐘復(fù)位圖2-2 異步fifo基本結(jié)構(gòu)圖由結(jié)構(gòu)圖可以看出該系統(tǒng)為環(huán)狀結(jié)構(gòu),存在兩個(gè)完全獨(dú)立的時(shí)鐘域?qū)憰r(shí)鐘域和讀時(shí)鐘域。異步fifo的存儲(chǔ)介質(zhì)是一塊雙端口ram,可以同時(shí)進(jìn)行讀寫(xiě)操作。在寫(xiě)時(shí)鐘域,寫(xiě)地址產(chǎn)生邏輯產(chǎn)生寫(xiě)地址和寫(xiě)控制信號(hào),在讀時(shí)鐘域,讀地址產(chǎn)生邏輯產(chǎn)生讀地址和讀控制信號(hào)??諠M(mǎn)標(biāo)志產(chǎn)生邏輯通過(guò)比較同步后的讀寫(xiě)地址來(lái)產(chǎn)生空滿(mǎn)標(biāo)志信號(hào),同時(shí),產(chǎn)生的空滿(mǎn)標(biāo)志信號(hào)又和輸入的讀寫(xiě)使能信號(hào)一起控制讀寫(xiě)時(shí)鐘域進(jìn)行讀寫(xiě)操作。2.3 異步fifo設(shè)計(jì)難點(diǎn)異步fifo設(shè)計(jì)存在兩個(gè)難點(diǎn):一是如何同步異步信號(hào),降低亞穩(wěn)態(tài)發(fā)生概率;二是如何正確產(chǎn)生存儲(chǔ)器的空滿(mǎn)標(biāo)志8。其中如何正確產(chǎn)生存儲(chǔ)器的空滿(mǎn)標(biāo)志在下一章節(jié)有詳細(xì)介紹。亞穩(wěn)態(tài)是一種物理現(xiàn)象,必然發(fā)生在異步fifo電路中。在數(shù)字電路中,觸發(fā)器必須滿(mǎn)足建立和保持的時(shí)間要求,然而在實(shí)際電路中,電路的外部輸入和內(nèi)部時(shí)鐘完全獨(dú)立,存在很大可能性出現(xiàn)不滿(mǎn)足建立和保持的時(shí)間要求的情況,另外,由于在電路內(nèi)部的兩個(gè)毫無(wú)關(guān)系的時(shí)鐘域之間進(jìn)行信號(hào)傳遞,也可能出現(xiàn)不滿(mǎn)足建立和保持的時(shí)間要求的情況。這種情況會(huì)使系統(tǒng)中存在未知態(tài),輸出將有可能是邏輯0或者邏輯1,或者是介于兩者之間的任何值,這個(gè)過(guò)程稱(chēng)為亞穩(wěn)態(tài)。由于亞穩(wěn)態(tài)使物理系統(tǒng)產(chǎn)生了一種不可預(yù)知性,所以亞穩(wěn)態(tài)是很危險(xiǎn)的。雖然亞穩(wěn)態(tài)沒(méi)法避免,但可以通過(guò)下面兩種方法降低亞穩(wěn)態(tài)發(fā)生的概率12:(1) 對(duì)讀寫(xiě)地址使用格雷碼計(jì)數(shù)器。格雷碼是一種錯(cuò)誤最小化的編碼方式,使用格雷碼計(jì)數(shù)器進(jìn)行計(jì)數(shù)時(shí),每一次計(jì)數(shù)增加只有一位數(shù)據(jù)位改變,而使用自然二進(jìn)制碼計(jì)數(shù)時(shí),每一次計(jì)數(shù)增加都可能造成多位數(shù)據(jù)位的變動(dòng),這就使得數(shù)據(jù)位變動(dòng)時(shí),格雷碼計(jì)數(shù)器發(fā)生亞穩(wěn)態(tài)的概率大大低于自然二進(jìn)制碼計(jì)數(shù)器。(2) 使用觸發(fā)器同步異步信號(hào)。使用觸發(fā)器同步或者增加冗余可以很好的降低亞穩(wěn)態(tài)發(fā)生的概率,本課題采用d觸發(fā)器二級(jí)同步方式,同步電路圖如圖2-3所示。當(dāng)且僅當(dāng)q1的躍變非常接近時(shí)鐘沿的時(shí)候,q2才會(huì)進(jìn)入亞穩(wěn)態(tài)2,這就大大提高了系統(tǒng)的可靠性。d q clkd q clk異步輸入同步輸出圖2-3 d觸發(fā)器二級(jí)同步2.4 系統(tǒng)設(shè)計(jì)方案根據(jù)異步fifo基本原理,本課題可采用層次化、描述語(yǔ)言和圖形輸入相結(jié)合的方法設(shè)計(jì)異步fifo電路,該系統(tǒng)可分為同步模塊、格雷碼計(jì)數(shù)模塊、格雷碼自然碼轉(zhuǎn)換模塊、空滿(mǎn)標(biāo)志產(chǎn)生模塊和雙端口ram幾部分組成。2.5 異步fifo驗(yàn)證方案根據(jù)異步fifo的基本原理和本課題的設(shè)計(jì)方案,若所設(shè)計(jì)的異步fifo電路能實(shí)現(xiàn)如下預(yù)期設(shè)計(jì)功能,則該異步fifo電路符合設(shè)計(jì)要求。2.5.1 驗(yàn)證復(fù)位功能將系統(tǒng)運(yùn)行后,若按下復(fù)位鍵,無(wú)論讀寫(xiě)使能信號(hào)處于什么狀態(tài),讀寫(xiě)操作都不進(jìn)行,數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。2.5.2 驗(yàn)證寫(xiě)操作功能系統(tǒng)復(fù)位后,將寫(xiě)使能置位,讀使能復(fù)位,則系統(tǒng)只能進(jìn)行寫(xiě)操作寫(xiě)入數(shù)據(jù),所以經(jīng)過(guò)一段時(shí)間后由于雙端口ram存儲(chǔ)器存儲(chǔ)單元被寫(xiě)滿(mǎn),異步fifo應(yīng)該始終處于寫(xiě)滿(mǎn)狀態(tài),數(shù)據(jù)輸出始終不變。2.5.3 驗(yàn)證讀操作功能系統(tǒng)復(fù)位后,將讀使能置位,寫(xiě)使能復(fù)位,則系統(tǒng)只能進(jìn)行讀操作讀取數(shù)據(jù),由于雙端口ram存儲(chǔ)器存儲(chǔ)單元數(shù)據(jù)被讀空,異步fifo應(yīng)該始終處于讀空狀態(tài),數(shù)據(jù)輸出始終不變。2.5.4 驗(yàn)證異步fifo電路整體功能系統(tǒng)復(fù)位后,將讀寫(xiě)使能均置位,系統(tǒng)能同時(shí)進(jìn)行讀寫(xiě)操作。若輸入的異步讀時(shí)鐘頻率大于寫(xiě)時(shí)鐘頻率,則讀操作快于寫(xiě)操作,異步fifo間歇性處于讀空狀態(tài),但始終不處于寫(xiě)滿(mǎn)狀態(tài),輸出數(shù)據(jù)隊(duì)列應(yīng)與輸入數(shù)據(jù)隊(duì)列相同以實(shí)現(xiàn)先入先出的功能,但會(huì)有一定的延時(shí);若輸入的異步讀時(shí)鐘頻率小于寫(xiě)時(shí)鐘頻率,則寫(xiě)操作快于讀操作,異步fifo間歇性處于寫(xiě)滿(mǎn)狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊(duì)列也應(yīng)與輸入數(shù)據(jù)隊(duì)列相同以實(shí)現(xiàn)先入先出的功能,但也會(huì)有一定的延時(shí)。第3章 模塊設(shè)計(jì)與實(shí)現(xiàn)3.1 格雷碼計(jì)數(shù)器模塊為了降低亞穩(wěn)態(tài)發(fā)生的概率,本課題將讀、寫(xiě)地址轉(zhuǎn)化為格雷碼進(jìn)行計(jì)數(shù),由于格雷碼是一種錯(cuò)誤最小化編碼方式,它在任意相鄰的兩個(gè)數(shù)間轉(zhuǎn)換時(shí)只有一個(gè)數(shù)位發(fā)生變化,其發(fā)生亞穩(wěn)態(tài)的可能性遠(yuǎn)低于自然二進(jìn)制碼,大大增加了電路的可靠性。另外,為了準(zhǔn)確的判斷存儲(chǔ)器的空滿(mǎn)狀態(tài),本課題使用5 bit的格雷碼計(jì)數(shù)器,這在后面的空滿(mǎn)標(biāo)志產(chǎn)生模塊章節(jié)有詳細(xì)介紹。5 bit格雷碼計(jì)數(shù)器模塊的vhdl設(shè)計(jì)程序見(jiàn)附錄。程序編譯成功后生成的格雷碼計(jì)數(shù)器模塊如圖3-1所示,利用quartus ii軟件的波形編譯器對(duì)該模塊進(jìn)行時(shí)序仿真,其仿真波形如圖3-2所示。圖3-1 格雷碼計(jì)數(shù)器模塊圖3-2 5 bit格雷碼計(jì)數(shù)器仿真波形3.2 同步模塊為了降低亞穩(wěn)態(tài)發(fā)生的概率,本課題使用前章所介紹d觸發(fā)器二級(jí)同步將異步信號(hào)同步化。在空滿(mǎn)標(biāo)志模塊判斷寫(xiě)滿(mǎn)標(biāo)志時(shí),同步模塊將讀指針與寫(xiě)時(shí)鐘同步后,和寫(xiě)指針比較產(chǎn)生寫(xiě)滿(mǎn)標(biāo)志;判斷讀空標(biāo)志時(shí),同步模塊將寫(xiě)指針與讀時(shí)鐘同步后,和讀指針比較產(chǎn)生讀空標(biāo)志。同步模塊的vhdl設(shè)計(jì)程序見(jiàn)附錄。程序編譯成功后生成的同步模塊如圖3-3所示,利用quartus ii軟件的波形編輯器對(duì)該模塊進(jìn)行時(shí)序仿真,其仿真波形如圖3-4所示。從仿真波形可以看出,該模塊將輸入的異步碼與輸入時(shí)鐘同步后輸出同步碼,由延時(shí)時(shí)間可以看出其滿(mǎn)足二級(jí)同步要求。圖3-3 同步模塊圖3-4 同步模塊仿真波形3.3 格雷碼自然碼轉(zhuǎn)換模塊雖然為了降低亞穩(wěn)態(tài)發(fā)生概率而使用格雷碼對(duì)讀、寫(xiě)地址進(jìn)行轉(zhuǎn)換,但在雙端口ram進(jìn)行存儲(chǔ)和空滿(mǎn)產(chǎn)生模塊進(jìn)行讀寫(xiě)地址比較時(shí)仍使用自然二進(jìn)制碼,所以在異步地址信號(hào)同步后,仍需將格雷碼地址轉(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è)計(jì)程序見(jiàn)附表。程序編譯成功后生成的格雷碼自然碼轉(zhuǎn)換模塊如圖3-5所示,利用quartus ii軟件的波形編輯器對(duì)該模塊進(jìn)行時(shí)序仿真,其仿真波形如圖3-6所示。圖3-5 格雷碼自然碼轉(zhuǎn)換模塊圖3-6 格雷碼自然碼轉(zhuǎn)換模塊仿真波形3.4 空滿(mǎn)標(biāo)志產(chǎn)生模塊空滿(mǎn)標(biāo)志產(chǎn)生模塊是整個(gè)異步fifo系統(tǒng)的核心部分,該模塊設(shè)計(jì)的好壞直接決定了該異步fifo的性能。空滿(mǎn)標(biāo)志產(chǎn)生的基本原則是無(wú)論在什么情況下,都不會(huì)出現(xiàn)存儲(chǔ)器對(duì)同一存儲(chǔ)地址同時(shí)進(jìn)行讀寫(xiě)操作的情況,也就是存儲(chǔ)器寫(xiě)滿(mǎn)后不產(chǎn)生溢出,讀空后不進(jìn)行多讀2。對(duì)于同步的fifo系統(tǒng),讀寫(xiě)操作同時(shí)從存儲(chǔ)單元起始位置開(kāi)始進(jìn)行讀寫(xiě)操作,每進(jìn)行完一次讀寫(xiě)操作后,控制指針就增加一位,指向下一個(gè)存儲(chǔ)單元,直到下一次時(shí)鐘沿到來(lái)后存儲(chǔ)器對(duì)該存儲(chǔ)單元進(jìn)行一次讀寫(xiě)操作,然后指針繼續(xù)增加。當(dāng)指針移動(dòng)到最后一個(gè)存儲(chǔ)單元后,它又重新回到起始位置繼續(xù)進(jìn)行讀寫(xiě)操作。由于同步fifo讀寫(xiě)操作同時(shí)進(jìn)行,所以存儲(chǔ)器始終處于非空和非滿(mǎn)的狀態(tài),讀寫(xiě)操作可以一直進(jìn)行。對(duì)于異步fifo系統(tǒng),有兩個(gè)獨(dú)立的控制指針讀指針和寫(xiě)指針,讀操作和寫(xiě)操作獨(dú)立運(yùn)行。然而當(dāng)存儲(chǔ)器存儲(chǔ)空間被讀空后,若繼續(xù)讀取數(shù)據(jù)則會(huì)造成多讀,使一個(gè)無(wú)用的信號(hào)被讀出;當(dāng)存儲(chǔ)器存儲(chǔ)空間寫(xiě)滿(mǎn)后,若繼續(xù)寫(xiě)入數(shù)據(jù)則會(huì)產(chǎn)生溢出,造成一個(gè)有用的數(shù)據(jù)被覆蓋。為了避免這種情況發(fā)生,異步fifo系統(tǒng)對(duì)存儲(chǔ)器設(shè)置了讀空和寫(xiě)滿(mǎn)兩個(gè)狀態(tài)標(biāo)志。當(dāng)存儲(chǔ)器讀空后,讀空標(biāo)志置位,暫停讀操作繼續(xù)讀取數(shù)據(jù),但仍可以執(zhí)行寫(xiě)操作;當(dāng)存儲(chǔ)器寫(xiě)滿(mǎn)后,寫(xiě)滿(mǎn)標(biāo)志置位,暫停寫(xiě)操作繼續(xù)寫(xiě)入數(shù)據(jù),但仍可以執(zhí)行讀操作。按照此原理,當(dāng)全局復(fù)位信號(hào)復(fù)位后,異步fifo應(yīng)該處于讀空狀態(tài)。由上述原理可以知道,當(dāng)讀指針和寫(xiě)指針不相等時(shí),讀寫(xiě)操作互不干擾,異步fifo處于非空和非滿(mǎn)的狀態(tài)。當(dāng)讀指針和寫(xiě)指針相等時(shí),fifo要么處于讀空狀態(tài),要么處于寫(xiě)滿(mǎn)狀態(tài)。那么該怎么判斷異步fifo究竟處于什么樣的狀態(tài)呢?判斷的方法有很多,本課題使用讀寫(xiě)指針比較的方法,通過(guò)額外增加狀態(tài)標(biāo)志位來(lái)判斷究竟是讀指針追趕寫(xiě)指針輸出讀空標(biāo)志,還是寫(xiě)指針追趕讀指針輸出寫(xiě)滿(mǎn)標(biāo)志。本課題設(shè)計(jì)的異步fifo存儲(chǔ)深度為128 bit,那么讀寫(xiě)指針應(yīng)有4個(gè)地址位,本設(shè)計(jì)使用5 bit的讀寫(xiě)指針,其最高位作為額外增加的狀態(tài)標(biāo)志位,剩下的低4位為地址位。地址位隨著相應(yīng)的讀(寫(xiě))操作的進(jìn)行依次遞增,當(dāng)讀(寫(xiě))指針由最后一個(gè)存儲(chǔ)單元重新回到起始位置時(shí)狀態(tài)標(biāo)志位取反。當(dāng)讀寫(xiě)指針的狀態(tài)標(biāo)志位和地址位完全相同時(shí),表明執(zhí)行了相同次數(shù)的讀寫(xiě)操作,此時(shí)異步fifo處于讀空狀態(tài);當(dāng)讀寫(xiě)指針的狀態(tài)標(biāo)志位不同,而地址位完全相同時(shí),表明寫(xiě)操作比讀操作多進(jìn)行了一次循環(huán),此時(shí)異步fifo處于寫(xiě)滿(mǎn)狀態(tài)。空滿(mǎn)狀態(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)由于空滿(mǎn)標(biāo)志是通過(guò)比較同步后的讀寫(xiě)指針產(chǎn)生的,那么就可能出現(xiàn)這樣的情況:當(dāng)同步寫(xiě)指針時(shí),實(shí)際的寫(xiě)指針可能已經(jīng)發(fā)生了變化,這意味著此時(shí)的寫(xiě)指針可能是一個(gè)無(wú)用的值。這樣從讀操作的角度來(lái)看,就會(huì)發(fā)生就會(huì)發(fā)生少寫(xiě)的的現(xiàn)象,也就是異步fifo判定為讀空時(shí),fifo實(shí)際上可能未空,因?yàn)閷?xiě)操作可能正在發(fā)生,寫(xiě)指針仍在變化,但這從讀操作的角度是“看不到的”;同理從寫(xiě)操作的角度來(lái)看,也會(huì)出現(xiàn)類(lèi)似的情況,即異步fifo判定為寫(xiě)滿(mǎn)時(shí),fifo實(shí)際上可能未滿(mǎn)。上述的情況被稱(chēng)為保守的報(bào)告,當(dāng)fifo未空時(shí)判定fifo讀空,而阻止讀操作的繼續(xù)進(jìn)行;當(dāng)fifo未滿(mǎn)時(shí)判定fifo寫(xiě)滿(mǎn),而阻止寫(xiě)操作的繼續(xù)進(jìn)行。這種情況從存儲(chǔ)器的角度來(lái)看,存儲(chǔ)器的存儲(chǔ)空間好像變小,然而這種情況是毫無(wú)壞處的,能很好的避免錯(cuò)誤的發(fā)生,因?yàn)楫?dāng)fifo真的讀空或?qū)憹M(mǎn)了,而不去阻止讀操作或?qū)懖僮鞯倪M(jìn)行將會(huì)出現(xiàn)多讀或溢出的錯(cuò)誤,影響異步fifo的性能2。讀空、寫(xiě)滿(mǎn)狀態(tài)判定的vhdl設(shè)計(jì)程序分別見(jiàn)附錄??諠M(mǎn)標(biāo)志產(chǎn)生模塊的頂層設(shè)計(jì)電路如圖3-7所示,其中empty_cmp模塊和full_cmp模塊分別是讀空標(biāo)志判定模塊和寫(xiě)滿(mǎn)標(biāo)志判定模塊。將該頂層電路編譯成功后生成的空滿(mǎn)標(biāo)志產(chǎn)生模塊如圖3-8所示。圖3-7 空滿(mǎn)標(biāo)志產(chǎn)生模塊頂層電路圖圖3-8 空滿(mǎn)標(biāo)志產(chǎn)生模塊3.5 雙端口ram本課題設(shè)計(jì)的異步fifo的存儲(chǔ)器是一個(gè)存儲(chǔ)深度為128 bit,數(shù)據(jù)寬度為8 bit的雙端口ram,該ram使用altera的mega wizard plug-in manager工具定制,定制主要參數(shù)設(shè)置過(guò)程如下:(1)打開(kāi)mega wizard plug-in manager對(duì)話(huà)框,選擇“create a new custom megafunction variation”定制新的宏功能模塊。(2) 定制完新的功能模塊后選中memory compiler下的ram:2-port生成雙端口ram。然后選擇cyclone ii器件和vhdl文件格式,輸入ram存放路徑和模塊名。(3) 生成ram后在ram功能設(shè)置界面的ram端口點(diǎn)擊“with one read port and one write port”,選擇一個(gè)讀端口和一個(gè)寫(xiě)端口。存儲(chǔ)方式選擇bit方式,即“as a number of bits”。(4) 雙端口ram的存儲(chǔ)深度選擇128 bit,數(shù)據(jù)線(xiàn)寬度選擇8 bit。(5) 設(shè)置完存儲(chǔ)深度和數(shù)據(jù)寬度后進(jìn)入時(shí)鐘設(shè)置界面,選擇獨(dú)立的讀寫(xiě)時(shí)鐘,并添加讀使能。(6) 在寄存器設(shè)置界面選中“which ports should be registered?”欄下第三個(gè)選擇框,增加輸出寄存器。(7) 定制生成的雙端口ram外部接口如圖3-9所示。圖3-9 雙端口ram外部接口第4章 時(shí)序仿真與實(shí)現(xiàn)4.1 模塊整合本課題采用層次化、描述語(yǔ)言和圖形輸入相結(jié)合的方法設(shè)計(jì)異步fifo電路,該系統(tǒng)被分為同步模塊、格雷碼計(jì)數(shù)模塊、格雷碼自然碼轉(zhuǎn)換模塊、空滿(mǎn)標(biāo)志產(chǎn)生模塊和雙端口ram幾部分,上一章節(jié)已經(jīng)完成了各模塊的編寫(xiě)及時(shí)序仿真測(cè)試。將各模塊整合后的異步fifo電路的頂層實(shí)體如圖4-1所示,其中g(shù)ray模塊是格雷碼計(jì)數(shù)器模塊,g2b模塊是格雷碼自然碼轉(zhuǎn)換模塊,full_empty是空滿(mǎn)標(biāo)志產(chǎn)生模塊,dram模塊是雙端口ram。圖4-1 異步fifo頂層電路圖4.2 時(shí)序仿真及功能測(cè)試本課題使用quartus ii 9.0軟件的波形編輯器對(duì)設(shè)計(jì)的異步fifo電路進(jìn)行時(shí)序仿真,并根據(jù)仿真波形對(duì)各模塊功能進(jìn)行測(cè)試,確認(rèn)該異步fifo是否滿(mǎn)足設(shè)計(jì)要求。4.2.1 復(fù)位功能軟件仿真與測(cè)試對(duì)于復(fù)位功能的時(shí)序仿真測(cè)試波形如圖4-2所示。從圖中可以看出,當(dāng)系統(tǒng)運(yùn)行后,復(fù)位端置1,即不按下復(fù)位鍵時(shí),異步fifo系統(tǒng)正常工作;當(dāng)復(fù)位端置0,即按下復(fù)位鍵后,無(wú)論讀寫(xiě)使能信號(hào)處于什么狀態(tài),數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。該仿真波形表明所設(shè)計(jì)的異步fifo電路的復(fù)位鍵能控制系統(tǒng)的全局操作,復(fù)位功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖4-2 復(fù)位功能時(shí)序仿真測(cè)試波形4.2.2 寫(xiě)操作功能時(shí)序仿真與測(cè)試對(duì)于寫(xiě)操作功能的時(shí)序仿真測(cè)試波形如圖4-3所示。從圖中可以看出,將系統(tǒng)復(fù)位端置1,將寫(xiě)使能置位,讀使能復(fù)位,經(jīng)過(guò)一段時(shí)間后,數(shù)據(jù)輸出始終不變,讀空標(biāo)志始終為0,寫(xiě)滿(mǎn)標(biāo)志始終為1,這表明異步fifo電路始終處于寫(xiě)滿(mǎn)狀態(tài)。該仿真波形表明寫(xiě)使能端控制系統(tǒng)只進(jìn)行寫(xiě)操作寫(xiě)入數(shù)據(jù),由于不進(jìn)行讀操作,一段時(shí)間后雙端口ram存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于寫(xiě)滿(mǎn)狀態(tài),這表明所設(shè)計(jì)的異步fifo電路的寫(xiě)操作功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖4-3 寫(xiě)操作功能時(shí)序仿真測(cè)試波形4.2.3 讀操作功能時(shí)序仿真與測(cè)試對(duì)于讀操作功能的時(shí)序仿真測(cè)試波形如圖4-4所示。從圖中可以看出,將系統(tǒng)復(fù)位端置1,將寫(xiě)使能復(fù)位,讀使能置位,數(shù)據(jù)輸出始終不變,寫(xiě)滿(mǎn)標(biāo)志始終為0,讀空標(biāo)志始終為1,這表明異步fifo電路始終處于讀空狀態(tài)。該仿真波形表明讀使能端控制系統(tǒng)只進(jìn)行讀操作讀取數(shù)據(jù),由于不進(jìn)行寫(xiě)操作,雙端口ram存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于讀空狀態(tài),這表明所設(shè)計(jì)的異步fifo電路的讀操作功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖4-4 讀操作功能時(shí)序仿真測(cè)試波形4.2.4 異步fifo電路整體功能軟件仿真與測(cè)試對(duì)于異步fifo電路整體功能的時(shí)序仿真測(cè)試波形如圖4-5和圖4-6所示,其中圖4-5的輸入的讀時(shí)鐘頻率是寫(xiě)時(shí)鐘頻率的2倍,圖4-6的輸入的寫(xiě)時(shí)鐘頻率是讀時(shí)鐘頻率的2倍。對(duì)于圖4-5,將系統(tǒng)復(fù)位端置1,將讀寫(xiě)使能均置位,一段時(shí)間后異步fifo間歇性處于讀空狀態(tài),但始終不處于寫(xiě)滿(mǎn)狀態(tài),輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,但會(huì)有一定的延時(shí)。這表明系統(tǒng)能同時(shí)進(jìn)行讀寫(xiě)操作,由于讀操作速度快于寫(xiě)操作,所以異步fifo只會(huì)處于讀空狀態(tài),而不會(huì)進(jìn)入寫(xiě)滿(mǎn)狀態(tài)。另外,輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,也表明該電路實(shí)現(xiàn)了先入先出的功能,輸入輸出隊(duì)列之間的延時(shí)是由同步電路和程序的運(yùn)行時(shí)間造成的。對(duì)于圖4-6,將系統(tǒng)復(fù)位端置1,將讀寫(xiě)使能均置位,一段時(shí)間后異步fifo間歇性處于寫(xiě)滿(mǎn)狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,但會(huì)有一定的延時(shí)。和圖4-5相似,這同樣表明系統(tǒng)同時(shí)進(jìn)行了讀寫(xiě)操作,由于寫(xiě)操作速度快于讀操作,異步fifo只會(huì)處于寫(xiě)滿(mǎn)狀態(tài),而不會(huì)進(jìn)入讀空狀態(tài)。輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,同樣說(shuō)明電路實(shí)現(xiàn)了先入先出的功能,隊(duì)列之間的延時(shí)依然是由同步電路和程序的運(yùn)行時(shí)間造成的。圖4-5和圖4-6的仿真波形表明所設(shè)計(jì)的異步fifo電路的整體功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖4-5 異步fifo系統(tǒng)時(shí)序仿真測(cè)試波形1圖4-6 異步fifo系統(tǒng)時(shí)序仿真測(cè)試波形24.2.5 時(shí)序仿真結(jié)果總結(jié)從上述時(shí)序仿真測(cè)試結(jié)果可以看出,該異步fifo電路在硬件邏輯設(shè)計(jì)方面實(shí)現(xiàn)了所有的預(yù)期設(shè)計(jì)功能,能快速準(zhǔn)確的判定fifo存儲(chǔ)器的空滿(mǎn)狀態(tài),并能通過(guò)外部讀寫(xiě)使能控制系統(tǒng)內(nèi)部讀寫(xiě)操作,實(shí)現(xiàn)寬度為8 bit的數(shù)據(jù)隊(duì)列在兩個(gè)獨(dú)立的異步時(shí)鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。第5章 硬件仿真與實(shí)現(xiàn)5.1 外部電路焊接由于本課題使用ep2c5t144c8n核心板最小系統(tǒng),其外設(shè)遠(yuǎn)不能滿(mǎn)足設(shè)計(jì)要求,所以仍需焊接相應(yīng)的外設(shè)電路板來(lái)連接開(kāi)發(fā)板以完成異步fifo電路的硬件實(shí)物設(shè)計(jì)。本課題除使用開(kāi)發(fā)板自帶的按鍵作為系統(tǒng)復(fù)位鍵外,仍需焊接兩個(gè)撥動(dòng)開(kāi)關(guān)作為讀寫(xiě)使能控制鍵,撥動(dòng)開(kāi)關(guān)原理圖如圖5-1所示。另外,在外設(shè)板上還需要焊接一定數(shù)量的引腳來(lái)作為相應(yīng)的讀寫(xiě)時(shí)鐘輸入端和數(shù)據(jù)輸入輸出端,焊接完成的外設(shè)電路板如圖5-2所示。對(duì)于圖5-2所示撥碼開(kāi)關(guān),向上撥碼為0,向下?lián)艽a為1,其中1號(hào)開(kāi)關(guān)為寫(xiě)使能控制開(kāi)關(guān),2號(hào)開(kāi)關(guān)為讀使能控制開(kāi)關(guān),3、4號(hào)開(kāi)關(guān)為預(yù)留的無(wú)用開(kāi)關(guān)。開(kāi)發(fā)板電路的(18-19,a-c)區(qū)域引腳為寫(xiě)時(shí)鐘輸入引腳,(08-09,a-c)區(qū)域引腳為讀時(shí)鐘輸入引腳,(26,m-o)區(qū)域引腳為vcc引腳,(13-14,h)區(qū)域引腳為控制信號(hào)輸入引腳,(01,m-o)區(qū)域引腳為接地引腳,(24-26,w-d(右)區(qū)域引腳為輸入數(shù)據(jù)引腳,(18-19,c-e(右)區(qū)域引腳為寫(xiě)滿(mǎn)狀態(tài)(full)引腳,(08-09,c-e(右)區(qū)域引腳為讀空狀態(tài)(empty)引腳,(01-03,w-d(右)區(qū)域引腳為輸出數(shù)據(jù)引腳。.gnd撥碼開(kāi)關(guān)1004.7k控制信號(hào)輸入.vcc圖5-1 撥動(dòng)開(kāi)關(guān)原理圖圖5-2 外設(shè)電路板5.2 引腳分配焊接好外設(shè)電路板后,將外設(shè)電路板使用杜邦線(xiàn)接入ep2c5t144c8n最小系統(tǒng)核心板。但在此之前,仍需對(duì)設(shè)計(jì)的異步fifo電路進(jìn)行相應(yīng)的引腳分配,使系統(tǒng)下載入核心板后能按照設(shè)計(jì)要求正常工作,外設(shè)電路板也需根據(jù)引腳分配情況,將相應(yīng)功能區(qū)域引腳接入核心板。本設(shè)計(jì)使用quartus ii 9.0軟件里的pin planner工具欄分配電路引腳,分配完成后的引腳如表5-1所示。其中rst引腳分配為144引腳,其對(duì)應(yīng)為核心板的自帶按鍵,本設(shè)計(jì)使用此按鍵作為系統(tǒng)復(fù)位鍵。引腳分配完成后點(diǎn)擊settings工具欄,找到里面的device選項(xiàng)欄,選中device and pin options工具欄,將未用引腳設(shè)置為高阻態(tài),防止未用引腳出現(xiàn)其他狀態(tài)而對(duì)設(shè)計(jì)電路的功能測(cè)試產(chǎn)生干擾,將nceo端口設(shè)置為io口。完成這些設(shè)置后點(diǎn)擊start compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號(hào)如圖5-3所示。表5-1 異步fifo電路引腳分配表圖5-3 異步fifo端口引腳分配完成5.3 調(diào)試電路設(shè)計(jì)5.3.1 調(diào)試電路介紹完成引腳分配后,按照引腳相應(yīng)的功能設(shè)計(jì),使用杜邦線(xiàn)將外設(shè)電路板與核心板連接,連接完成后的異步fifo電路硬件實(shí)物如圖5-4所示。其中(18-19,a-c)區(qū)域引腳為寫(xiě)時(shí)鐘輸入端,(08-09,a-c)區(qū)域引腳為讀時(shí)鐘輸入端,(24-26,w-d(右)區(qū)域引腳為輸入數(shù)據(jù)端,(18-19,c-e(右)區(qū)域引腳為寫(xiě)滿(mǎn)標(biāo)志(full)輸出端,(08-09,c-e(右)區(qū)域引腳為讀空標(biāo)志(empty)輸出端,(01-03,w-d(右)區(qū)域引腳為輸出數(shù)據(jù)端。圖5-4 異步fifo硬件電路實(shí)物若本課題所設(shè)計(jì)的異步fifo電路達(dá)到設(shè)計(jì)要求,則將該硬件電路通電并使用programmer工具,通過(guò)as接口將設(shè)計(jì)電路下載入核心板后,該硬件電路即本課題所設(shè)計(jì)完成的異步fifo電路硬件實(shí)物。該異步fifo電路能實(shí)現(xiàn)任意兩個(gè)異步讀寫(xiě)時(shí)鐘輸入,并在讀寫(xiě)使能開(kāi)關(guān)的控制下,能實(shí)現(xiàn)寬度為8 bit的輸入數(shù)據(jù)隊(duì)列在兩個(gè)異步時(shí)鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。根據(jù)設(shè)計(jì)要求,該異步fifo電路不自帶異步時(shí)鐘產(chǎn)生模塊和輸入數(shù)據(jù)產(chǎn)生模塊,為了測(cè)試完成的異步fifo硬件電路的功能是否達(dá)到設(shè)計(jì)要求,本課題仍需設(shè)計(jì)一個(gè)調(diào)試電路來(lái)產(chǎn)生異步的讀寫(xiě)時(shí)鐘信號(hào)和寬度為8 bit的輸入數(shù)據(jù)隊(duì)列。為了不影響完成的異步fifo硬件電路的功能,該調(diào)試電路使用另一塊核心板裝載運(yùn)行,將調(diào)試電路輸出的兩個(gè)異步時(shí)鐘和隨機(jī)數(shù)據(jù)隊(duì)列分別作為測(cè)試異步fifo硬件電路的異步讀寫(xiě)時(shí)鐘輸入和數(shù)據(jù)輸入。5.3.2 異步時(shí)鐘產(chǎn)生模塊該調(diào)試程序使用pll鎖相環(huán)通過(guò)將核心板自帶50 mhz時(shí)鐘進(jìn)行12分頻和14分頻產(chǎn)生兩個(gè)異步時(shí)鐘輸出,輸出時(shí)鐘頻率分別為25 mhz和12.5 mhz,將這兩個(gè)時(shí)鐘輸出連入外設(shè)電路板的讀時(shí)鐘和寫(xiě)時(shí)鐘引腳區(qū)域即可作為異步fifo硬件電路的異步讀寫(xiě)時(shí)鐘輸入。pll鎖相環(huán)使用altera的mega wizard plug-in manager工具定制。5.3.3 偽隨機(jī)數(shù)據(jù)隊(duì)列產(chǎn)生模塊該調(diào)試電路使用描述語(yǔ)言和圖形輸入相結(jié)合的方法設(shè)計(jì)一個(gè)寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊(duì)列產(chǎn)生模塊,將該模塊產(chǎn)生的偽隨機(jī)數(shù)據(jù)連入外設(shè)電路板的輸入數(shù)據(jù)引腳區(qū)域即可作為異步fifo硬件電路的數(shù)據(jù)輸入。8 bit偽隨機(jī)數(shù)據(jù)隊(duì)列產(chǎn)生模塊的vhdl設(shè)計(jì)程序見(jiàn)附錄。5.3.4 調(diào)試電路時(shí)序仿真將調(diào)試電路異步時(shí)鐘產(chǎn)生模塊和偽隨機(jī)數(shù)據(jù)產(chǎn)生模塊整合后生成電路如圖5-5所示,其中shuiji模塊為偽隨機(jī)數(shù)據(jù)產(chǎn)生模塊。圖5-5 調(diào)試電路利用quartus ii軟件的波形編輯器對(duì)該調(diào)試電路進(jìn)行時(shí)序仿真,其仿真波形如圖5-6所示。從仿真波形可以看出該調(diào)試電路能準(zhǔn)確有效的生成兩個(gè)異步時(shí)鐘信號(hào)和寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊(duì)列,其時(shí)序仿真結(jié)果達(dá)到設(shè)計(jì)要求。圖5-6 調(diào)試電路仿真波形5.3.5 調(diào)試電路引腳分配同前面章節(jié)異步fifo電路引腳分配相似,使用quartus ii 9.0軟件里的pin planner工具欄對(duì)調(diào)試電路分配引腳,引腳表如表5-2所示。其中inclk0引腳分配為17引腳,其對(duì)應(yīng)為核心板的自帶晶振。引腳分配完成后使用同樣的方法將未用引腳設(shè)置為高阻態(tài),將nceo設(shè)置為io口,完成這些設(shè)置后點(diǎn)擊start compilation進(jìn)行編譯,編譯成功后電路圖中各端口處顯示相應(yīng)的引腳編號(hào)如圖5-7所示。表5-2 調(diào)試電路引腳分配表圖5-7 調(diào)試電路引腳分配完成5.3.6 調(diào)試電路硬件仿真因?yàn)榇穗娐分贿M(jìn)行調(diào)試,所以下載程序時(shí)使用jtag接口。本課題使用quartus ii軟件中的嵌入式邏輯分析儀signaltap ii對(duì)系統(tǒng)進(jìn)行硬件仿真3。在new窗口選擇signaltap ii logic analyzer file后生成signaltap ii編輯窗口如圖5-8所示。圖5-8 signaltap ii編輯窗口點(diǎn)擊instance欄里面的auto_signaltap_0,將其更名為check2,此名與所建工程名相同。之后在node欄下面空白處雙擊彈出node finder窗口,選擇“pins: all”后單擊list按鈕選中除inclk0外的所有結(jié)點(diǎn)。結(jié)點(diǎn)選擇后,在signal configuration欄的clock處選擇inclk0結(jié)點(diǎn)作為邏輯分析儀的工作時(shí)鐘,接著在data欄的sample depth處選擇采樣深度為128 bit。參數(shù)設(shè)置完成后將signaltap ii文件保存并編譯。編譯成功后,將用于裝載調(diào)試電路的核心板通電,并通過(guò)usb-blaster編程器連接電腦,然后利用signaltap ii編輯窗口下載電路程序。單擊右側(cè)setup按鈕選擇usb-blaster編程器模式,之后單擊下方的scan chain按鈕掃描核心板,若連接成功,則device處會(huì)顯示核心板的fpga芯片型號(hào),最后單擊下方“.”按鈕選中check2.sof文件,點(diǎn)擊左側(cè)下載標(biāo)志進(jìn)行下載。當(dāng)文件下載完成后,核心板已可以實(shí)現(xiàn)調(diào)試電路的功能。然后點(diǎn)擊autorun analysis按鈕對(duì)該調(diào)試電路進(jìn)行硬件仿真,仿真波形如圖5-9所示,從該仿真波形可以看出該調(diào)試電路能準(zhǔn)確有效的生成兩個(gè)異步時(shí)鐘信號(hào)和寬度為8 bit的偽隨機(jī)數(shù)據(jù)隊(duì)列,其硬件仿真結(jié)果同樣達(dá)到設(shè)計(jì)要求。圖5-9 調(diào)試電路硬件仿真波形5.4 異步fifo電路硬件仿真由上一小節(jié)設(shè)計(jì)的調(diào)試電路的時(shí)序仿真和硬件仿真結(jié)果可以看出,調(diào)試電路能產(chǎn)生兩個(gè)異步時(shí)鐘信號(hào)和深度為8 bit的數(shù)據(jù)隊(duì)列,完全達(dá)到了設(shè)計(jì)要求,能對(duì)該異步fifo硬件電路的功能進(jìn)行測(cè)試。根據(jù)調(diào)試電路的引腳分配情況,通過(guò)杜邦線(xiàn)將調(diào)試電路和異步fifo硬件電路連接在一起后組成的異步fifo功能測(cè)試電路實(shí)物如圖5-10所示,其中上面的核心板和外設(shè)電路板一起組成異步fifo硬件電路,下面的核心板為調(diào)試電路板。現(xiàn)通過(guò)quartus ii軟件中的嵌入式邏輯分析儀signaltap ii對(duì)異步fifo功能測(cè)試電路進(jìn)行硬件仿真,通過(guò)仿真結(jié)果測(cè)試異步fifo電路的各部分功能,判斷其是否達(dá)到預(yù)期設(shè)計(jì)要求。異步fifo功能測(cè)試電路的硬件仿真方法與5.3.6小節(jié)調(diào)試電路的硬件仿真相似。圖5-10 異步fifo功能測(cè)試電路5.4.1 復(fù)位功能硬件仿真與測(cè)試對(duì)于復(fù)位功能的硬件仿真測(cè)試波形如圖5-11所示。從圖中可以看出,當(dāng)復(fù)位鍵按下后,復(fù)位端顯示為0,系統(tǒng)復(fù)位,即使此時(shí)讀寫(xiě)使能處于有效狀態(tài),數(shù)據(jù)輸出始終不變,異步fifo處于讀空狀態(tài)。該仿真波形表明所設(shè)計(jì)的異步fifo硬件電路的復(fù)位鍵能控制系統(tǒng)的全局操作,復(fù)位功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖5-11 復(fù)位功能硬件仿真測(cè)試波形5.4.2 寫(xiě)操作功能硬件仿真與測(cè)試對(duì)于寫(xiě)操作功能的硬件仿真測(cè)試波形如圖5-12所示。從圖中可以看出,將1號(hào)撥碼開(kāi)關(guān)置1,2號(hào)撥碼開(kāi)關(guān)置0,即寫(xiě)使能置位,讀使能復(fù)位,經(jīng)過(guò)一段時(shí)間后,數(shù)據(jù)始終無(wú)輸出,讀空標(biāo)志始終為0,寫(xiě)滿(mǎn)標(biāo)志始終為1,這表明異步fifo電路始終處于寫(xiě)滿(mǎn)狀態(tài)。該仿真波形表明寫(xiě)使能端控制系統(tǒng)只進(jìn)行寫(xiě)操作寫(xiě)入數(shù)據(jù),由于不進(jìn)行讀操作,一段時(shí)間后雙端口ram存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于寫(xiě)滿(mǎn)狀態(tài),這表明所設(shè)計(jì)的異步fifo硬件電路的寫(xiě)操作功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖5-12 寫(xiě)操作功能硬件仿真測(cè)試波形5.4.3 讀操作功能硬件仿真與測(cè)試對(duì)于讀操作功能的硬件仿真測(cè)試波形如圖5-13所示。從圖中可以看出,將1號(hào)撥碼開(kāi)關(guān)置0,2號(hào)撥碼開(kāi)關(guān)置1,即寫(xiě)使能復(fù)位,讀使能置位,經(jīng)過(guò)一段時(shí)間后,數(shù)據(jù)始終無(wú)輸出,寫(xiě)滿(mǎn)標(biāo)志始終為0,讀空標(biāo)志始終為1,這表明異步fifo電路始終處于讀空狀態(tài)。該仿真波形表明讀使能端控制系統(tǒng)只進(jìn)行讀操作讀取數(shù)據(jù),由于不進(jìn)行寫(xiě)操作,一段時(shí)間后雙端口ram存儲(chǔ)器存儲(chǔ)單元會(huì)始終處于讀空狀態(tài),這表明所設(shè)計(jì)的異步fifo硬件電路的讀操作功能達(dá)到了預(yù)期設(shè)計(jì)要求。圖5-13 讀操作功能硬件仿真測(cè)試波形5.4.4 異步fifo硬件電路整體功能軟硬件仿真與測(cè)試對(duì)于異步fifo硬件電路整體功能的硬件仿真測(cè)試波形如圖5-14和圖5-15所示,其中圖5-14的輸入的讀時(shí)鐘頻率為25 mhz,寫(xiě)時(shí)鐘頻率為12.5 mhz,圖5-15的輸入的寫(xiě)時(shí)鐘頻率為25 mhz,讀時(shí)鐘頻率為12.5 mhz。對(duì)于圖5-14,將1號(hào)撥碼開(kāi)關(guān)置1,2號(hào)撥碼開(kāi)關(guān)置1,即讀寫(xiě)使能均置位,復(fù)位鍵不按下。一段時(shí)間后異步fifo電路間歇性處于讀空狀態(tài),但始終不處于寫(xiě)滿(mǎn)狀態(tài),輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,但會(huì)有一定的延時(shí)。這表明系統(tǒng)能同時(shí)進(jìn)行讀寫(xiě)操作,但由于讀操作速度快于寫(xiě)操作,所以異步fifo只會(huì)處于讀空狀態(tài),而不會(huì)進(jìn)入寫(xiě)滿(mǎn)狀態(tài)。另外,輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,也表明該異步fifo硬件電路實(shí)現(xiàn)了先入先出的功能,輸入輸出隊(duì)列之間的延時(shí)是由同步電路和程序的運(yùn)行時(shí)間造成的。同樣對(duì)于圖5-15,將1號(hào)撥碼開(kāi)關(guān)置1,2號(hào)撥碼開(kāi)關(guān)置1,復(fù)位鍵不按下。一段時(shí)間后異步fifo電路間歇性處于寫(xiě)滿(mǎn)狀態(tài),但始終不處于讀空狀態(tài),輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,但會(huì)有一定的延時(shí)。和圖5-14相似,這同樣表明系統(tǒng)能同時(shí)進(jìn)行讀寫(xiě)操作,由于寫(xiě)操作速度快于讀操作,異步fifo只會(huì)處于寫(xiě)滿(mǎn)狀態(tài),而不會(huì)進(jìn)入讀空狀態(tài)。輸出數(shù)據(jù)隊(duì)列與輸入數(shù)據(jù)隊(duì)列相同,同樣說(shuō)明該異步fifo硬件電路實(shí)現(xiàn)了先入先出的功能,隊(duì)列之間的延時(shí)依然是由同步電路和程序的運(yùn)行時(shí)間造成的。圖5-14和圖5-15的硬件仿真波形表明所設(shè)計(jì)的異步fifo硬件電路的整體功能達(dá)到了預(yù)期的設(shè)計(jì)要求。圖5-14 異步fifo系統(tǒng)硬件仿真測(cè)試波形1圖5-15 異步fifo系統(tǒng)硬件仿真測(cè)試波形25.4.5 硬件仿真結(jié)果總結(jié)從上述硬件仿真測(cè)試結(jié)果可以看出,該異步fifo電路在硬件實(shí)物設(shè)計(jì)方面也能滿(mǎn)足所有的設(shè)計(jì)要求。該異步fifo電路可以實(shí)現(xiàn)任意兩個(gè)異步讀寫(xiě)時(shí)鐘輸入,通過(guò)外部讀寫(xiě)使能控制系統(tǒng)內(nèi)部讀寫(xiě)操作,并能快速準(zhǔn)確的判定fifo存儲(chǔ)器的空滿(mǎn)狀態(tài),實(shí)現(xiàn)寬度為8 bit的數(shù)據(jù)隊(duì)列在兩個(gè)獨(dú)立的異步時(shí)鐘域之間進(jìn)行先進(jìn)先出的數(shù)據(jù)傳輸。綜合時(shí)序仿真和硬件仿真結(jié)果可以證實(shí)本課題所設(shè)計(jì)的異步fifo電路能滿(mǎn)足設(shè)計(jì)要求,達(dá)到實(shí)驗(yàn)?zāi)康?。撤除測(cè)試電路核心板,并使用programmer工具,通過(guò)as接口將設(shè)計(jì)電路下載入核心板后,該硬件電路即本課題所設(shè)計(jì)完成的ram深度為128 bit,數(shù)據(jù)寬度為8 bit的異步fifo電路實(shí)物。完成的異步fifo實(shí)物電路如圖5-16所示,外設(shè)電路板引腳功能與圖5-4所示電路的引腳說(shuō)明相同。圖5-16 異步fifo電路完成實(shí)物結(jié) 論異步fifo電路是現(xiàn)代集成電路芯片飛速發(fā)展的產(chǎn)物,應(yīng)用領(lǐng)域十分廣泛,潛在市場(chǎng)需求量十分

溫馨提示

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

評(píng)論

0/150

提交評(píng)論