數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第1頁
數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第2頁
數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第3頁
數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第4頁
數(shù)字秒表的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 電 子 科 技 大 學(xué)數(shù)字秒表課程設(shè)計(jì)姓 名: xxx學(xué) 號(hào): 學(xué) 院: 指導(dǎo)老師:xx摘要EDA技術(shù)作為電子工程領(lǐng)域的一門新技術(shù),極大的提高了電子系統(tǒng)設(shè)計(jì)的效率和可靠性。文中介紹了一種基于FPGA在ISE10.1軟件下利用VHDL語言結(jié)合硬件電路來實(shí)現(xiàn)數(shù)字秒表的功能的設(shè)計(jì)方法。采用VHDL硬件描述語言, 運(yùn)用ModelSim等EDA仿真工具。該設(shè)計(jì)具有外圍電路少、集成度高、可靠性強(qiáng)等優(yōu)點(diǎn)。 通過數(shù)碼管驅(qū)動(dòng)電路動(dòng)態(tài)顯示計(jì)時(shí)結(jié)果。給出部分模塊的VHDL源程序和仿真結(jié)果,仿真結(jié)果表明該設(shè)計(jì)方案的正確,展示了VHDL語言的強(qiáng)大功能和優(yōu)秀特性。關(guān)鍵詞:FPGA, VHDL, EDA, 數(shù)字秒表目錄第

2、一章 引言4第二章 設(shè)計(jì)背景52.1 方案設(shè)計(jì)52.2 系統(tǒng)總體框圖52.3 -FPGA實(shí)驗(yàn)板52.4 系統(tǒng)功能要求62.5 開發(fā)軟件62.5.1 ISE10.1簡介62.5.2 ModelSim簡介62.6 VHDL語言簡介7第三章 模塊設(shè)計(jì)83.1 分頻器83.2 計(jì)數(shù)器83.3 數(shù)據(jù)鎖存器93.4 控制器93.5 掃描控制電路103.6 按鍵消抖電路11第四章 總體設(shè)計(jì)12第五章 結(jié)論13附錄14第一章 引言數(shù)字集成電路作為當(dāng)今信息時(shí)代的基石,不僅在信息處理、工業(yè)控制等生產(chǎn)領(lǐng)域得到普及應(yīng)用,并且在人們的日常生活中也是隨處可見, 極大的改變了人們的生活方式。面對(duì)如此巨大的市場, 要求數(shù)字集

3、成電路的設(shè)計(jì)周期盡可能短、 實(shí)驗(yàn)成本盡可能低, 最好能在實(shí)驗(yàn)室直接驗(yàn)證設(shè)計(jì)的準(zhǔn)確性和可行性, 因而出現(xiàn)了現(xiàn)場可編程邏輯門陣列FPGA。 對(duì)于芯片設(shè)計(jì)而言, FPGA的易用性不僅使得設(shè)計(jì)更加簡單、快捷, 并且節(jié)省了反復(fù)流片驗(yàn)證的巨額成本。 對(duì)于某些小批量應(yīng)用的場合, 甚至可以直接利用FPGA實(shí)現(xiàn), 無需再去訂制專門的數(shù)字芯片。文中著重介紹了一種基于FPGA利用VHDL硬件描述語言的數(shù)字秒表設(shè)計(jì)方法, 在設(shè)計(jì)過程中使用基于VHDL的EDA工具M(jìn)odelSim對(duì)各個(gè)模塊仿真驗(yàn)證, 并給出了完整的源程序和仿真結(jié)果。第二章 設(shè)計(jì)背景2.1 方案設(shè)計(jì)本次試驗(yàn)采用如下方案:由基本數(shù)字邏輯單元進(jìn)行設(shè)計(jì),它由振

4、蕩器產(chǎn)生一定頻率的方波脈沖,該信號(hào)的頻率為48MHz,之后由分頻器對(duì)方波脈沖進(jìn)行分頻,分別得到實(shí)驗(yàn)所需的1KHz和100Hz兩種頻率,以達(dá)到設(shè)計(jì)電路所需的頻率脈沖,100Hz脈沖作為時(shí)鐘信號(hào)驅(qū)動(dòng)計(jì)數(shù)器進(jìn)行計(jì)數(shù),1KHz作為掃描頻率,產(chǎn)生計(jì)數(shù)信號(hào),最后由一個(gè)3-8譯碼器譯碼并在數(shù)碼管上顯示。本次試驗(yàn)不需要搭建硬件電路,是基于FPGA的數(shù)字秒表設(shè)計(jì)方法。 采用VHDL硬件描述語言進(jìn)行軟件設(shè)計(jì),最后將程序下載到電路板上運(yùn)行。2.2 系統(tǒng)總體框圖本實(shí)驗(yàn)所設(shè)計(jì)的數(shù)字秒表主要有分頻器計(jì)數(shù)器、數(shù)據(jù)鎖存器、控制器、掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,顯示電路、按鍵消抖電路組成。系統(tǒng)框圖如下圖所示。圖 1-12

5、.3 -FPGA實(shí)驗(yàn)板我們將在EEC-FPGA實(shí)驗(yàn)板上完成秒表的設(shè)計(jì)實(shí)現(xiàn),實(shí)驗(yàn)板原理如圖1-3所示。 圖 1-22.4 系統(tǒng)功能要求秒表的計(jì)時(shí)范圍為0000”00 5959”99。有兩個(gè)按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計(jì)時(shí)。在秒表正常運(yùn)行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計(jì)時(shí);再次按下該鍵,秒表繼續(xù)計(jì)時(shí)。在秒表正常運(yùn)行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時(shí)的時(shí)間,但秒表仍然在計(jì)時(shí);再次按下該鍵,秒表恢復(fù)正常顯示。在秒表暫停計(jì)時(shí)

6、的情況下,按下“Split/Reset”鍵,秒表復(fù)位歸零。2.5 開發(fā)軟件本次試驗(yàn)所用的EDA軟件包括ISE10.1和仿真采用的ModelSim。2.5.1 ISE10.1簡介ISE的主要功能包括設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)和下載,涵蓋了可編程邏輯器件開發(fā)的全過程,從功能上講,完成CPLD/FPGA的設(shè)計(jì)流程無需借助任何第三方EDA軟件。ISE涵蓋的功能有設(shè)計(jì)輸入、綜合、仿真、實(shí)現(xiàn)以及下載。設(shè)計(jì)輸入:ISE提供的設(shè)計(jì)輸入工具包括用于HDL代碼輸入和查看報(bào)告的ISE文本編輯器(The ISE Text Editor),用于原理圖編輯的工具ECS(The Engineering Capture Sy

7、stem),用于生成IP Core的Core Generator,用于狀態(tài)機(jī)設(shè)計(jì)的StateCAD以及用于約束文件編輯的Constraint Editor等。綜合:ISE的綜合工具不但包含了Xilinx自身提供的綜合工具XST,同時(shí)還可以內(nèi)嵌Mentor Graphics公司的Leonardo Spectrum和Synplicity公司的Synplify,實(shí)現(xiàn)無縫鏈接。 仿真:ISE本身自帶了一個(gè)具有圖形化波形編輯功能的仿真工具HDL Bencher,同時(shí)又提供了使用Model Tech公司的Modelsim進(jìn)行仿真的接口。 實(shí)現(xiàn):此功能包括了翻譯、映射、布局布線等,還具備時(shí)序分析、管腳指定以

8、及增量設(shè)計(jì)等高級(jí)功能。 下載:包括BitGen,用于將布局布線后的設(shè)計(jì)文件轉(zhuǎn)換為位流文件,還包括了IMPACT,功能是進(jìn)行芯片配置和通信,控制將程序燒寫到FPGA芯片中去。2.5.2 ModelSim簡介ModelSim是Mentor公司的產(chǎn)品。在業(yè)界,它被認(rèn)為是最優(yōu)秀的HDL語言仿真軟件。它提供友好的仿真環(huán)境,是支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無關(guān),便于保護(hù)IP核。其個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段,是FPGA/ASIC設(shè)計(jì)的首選仿真軟件。2.6 VHDL語言

9、簡介VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,誕生于1982年。VHDL翻譯成中文就是超高速集成電路硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部和內(nèi)部,即設(shè)計(jì)實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)

10、實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)?,F(xiàn)在,VHDL和VERILOG作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。第三章 模塊設(shè)計(jì)3.1 分頻器對(duì)晶體振蕩器產(chǎn)生的48MHz時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生100Hz的時(shí)間基準(zhǔn)信號(hào)。本實(shí)驗(yàn)先將晶體震蕩的頻率分頻得到10KHz的信號(hào),再從10KHz信號(hào)得到1KHzde掃描頻率,最后再產(chǎn)生計(jì)數(shù)的基準(zhǔn)頻率。該模塊的源代碼詳見附錄1,圖2-1為由ISE得到的設(shè)計(jì)綜合圖,圖2-2為由ModelSim所得到的仿真圖。圖 2-1 圖 2-2由圖2-2的分頻器仿真圖可以發(fā)現(xiàn),本程

11、序依次得到了10KHz、1KHz、100Hz三種不同的頻率.3.2 計(jì)數(shù)器對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。需要從0.01s開始計(jì)數(shù),因此需要一個(gè)100Hz的時(shí)鐘產(chǎn)生計(jì)數(shù)脈沖。完成電子秒表的功能一共需要4個(gè)模10計(jì)數(shù)器和2個(gè)模6計(jì)數(shù)器。下面以以模6計(jì)數(shù)器為例,其VHDL源程序詳見附錄2。圖2-3為由ISE得到的設(shè)計(jì)綜合圖,圖2-4為由ModelSim所得到的仿真圖。 圖2-3 圖2-4由圖2-4可以發(fā)現(xiàn),當(dāng)計(jì)數(shù)器從0計(jì)數(shù)到5的時(shí)候,又從0開始,實(shí)現(xiàn)了模6計(jì)數(shù)的功能。3.3 數(shù)據(jù)鎖存器鎖存數(shù)據(jù)使顯示保持暫停。鎖存器該模塊部分VHDL源程序詳見附錄3,圖2-5為由ModelSim所得到的仿真圖

12、。 圖2-5由圖2-5可以發(fā)現(xiàn),當(dāng)鎖存使能為1時(shí),鎖存器的輸入和輸出一致,接著使鎖存使能變?yōu)?,給不同的輸入信號(hào),鎖存輸出保持上一次的值不變,即是在鎖存使能有效時(shí)將當(dāng)前輸入送給輸出。3.4 控制器控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位。產(chǎn)生鎖存器的使能信號(hào),計(jì)數(shù)使能信號(hào)以及計(jì)數(shù)清零信號(hào),其狀態(tài)圖如圖2-6 圖2由圖2-6可知,系統(tǒng)要求控制器有三個(gè)輸出,分別是計(jì)數(shù)清零、計(jì)數(shù)使能和正常顯示(鎖存使能),輸入為時(shí)鐘和兩個(gè)按鍵信號(hào)。其狀態(tài)轉(zhuǎn)換關(guān)系如表一,其VHDL源程序詳見附錄4。圖2-7為由ISE得到的設(shè)計(jì)綜合圖,圖2-8為由ModelSim所得到的仿真圖。信號(hào)狀態(tài)start/stopsplit/reset

13、11100001S0(111)S0S1S0S0S1(011)S1S3S1S2S2(010)S2S1S2S2S3(001)S3S1S3S0 表一 狀態(tài)轉(zhuǎn)換關(guān)系 圖2-7 圖2-8由圖2-8可以發(fā)現(xiàn),當(dāng)start_stop為1,split_reset為0時(shí),在時(shí)鐘上升沿到來的時(shí)候輸出狀態(tài)由”011”變?yōu)椤?01”,接著當(dāng)start_stop為0,split_reset為1時(shí),在時(shí)鐘上升沿到來的時(shí)候輸出狀態(tài)由”001”變?yōu)椤?11”,接著當(dāng)start_stop為0,split_reset為0時(shí),在時(shí)鐘上升沿到來的時(shí)候輸出狀態(tài)保持”111”??梢苑治龅贸?,該控制電路的狀態(tài)變化符合要求。3.5 掃描控制

14、電路包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果,該模塊部分VHDL源程序詳見附錄5。圖2-9為實(shí)驗(yàn)板上的顯示電路以及掃描控制及顯示譯碼的電路框圖。 圖2-93.6 按鍵消抖電路因?yàn)橐话闱闆r下按鍵在按下和松開的瞬間會(huì)出現(xiàn)抖動(dòng)的現(xiàn)象,因此按鍵消抖電路的作用是消除按鍵抖動(dòng)的影響以及保證每按一次鍵 只輸出一個(gè)脈沖,其寬度為一個(gè)時(shí)鐘周期。該模塊部分VHDL源程序詳見附錄6。圖2-10是由ISE得到的設(shè)計(jì)綜合圖。 圖2-10第四章 總體設(shè)計(jì)各部分模塊完成后,需要將各個(gè)模塊組合起來完成數(shù)字秒表的整體結(jié)構(gòu)。圖3-1為秒表系統(tǒng)的 RTL Schematic 圖3-1由圖3-1可

15、知,秒表系統(tǒng)的輸入只有三個(gè),分別是晶體震蕩的時(shí)鐘信號(hào),兩個(gè)按鍵start/stop和splite/reset,系統(tǒng)的輸出為段選信號(hào)和片選信號(hào)。片選信號(hào)來自掃描時(shí)種下的計(jì)數(shù)器輸出通過3-8譯碼器得到,從而來控制數(shù)碼管輪流顯示,由于掃描頻率使用的是1KHz的時(shí)鐘,因此人眼不能分辨,故而顯示效果為8個(gè)數(shù)碼管同時(shí)亮,段選信號(hào)來自計(jì)數(shù)器輸出,還有一個(gè)OP_EN信號(hào)是由計(jì)數(shù)器產(chǎn)生的進(jìn)為輸出,在該系統(tǒng)中無用,故設(shè)置為open。設(shè)計(jì)輸入完成后,進(jìn)行整體的編譯和邏輯仿真,然后進(jìn)行轉(zhuǎn)換、延時(shí)仿真生成配置文件,最后下載至FPGA器件,完成結(jié)果功能配置,實(shí)現(xiàn)其硬件功能。第五章 結(jié)論 該系統(tǒng)運(yùn)用先進(jìn)的EDA軟件和VHD

16、L,并借助FPGA實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì),充分體現(xiàn)了現(xiàn)代數(shù)字電路設(shè)計(jì)系統(tǒng)芯片化,芯片化設(shè)計(jì)的思想突破了傳統(tǒng)電子系統(tǒng)的設(shè)計(jì)模式,使系統(tǒng)開發(fā)速度快、成本低、系統(tǒng)性能大幅度地提升。本文所介紹數(shù)字秒表設(shè)計(jì)方法, 采用了當(dāng)下最流行的EDA設(shè)計(jì)手段。并借助FPGA實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì),充分體現(xiàn)了現(xiàn)代數(shù)字電路設(shè)計(jì)系統(tǒng)芯片化,芯片化設(shè)計(jì)的思想突破了傳統(tǒng)電子系統(tǒng)的設(shè)計(jì)模式,使系統(tǒng)開發(fā)速度快、成本低、系統(tǒng)性能大幅度地提升。通過實(shí)驗(yàn)驗(yàn)證,本文設(shè)計(jì)的數(shù)字秒表計(jì)時(shí)準(zhǔn)確、 性能穩(wěn)定, 可以很容易嵌入其他復(fù)雜的數(shù)字系統(tǒng),充當(dāng)計(jì)時(shí)模塊。利用EDA設(shè)計(jì)工具,結(jié)合基于FPGA的可編程實(shí)驗(yàn)板, 輕松實(shí)現(xiàn)電子芯片的設(shè)計(jì), 現(xiàn)場觀察實(shí)驗(yàn)結(jié)果

17、,大大縮短了產(chǎn)品的設(shè)計(jì)周期和調(diào)試周期,提高了設(shè)計(jì)的可靠性和成功率, 體現(xiàn)了邏輯器件在數(shù)字設(shè)計(jì)中優(yōu)越性。參考文獻(xiàn)1 基于FPGA的數(shù)字秒表的設(shè)計(jì)_楊遠(yuǎn)成2 一種基于FPGA的數(shù)字秒表設(shè)計(jì)方法_王永維3 電子技術(shù)綜合實(shí)驗(yàn)資料-秒表4 電子技術(shù)綜合實(shí)驗(yàn)資料-ISE開發(fā)流程5 電子技術(shù)綜合實(shí)驗(yàn)資料-modelsim仿真流程附錄1 分頻器VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following

18、library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity div_fre_1khz_new is Port ( clk : in STD_LOGIC; out_10k:out STD_LOGIC; out_1k : out STD_LOGIC; out_100Hz: out STD_LOGIC);end div_fre_1khz_new;architecture Behavioral of div_fre_

19、1khz_new is signal count_10k_next:std_logic_vector(11 downto 0):=(others=>'0'); signal count_10k_curr:std_logic_vector(11 downto 0):=(others=>'0'); signal count_1k_next:std_logic_vector(3 downto 0):=(others=>'0'); signal count_1k_curr:std_logic_vector(3 downto 0):=(o

20、thers=>'0'); signal count_100hz_next:std_logic_vector(3 downto 0):=(others=>'0'); signal count_100hz_curr:std_logic_vector(3 downto 0):=(others=>'0');begin-分頻得到10KHz的時(shí)鐘-P1:process(count_10k_curr) isbeginif count_10k_curr = 4799 thencount_10k_next <= (others=>&#

21、39;0');elsecount_10k_next <= count_10k_curr + 1;end if;end process;fre10k:process(clk) isbeginif rising_edge(clk) and clk='1' thencount_10k_curr <= count_10k_next;end if;end process;out_10k<=count_10k_curr(11);-out_10k <=out10k;-利用的到的10KHz分頻得到1KHz的時(shí)鐘-P2:process(count_1k_curr)

22、 isbeginif count_1k_curr=9 thencount_1k_next<=(others=>'0');elsecount_1k_next<=count_1k_curr+1;end if;end process;fre1k:process(count_10k_curr(11) isbeginif rising_edge(count_10k_curr(11) and count_10k_curr(11)='1' thencount_1k_curr<=count_1k_next;end if;end process;out_1

23、k<=count_1k_curr(3);-利用的到的10KHz分頻得到100Hz的時(shí)鐘-P3:process(count_100hz_curr) isbeginif count_100hz_curr=9 thencount_100hz_next<=(others=>'0');elsecount_100hz_next<=count_100hz_curr+1;end if;end process;fre100hz:process(count_1k_curr(3) isbeginif rising_edge(count_1k_curr(3) and count

24、_1k_curr(3)='1' thencount_100hz_curr<=count_100hz_next;end if;end process;out_100Hz<=count_100hz_curr(3);-2 模10和模6計(jì)數(shù)器VHDL源程序2.1 模10計(jì)數(shù)器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if i

25、nstantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity counter_10 isPort ( clk : in STD_LOGIC; rst : in std_logic; carry_in:in std_logic; carry_out:out std_logic; out10 : out STD_LOGIC_VECTOR (3 downto 0);end counter_10;architecture Behavioral of counter_

26、10 issignal con:STD_LOGIC_VECTOR (3 downto 0):="0000"beginprocess(clk,rst)begin if rst = '1' thencon<=(others=>'0');elseifrising_edge(clk) and clk='1' thenif carry_in = '1' thenif con=9 thencon<=(others=>'0');elsecon<=con+1;end if;else

27、 null;end if;end if;end if;end process;out10<=con;carry_out<='1' when carry_in='1' and con=9 else '0'end Behavioral;2 模6計(jì)數(shù)器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration

28、 if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity counter_10 isPort ( clk : in STD_LOGIC; rst : in std_logic; carry_in:in std_logic; carry_out:out std_logic; out10 : out STD_LOGIC_VECTOR (3 downto 0);end counter_10;architecture Behavioral of cou

29、nter_10 issignal con:STD_LOGIC_VECTOR (3 downto 0):="0000"beginprocess(clk,rst)begin if rst = '1' thencon<=(others=>'0');elseifrising_edge(clk) and clk='1' thenif carry_in = '1' thenif con=9 thencon<=(others=>'0');elsecon<=con+1;end if

30、;else null;end if;end if;end if;end process;out10<=con;carry_out<='1' when carry_in='1' and con=9 else '0'end Behavioral;3 鎖存器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declarat

31、ion if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity latch isPort ( en : in STD_LOGIC; count_in1 : in STD_LOGIC_VECTOR (3 downto 0); count_in2 : in STD_LOGIC_VECTOR (3 downto 0); count_in3 : in STD_LOGIC_VECTOR (3 downto 0); count_in4 : in STD_L

32、OGIC_VECTOR (3 downto 0); count_in5 : in STD_LOGIC_VECTOR (3 downto 0); count_in6 : in STD_LOGIC_VECTOR (3 downto 0); count_out1 : out STD_LOGIC_VECTOR (3 downto 0); count_out2 : out STD_LOGIC_VECTOR (3 downto 0); count_out3 : out STD_LOGIC_VECTOR (3 downto 0); count_out4 : out STD_LOGIC_VECTOR (3 d

33、ownto 0); count_out5 : out STD_LOGIC_VECTOR (3 downto 0); count_out6 : out STD_LOGIC_VECTOR (3 downto 0);end latch;architecture Behavioral of latch isbeginprocess(en,count_in1,count_in2,count_in3,count_in4,count_in5,count_in6)beginif en='1' thencount_out1<=count_in1;count_out2<=count_i

34、n2;count_out3<=count_in3;count_out4<=count_in4;count_out5<=count_in5;count_out6<=count_in6;end if;end process;end Behavioral;4 控制器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instant

35、iating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity control isport( start_stop:in STD_LOGIC; split_rest:in STD_LOGIC;clk_1KHz :in STD_LOGIC; clean: out STD_LOGIC; En:out STD_LOGIC; count_dis:out STD_LOGIC);end control;architecture Behavioral of control issig

36、nal state:STD_LOGIC_VECTOR(2 DOWNTO 0):="111"signal SR:STD_LOGIC_VECTOR(1 DOWNTO 0);beginSR <= start_stop & split_rest;process(clk_1KHz,state,SR)beginif rising_edge(clk_1KHz) and clk_1KHz='1' thenif state="111" thencase SR iswhen "10"=>state<="

37、011"when others=>state<="111"end case;elsif state="011" thencase SR iswhen "01"=>state<="010"when "10"=>state<="001"when others=>state<="011"end case;elsif state="001" then case SR iswhen &qu

38、ot;01"=>state<="111"when "10"=>state<="011"when others=>state<="001"end case;elsif state="010" then case SR iswhen "01"=>state<="011"when others=>state<="010"end case;elsestate<=&quo

39、t;111"end if;end if;end process;clean<=state(2);En<=state(1);count_dis<=state(0);end Behavioral;5 掃描顯示控制電路library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx pri

40、mitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity display is Port ( clk : in STD_LOGIC; hs_1 : in STD_LOGIC_VECTOR (3 downto 0); hs_2 : in STD_LOGIC_VECTOR (3 downto 0); s_1 : in STD_LOGIC_VECTOR (3 downto 0); s_2 : in STD_LOGIC_VECTOR (3 downto 0); m_1 : in STD_LOGIC_VECTOR (3

41、 downto 0); m_2 : in STD_LOGIC_VECTOR (3 downto 0); shumaguan : out STD_LOGIC_VECTOR (7 downto 0); duanSel : out STD_LOGIC_VECTOR (6 downto 0);- dpsel :out STD_LOGIC;end display;architecture Behavioral of display issignal count:STD_LOGIC_VECTOR(2 downto 0):="000"signal BCD:STD_LOGIC_VECTOR

42、 (3 downto 0);signal sig:STD_LOGIC_VECTOR (7 downto 0);-signal dp:STD_LOGIC:='1'-控制小數(shù)點(diǎn)的亮與滅begin-完成計(jì)數(shù)功能-cnt:process(clk) isbeginif rising_edge(clk) and clk='1' thenif count="111" thencount<="000"elsecount<=count+1;end if;end if;end process;-多路選擇器-MUL:process(

43、count) isbegincase count iswhen "000"=>BCD<=hs_1; when "001"=>BCD<=hs_2;when "010"=>BCD<="1111"when "011"=>BCD<=s_1;when "100"=>BCD<=s_2;when "101"=>BCD<="1111"when "110"=>

44、;BCD<=m_1;when "111"=>BCD<=m_2;when others=>BCD<="1111"end case;end process;-段選控制-DUAN:process(BCD) isbegincase BCD is-abcdefg-0123456-when "0000"=>duanSel<="0000001"when "0001"=>duanSel<="1001111"when "0010&

45、quot;=>duansel<="0010010"when "0011"=>duansel<="0000110"when "0100"=>duansel<="1001100"when "0101"=>duansel<="0100100"when "0110"=>duansel<="0100000"when "0111"=>duansel<="0001111"when "1000"=>duansel<="0000000"when "1001"=>duansel<="0000100"when "1111"=>duansel<="1111110"when others=>duansel<=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論