現(xiàn)代電子實(shí)驗(yàn)報(bào)告電子科技大學(xué)_第1頁(yè)
現(xiàn)代電子實(shí)驗(yàn)報(bào)告電子科技大學(xué)_第2頁(yè)
現(xiàn)代電子實(shí)驗(yàn)報(bào)告電子科技大學(xué)_第3頁(yè)
現(xiàn)代電子實(shí)驗(yàn)報(bào)告電子科技大學(xué)_第4頁(yè)
現(xiàn)代電子實(shí)驗(yàn)報(bào)告電子科技大學(xué)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

1、基于 FPGA的現(xiàn)代電子實(shí)驗(yàn)設(shè)計(jì)報(bào)告數(shù)字式秒表設(shè)計(jì)(VHDL)學(xué)院: 物理電子學(xué)院專(zhuān)業(yè): 學(xué) 號(hào): 學(xué)生姓名:指導(dǎo)教師: 劉曦實(shí)驗(yàn)地點(diǎn): 科研樓303實(shí)驗(yàn)時(shí)間:摘 要:通過(guò)使用VHDL語(yǔ)言開(kāi)發(fā)FPGA的一般流程,重點(diǎn)介紹了秒表的基本原理和相應(yīng)的設(shè)計(jì)方案,最終采用了一種基于 FPGA 的數(shù)字頻率的實(shí)現(xiàn)方法。該 設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開(kāi)發(fā)平臺(tái)ISE上完成。該設(shè)計(jì)的秒表能準(zhǔn)確地完成啟動(dòng),停止,分段,復(fù)位功能。使用 ModelSim 仿真軟件對(duì)VHDL 程序做了仿真,并完成了綜合布局布線(xiàn),最終下載到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)用開(kāi)發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來(lái)從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。本文介紹了基于FPGA的數(shù)字式秒表的設(shè)計(jì)方法,設(shè)計(jì)采用硬件描述語(yǔ)言VHDL ,在軟件開(kāi)發(fā)平臺(tái)ISE上完成,可以在較高速時(shí)鐘頻率(48MHz)下正常工作。該數(shù)字頻率計(jì)采用測(cè)頻的方法,能準(zhǔn)確的測(cè)量頻率在10Hz到100MHz之間的信號(hào)。使用ModelSim仿真軟件對(duì)VHDL程序做了仿真,并完成了綜合布局布線(xiàn),最終下載到芯片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)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可視部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kā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)化和布線(xiàn)的標(biāo)準(zhǔn)硬件描述語(yǔ)言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開(kāi)發(fā)

6、周期。1.3 FPGA簡(jiǎn)介FPGA(FieldProgrammable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mé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)一些基本的邏輯門(mé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è)出廠(chǎng)后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。FPGA一般來(lái)說(shuō)比ASIC(專(zhuān)用集成電路)的速度要慢,實(shí)現(xiàn)同樣的功能比ASIC電路面積要大。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠(chǎng)商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開(kāi)發(fā)是在

8、普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類(lèi)似于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)有在芯片中形成真正的電路。這一步 的最終目的是生成門(mén)電路級(jí)的網(wǎng)表(Netlist)。 4、布局、布線(xiàn) 將第 3 步生成的網(wǎng)表文件調(diào)入 PLD 廠(chǎng)家提供的軟件中進(jìn)行布線(xiàn),即把設(shè)計(jì) 好的邏輯安放到 CPLDFPGA 內(nèi)。這一步的目的是生成用于下載(編程 Programming)的編程文件。在這一步,將用到第 3 步生成的網(wǎng)表,并根據(jù) CPLD FPGA 廠(chǎng)商的器件容量,結(jié)構(gòu)等進(jìn)行布局、布線(xiàn)。這就好像在設(shè)計(jì) PCB 時(shí)的 布局布線(xiàn)一樣。先將各個(gè)設(shè)計(jì)中的門(mén)根據(jù)網(wǎng)表的內(nèi)容和器件的結(jié)構(gòu)放在器件的 特定部位。然后,在根據(jù)網(wǎng)表中

10、提供的各門(mén)的連接,把各個(gè)門(mén)的輸入輸出連接 起來(lái)。最后,生成一個(gè)供編程的文件。這一步同時(shí)還會(huì)加一些時(shí)序信息(Timing) 到你的設(shè)計(jì)項(xiàng)目中去,以便于你做后仿真。 5、后仿真 利用在布局布線(xiàn)中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫布 局布線(xiàn)仿真或時(shí)序仿真)。這一步主要是為了確定你的設(shè)計(jì)在經(jīng)過(guò)布局布線(xiàn)之 后,是不是還滿(mǎn)足你的設(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è)按鈕開(kāi)關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:1,在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開(kāi)始計(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)目開(kāi)始設(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ù)碼管以?huà)呙璺绞斤@示計(jì)時(shí)結(jié)果。2.6 按鍵消抖電路:消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。三、設(shè)計(jì)思路:從FPGA開(kāi)發(fā)板的

13、電路可以看出,其不具備對(duì)按鍵輸入的消抖功能,故須編寫(xiě)消抖功能的模塊代碼。消除按鍵抖動(dòng)的影響;每按一次鍵,只輸出一個(gè)脈沖,其寬度為一個(gè)時(shí)鐘周期。由開(kāi)發(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é)合控制電路滿(mǎn)足秒表的功能。FPGA開(kāi)發(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)目開(kāi)始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。按照數(shù)字式秒表工作原理的描述,需要下面這些主要的子系統(tǒng):1,控制電路;2,由石英振蕩器和數(shù)字分頻器構(gòu)成的時(shí)基信號(hào)發(fā)生器;3,按鍵開(kāi)關(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開(kāi)發(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īng)顟B(tài)圖可知,在設(shè)計(jì)控制模塊時(shí),為實(shí)現(xiàn)開(kāi)發(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ù)模塊最開(kāi)始的計(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開(kāi)發(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),然后再打開(kāi)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ù)量是否夠滿(mǎn)足程序的綜合要求。一切都準(zhǔn)備就緒后就可以運(yùn)行Configure Device,選擇要下載的位文件(.bit)便可開(kāi)始。八、實(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ì)軟件開(kāi)發(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)觀(guān)察程序的實(shí)現(xiàn)效果,更直觀(guā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)用開(kāi)發(fā)入門(mén)與典型實(shí)例 華清遠(yuǎn)見(jià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 =clk_1k ,key_in = S_S,key_out =S_S_out );Inst

32、_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(cnt_0 = dao1,cnt_00 = dao2,cnt_1 = dao3,cnt_11 = dao4,cnt_2 = dao5,cnt_22 = dao6,display_in =l

33、ock_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 = 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;

34、clk : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; daout : out STD_LOGIC_VECTOR (3 downto 0);end counter10;architecture 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 clkevent) thenif en=1 theni

35、f count=1001 thencount=0000;elsecount=count+1;end if;end if;end if;if count=1001and 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 : out STD_LOGIC_VECTOR (2 do

36、wnto 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 clkevent) thenif en=1 thenif count=101 thencount=000;elsecount=count+1;end if;end if;end if;if count=101and en=1 thenco=1;

37、elseco=0;end if;daoutclk,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: counter10 PORT MAP(clr = clear,clk =cl

38、k_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 ,en = co_out4,co = co_out5,daout = daout5);Inst_counter6_2: counter6 PORT MAP(clr =clear

39、,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 : out STD_LOGIC; s_en : out STD_LOGIC);end control;architecture Behavioral of control issignal state:std_logic_vector(1

40、downto 0):=00;signal next_state:std_logic_vector(1 downto 0);signal key:std_logic_vector(1 downto 0);beginkeyif key=10 thennext_state=01;elsenext_statecase key iswhen10=next_statenext_statenext_stateif key=01 thennext_state=01;elsenext_statecase key iswhen10=next_statenext_statenext_state=state;end

41、case;end case;end process;process(clk)beginif rising_edge(clk) thenstatej_clr=1;j_en=1;s_enj_clr=0;j_en=1;s_enj_clr=0;j_en=1;s_enj_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;architect

42、ure Behavioral of fenpingqi_48m_1k issignal counter:STD_LOGIC_VECTOR (15 downto 0);beginprocess(clk)beginif(clk=1and clkevent)thenif counter=47999 thencounter0);else counter=counter+1;end if;end if;q= counter(15);end process;end Behavioral;entity fenpingqi_1k_100 is Port ( clk : in STD_LOGIC; q : ou

43、t STD_LOGIC);end fenpingqi_1k_100;architecture Behavioral of fenpingqi_1k_100 issignal counter:STD_LOGIC_vector(3 downto 0);beginprocess(clk)beginif(clk=1and clkevent)thenif counter=9 thencounter=0000;else counter=counter+1;end if;end if;q=counter(3);end process;end Behavioral;7.顯示電路:entity display

44、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 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 display;architecture Behavioral of display

溫馨提示

  • 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)論