




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于 FPGA的現(xiàn)代電子實(shí)驗(yàn)設(shè)計(jì)報(bào)告數(shù)字式秒表設(shè)計(jì)(VHDL)學(xué)院: 物理電子學(xué)院專業(yè): 學(xué) 號(hào): 學(xué)生姓名:指導(dǎo)教師: 劉曦實(shí)驗(yàn)地點(diǎn): 科研樓303實(shí)驗(yàn)時(shí)間:摘 要:通過(guò)使用VHDL語(yǔ)言開發(fā)FPGA的一般流程,重點(diǎn)介紹了秒表的基本原理和相應(yīng)的設(shè)計(jì)方案,最終采用了一種基于 FPGA 的數(shù)字頻率的實(shí)現(xiàn)方法。該 設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開發(fā)平臺(tái)ISE上完成。該設(shè)計(jì)的秒表能準(zhǔn)確地完成啟動(dòng),停止,分段,復(fù)位功能。使用 ModelSim 仿真軟件對(duì)VHDL 程序做了仿真,并完成了綜合布局布線,最終下載到EEC-FPGA實(shí)驗(yàn)板上取得良好測(cè)試效果。關(guān)鍵詞:FPGA,VHDL,ISE,ModelS
2、im 目錄緒論.4 第一章 實(shí)驗(yàn)任務(wù).5第二章 系統(tǒng)需求和解決方案計(jì)劃.5第三章 設(shè)計(jì)思路.6第四章 系統(tǒng)組成和解決方案.6第五章 各分模塊原理8第六章 仿真結(jié)果與分析.11第七章 分配引腳和下載實(shí)現(xiàn)13第八章 實(shí)驗(yàn)結(jié)論.14緒論:1.1 課程介紹:現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)課程通過(guò)引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計(jì)的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計(jì)等綜合型設(shè)計(jì)型實(shí)驗(yàn),對(duì)學(xué)生進(jìn)行電子系統(tǒng)綜合設(shè)計(jì)與實(shí)踐能力的訓(xùn)練與培養(yǎng)。通過(guò)現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)課程的學(xué)習(xí),使學(xué)生對(duì)系統(tǒng)設(shè)計(jì)原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計(jì)方法及仿真技術(shù)、測(cè)試方案擬定及調(diào)測(cè)技術(shù)有所了解;使學(xué)生初步掌握電
3、子技術(shù)中應(yīng)用開發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來(lái)從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。本文介紹了基于FPGA的數(shù)字式秒表的設(shè)計(jì)方法,設(shè)計(jì)采用硬件描述語(yǔ)言VHDL ,在軟件開發(fā)平臺(tái)ISE上完成,可以在較高速時(shí)鐘頻率(48MHz)下正常工作。該數(shù)字頻率計(jì)采用測(cè)頻的方法,能準(zhǔn)確的測(cè)量頻率在10Hz到100MHz之間的信號(hào)。使用ModelSim仿真軟件對(duì)VHDL程序做了仿真,并完成了綜合布局布線,最終下載到芯片Spartan3A上取得良好測(cè)試效果。1.2 VHDL語(yǔ)言簡(jiǎn)介:VHDL 的英文全名是 Very-High-Speed Integrated Circuit
4、 Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)
5、計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。VHDL語(yǔ)言的特點(diǎn):VHDL 語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。歸納起來(lái),VHDL 語(yǔ)言主要具有以下優(yōu)點(diǎn):(1) VHDL 語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方式多樣(2) VHDL 語(yǔ)言具有強(qiáng)大的硬件描述能力(3) VHDL 語(yǔ)言具有很強(qiáng)的移植能力(4) VHDL 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān)(5) VHDL 語(yǔ)言程序易于共享和復(fù)用由于 VHDL 語(yǔ)言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語(yǔ)言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開發(fā)
6、周期。1.3 FPGA簡(jiǎn)介FPGA(FieldProgrammable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。以硬件描述語(yǔ)言(Verilog或VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來(lái)實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。
7、在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。FPGA一般來(lái)說(shuō)比ASIC(專用集成電路)的速度要慢,實(shí)現(xiàn)同樣的功能比ASIC電路面積要大。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在
8、普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類似于ASIC的芯片上。另外一種方法是用CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)。 FPGA設(shè)計(jì)流程: 對(duì)于目標(biāo)文件為FPGA的HDL設(shè)計(jì),其一般流程如下:1、 文本編輯 用任何文本編輯器都可以進(jìn)行,通常 VHDL文件保存為 vhd 文件,Verilog 文件保存為 v文件。2、使用編譯工具編譯源文件 HDL 的編譯器有很多,ACTIVE 公司,MODELSIM 公司,SYNPLICITY 公司,SYNOPSYS 公司,VERIBEST公司等都有自己的編譯器。3、邏輯綜合 將源文件調(diào)入邏輯綜合
9、軟件進(jìn)行綜合。綜合的目的是在于將設(shè)計(jì)的源文件 由語(yǔ)言轉(zhuǎn)換為實(shí)際的電路。但是此時(shí)還沒(méi)有在芯片中形成真正的電路。這一步 的最終目的是生成門電路級(jí)的網(wǎng)表(Netlist)。 4、布局、布線 將第 3 步生成的網(wǎng)表文件調(diào)入 PLD 廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì) 好的邏輯安放到 CPLDFPGA 內(nèi)。這一步的目的是生成用于下載(編程 Programming)的編程文件。在這一步,將用到第 3 步生成的網(wǎng)表,并根據(jù) CPLD FPGA 廠商的器件容量,結(jié)構(gòu)等進(jìn)行布局、布線。這就好像在設(shè)計(jì) PCB 時(shí)的 布局布線一樣。先將各個(gè)設(shè)計(jì)中的門根據(jù)網(wǎng)表的內(nèi)容和器件的結(jié)構(gòu)放在器件的 特定部位。然后,在根據(jù)網(wǎng)表中
10、提供的各門的連接,把各個(gè)門的輸入輸出連接 起來(lái)。最后,生成一個(gè)供編程的文件。這一步同時(shí)還會(huì)加一些時(shí)序信息(Timing) 到你的設(shè)計(jì)項(xiàng)目中去,以便于你做后仿真。 5、后仿真 利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫布 局布線仿真或時(shí)序仿真)。這一步主要是為了確定你的設(shè)計(jì)在經(jīng)過(guò)布局布線之 后,是不是還滿足你的設(shè)計(jì)要求。 6、編程,下載 如果前幾步都沒(méi)有發(fā)生錯(cuò)誤,并且符合設(shè)計(jì)要求,這一步就可以將由適配 器等產(chǎn)生的配置或下載文件通過(guò)編程器或下載電纜下載到目標(biāo)芯片中。 7、硬件測(cè)試 硬件測(cè)試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn) HDL設(shè)計(jì)的運(yùn)行情況,特別 是對(duì)于 HDL 程序設(shè)計(jì)上
11、不是十分規(guī)范,語(yǔ)義上含有一定歧義的程序。一、實(shí)驗(yàn)任務(wù)設(shè)計(jì)一個(gè)秒表:秒表的計(jì)時(shí)范圍為0000”00 5959”99。有兩個(gè)按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:1,在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計(jì)時(shí)。2,在秒表正常運(yùn)行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計(jì)時(shí)。3,再次按下該鍵,秒表繼續(xù)計(jì)時(shí)。4,在秒表正常運(yùn)行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時(shí)的時(shí)間,但秒表仍然在計(jì)時(shí);5,再次按下該鍵,秒表恢復(fù)正常顯示。6,在秒表暫停計(jì)時(shí)的情況下,按下“Split/Reset”鍵
12、,秒表復(fù)位歸零。二、系統(tǒng)需求和解決方案計(jì)劃:在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。按照秒表的設(shè)計(jì)要求,整個(gè)電路需要下面這些組成部分:2.1 分頻器:對(duì)晶體振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。2.2 計(jì)數(shù)器:對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。2.3 數(shù)據(jù)鎖存器:鎖存數(shù)據(jù)使顯示保持暫停。2.4 控制器:控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位產(chǎn)生鎖存器的使能信號(hào)。2.5 掃描顯示的控制電路:包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果。2.6 按鍵消抖電路:消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。三、設(shè)計(jì)思路:從FPGA開發(fā)板的
13、電路可以看出,其不具備對(duì)按鍵輸入的消抖功能,故須編寫消抖功能的模塊代碼。消除按鍵抖動(dòng)的影響;每按一次鍵,只輸出一個(gè)脈沖,其寬度為一個(gè)時(shí)鐘周期。由開發(fā)板電路結(jié)構(gòu)可以看出,其為共陽(yáng)結(jié)構(gòu),故在其運(yùn)行為低有效。8個(gè)數(shù)碼顯示管共用一個(gè)段位,故為了將時(shí)鐘顯示在8個(gè)數(shù)碼管上,需要一定頻率(本秒表為1KHz)的信號(hào)進(jìn)行掃描,使得我們?nèi)庋劭瓷先ナ?個(gè)數(shù)碼管同時(shí)顯示的。為了實(shí)現(xiàn)秒表暫停和復(fù)位的功能,需要鎖存器模塊將時(shí)鐘數(shù)據(jù)鎖存起來(lái),并且結(jié)合控制電路滿足秒表的功能。FPGA開發(fā)板的晶振頻率為48MHz,而實(shí)際電路需要的頻率為1KHz,故須建立分頻模塊,將48MHz的晶振頻率分頻成1KHz。在構(gòu)建計(jì)數(shù)范圍從0000”
14、00-5959”99的秒表時(shí),從數(shù)碼管顯示的角度可知,需要建立模六和模十兩種計(jì)數(shù)模塊進(jìn)行組合形成。設(shè)計(jì)圖如下:四、系統(tǒng)組成和解決方案:在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。按照數(shù)字式秒表工作原理的描述,需要下面這些主要的子系統(tǒng):1,控制電路;2,由石英振蕩器和數(shù)字分頻器構(gòu)成的時(shí)基信號(hào)發(fā)生器;3,按鍵開關(guān)(按鍵消抖); 4,計(jì)數(shù)器;5,數(shù)據(jù)鎖存器;6,掃描顯示的控制子系統(tǒng)(包括顯示譯碼和掃描控制);7,六個(gè)數(shù)碼管(LED顯示電路)。設(shè)計(jì)框圖如下:五、各分模塊原理:5.1、48M-1K分頻器 對(duì)晶振振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。由于FPGA開發(fā)板的
15、晶振頻率為48MHz,故在設(shè)計(jì)分頻器模塊時(shí),為了將頻率分頻成1KHz,即將輸入的信號(hào)源每48000個(gè)周期轉(zhuǎn)換成輸出的一個(gè)周期。因此利用上升沿計(jì)數(shù)手段,將0-47999用16位二進(jìn)制數(shù)表示,而在從0-47999的計(jì)數(shù)過(guò)程中,該二進(jìn)制數(shù)的最高位只有一次狀態(tài)變化,故可取對(duì)應(yīng)二進(jìn)制數(shù)的最高位來(lái)輸出達(dá)到分頻到1KHz的目的。如下代碼為將晶振振蕩器48MHz頻率分頻成1KHz信號(hào):5.2、計(jì)數(shù)器對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì)需要模6和模10計(jì)數(shù)器進(jìn)行組合??紤]到秒表的暫停和清零等功能,在設(shè)計(jì)計(jì)數(shù)器模塊時(shí),必須有時(shí)鐘輸入端、使能以及清零端。在有時(shí)鐘信號(hào)輸入的情況下,當(dāng)使能端無(wú)效時(shí),
16、計(jì)數(shù)器不能進(jìn)行計(jì)數(shù);當(dāng)清零端有效時(shí),計(jì)數(shù)重新歸為0值。而為了實(shí)現(xiàn)計(jì)數(shù)的目的,故必須將各個(gè)計(jì)數(shù)器級(jí)聯(lián)來(lái)實(shí)現(xiàn)從0000”00-5959”99的計(jì)數(shù),使得級(jí)聯(lián)的各技術(shù)模塊有共同的清零端與使能端,因此該單個(gè)模塊需要有輸出進(jìn)位以及該時(shí)刻的計(jì)數(shù)值并且前一級(jí)的進(jìn)位端連在下一級(jí)的使能端上。如下為模6和模10計(jì)數(shù)器代碼:5.2.1、模6計(jì)數(shù)器為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-5的計(jì)數(shù)部分,故須設(shè)計(jì)一個(gè)模6計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到5時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從5變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。5.2.2、模10計(jì)數(shù)器為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-9的計(jì)數(shù)
17、部分,故須設(shè)計(jì)一個(gè)模10計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到9時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從9變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。5.3、控制電路控制計(jì)數(shù)器的運(yùn)行、暫停以及復(fù)位;產(chǎn)生鎖存器的使能信號(hào)。從如下狀態(tài)圖可知,在設(shè)計(jì)控制模塊時(shí),為實(shí)現(xiàn)開發(fā)板上控制秒表的運(yùn)行暫停和清零功能,必須設(shè)置兩個(gè)控制輸入端,以及需要時(shí)鐘信號(hào)輸入端。在時(shí)鐘信號(hào)輸入情況下,由狀態(tài)圖顯示,在輸入不同的控制信號(hào)是,控制模塊需輸出信號(hào)控制計(jì)數(shù)器及其他各模塊的清零和使能端,即當(dāng)外部控制運(yùn)行/暫停鍵首次按下時(shí),控制模塊輸出控制技術(shù)模塊最開始的計(jì)數(shù)器模塊使能有效,各模塊清零
18、無(wú)效;當(dāng)?shù)诙伟聪聲r(shí)為暫停信號(hào),控制模塊控制鎖存器鎖存并控制顯示。當(dāng)清零控制鍵按下時(shí),控制模塊控制技術(shù)模塊清零,故要兩個(gè)輸出使能端。5.4、鎖存器鎖存數(shù)據(jù),使顯示保持鎖定。為達(dá)到鎖存數(shù)據(jù)目的,則必須要有對(duì)應(yīng)的8個(gè)數(shù)碼顯示數(shù)據(jù)輸入,當(dāng)其中兩個(gè)數(shù)碼數(shù)據(jù)為不變的,故只需輸入6組由4位二進(jìn)制碼構(gòu)成的數(shù)據(jù)、1KHz時(shí)鐘信號(hào)以及控制模塊作用的使能端。當(dāng)使能端有效的情況下,將輸入6組數(shù)據(jù)輸出。5.5、消抖電路消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。在手動(dòng)控制按鍵輸入控制信號(hào)前,由于人為因素,會(huì)導(dǎo)致輸入信號(hào)不穩(wěn)定等問(wèn)題,故須添加一個(gè)消抖模塊,使得每次按鍵只會(huì)產(chǎn)生一個(gè)脈沖。故除1KHz時(shí)鐘信號(hào)輸入外,還需要一個(gè)
19、按鍵控制信號(hào)輸入端以及一個(gè)按鍵消抖后輸出信號(hào)。5.6、譯碼器包括掃描計(jì)數(shù)器、3-8譯碼器、數(shù)據(jù)選擇器以及7段譯碼器;控制8個(gè)數(shù)碼管一掃描方式顯示計(jì)時(shí)結(jié)果。譯碼模塊的功能是對(duì)之前計(jì)數(shù)模塊的計(jì)數(shù)值進(jìn)行譯碼,使其可以在數(shù)碼管上顯示出來(lái)。在8個(gè)數(shù)碼管中有兩個(gè)數(shù)碼管顯示是不變的,故不需要輸出,所以譯碼模塊要求輸入需要譯碼的6組數(shù)據(jù)以及1KHz時(shí)鐘信號(hào)。譯碼模塊除了要求對(duì)每一個(gè)可能的值(0-9)進(jìn)行譯碼外,還有設(shè)計(jì)要求8個(gè)數(shù)碼管顯示共用一個(gè)段位,故還需設(shè)計(jì)一個(gè)3-8譯碼模塊對(duì)8個(gè)數(shù)碼顯示管進(jìn)行選擇,使其輪流顯示,在1KHz的掃描下,使人看上去是8個(gè)數(shù)碼管同時(shí)顯示的。l5.7、計(jì)數(shù)器模塊由模6和模10計(jì)數(shù)器
20、級(jí)聯(lián)而成。為了實(shí)現(xiàn)從0000”00-5959”99的計(jì)數(shù),需要將4個(gè)模10計(jì)數(shù)模塊和2個(gè)模6計(jì)數(shù)模塊級(jí)聯(lián),并且為了達(dá)到設(shè)計(jì)要求是這6個(gè)計(jì)數(shù)器工作在100Hz的時(shí)鐘信號(hào)下,可利用一個(gè)模10的計(jì)數(shù)模塊對(duì)1KHz進(jìn)行分頻,輸出的信號(hào)頻率即為100Hz,該總計(jì)數(shù)模塊最終需輸出6組計(jì)數(shù)數(shù)據(jù)以及其最終的進(jìn)位。5.8、top文件由以上各個(gè)文件相互連接而成,以及硬件的管腳管腳分布。將之前所建立的各個(gè)模塊級(jí)聯(lián)起來(lái),從按鍵輸入信號(hào)到按鍵消抖模塊再進(jìn)而連接到控制器,通過(guò)控制模塊對(duì)總計(jì)數(shù)器模塊、鎖存器模塊、譯碼器模塊、分頻器模塊相互連接起來(lái),并設(shè)置晶振輸入信號(hào)以及兩個(gè)按鍵控制信號(hào)輸入,再由譯碼器模塊知,秒表設(shè)計(jì)的最終
21、輸出由一個(gè)3-8對(duì)應(yīng)的8位位選信號(hào)和一組7位的段選信號(hào)組成。最后對(duì)總文件的輸出進(jìn)行管腳分配,并下載到FPGA開發(fā)板上驗(yàn)證設(shè)計(jì)。六、仿真結(jié)果與分析:6.1 1000HZ信號(hào)的產(chǎn)生6.2 10位計(jì)數(shù)器的產(chǎn)生由圖可得,10位計(jì)數(shù)器從0000計(jì)到10016.3 6位計(jì)數(shù)器的產(chǎn)生由圖可得,6位計(jì)數(shù)器從0000計(jì)到0101。6.4七段數(shù)碼管顯示數(shù)字6.5鎖存器由圖可得,當(dāng)沒(méi)有時(shí)鐘信號(hào)時(shí)Q不變。6.6 分頻器 1000Hz-100Hz七、分配引腳和下載實(shí)現(xiàn):全部仿真通過(guò)后,就運(yùn)行ISE 的設(shè)計(jì)實(shí)現(xiàn),然后再打開XILINX PACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對(duì)應(yīng)連接。
22、比如七段LED 管的控制信號(hào)就連接到實(shí)際電路的七個(gè)引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時(shí)基信號(hào)即石英振蕩器所提供的信號(hào)就只能由P181輸入。同時(shí)還要考慮內(nèi)部的可配制邏輯塊CLB 的數(shù)量是否夠滿足程序的綜合要求。一切都準(zhǔn)備就緒后就可以運(yùn)行Configure Device,選擇要下載的位文件(.bit)便可開始。八、實(shí)驗(yàn)結(jié)論:8.1、本次實(shí)驗(yàn)實(shí)現(xiàn)了秒表的計(jì)數(shù),復(fù)位,暫停,鎖顯等功能,讓我充分了解和認(rèn)識(shí)到ISE 和Modelsim 軟件的強(qiáng)大功能和FPGA 技術(shù)的優(yōu)越性。并對(duì)軟件開發(fā)產(chǎn)生了興趣。8.2、仿真和下載實(shí)現(xiàn)是兩個(gè)不同的檢驗(yàn),仿真從軟件內(nèi)部來(lái)檢驗(yàn)程序的合理性和正確性,準(zhǔn)確
23、性較高。而下載實(shí)現(xiàn)是從外部來(lái)觀察程序的實(shí)現(xiàn)效果,更直觀,但不具有準(zhǔn)確性。8.3、有時(shí)候下載實(shí)現(xiàn)了所有的功能,但是仿真通不過(guò),這可能是因?yàn)槌绦蛑杏行┎糠植⒉煌晟茖?dǎo)致。從外部來(lái)看,效果是一樣的,但實(shí)際程序卻存在漏洞。附:參考文獻(xiàn):數(shù)字設(shè)計(jì)原理與實(shí)踐 作者:(美)John F.Wakerly編FPGA應(yīng)用開發(fā)入門與典型實(shí)例 華清遠(yuǎn)見嵌入式培訓(xùn)中心編附件:(源程序)1.TOP文件:library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity top is Port ( S_S : in STD_LOGIC; S_R : in STD_LOGIC; clk : in S
24、TD_LOGIC; Out8: out STD_LOGIC_VECTOR(7 downto 0); Seg : out STD_LOGIC_VECTOR (6 downto 0) );end top;architecture Behavioral of top isCOMPONENT fenpingqi_48m_1kPORT(clk : IN std_logic; q : OUT std_logic);END COMPONENT;COMPONENT counterPORT(clk : IN std_logic;eng : IN std_logic;clear : IN std_logic; o
25、u : OUT std_logic;daout1 : OUT std_logic_vector(3 downto 0);daout2 : OUT std_logic_vector(3 downto 0);daout3 : OUT std_logic_vector(3 downto 0);daout4 : OUT std_logic_vector(2 downto 0);daout5 : OUT std_logic_vector(3 downto 0);daout6 : OUT std_logic_vector(2 downto 0);END COMPONENT;COMPONENT keydbP
26、ORT(clk : IN std_logic;key_in : IN std_logic; key_out : OUT std_logic);END COMPONENT;COMPONENT controlPORT(clk : IN std_logic;q : IN std_logic;p : IN std_logic; j_clr : OUT std_logic;j_en : OUT std_logic;s_en : OUT std_logic);END COMPONENT;COMPONENT latchPORT(cnt_0 : IN std_logic_vector(3 downto 0);
27、cnt_00 : IN std_logic_vector(3 downto 0);cnt_1 : IN std_logic_vector(3 downto 0);cnt_11 : IN std_logic_vector(2 downto 0);cnt_2 : IN std_logic_vector(3 downto 0);cnt_22 : IN std_logic_vector(2 downto 0);display_in : IN std_logic; cnt0 : OUT std_logic_vector(3 downto 0);cnt00 : OUT std_logic_vector(3
28、 downto 0);cnt1 : OUT std_logic_vector(3 downto 0);cnt11 : OUT std_logic_vector(2 downto 0);cnt2 : OUT std_logic_vector(3 downto 0);cnt22 : OUT std_logic_vector(2 downto 0);END COMPONENT;COMPONENT displayPORT(clk_1k : IN std_logic;cnt0 : IN std_logic_vector(3 downto 0);cnt00 : IN std_logic_vector(3
29、downto 0);cnt1 : IN std_logic_vector(3 downto 0);cnt11 : IN std_logic_vector(2 downto 0);cnt2 : IN std_logic_vector(3 downto 0);cnt22 : IN std_logic_vector(2 downto 0); output: out STD_LOGIC_VECTOR(7 downto 0);seg : OUT std_logic_vector(7 downto 1);END COMPONENT;signal clk_1k,clk_100:std_logic;signa
30、l S_S_out,S_R_out:std_logic;signal clr_A,ena_A,lock_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;signal dao1,dao2,dao3,dao5,daoA,daoB,daoC,daoE:std_logic_vector(3 downto 0);signal dao4,dao6,daoD,daoF:std_logic_vector(2 downto 0);signal Dig:std_logic_vector(2 downto 0);beginIn
31、st_fenpingqi_48000: fenpingqi_48m_1k PORT MAP(clk => clk,q => clk_1k);Inst_counter: counter PORT MAP(clk =>clk_1k ,eng =>ena_A ,clear =>clr_A ,daout1 =>dao1 ,daout2 => dao2,daout3 => dao3,daout4 => dao4,daout5 => dao5,daout6 => dao6);Inst_keydb1: keydb PORT MAP(clk =
32、>clk_1k ,key_in => S_S,key_out =>S_S_out );Inst_keydb2: keydb PORT MAP(clk =>clk_1k ,key_in => S_R,key_out =>S_R_out );Inst_control: control PORT MAP(clk =>clk_1k ,q =>S_S_out ,p =>S_R_out ,j_clr =>clr_A ,j_en =>ena_A ,s_en =>lock_A );Inst_latch: latch PORT MAP(cn
33、t_0 => dao1,cnt_00 => dao2,cnt_1 => dao3,cnt_11 => dao4,cnt_2 => dao5,cnt_22 => dao6,display_in =>lock_A ,cnt0 =>daoA,cnt00 => daoB,cnt1 => daoC,cnt11 => daoD,cnt2 => daoE,cnt22 =>daoF );Inst_display: display PORT MAP(clk_1k => clk_1k,cnt0 =>daoA ,cnt00 =
34、> daoB,cnt1 => daoC,cnt11 => daoD,cnt2 => daoE,cnt22 => daoF,output => Out8,seg => Seg);end Behavioral;2.模10計(jì)算器:entity counter10 is Port ( clr : in STD_LOGIC; clk : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; daout : out STD_LOGIC_VECTOR (3 downto 0);end counter10;archi
35、tecture Behavioral of counter10 issignal count:std_logic_vector(3 downto 0);beginprocess(clk,clr,count)beginif clr='1' thencount<="0000"co<='0'elsif(clk='1' and clk'event) thenif en='1' thenif count="1001" thencount<="0000"el
36、secount<=count+1;end if;end if;end if;if count="1001"and en='1' thenco<='1'elseco<='0'end if;daout<=count;end process;end Behavioral;3.模6計(jì)算器:entity counter6 is Port ( clr : in STD_LOGIC; clk : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; daout :
37、out STD_LOGIC_VECTOR (2 downto 0);end counter6;architecture Behavioral of counter6 issignal count:std_logic_vector(2 downto 0);beginprocess(clk,clr,count)beginif clr='1' thencount<="000" co<='0'elsif(clk='1' and clk'event) thenif en='1' thenif coun
38、t="101" thencount<="000"elsecount<=count+1;end if;end if;end if;if count="101"and en='1' thenco<='1'elseco<='0'end if;daout<=count;end process;end Behavioral;4.計(jì)算器級(jí)聯(lián):entity counter is Port ( clk : in STD_LOGIC; eng : in STD_LOGIC;
39、clear : in STD_LOGIC; ou : out STD_LOGIC; daout1 : out STD_LOGIC_VECTOR (3 downto 0); daout2 : out STD_LOGIC_VECTOR (3 downto 0); daout3 : out STD_LOGIC_VECTOR (3 downto 0); daout4 : out STD_LOGIC_VECTOR (2 downto 0); daout5 : out STD_LOGIC_VECTOR (3 downto 0); daout6 : out STD_LOGIC_VECTOR (2 downt
40、o 0);end counter;architecture Behavioral of counter isCOMPONENT fenpingqi_1k_100PORT(clk : IN std_logic; q : OUT std_logic);END COMPONENT;COMPONENT counter10PORT(clr : IN std_logic;clk : IN std_logic;en : IN std_logic; co : OUT std_logic;daout : OUT std_logic_vector(3 downto 0);END COMPONENT;COMPONE
41、NT counter6PORT(clr : IN std_logic;clk : IN std_logic;en : IN std_logic; co : OUT std_logic;daout : OUT std_logic_vector(2 downto 0);END COMPONENT;signal clk_100:std_logic;signal clr_A,ena_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;beginInst_fenpingqi_10: fenpingqi_1k_100 P
42、ORT MAP(clk =>clk,q => clk_100);Inst_counter10_1: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => eng,co => co_out1,daout => daout1);Inst_counter10_2: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out1,co => co_out2,daout => daout2);Inst_counter10_3
43、: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out2,co => co_out3,daout => daout3);Inst_counter6_1: counter6 PORT MAP(clr =>clear ,clk =>clk_100,en =>co_out3,co =>co_out4 ,daout => daout4);Inst_counter10_4: counter10 PORT MAP(clr => clear,clk =>clk_100
44、,en => co_out4,co => co_out5,daout => daout5);Inst_counter6_2: counter6 PORT MAP(clr =>clear,clk =>clk_100,en =>co_out5,co =>ou,daout => daout6);end Behavioral;5.控制電路:entity control is Port ( clk : in STD_LOGIC; q : in STD_LOGIC; p : in STD_LOGIC; j_clr : out STD_LOGIC; j_en
45、: out STD_LOGIC; s_en : out STD_LOGIC);end control;architecture Behavioral of control issignal state:std_logic_vector(1 downto 0):="00"signal next_state:std_logic_vector(1 downto 0);signal key:std_logic_vector(1 downto 0);beginkey<=q&p;process(state,key)begincase state iswhen"0
46、0"=>if key="10" thennext_state<="01"elsenext_state<=state;end if;when"01"=>case key iswhen"10"=>next_state<="11"when"01"=>next_state<="10"when others=>next_state<=state;end case;when"10"
47、;=>if key="01" thennext_state<="01"elsenext_state<=state;end if;when others=>case key iswhen"10"=>next_state<="01"when"01"=>next_state<="00"when others=>next_state<=state;end case;end case;end process;process(c
48、lk)beginif rising_edge(clk) thenstate<=next_state;end if;end process;process(state)begincase state iswhen"00"=>j_clr<='1'j_en<='1's_en<='1'when"01"=>j_clr<='0'j_en<='1's_en<='1'when"10"=>j_clr
49、<='0'j_en<='1's_en<='0'when others=>j_clr<='0'j_en<='0's_en<='1'end case;end process;end Behavioral;6.分頻器(2個(gè)):entity fenpingqi_48m_1k is Port ( clk : in STD_LOGIC; q : out STD_LOGIC);end fenpingqi_48m_1k;architecture Behavioral of
50、fenpingqi_48m_1k issignal counter:STD_LOGIC_VECTOR (15 downto 0);beginprocess(clk)beginif(clk='1'and clk'event)thenif counter=47999 thencounter<=(others=>'0');else counter<=counter+1;end if;end if;q<= counter(15);end process;end Behavioral;entity fenpingqi_1k_100 is P
51、ort ( clk : in STD_LOGIC; q : out STD_LOGIC);end fenpingqi_1k_100;architecture Behavioral of fenpingqi_1k_100 issignal counter:STD_LOGIC_vector(3 downto 0);beginprocess(clk)beginif(clk='1'and clk'event)thenif counter=9 thencounter<="0000"else counter<=counter+1;end if;end
52、 if;q<=counter(3);end process;end Behavioral;7.顯示電路:entity display is Port ( clk_1k : in STD_LOGIC; cnt0 : in STD_LOGIC_VECTOR (3 downto 0); cnt00 : in STD_LOGIC_VECTOR (3 downto 0); cnt1 : in STD_LOGIC_VECTOR (3 downto 0); cnt11 : in STD_LOGIC_VECTOR (2 downto 0); cnt2 : in STD_LOGIC_VECTOR (3 d
53、ownto 0); cnt22 : in STD_LOGIC_VECTOR (2 downto 0); output: out STD_LOGIC_VECTOR(7 downto 0); seg : out STD_LOGIC_VECTOR (7 downto 1);end display;architecture Behavioral of display issignal dig:std_logic_vector(2 downto 0):="000"signal bcd:std_logic_vector(3 downto 0):="1000"sign
54、al seg7:std_logic_vector(7 downto 1):="1111110"beginprocess(clk_1k)beginif clk_1k'event and clk_1k='1' thendig<=dig+1;end if;end process;process(dig)begincase dig iswhen"000"=>bcd<=cnt0;when"001"=>bcd<=cnt00;when"010"=>bcd<=&qu
55、ot;1010"when"011"=>bcd<=cnt1;when"100"=>bcd<='0'& cnt11;when"101"=>bcd<="1010"when"110"=>bcd<=cnt2;when"111"=>bcd<='0'&cnt22;when others=>bcd<="1010"end case;end pro
56、cess;process(bcd)begincase bcd iswhen"0000"=>seg7<="0000001"when"0001"=>seg7<="1001111"when"0010"=>seg7<="0010010"when"0011"=>seg7<="0000110"when"0100"=>seg7<="1001100"when"0101"=>seg7<="0100100"when"0110"=>seg7<="1100000"when"0111"=>seg7<="0001111"when"
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京2024年12月國(guó)家藥品監(jiān)督管理局高級(jí)研修學(xué)院招考1名編制外人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 4.1中國(guó)的機(jī)遇與挑戰(zhàn)課件- -2024-2025學(xué)年統(tǒng)編版道德與法治九年級(jí)下冊(cè)
- 中國(guó)海油2025屆校園招聘統(tǒng)一考試筆試參考題庫(kù)附帶答案詳解
- 3.1《中國(guó)擔(dān)當(dāng)》教學(xué)設(shè)計(jì)- 2024-2025學(xué)年統(tǒng)編版道德與法治九年級(jí)下冊(cè)
- 安徽省淮南市潘集區(qū)屆2025屆數(shù)學(xué)三下期末調(diào)研模擬試題含解析
- 合肥科技職業(yè)學(xué)院《生物化學(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省揚(yáng)州市2025屆三下數(shù)學(xué)期末經(jīng)典模擬試題含解析
- 山東理工職業(yè)學(xué)院《技術(shù)軟件應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西科技大學(xué)《無(wú)形資產(chǎn)評(píng)估》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省呂梁地區(qū)方山縣2024-2025學(xué)年小升初數(shù)學(xué)綜合練習(xí)卷含解析
- 2023年高三新高考英語(yǔ)復(fù)習(xí)備考策略及方法指導(dǎo)(深度課件)
- 數(shù)字信號(hào)處理(課件)
- 社會(huì)主義核心價(jià)值觀-團(tuán)課課件
- 城市社會(huì)學(xué)(2015)課件
- 年產(chǎn)2萬(wàn)噸馬來(lái)酸二乙酯技改建設(shè)項(xiàng)目環(huán)評(píng)報(bào)告書
- 中國(guó)古代文論教程完整版課件
- 中班美工區(qū)角活動(dòng)教案10篇
- SJG 103-2021 無(wú)障礙設(shè)計(jì)標(biāo)準(zhǔn)-高清現(xiàn)行
- 皇冠假日酒店智能化系統(tǒng)安裝工程施工合同范本
- 路面工程重點(diǎn)、關(guān)鍵、和難點(diǎn)工程的施工方案(技術(shù)標(biāo))
- 合肥市城市大腦·數(shù)字底座白皮書2020
評(píng)論
0/150
提交評(píng)論