EDA課程設(shè)計(jì)-數(shù)據(jù)緩沖器資料_第1頁(yè)
EDA課程設(shè)計(jì)-數(shù)據(jù)緩沖器資料_第2頁(yè)
EDA課程設(shè)計(jì)-數(shù)據(jù)緩沖器資料_第3頁(yè)
EDA課程設(shè)計(jì)-數(shù)據(jù)緩沖器資料_第4頁(yè)
EDA課程設(shè)計(jì)-數(shù)據(jù)緩沖器資料_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書學(xué)生姓名: _ 專業(yè)班級(jí):電子科學(xué)與技術(shù)0903班指導(dǎo)教師: 工作單位:信息工程學(xué)院題 目:8X 9先進(jìn)先出(FIFO)緩沖器設(shè)計(jì)初始條件:QuartusH軟件、微機(jī)、FPGA實(shí)驗(yàn)箱設(shè)計(jì)任務(wù):深入研究和掌握FIFO的理論知識(shí)。利用QuartusH軟件強(qiáng)大的編譯和仿真 功能,實(shí)現(xiàn)FIFO緩沖器的設(shè)計(jì)、仿真以及硬件功能實(shí)現(xiàn)。設(shè)計(jì)一個(gè)8X9先進(jìn)先出(FIFO)緩沖器,要求達(dá)到一下功能:1、8位字深,9位字寬;2、當(dāng)讀信號(hào)ready有效時(shí),F(xiàn)IFO的輸出data_out使能,當(dāng)ready無(wú)效時(shí),F(xiàn)IFO的輸出處于高阻態(tài);3、當(dāng)寫信號(hào)write有效時(shí),9位款的寄存器進(jìn)行寫操作;4、信號(hào)rd

2、inc和wrinc被用來(lái)作為寄存器讀和寫指針遞增,以指示該位寄存器的讀和寫;5、信號(hào)rdptclr和wrptclr復(fù)位讀寫指針指向FIFO的第一個(gè)寄存器;6、data_in是將被載入到一個(gè)寄存器的數(shù)據(jù);7、 ef、ff分別作為緩沖器空和滿的標(biāo)志(附加)。時(shí)間安排:第1天課程設(shè)計(jì)任務(wù)布置、選題、查閱資料第25天設(shè)計(jì),軟件編程、仿真和調(diào)試第68天實(shí)驗(yàn)室檢查仿真結(jié)果,驗(yàn)證設(shè)計(jì)的可行性和正確性第910天設(shè)計(jì)的硬件調(diào)試第11天機(jī)房檢查設(shè)計(jì)成果,提交設(shè)計(jì)說(shuō)明書及答辯指導(dǎo)教師簽名:系主任(或責(zé)任教師)簽名:摘 要1ABSTRACT2.1 緒論12 QUARTUS II 的使用1.2.1新建工程12.2程序編

3、寫12.3仿真12.4硬件調(diào)試2.3 FIFO緩沖器原理3.3.1 FIFO緩沖器的結(jié)構(gòu) .3.3.2 FIFO的一些重要參數(shù) 3.3.3 FIFO 的分類4.3.4 FIFO緩沖器的應(yīng)用.5.3.5 FIFO緩沖器空/滿狀態(tài)的算法 5.4 FIFO緩沖器設(shè)計(jì)方案 6.4.1 方案一一一FIFO 定制6.4.1.1設(shè)計(jì)步驟6.4.1.2功能驗(yàn)證 7.4.2方案二一一8個(gè)字長(zhǎng)為9的變量構(gòu)成寄存器 94.2.1設(shè)計(jì)思想 9.4.2.2功能模塊9.4.2.3硬件調(diào)試1.Q4結(jié)束語(yǔ)11參考文獻(xiàn)12附錄1 1.3.附錄21.5.先進(jìn)先出(FIFO)緩沖器是雙端口數(shù)據(jù)存儲(chǔ)器,其存儲(chǔ)結(jié)構(gòu)與 RAM相同,僅存

4、儲(chǔ)方 式存在差異。本文詳細(xì)介紹了基于 FPGA開發(fā)環(huán)境Quartus II、用VHDL語(yǔ)言編程實(shí)現(xiàn)FIF 0緩沖器的方法和過(guò)程。利用FPGA的可編程性,擁有簡(jiǎn)潔而又多變的設(shè)計(jì)方法。本設(shè)計(jì) 實(shí)現(xiàn)了先進(jìn)先出緩存器的一些基本功能,也把一些新的思路加入到設(shè)計(jì)中,通過(guò)仿真和 實(shí)驗(yàn)箱實(shí)現(xiàn)了 FIFO緩沖器的數(shù)據(jù)讀寫功能、讀寫指針移動(dòng)和復(fù)位功能、緩沖器空、滿指 示標(biāo)志功能。本次課程設(shè)計(jì)中擬定了兩種設(shè)計(jì)方案,使FIFO緩沖器性能得以優(yōu)化,并且都進(jìn)行了仿真和FPGA實(shí)現(xiàn)。關(guān)鍵詞:FIFO緩沖器,F(xiàn)PGA, Quartus II,VHDL武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書AbstractFirst

5、 In First Out (FIFO) buffer is a dual-port data memory. It has the same storage structure with RAM, but differences in the storage pattern. This article describes the methods and processesof designing a FIFO buffer, which based on Quartus II - the FPGA development environment. The design is programm

6、ed by VHDL Ianguage. Via the simulation and experiment, such FIFO buffer functions is achived, as data reading and writing, moving and resetting the read and write pointer, signage feature of empty and full. In addition, in order to enhancing the fun cti on and improve the stori ng speed of FIFO, th

7、e desig ner developed three design options and have carried out simulation and implementation on FPGA chip, so that FIFO buffer s performanee can be optimized.Key words: FIFO buffer, FPGA, Quartus II, VHDL2武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書1緒論隨著電子工程和計(jì)算機(jī)科學(xué)(EECS)的迅猛發(fā)展,數(shù)字電路系統(tǒng)的發(fā)展也十分迅速。電 子器件在最近幾十年經(jīng)歷了從小規(guī)模集成電路到中、大規(guī)

8、模集成電路的發(fā)展歷程。從簡(jiǎn)單 的可編程器件到高密度可編程器件。設(shè)計(jì)方法也在從根本上轉(zhuǎn)變。由原來(lái)的手工設(shè)計(jì)發(fā)展 到現(xiàn)在的電子設(shè)計(jì)自動(dòng)化 EDA(Electronic Design Automation)技術(shù)。EDA技術(shù)就是依賴功 能強(qiáng)大的計(jì)算機(jī)。在EDA工具軟件平臺(tái)上.以硬件描述語(yǔ)言 VHDL(Very High Speed Integrated Circuit Hardware Description Language)為系統(tǒng)邏輯捕述手段。VHDL 是一種全方位 的硬件描述語(yǔ)言,包括系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門級(jí)多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、 數(shù)據(jù)流和行為3種描述形式的混合描述,因此VHDL幾乎

9、覆蓋了以往各種硬件描述語(yǔ)言的功 能,整個(gè)自頂向下或自底向上的電路設(shè)計(jì)過(guò)程都可以用VHDL來(lái)完成??删幊踢壿嬈骷?0世紀(jì)70年代以來(lái),經(jīng)歷了 PAL、GAL、CPLD、FPGA幾個(gè)發(fā)展 階段,其中CPLD、FPGA屬高密度可編程邏輯器件,目前集成度以高達(dá)200萬(wàn)門/片,它將掩膜ASIC集成度高的優(yōu)點(diǎn)和可編程邏輯器件設(shè)計(jì)生產(chǎn)方便的特點(diǎn)結(jié)合在一起,特別適 合于樣品研制和小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當(dāng)市場(chǎng)擴(kuò)大時(shí),它可以 和容易地轉(zhuǎn)由ASIC實(shí)現(xiàn),因此開發(fā)風(fēng)險(xiǎn)也大為降低。CPLD/FPGA器件已成為現(xiàn)代高層次 電子設(shè)計(jì)方法的實(shí)現(xiàn)載體。Quartus II 是Altera公司的綜合性PL

10、D開發(fā)軟件,支持原理圖、 VHDL、VerilogHDL以 及AHDL (Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合 器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形 界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組 環(huán)境下的設(shè)計(jì)要求,其中包括支持基于In ternet的協(xié)作設(shè)計(jì)。Qu

11、artus平臺(tái)與Cade nee Exe-mplarLogic、MentorGraphics、Synopsys和 Synplicity 等EDA供應(yīng)商的開發(fā)工具相兼容。改進(jìn) 了軟件的LogicLock模塊設(shè)計(jì)功能,增添 了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且 提升了調(diào)試能力。Altera在Quartus II 中包含了許多諸如 SignalTap II、Chip Editor和RTL V -iewer的設(shè)計(jì)輔助工具,集成了 SOPC和HardCopy設(shè)計(jì)流程,并且繼承了 Maxplus II友好的 圖形界面及簡(jiǎn)便的使用方法。1武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書2 Q

12、UARTUS II 的使用2.1新建工程雙擊桌面 QUARTUS II圖標(biāo)進(jìn)入主界面,單擊軟件主界面中File New ProjectWizard. 開始新建一個(gè)工工程,根據(jù)提示選擇存儲(chǔ)路徑,輸入工程名,軟件會(huì)默認(rèn)頂層實(shí) 體名與工程名相同并顯示。往下選擇芯片,在此時(shí)選擇Cyclone下的EP1C3T144C8,最后會(huì)顯示所有選擇結(jié)果,以供最后確認(rèn)。2.2程序編寫單擊File New.,在彈出的窗口中選擇新建 VHDL File,然后在其中編寫程序。一般 用三段式VHDL語(yǔ)言編寫程序代碼。 庫(kù)或程序包調(diào)用的說(shuō)明部分; 實(shí)體說(shuō)明部分; 結(jié)構(gòu)體描述模塊功能;編寫完成程序代碼后,將其以實(shí)體名保存,編譯

13、程序,若編譯成功則繼續(xù)向下進(jìn)行。將多個(gè)程序連起來(lái)成為創(chuàng)建頂層文件,可以由程序編寫或者用畫圖來(lái)實(shí)現(xiàn)。本課題最終用原理圖畫頂層文件,故還需要由VHDL File生成元件,以供畫圖使用。在主窗口左側(cè)Project Navigator下選擇Files,在Software Files下找到需要生成元件的 VHDL 文件,右鍵單擊選擇Create Symbol Files For Current File來(lái)生成元件。元件生成之后就可以 進(jìn)行原理圖繪制。方法是:?jiǎn)螕鬎ile New.,在彈出的窗口中選擇新建Block Diagram/Schematic Fileo左鍵雙擊原理圖,在彈出的Symbol窗口中選

14、擇元件,可以再軟件 自帶的元件庫(kù)中找常用元件,如果之前有通過(guò)VHDL File生成元件,還可以在窗口中的Project下找自己生成的元件。選定元件,0K后將其放置在原理圖上適當(dāng)?shù)奈恢?,選好所 有元件后,按照設(shè)計(jì)對(duì)元件進(jìn)行連線,最后再加上輸入輸出端口并更改端口名,保存原理 圖進(jìn)行編譯,若成功則進(jìn)入下一步,否則根據(jù)提示修改原理圖直到編譯成功。2.3仿真單擊File New.,在彈出的窗口中選擇新建 Vector Waveform File。左鍵雙擊圖左邊的 空白處,在彈出的Insert Node or Bus窗口下單擊 Node Finder,在彈出的窗口中單擊 List, 并將Nodes Fou

15、nd全部導(dǎo)到Selected Nodes單擊OK,仿真圖上會(huì)顯示所有的輸入輸出端 口。選定某一輸入端口,在左邊的工具條中選擇適當(dāng)?shù)膱D標(biāo)設(shè)置輸入波形。將所有的輸入 端口設(shè)置完畢后保存,單擊 Processing Simulator Tool Simulation Tool 設(shè)置為 Functional, 單擊 Gen erate Fun ctio nal Simulation Netlist。待其完成后選擇 Simulator Tool 窗口下方的的 Start,完成后,單擊Open,仿真結(jié)果會(huì)覆蓋在仿真圖上。根據(jù)波形檢查是否實(shí)現(xiàn)要達(dá)到的 功能。2.4硬件調(diào)試單擊主界面 Assignments

16、Device.在彈出的 Setting窗口下單擊 Device&Pin Option, 在彈出的窗口中設(shè)置不是用的管腳為高阻態(tài)。單擊Assignments Pins對(duì)應(yīng)實(shí)驗(yàn)箱上的管腳名進(jìn)行設(shè)置,設(shè)置完畢后進(jìn)行編譯,軟件會(huì)檢測(cè)管腳設(shè)置有無(wú)錯(cuò)誤。設(shè)置無(wú)誤單擊 Programmer,在實(shí)驗(yàn)箱與微機(jī)主機(jī)連接好并通電打開電源的前提下,即可以向?qū)嶒?yàn)箱中導(dǎo) 入程序,進(jìn)行硬件調(diào)試。2武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書3 FIFO緩沖器原理FIFO是英文First In First Out的縮寫,是一種先進(jìn)先出的數(shù)據(jù)緩存器,他與普通存儲(chǔ) 器的區(qū)別是沒(méi)有外部讀寫地址線,這樣使用起來(lái)非常簡(jiǎn)單

17、,但缺點(diǎn)就是只能順序?qū)懭霐?shù)據(jù), 順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線決定讀取或?qū)懭肽硞€(gè)指定的地址。3.1 FIFO緩沖器的結(jié)構(gòu)FIFO緩沖器一般由三部分構(gòu)成,分別為寫地址產(chǎn)生器、讀地址產(chǎn)生器、雙端寄存器。 各部分都有各自的時(shí)鐘信號(hào),有數(shù)據(jù)輸入輸出端口、讀寫操作控制信號(hào)、有緩沖空滿標(biāo)志 位。FIFO緩沖器一般結(jié)構(gòu)簡(jiǎn)圖如圖2-1所示。圖2-1 FIFO緩沖器一般結(jié)構(gòu)簡(jiǎn)圖3.2 FIFO的一些重要參數(shù)FIFO的寬度:也就是英文資料里??吹降?THE WIDTH,它指的是FIFO 次讀寫操 作的數(shù)據(jù)位,就像MCU有8位和16位,ARM 32位等等,F(xiàn)I

18、FO的寬度在單片成品IC中 是固定的,也有可選擇的,如果用FPGA自己實(shí)現(xiàn)一個(gè)FIFO,其數(shù)據(jù)位,也就是寬度是可 以自己定義的。FIFO的深度:THE DEEPTH,它指的是FIFO可以存儲(chǔ)多少個(gè)N位的數(shù)據(jù)(如果寬 度為N)。如一個(gè)8位的FIFO,若深度為8,它可以存儲(chǔ)8個(gè)8位的數(shù)據(jù),深度為12,就 可以存儲(chǔ)12個(gè)8位的數(shù)據(jù),F(xiàn)IFO的深度可大可小,個(gè)人認(rèn)為 FIFO深度的計(jì)算并無(wú)一個(gè) 固定的公式。在FIFO實(shí)際工作中,其數(shù)據(jù)的滿/空標(biāo)志可以控制數(shù)據(jù)的繼續(xù)寫入或讀出。 在一個(gè)具體的應(yīng)用中也不可能由一些參數(shù)算數(shù)精確的所需FIFO深度為多少,這在寫速度 大于讀速度的理想狀態(tài)下是可行的,但在實(shí)際中用

19、到的 FIFO深度往往要大于計(jì)算值。一 般來(lái)說(shuō)根據(jù)電路的具體情況,在兼顧系統(tǒng)性能和 FIFO成本的情況下估算一個(gè)大概的寬度 和深度就可以了。而對(duì)于寫速度慢于讀速度的應(yīng)用,F(xiàn)IFO的深度要根據(jù)讀出的數(shù)據(jù)結(jié)構(gòu)和 讀出數(shù)據(jù)的由那些具體的要求來(lái)確定。滿標(biāo)志:FIFO已滿或?qū)⒁獫M時(shí)由FIFO的狀態(tài)電路送出的一個(gè)信號(hào),以阻止 FIFO的 寫操作繼續(xù)向FIFO中寫數(shù)據(jù)而造成溢出(oveflow)。空標(biāo)志:FIFO已空或?qū)⒁諘r(shí)由FIFO的狀態(tài)電路送出的一個(gè)信號(hào),以阻止 FIFO的 讀操作繼續(xù)從FIFO中讀出數(shù)據(jù)而造成無(wú)效數(shù)據(jù)的讀出(underflow)。讀時(shí)鐘:讀操作所遵循的時(shí)鐘,在每個(gè)時(shí)鐘沿來(lái)臨時(shí)讀數(shù)據(jù)。

20、寫時(shí)鐘:寫操作所遵循的時(shí)鐘,在每個(gè)時(shí)鐘沿來(lái)臨時(shí)寫數(shù)據(jù)。讀指針:指向下一個(gè)讀出地址。讀完后自動(dòng)加 1。寫指針:指向下一個(gè)要寫入的地址的,寫完自動(dòng)加 1。讀寫指針其實(shí)就是讀寫的地址,只不過(guò)這個(gè)地址不能任意選擇,而是連續(xù)的。3.3 FIFO的分類根據(jù)FIFO工作的時(shí)鐘域,可以將 FIFO分為同步FIFO和異步FIFO。同步FIFO是 指讀時(shí)鐘和寫時(shí)鐘為同一個(gè)時(shí)鐘。在時(shí)鐘沿來(lái)臨時(shí)同時(shí)發(fā)生讀寫操作。異步FIFO是指讀寫時(shí)鐘不一致,讀寫時(shí)鐘是互相獨(dú)立的。異步 FIFO緩沖器結(jié)構(gòu)原理圖如圖2-2所示。鐘圖2-2異步FIFO緩沖器結(jié)構(gòu)原理圖3.4 FIFO緩沖器的應(yīng)用FIFO 一般用于不同時(shí)鐘域之間的數(shù)據(jù)傳輸

21、,比如FIFO的一端時(shí)AD數(shù)據(jù)采集,另一端時(shí)計(jì)算機(jī)的PCI總線,假設(shè)其AD采集的速率為16位100K SPS,那么每秒的數(shù)據(jù)量為 100K x 16bit=1.6Mbps,而PCI總線的速度為33MHz,總線寬度32bit,其最大傳輸速率為10 56Mbps,在兩個(gè)不同的時(shí)鐘域間就可以采用 FIFO來(lái)作為數(shù)據(jù)緩沖。另外對(duì)于不同寬度的數(shù) 據(jù)接口也可以用FIFO,例如單片機(jī)位8位數(shù)據(jù)輸出,而DSP可能是16位數(shù)據(jù)輸入,在單 片機(jī)與DSP連接時(shí)就可以使用FIFO來(lái)達(dá)到數(shù)據(jù)匹配的目的。3.5 FIFO緩沖器空/滿狀態(tài)的算法FIFO設(shè)計(jì)的難點(diǎn)在于怎樣判斷FIFO的空/滿狀態(tài)。為了保證數(shù)據(jù)正確的寫入或讀出

22、, 而不發(fā)生益處或讀空的狀態(tài)出現(xiàn),必須保證FIFO在滿的情況下,不能進(jìn)行寫操作。在空的狀態(tài)下不能進(jìn)行讀操作。怎樣判斷FIFO的滿/空就成了 FIFO設(shè)計(jì)的核心問(wèn)題。由于同步FIFO幾乎很少用到,這里只描述異步 FIFO的空/滿標(biāo)志產(chǎn)生問(wèn)題。構(gòu)造一個(gè)指針寬度為N+1,深度為2AN字節(jié)的FIFO (為方便比較將格雷碼指針轉(zhuǎn)換 為二進(jìn)制指針)。當(dāng)指針的二進(jìn)制碼中最高位不一致而其它N位都相等時(shí),F(xiàn)IFO為滿(在Clifford E. Cummings的文章中以格雷碼表示是前兩位均不相同,而后兩位LSB相同為滿,這與換成二進(jìn)制表示的 MSB不同其他相同為滿是一樣的)。當(dāng)指針完全相等時(shí),F(xiàn)IFO為 空。這

23、也許不容易看出,舉個(gè)例子說(shuō)明一下:一個(gè)深度為8字節(jié)的FIFO怎樣工作(使用已轉(zhuǎn)換為二進(jìn)制的指針)。FIFO_WIDTH=8,F(xiàn)IFO_DEPTH= 2AN = 8,N = 3,指針寬度為 N+1=4。起初rd_ptr_bin和wr_ptr_bin均為“ 0000”。此時(shí)FIFO中寫入8個(gè)字節(jié)的數(shù)據(jù)。 wr_ptr_bin =“1000”,rd_ptr_bin= “0000”。當(dāng)然,這就是滿條件?,F(xiàn)在,假設(shè)執(zhí)行了8次的讀操作,使得rd_ptr_bin = “ 1000”,這就是空條件。另外的8次寫操作將使wr_ptr_bin 等于“ 0000”,但rd_ptr_bin仍然等于“ 1000”,因此

24、FIFO為滿條件。顯然起始指針無(wú)需為“ 0000”。假設(shè)它為“ 0100”,并且FIFO為空,那么8個(gè)字節(jié) 會(huì)使 wr_ptr_bin = “ 1100”,rd_ptr_bin 仍然為“ 0100”。這又說(shuō)明 FIFO 為滿。4 FIFO緩沖器設(shè)計(jì)方案方案一充分利用Quartus II 軟件的強(qiáng)大集成環(huán)境,直接定制FIFO模塊,系統(tǒng)提供現(xiàn) 成的電路結(jié)構(gòu)圖、程序代碼、仿真波形等文件。只需用戶簡(jiǎn)單的調(diào)用和設(shè)置就可以完成, 非常方便快捷,而且準(zhǔn)確。方案二使用VHDL語(yǔ)言編寫程序?qū)崿F(xiàn)FIFO功能。從提高代碼有效率的角度出發(fā),用8個(gè)向量為9的變量存儲(chǔ)數(shù)據(jù),并將讀寫操作同內(nèi)部寄存器融合在一起編寫。整合模塊

25、,提 高利用率。4.1方案一一一FIFO定制4.1.1設(shè)計(jì)步驟直接Quartus II自帶的FIFO利用設(shè)計(jì)步驟如下:(1)打開 MegaWizard Plug-In Manager初始對(duì)話框。在 Tools菜單中選擇 MegaWizard Plug-In Manager,選擇Create a new custom 項(xiàng)(如果要修改一個(gè)已編輯好的 LPM模塊, 則選擇Edit an existing custom項(xiàng)),即定制一個(gè)新的模塊。單擊Next按鈕后在左欄選擇 Storage項(xiàng)下的FIFO,再選擇Cyclone器件和VHDL語(yǔ)言方式;最后輸入FIFO文件存放的 路徑和文件名:d:sin_g

26、ntdata_rom.vhd (定制的 ROM 元件文件名),單擊Next按鈕。(2) 輸出信號(hào)控制線。選擇 full、empty、usedw。(3) 單擊Next按鈕后繼續(xù)執(zhí)行以下設(shè)置。后面的設(shè)置基本都默認(rèn),直接單擊NEXT,直 至如下圖所示(中間過(guò)程為默認(rèn)設(shè)置)選中所有的文件,即可生成.vhd、.inc、.cmp、.bsf、. jpg等文件。至此,F(xiàn)IFO宏定制設(shè)計(jì)完成。下面檢測(cè)驗(yàn)證其功能。4.1.2功能驗(yàn)證打開工程中.jpg文件得到仿真波形圖。當(dāng)寫使能 write=1,read=0時(shí)的時(shí)候,遇到第一個(gè)脈沖上升沿就將輸入端口的 001送到內(nèi)部雙端寄存器里面,第二個(gè)脈沖時(shí)把002送進(jìn)去;之后

27、讀使能read=1,將第一個(gè)數(shù)001送到輸出端口; read=0,寫入第三個(gè)數(shù)003;再 次讀使能read=1,讀出第二個(gè)數(shù)001。當(dāng)aclr=1時(shí),地址清零。在寫入第一個(gè)數(shù)后,讀指 針加1等于寫指針,故判為空。其功能模塊如下:fifodata3. 0wnreq rdreqfulempty> clocki ? y ruse<tw2. 0)iaclr9 brts x & iw>rz =7武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書#武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書仿真波形圖:#武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書ci°ck

28、 _rLrL_rLrLrLrLrL_pLrLrLrLrL_wrreqrdreq dAts empty fullq usedw8武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書4.2方案二 8個(gè)字長(zhǎng)為9的變量構(gòu)成寄存器421設(shè)計(jì)思想在緩沖器內(nèi)部定義一個(gè)8 9的存儲(chǔ)空間用于暫存數(shù)據(jù)。初始狀態(tài)讀寫指針都指向0號(hào) 數(shù)寄存器(共8個(gè))。當(dāng)輸入通道打開時(shí),每來(lái)一個(gè)脈沖(由外部按鍵提供),向緩沖期內(nèi) 輸入一個(gè)9位的數(shù),與此同時(shí)內(nèi)部寄存器讀指針加1,準(zhǔn)備接受下一個(gè)需要暫存的數(shù),下一個(gè)脈沖到來(lái),再存一個(gè)數(shù),讀指針再加1當(dāng)輸出通道打開時(shí),每來(lái)一個(gè)脈沖輸出一個(gè)9位數(shù),寫指針加1,準(zhǔn)備輸出下一個(gè)9位數(shù),同理進(jìn)行下一

29、個(gè)數(shù)的輸出由于輸入/ 輸出數(shù)據(jù)是按需進(jìn)行的,故設(shè)計(jì)脈沖由按鍵提供,為更好的進(jìn)行控制,加一個(gè)消抖電路使 其每按一次內(nèi)部計(jì)數(shù)確定加1。4.2.2功能模塊本設(shè)計(jì)共由兩個(gè)部分組成:先入先出緩存器、分頻器。其中先入先出緩存器模塊包括寫操作、讀操作:寫操作:當(dāng)wrptclr為0時(shí),首先將寫地址 wrinc清零。當(dāng)wrptclr為1且寫使能write =1、讀使能無(wú)效ready=0時(shí),將data_in寫入寄存器。程度段如下:write_prog:process(wrptclr,clk)isbegi nif(wrptclr='0')the nwrinc<=(others=>'

30、;0'); wradd<=wrinc;elsif (clk'event and clk='1') thenif (write='1') thencase wrinc iswhe n"000" => q0<=data_i n;讀操作:與寫操作算法相同,只是讀指針為rdinc,讀指針清零控制變量rdptclrif (rdptclr='0') then rdinc<=(others=>'0');elsif (clk'event and clk='1'

31、;) thenif (ready='1') then-加入當(dāng)ready無(wú)效時(shí),輸出處于高阻態(tài)case rdinc iswhen "000" => data_out <= q0;else data_out<="ZZZZZZZZZ"分頻器原理如下:為了配合消抖電路,取延時(shí)為5ms即使得采樣頻率為5ms由此根據(jù)f=1/T,算得脈 沖頻率為200Hz,而實(shí)驗(yàn)箱上提供的是20M的時(shí)鐘頻率,故要對(duì)時(shí)鐘進(jìn)行分頻。程序中用 內(nèi)部計(jì)數(shù)器計(jì)算到來(lái)的脈沖數(shù),脈沖數(shù)小于50000時(shí)輸出為0,否則輸出為1,同時(shí)計(jì)到 100000時(shí)計(jì)數(shù)器清零整體原

32、理圖如下:11武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書#武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書4.2.3硬件調(diào)試選擇Assignments |進(jìn)行芯片設(shè)置卜叮;|飛設(shè)置好后進(jìn)行引腳設(shè)置,一切選擇好后將程序下載Device fwnily選擇F芯片選用入實(shí)驗(yàn)箱上,接通電源,用按鍵#武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書#武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書用發(fā)光二極管(即試驗(yàn)箱上的燈)來(lái)控制它的脈沖輸入,用撥碼開關(guān)來(lái)控制它的輸入序列,作為它的輸出,以觀察燈的的變化來(lái)觀察FIFO的輸出。先將輸入序列設(shè)置好將wrpclrrdpclr置1,將write置1

33、,此時(shí)燈的狀態(tài)與輸入序列相同,再將ready置1,改變輸入序列,再將ready置0,write置1,此時(shí)燈的狀態(tài)與改后輸入序列相同,從而達(dá)到緩沖 的狀態(tài)4結(jié)束語(yǔ)兩周時(shí)間轉(zhuǎn)眼就過(guò),電子線路 EDA課程設(shè)計(jì)也接近的尾聲。在此次課程設(shè)計(jì),我認(rèn) 為最重要的就是認(rèn)真的研究老師給的題目,先搞懂要做什么達(dá)到什么樣的效果,再進(jìn)行原 理分析寫出各個(gè)模塊程序這樣會(huì)事半功倍。在這兩周來(lái),也總結(jié)出了自己很多問(wèn)題,第一、不夠細(xì)心比如由于粗心大意敲錯(cuò)代碼, 由于對(duì)課本理論的不熟悉導(dǎo)致編程出現(xiàn)錯(cuò)誤。第二,思路不夠嚴(yán)謹(jǐn),我的第一大心得體會(huì) 就是作為一名工程技術(shù)人員,要求具備的首要素質(zhì)絕對(duì)應(yīng)該是嚴(yán)謹(jǐn)。第三,在做人上,我 認(rèn)識(shí)到

34、,無(wú)論做什么事情,只要你足夠堅(jiān)強(qiáng),有足夠的毅力與決心,有足夠的挑戰(zhàn)困難的 勇氣,就沒(méi)有什么辦不到的。在這次難得的課程設(shè)計(jì)過(guò)程中我鍛煉了自己的思考能力和動(dòng) 手能力。同時(shí)自己查閱資料獲取對(duì)自己有用的信息的能力有所提高感謝學(xué)校給我們這次機(jī)會(huì),鍛煉了我們的動(dòng)手能力。通過(guò)這次課設(shè)讓我明白了理論和 實(shí)際操作之間差距,而且也讓我很明確得意識(shí)到自己在EDA有很多的不足,以后應(yīng)該多鉆研一下。同時(shí)也感謝指導(dǎo)老師在設(shè)計(jì)過(guò)程中的輔導(dǎo)以及同學(xué)的幫助。再次感謝老師的輔導(dǎo)以及同學(xué)的幫助,是他們讓我有了一個(gè)更好的認(rèn)識(shí),無(wú)論是學(xué)習(xí) 還是生活,生活是實(shí)在的,要踏實(shí)走路。課程設(shè)計(jì)時(shí)間雖然很短,但我學(xué)習(xí)了很多的東西, 使我眼界打開,

35、感受頗深。12武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書參考文獻(xiàn)1 潘松黃繼業(yè),EDA技術(shù)與VHDL(第二版).北京:清華大學(xué)出版社,2007.012 黃仁欣,EDA技術(shù)實(shí)用教程北京:清華大學(xué)出版社,2006.093 汪國(guó)強(qiáng),EDAJ術(shù)與應(yīng)用.北京:電子工業(yè)出版社,2007.044 宋嘉玉,孫麗霞.EDA實(shí)用技術(shù)北京:人民郵電出版社,2006. 齊洪喜,陸穎.VHDL電路設(shè)計(jì)實(shí)用技術(shù)北京:清華大學(xué)出版社,2004.13武漢理工大學(xué)EDA(電子設(shè)計(jì)自動(dòng)化)課程設(shè)計(jì)說(shuō)明書附錄1LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_m

36、f;USE altera_mf.all;ENTITY FIFO ISPORT(aclr : IN STD_LOGIC ;clock:INSTD_LOGIC;data : IN STD_LOGIC_VECTOR (8 DOWNTO 0); rdreq:INSTD_LOGIC;wrreq:INSTD_LOGIC;empty:OUT STD_LOGIC;full : OUT STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (8 DOWNTO 0);usedw: OUT STD_LOGIC_VECTOR (2 DOWNTO 0);END FIFO;ARCHITECTURESYN

37、OF fifo ISSIGNAL sub_wireOSIGNAL sub_wire1SIGNAL sub_wire2SIGNAL sub_wire3 COMPONENT scfifoSTD_LOGIC_VECTOR STD_LOGIC ;STD_LOGIC_VECTORSTD_LOGIC ;(2 DOWNTO 0)(8 DOWNTO 0)GENERIC (add_ram_output_register: STRING;in te nded_device_family: STRING;lpm_numwords: NATURAL;lpm_showahead: STRING;lpm_type : S

38、TRING;lpm_width: NATURAL;lpm_widthu: NATURAL;overflow_checking: STRING;un derflow_checki ng: STRING;use_eab : STRING);PORT (usedw : OUT STD_LOGIC_VECTOR (2 DOWNTO 0); rdreq: IN STD_LOGIC ;empty: OUT STD_LOGIC ;aclr : IN STD_LOGIC ; clock: IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (8 DOWNTO 0); wrreq: I

39、N STD_LOGIC ;data : IN STD_LOGIC_VECTOR (8 DOWNTO 0); full : OUT STD_LOGIC);END COMPONENT;BEGINusedw<= sub_wire0(2 DOWNTO 0);empty<= sub_wire1;q <= sub_wire2(8 DOWNTO 0);full <= sub_wire3;scfifo_component : scfifoGENERIC MAP ( add_ram_output_register => "ON", intended_device

40、_family => "Cyclone", lpm_ nu mwords => 8, lpm_showahead => "OFF", lpm_type => "scfifo", lpm_width => 9, lpm_widthu => 3, overflow_checking => "ON", underflow_checking => "ON", use_eab => "ON")PORT MAP ( rdreq =&g

41、t; rdreq, aclr => aclr, clock => clock, wrreq => wrreq, data => data, usedw => sub_wire0, empty => sub_wire1, q => sub_wire2, full => sub_wire3);END SYN;附錄2FIFIO的程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;use ieee.stdo gic_arith.all;en tity

42、 FIFO is port(ready,write : in std_logic;data_in : in stdo gic_vector(8 dow nto 0);clk : in std_logic; rdptclr,wrptclr : in std_logic;data_out : out stdo gic_vector(8 dow nto 0); end FIFO;architecture bhv of FIFO issig nal rdin c,wri nc : in teger range 0 to 7;sig nal rom0,rom1,rom2,rom3,rom4,rom5,rom6,rom7 : std_logic_vector(8 dow nto 0);sig nal r_w : stdo gic_vector(1 dow nto 0);beg inprocess(clk,data_i n,ready,write,rdptclr,wrptc lr)beg inr_w<=read y& write;if(risi ng_edge(clk)then case r_w iswhe n "00"|"11" => data_out<="ZZZZZZZZZ"whe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論