




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上畢業(yè)設(shè)計(jì) 基于PLD的24小時數(shù)字鐘的設(shè)計(jì) 系 電子信息工程系 專業(yè) 電子信息工程技術(shù) 姓名 楊雯 班級 電信122 學(xué)號_ 指導(dǎo)教師 徐敏 職稱 講師 設(shè)計(jì)時間 2014.10.082015.04.08 摘 要本設(shè)計(jì)基于VHDL語言在EDA平臺上采用自頂向下的設(shè)計(jì)方法用PLD設(shè)計(jì)一個數(shù)字電子鐘。該數(shù)字鐘能實(shí)現(xiàn)時、分、秒計(jì)數(shù)的顯示功能,且以24小時循環(huán)計(jì)時。采用硬件描述語言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程,時序仿真等。利用VHDL語言完成了數(shù)字鐘的設(shè)計(jì)。在Quartus開發(fā)環(huán)境中編譯和仿真了所設(shè)計(jì)的程序,經(jīng)過仿真結(jié)果表明,該設(shè)計(jì)方法切實(shí)可行,該數(shù)字時鐘具有一
2、定的實(shí)際應(yīng)用性,體現(xiàn)了現(xiàn)在EDA的發(fā)展方向。整個系統(tǒng)結(jié)構(gòu)簡單,使用方便,功能齊全,精度高,具有一定的開發(fā)價值。關(guān)鍵詞: 數(shù)字鐘,EDA,PLD,VHDL目錄第一章 引 言隨著社會的發(fā)展,科學(xué)技術(shù)也在不斷的進(jìn)步。特別是計(jì)算機(jī)產(chǎn)業(yè),可以說是日新月異,數(shù)字鐘作為計(jì)算機(jī)的一個組成也隨之逐漸進(jìn)入人們的生活,從先前的采用半導(dǎo)體技術(shù)實(shí)現(xiàn)的數(shù)字鐘到現(xiàn)在廣泛應(yīng)用的采用高集成度芯片實(shí)現(xiàn)的數(shù)字鐘。數(shù)字鐘正在向著功能強(qiáng),體積小,重量輕等方向不斷發(fā)展,本設(shè)計(jì)主要介紹的是一個基于描述語言VHDL對數(shù)字鐘中顯示電路進(jìn)行編程實(shí)現(xiàn)。近年來,集成電路和計(jì)算機(jī)應(yīng)用得到了高速發(fā)展,現(xiàn)代電子設(shè)計(jì)技術(shù)已邁入一個嶄新的階段,具體表現(xiàn)在:(
3、1)電子器件及其技術(shù)的發(fā)展將更多地趨向于為EDA服務(wù);(2)硬件電路與軟件設(shè)計(jì)過程已高度滲透;(3)電子設(shè)計(jì)技術(shù)將歸結(jié)為更加標(biāo)準(zhǔn)、規(guī)范的EDA工具和硬件描述語言VHDL的運(yùn)用;(4)數(shù)字系統(tǒng)的芯片化實(shí)現(xiàn)手段已成主流。因此利用計(jì)算機(jī)和大規(guī)模復(fù)雜可編程邏輯器件進(jìn)行現(xiàn)代電子系統(tǒng)設(shè)計(jì)已成為電子工程類技術(shù)人員必不可少的基本技能之一。1.1課題的背景、目的本次設(shè)計(jì)的目的就是在掌握EDA實(shí)驗(yàn)開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),加深對硬件電路結(jié)構(gòu)的理解。通過學(xué)習(xí)的VHDL語言結(jié)合電子電路的設(shè)計(jì)知識理論聯(lián)系實(shí)際,掌握所學(xué)的課程知識,學(xué)習(xí)VHDL基本單元電路的綜合設(shè)計(jì)應(yīng)用。通過對實(shí)用數(shù)字鐘的設(shè)計(jì),鞏固和綜合
4、運(yùn)用EDA技術(shù)的基本理論和方法,理論聯(lián)系實(shí)際,提高IC設(shè)計(jì)能力,提高分析、解決EDA技術(shù)實(shí)際問題的獨(dú)立工作能力。通過畢業(yè)設(shè)計(jì)深入理解EDA技術(shù)和VHDL語言自頂向下設(shè)計(jì)的原理,達(dá)到畢業(yè)設(shè)計(jì)的目標(biāo)。1.2設(shè)計(jì)內(nèi)容利用VHDL設(shè)計(jì)數(shù)字鐘電路的各個模塊,并使用EDA工具對各模塊進(jìn)行仿真驗(yàn)證。數(shù)字鐘顯示電路的設(shè)計(jì)分為下面幾個模塊:秒計(jì)數(shù)模塊、分計(jì)數(shù)模塊、小時計(jì)數(shù)模塊、顯示模塊。把各個模塊整合后,顯示相應(yīng)的輸出狀態(tài)。1.3 方案論證1.3.1 設(shè)計(jì)要求設(shè)計(jì)一個計(jì)時周期為24小時、顯示滿刻度為23小時59分59秒的數(shù)字電子鐘。利用VHDL設(shè)計(jì)數(shù)字鐘顯示電路的各個模塊,并使用EDA工具對各模塊進(jìn)行仿真驗(yàn)證。
5、數(shù)字鐘顯示電路的設(shè)計(jì)分為下面幾個模塊:秒計(jì)數(shù)模塊、分計(jì)數(shù)模塊、小時計(jì)數(shù)模塊.。完成以后把各個模塊整合后,顯示相應(yīng)的輸出狀態(tài)。1.3.2 方案論證案一:采用數(shù)字電路集成塊來完成。該方案電路由石英晶體振蕩器、分頻器、計(jì)數(shù)器、譯碼器顯示器和校時等電路組成。其功能也主要依賴于數(shù)字電路的各功能模塊的組合來實(shí)現(xiàn)。其原理框圖如圖1.1所示。顯示器譯碼器分頻器校時電路時計(jì)數(shù)器分計(jì)數(shù)器秒計(jì)數(shù)器譯碼器譯碼器qiqiqi顯示器晶體振蕩器顯示器圖1.1 基于數(shù)字邏輯電路的電子鐘方案二:采用單片機(jī)為控制核心,以軟件編程來完成。該方案使用12MHZ晶振與單片機(jī)AT89C51相連接,通過軟件編程的方法實(shí)現(xiàn)了以24小時為一個
6、周期同時顯示小時,分鐘和秒的要求,并在計(jì)時過程中具有報(bào)時功能,當(dāng)時間到達(dá)整點(diǎn)進(jìn)行蜂鳴報(bào)時。并設(shè)有三個按鍵:s1,s2和s3鍵,使之具備了校時、定時功能。其原理框圖如圖1.2所示。單片機(jī)顯示電路負(fù)載圖1.2 基于單片機(jī)的數(shù)字電子鐘方案三:以FPGA為核心來完成,以軟件編程來完成。該方案利用EDA技術(shù),采用VHDL語言編程實(shí)現(xiàn),通過FPGA芯片控制每一個模塊,其原理框圖如圖1.3所示。圖1.3 基于FPGA的數(shù)字電子鐘對于方案一,設(shè)計(jì)的電路相當(dāng)復(fù)雜,焊接的過程比較復(fù)雜,成本也非常高。對于方案二,其本身電路比較簡單,其功能的實(shí)現(xiàn)主要通過軟件編程來完成,這樣就降低了硬件電路的復(fù)雜性,而且其成本也有所降
7、低。但由于FPGA芯片的功能強(qiáng)大,且下載方便,無需像方案二要專門的下載工具。其中,采用VHDL(Very High Speed Integrated Circuit Hardware Description Language)超高速集成電路硬件描述語言設(shè)計(jì)復(fù)雜數(shù)字電路的方法具有很多優(yōu)點(diǎn),VHDL語言的設(shè)計(jì)技術(shù)齊全、方法靈活、支持廣泛;另外其系統(tǒng)硬件描述能力很強(qiáng),具有多層次描述系統(tǒng)硬件功能的能力,可以從系統(tǒng)級到門級電路,而且高層次的行為描述可以與低層次的RTL描述混合使用;它在描述數(shù)字系統(tǒng)時,可以使用前后一致的語義和語法跨越多層次,并且使用跨越多個級別的混合描述模擬該系統(tǒng),因而可以對高層次行為描
8、述的子系統(tǒng)及低層次詳細(xì)實(shí)現(xiàn)子系統(tǒng)所組成的系統(tǒng)進(jìn)行模擬。所以,為了利用學(xué)校實(shí)驗(yàn)室FPGA/CPLD開發(fā)工具系列的現(xiàn)有資源,本設(shè)計(jì)采用方案三。第二章 EDA、VHDL、PLD簡介2.1 EDA技術(shù)EDA是電子設(shè)計(jì)自動化(Electronic Design Automation)縮寫,EDA是以計(jì)算機(jī)為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計(jì)文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計(jì)者在
9、EDA平臺上完成的針對某個系統(tǒng)項(xiàng)目的HDL、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實(shí)現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來。2.2 FPGA/CPLD的概述FPGA(現(xiàn)場可編程門陣列)與CPLD(復(fù)雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎(chǔ)之上發(fā)展起來的。同以往的PAL,GAL等相比較,F(xiàn)PGACPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGACPLD實(shí)際上就是一個子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子
10、工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎。經(jīng)過了十幾年的發(fā)展,許多公司都開發(fā)出了多種可編程邏輯器件。盡管FPGA,CPLD和其它類型PLD的結(jié)構(gòu)各有其特點(diǎn)和長處,但概括起來,它們是由三大部分組成的。一個二維的邏輯塊陣列,構(gòu)成了PLD器件的邏輯組成核心。輸入輸出塊:連接邏輯塊的互連資源。連線資源:由各種長度的連線線段組成,其中也有一些可編程的連接開關(guān),它們用于邏輯塊之間、邏輯塊與輸入輸出塊之間的連接。對用戶而言,CPLD與FPGA的內(nèi)部結(jié)構(gòu)稍有不同,但用法一樣,所以多數(shù)情況下,不加以區(qū)分。FPGACPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點(diǎn)之外,還具有以下幾個優(yōu)點(diǎn):(1)隨著VlSI(
11、Very Large Scale IC,超大規(guī)模集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個晶體管, FPGACPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達(dá)到上百萬門,它所能實(shí)現(xiàn)的功能也越來越強(qiáng),同時也可以實(shí)現(xiàn)系統(tǒng)集成。(2)FPGACPLD芯片在出廠之前都做過百分之百的測試,不需要設(shè)計(jì)人員承擔(dān)投片風(fēng)險和費(fèi)用,設(shè)計(jì)人員只需在自己的實(shí)驗(yàn)室里就可以通過相關(guān)的軟硬件環(huán)境來完成芯片的最終功能設(shè)計(jì)。所以, FPGACPLD的資金投入小,節(jié)省了許多潛在的花費(fèi)。(3)用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。所以,用FPGAPLD 試制樣片,能以最快的速
12、度占領(lǐng)市場。 FPGACPLD軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。 當(dāng)電路有少量改動時,更能顯示出FPGACPLD的優(yōu)勢。電路設(shè)計(jì)人員使用FPGACPLD進(jìn)行電路設(shè)計(jì)時,不需要具備專門的IC(集成電路)深層次的知識, FPGACPLD軟件易學(xué)易用,可以使設(shè)計(jì)人員更能集中精力進(jìn)行電路設(shè)計(jì),快速將產(chǎn)品推向市場。2.3 硬件描述語言VHDL2.3.1 VHDL的簡介VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescript
13、ion Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言 。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又
14、得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。2.3.2 VHDL語言的特點(diǎn)1.用VHDL代碼而不是用原理圖進(jìn)行設(shè)計(jì),意味著整個電路板的模型及性能可用計(jì)算機(jī)模擬進(jìn)行驗(yàn)證。2.VHDL元件的設(shè)計(jì)與工藝u無關(guān),與工藝獨(dú)立,方便工藝轉(zhuǎn)換。3.VHDL支持各種設(shè)計(jì)方法,自頂向下、自底向上或者混合的都可以。4.可以進(jìn)行從系統(tǒng)級到邏輯級的描述,即混合描述。5.VHDL區(qū)別于其他的HDL,已形成標(biāo)準(zhǔn),其代碼在不同的系統(tǒng)中可交換建模。 2.3.3 VHDL的設(shè)計(jì)流程1.設(shè)計(jì)規(guī)范的定義明確這個系統(tǒng)
15、有哪些設(shè)計(jì)要求,和你要想到達(dá)的目標(biāo)。2.采用VHDL進(jìn)行設(shè)計(jì)描述這部分包括設(shè)計(jì)規(guī)劃和程序的編寫。設(shè)計(jì)規(guī)劃主要包括設(shè)計(jì)方式的選擇及是否進(jìn)行模塊劃分。設(shè)計(jì)方式一般包括直接設(shè)計(jì),自頂向下和自底向下設(shè)計(jì),這個和其他軟件語言差不多。最重要還是模塊劃分。3.VHDL程序仿真4.綜合、優(yōu)化和布局布線綜合指的是將設(shè)計(jì)描述轉(zhuǎn)化成底層電路的表示形式,其結(jié)果是一個網(wǎng)表或者是一組邏輯方程;優(yōu)化,這個主要是為了提高程序的執(zhí)行效率及減少資源的利用;布局布線,指的是將邏輯關(guān)系轉(zhuǎn)化成電路連接的方式。5.仿真這個與VHDL程序仿真不同,這個不僅是對邏輯方面的驗(yàn)證,還要進(jìn)行時序功能驗(yàn)證。第三章 數(shù)字鐘設(shè)計(jì)3.1數(shù)字鐘的工作原理
16、數(shù)字鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計(jì)時裝置。它的計(jì)時周期為24小時,顯示滿刻度為23時59分59秒,另外應(yīng)有校時功能和校分功能。因此,一個基本的數(shù)字鐘電路主要由譯碼顯示器、“時”,“分”,“秒”計(jì)數(shù)器、校時電路和振蕩器組成。主電路系統(tǒng)由秒信號發(fā)生器、“時、分、秒”計(jì)數(shù)器、譯碼器及顯示器、校時電路組成。秒信號產(chǎn)生器是整個系統(tǒng)的時基信號,它直接決定計(jì)時系統(tǒng)的精度,一般用石英晶體振蕩器加分頻器來實(shí)現(xiàn)。將標(biāo)準(zhǔn)秒信號送入“秒計(jì)數(shù)器”,“秒計(jì)數(shù)器”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個“分脈沖”信號,該信號將作為“分計(jì)數(shù)器”的時鐘脈沖。“分計(jì)數(shù)器”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60
17、分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時計(jì)數(shù)器”?!皶r計(jì)數(shù)器”采用24進(jìn)制計(jì)時器,可實(shí)現(xiàn)對一天24小時的累計(jì)。采用6個數(shù)碼管顯示。工作原理圖如圖3.1所示。圖3.1 數(shù)字鐘的工作原理圖數(shù)字鐘自頂向下分解模塊圖如圖3.2所示:3.2自頂向下分解圖3.2數(shù)字鐘模塊設(shè)計(jì)3.2.1秒計(jì)數(shù)器模塊的設(shè)計(jì)1、秒計(jì)數(shù)程序如下:END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC; -enmin_1為59秒時的進(jìn)位信
18、號 BEGIN -enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串 daout<=count; enmin_2<=(setmin and clk); -setmin為手動調(diào)分控制信號,高電平有效 cmin<=(enmin_1 or enmin_2); -enmin為向分進(jìn)位信號 PROCESS(clk,reset,setmin) BEGIN IF(reset='1')THEN count<="" -若reset為0,則異步清零 ELSIF(clk 'event and clk='1')then -否則,若clk
19、上升沿到 IF(count(3 downto 0)="1001")then -若個位計(jì)時恰好到"1001"即9 IF(count<16#60#)then -又若count小于16#60#,即60H IF(count="")then -又若已到59D enmin_1<='1'count<=""-則置進(jìn)位為1及count復(fù)0 ELSE -未到59D count<=count+7; -則加7,而+7=+1+6,即作"加6校正" END IF; ELSE -若co
20、unt不小于16#60#(即count等于或大于16#60#) count<="" -count復(fù)0 END IF; -END IF(count<16#60#) ELSIF(count<16#60#)then -若個位計(jì)數(shù)未到"1001"則轉(zhuǎn)此句再判 count<=count+1; -若count<16#60#則count加1 enmin_1<='0'after 100 ns; -沒有發(fā)生進(jìn)位 ELSE -否則,若count不小于16#60# count<="" -則count
21、復(fù)0 END IF; -END IF(count(3 DOWNTO 0)="1001") END IF; -END IF(reset='0')2、打開Quartus II,點(diǎn)擊File菜單下的New新建一個VHDL文件點(diǎn)擊保存,保存為second并在C盤user/Administrator/Desktop/基于PLD的24小時數(shù)字鐘楊雯文件夾下建立一個名為second的工程,之后點(diǎn)擊編譯進(jìn)行編譯,編譯結(jié)果如圖3.3所示。圖3.3 秒計(jì)數(shù)模塊3、點(diǎn)擊File菜單下的New新建一個Vector Waveform File文件,秒計(jì)數(shù)模塊的輸入波形如圖3.4圖3.
22、4 秒計(jì)數(shù)模塊的輸入波形4、編譯仿真通過后,選擇File->Create/Update->Create Symbol File for Current File命令,將秒模塊生成底層元件,以備調(diào)用,秒模塊原理圖如圖3.5所示:3.5秒模塊圖 各引腳含義如下:(1) Clk為1hz信號輸入(2) Reset為清零輸入(3) Setmin為手動調(diào)分(4) cmin為分進(jìn)位信號(5) dout6.0為數(shù)據(jù)輸出 3.2.2分計(jì)數(shù)器模塊的設(shè)計(jì)1、分計(jì)數(shù)程序如下:ENTITY minute IS PORT(clk,clk1, reset,sethour:IN STD_LOGIC; chour:
23、OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY minute ;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; -enmin_1為59分時的進(jìn)位信號 BEGIN -enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串 daout<=count; enhour_2<=(sethour and clk1); -sethour為手動調(diào)時
24、控制信號,高電平有效 chour<= (enhour_1 or enhour_2); PROCESS(clk,reset,sethour) BEGIN IF(reset='1') THEN -若reset為0,則異步清零 count<="" ELSIF(clk'event and clk='1')THEN -否則,若clk上升沿到 IF(count (3 DOWNTO 0) ="1001")THEN-若個位計(jì)時恰好到"1001"即9 IF(count <16#60#) THEN
25、 -又若count小于16#60#,即60 IF(count="") THEN-又若已到59D enhour_1<='1' -則置進(jìn)位為1 count<="" -count復(fù)0 ELSE count<=count+7; -若count未到59D,則加7,即作"加6校正" END IF; -使前面的16#60#的個位轉(zhuǎn)變?yōu)?421BCD的容量 ELSE count<=""-count復(fù)0(有此句,則對無效狀態(tài)電路可自啟動) END IF; -END IF(count<16
26、#60#) ELSIF (count <16#60#) THEN count<=count+1; -若count<16#60#則count加1 enhour_1<='0' after 100 ns; -沒有發(fā)生進(jìn)位 ELSE count<="" -否則,若count不小于16#60# count復(fù)0 END IF; -END IF(count(3 DOWNTO 0)="1001") END IF; -END IF(reset='0'2、點(diǎn)擊File菜單下的New新建一個VHDL文件點(diǎn)擊保存,保
27、存為minute并放在C盤user/Administrator/Desktop/基于PLD的24小時數(shù)字鐘楊雯文件夾下名為second的工程,之后點(diǎn)擊編譯進(jìn)行編譯,分計(jì)數(shù)模塊的編譯結(jié)果如圖3.6圖3.6 分計(jì)數(shù)模塊3、點(diǎn)擊File菜單下的New新建一個Vector Waveform File文件,分計(jì)數(shù)模塊的輸入波形如圖3.7圖3.7 分計(jì)數(shù)模塊的輸入波形4、編譯仿真通過后,選擇File->Create/Update->Create Symbol File for Current File命令,將分模塊生成底層元件,以備調(diào)用,分模塊原理圖如圖3.8所示:3.8分模塊圖各引腳含義如下
28、:(1) Clk1為1hz信號輸入(2) Reset為清零輸入(3) Sethour為手動調(diào)時(4) Clk為進(jìn)位脈沖(5) dout6.0為數(shù)據(jù)輸出(6) chour為時進(jìn)位脈沖3.2.3小時計(jì)數(shù)器模塊的設(shè)計(jì)1、時計(jì)數(shù)程序如下:ENTITY hour IS PORT(clk,reset:IN STD_LOGIC; daout:out STD_LOGIC_VECTOR(5 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN daout<=
29、count; PROCESS(clk,reset) BEGIN IF(reset='1')THEN count<="" -若reset=0,則異步清零 ELSIF(clk'event and clk='1')THEN -否則,若clk上升沿到 IF(count(3 DOWNTO 0)="1001")THEN -若個位計(jì)時恰好到"1001"即9 IF(count<16#23#)THEN -23進(jìn)制 count<=count+7; -若到23D則 else count<=&q
30、uot;" -復(fù)0 END IF; ELSIF (count<16#23#)THEN -若未到23D,則count進(jìn)1 count<=count+1; ELSE -否則清零 count<="" END IF; -END IF(count(3 DOWNTO 0)="1001") END IF; -END IF(reset='0')2、點(diǎn)擊File菜單下的New新建一個VHDL文件點(diǎn)擊保存,保存為hour并保存在C盤user/Administrator/Desktop/基于PLD的24小時數(shù)字鐘楊雯文件夾下名為se
31、cond的工程,之后點(diǎn)擊編譯進(jìn)行編譯,小時計(jì)數(shù)模塊的程序如圖3.9圖3.9 小時計(jì)數(shù)模塊3、點(diǎn)擊File菜單下的New新建一個Vector Waveform File文件,小時模塊的輸入波形如圖3.10圖3.10 小時模塊的輸入波形4、編譯仿真通過后,選擇File->Create/Update->Create Symbol File for Current File命令,將時模塊生成底層元件,以備調(diào)用,時模塊原理圖如圖3.11所示:3.11時模塊圖引腳含義如下:(1) Clk為進(jìn)位脈沖(2) dout5.0為數(shù)據(jù)輸出3.2.4譯碼驅(qū)動模塊的設(shè)計(jì)1、譯碼驅(qū)動程序如下:ENTITY s
32、eg7 IS PORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END seg7;ARCHITECTURE fun OF seg7 IS BEGIN PROCESS(A) BEGIN case A is when "0000"=> LED7S<="" when "0001"=> LED7S<="" when "0010"=> LED7S<="
33、" when "0011"=> LED7S<="" when "0100"=> LED7S<="" when "0101"=> LED7S<="" when "0110"=> LED7S<="" when "0111"=> LED7S<="" when "1000"=> LED7S<="
34、" when "1001"=> LED7S<="" when others =>null; end case;2、點(diǎn)擊File菜單下的New新建一個VHDL文件點(diǎn)擊保存,保存為seg7并放在C盤user/Administrator/Desktop/基于PLD的24小時數(shù)字鐘楊雯文件夾下名為second的工程,之后點(diǎn)擊編譯進(jìn)行編譯,譯碼驅(qū)動模塊的程序如圖3.12圖3.12 譯碼驅(qū)動模塊的程序3、編譯仿真通過后,選擇File->Create/Update->Create Symbol File for Current
35、File命令,將譯碼驅(qū)動模塊生成底層元件,以備調(diào)用,譯碼模塊原理圖如圖3.13所示:3.13譯碼器模塊各引腳含義如下:(1)BCD碼輸入(2)七段共陰碼輸出3.3數(shù)字鐘模塊圖3.14頂層模塊圖(1) Clk為1hz信號輸入 (5)h6.0,,h16.0為小時數(shù)據(jù)輸出(2) Reset為清零輸入 (6)m6.0, m16.0為分鐘數(shù)據(jù)輸出(3) Setmin為手動調(diào)分 (7)s6.0, s16.0為秒數(shù)據(jù)輸出(4) Sethour為手動調(diào)時3.4晶體振蕩器晶體振蕩電路是構(gòu)成數(shù)字式時鐘的核心,它保證了時鐘走時準(zhǔn)確及穩(wěn)定。晶體振蕩器它的作用是產(chǎn)生時間標(biāo)準(zhǔn)信號。數(shù)字鐘的精度主要取決于時間標(biāo)準(zhǔn)信號的頻率
36、及其穩(wěn)定度。因此,一般采用石英晶體振蕩器經(jīng)過分頻得到這一信號。晶體振蕩器電路給數(shù)字鐘提供一個頻率穩(wěn)定準(zhǔn)確的4MHz的方波信號,可保證數(shù)字鐘的走時準(zhǔn)確及穩(wěn)定。不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器電路。如圖3.15所示晶體振蕩電路框圖。圖3.15 晶體振蕩電路3.5分頻器分頻器電路將4M的高頻方波信號經(jīng)4M次分頻后得到1Hz的方波信號供秒計(jì)數(shù)器進(jìn)行計(jì)數(shù)。分頻器實(shí)際上也就是計(jì)數(shù)器。本次設(shè)計(jì)是運(yùn)用VHDL語言設(shè)計(jì)的分頻器進(jìn)行分頻,分頻電路可提供1HZ 的方波為為后級電路輸送一秒脈沖信號。如圖3.16所示分頻器電路框圖。圖3.16 分頻器電路框圖3.6數(shù)字鐘原理圖圖3.17 數(shù)字鐘
37、原理圖第四章 系統(tǒng)仿真4.1秒計(jì)數(shù)器電路仿真秒表計(jì)數(shù)器電路仿真圖如圖4.1:將標(biāo)準(zhǔn)秒信號送入“秒計(jì)數(shù)器”,“秒計(jì)數(shù)器”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個“分脈沖”信號,該信號將作為“分計(jì)數(shù)器”的時鐘脈沖,仿真結(jié)果正確。 圖4.1 秒計(jì)數(shù)器電路仿真圖4.2分計(jì)數(shù)器電路仿真分計(jì)數(shù)器電路仿真圖如圖4.2:“分計(jì)數(shù)器”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時計(jì)數(shù)器”。Reset為清零控制端,sethour為時進(jìn)位脈沖信號,仿真結(jié)果正確。圖4.2 分計(jì)數(shù)器電路仿真圖4.3 小時計(jì)數(shù)器電路仿真時計(jì)數(shù)器電路仿真圖如圖4.3:“時計(jì)數(shù)器”采用24進(jìn)制計(jì)時器,可實(shí)現(xiàn)
38、對一天24小時的累計(jì)。Reset為清零控制端,仿真結(jié)果正確。圖4.3小時計(jì)數(shù)器電路仿真圖4.4譯碼驅(qū)動電路仿真譯碼驅(qū)動電路仿真圖如圖4.4:輸入BCD碼,輸出為共陰極數(shù)碼管顯示碼,仿真結(jié)果正確。圖4.4 譯碼驅(qū)動電路仿真圖總結(jié)與展望通過這段時間的努力,最后完成了我的設(shè)計(jì)任務(wù)數(shù)字鐘的設(shè)計(jì)。通過本次畢業(yè)設(shè)計(jì)的學(xué)習(xí),我深深的體會到設(shè)計(jì)的重要性和目的性所在。本次設(shè)計(jì)不僅僅培養(yǎng)了我們實(shí)際操作能力,也培養(yǎng)了我們靈活運(yùn)用課本知識,理論聯(lián)系實(shí)際,獨(dú)立自主的進(jìn)行設(shè)計(jì)的能力。它不僅僅是一個學(xué)習(xí)新知識新方法的好機(jī)會,同時也是對我所學(xué)知識的一次綜合的檢驗(yàn)和復(fù)習(xí),使我明白了自己的缺陷所在,從而查漏補(bǔ)缺。希望學(xué)校以后多安
39、排一些類似的實(shí)踐環(huán)節(jié),讓同學(xué)們學(xué)以致用。畢業(yè)設(shè)計(jì)中要求要有耐心和毅力,還要細(xì)心,稍有不慎,一個小小的錯誤就會導(dǎo)致結(jié)果的不正確,而對錯誤的檢查要求我要有足夠的耐心,通過這次設(shè)計(jì)和設(shè)計(jì)中遇到的問題,也積累了一定的經(jīng)驗(yàn),對以后從事集成電路設(shè)計(jì)工作會有一定的幫助。在應(yīng)用VHDL的過程中讓我真正領(lǐng)會到了其并行運(yùn)行與其他軟件(C語言)順序執(zhí)行的差別及其在電路設(shè)計(jì)上的優(yōu)越性。用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了設(shè)計(jì)時間和可能發(fā)生的錯誤,降低了開發(fā)成本,這種設(shè)計(jì)方法必將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。致 謝感謝學(xué)院給我們提供了一個展現(xiàn)
40、自己的舞臺,給我們一次難得煅煉的機(jī)會,使得我們的動手能力和專業(yè)技能都有了很大的提高。在設(shè)計(jì)和制作的過程中,我們深切的體會到,實(shí)踐是理論運(yùn)用的最好檢驗(yàn),這一次的設(shè)計(jì)是對我們所學(xué)知識的一次綜合性檢測,無論是動手能力還是理論知識運(yùn)用能力都得到了提高,同時加深了我們對網(wǎng)絡(luò)資源的認(rèn)識,大大提高了查閱資料的效率,使我們有充足的時間投入到電路設(shè)計(jì)當(dāng)中。在做作品的日子里得到了指導(dǎo)教師的悉心指導(dǎo),在此向我們的指導(dǎo)教師致以誠摯的謝意。并且感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵使我們對這次的作品完成有了信心和動力,也給了我們很多無私的幫助和支持,我們在此深表謝意。 在這次設(shè)計(jì)中,在徐敏老師的指導(dǎo)下才能很
41、好的完成任務(wù),在此,非常感謝徐敏老師在畢業(yè)設(shè)計(jì)上的指導(dǎo)和幫助以及同學(xué)們的幫助。 參考文獻(xiàn)1 殷慶縱,湯朝霞.EDA技術(shù)及應(yīng)用M,北京:清華大學(xué)出版社 2013年2 劉君,常明,秦娟.基于硬件描述語言(VHDL)的數(shù)字時鐘設(shè)計(jì)J.天津理工大學(xué)學(xué)報(bào)2007:第23卷 第4期,40-41.3 黃繼業(yè).EDA技術(shù)實(shí)用教程M,北京:科學(xué)出版社 2006年4 李輝.PLD與數(shù)字系統(tǒng)設(shè)計(jì)M,西安:西安電子科技大學(xué)出版社. 20055 宋萬杰.CPLD技術(shù)及其應(yīng)用M,西安:西安電子科技大學(xué)出版社 2000年6 王金明.數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL,北京:北京電子工業(yè)出版社 2002年附 件A
42、1.秒計(jì)數(shù)器模塊的VHDL源程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC; cmin:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmi
43、n_1,enmin_2:STD_LOGIC; -enmin_1為59秒時的進(jìn)位信號 BEGIN -enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串 daout<=count; enmin_2<=(setmin and clk); -setmin為手動調(diào)分控制信號,高電平有效 cmin<=(enmin_1 or enmin_2); -enmin為向分進(jìn)位信號 PROCESS(clk,reset,setmin) BEGIN IF(reset='1')THEN count<="" -若reset為0,則異步清零 ELSIF(clk '
44、;event and clk='1')then -否則,若clk上升沿到 IF(count(3 downto 0)="1001")then -若個位計(jì)時恰好到"1001"即9 IF(count<16#60#)then -又若count小于16#60#,即60H IF(count="")then -又若已到59D enmin_1<='1'count<=""-則置進(jìn)位為1及count復(fù)0 ELSE -未到59D count<=count+7; -則加7,而+7=+
45、1+6,即作"加6校正" END IF; ELSE -若count不小于16#60#(即count等于或大于16#60#) count<="" -count復(fù)0 END IF; -END IF(count<16#60#) ELSIF(count<16#60#)then -若個位計(jì)數(shù)未到"1001"則轉(zhuǎn)此句再判 count<=count+1; -若count<16#60#則count加1 enmin_1<='0'after 100 ns; -沒有發(fā)生進(jìn)位 ELSE -否則,若count
46、不小于16#60# count<="" -則count復(fù)0 END IF; -END IF(count(3 DOWNTO 0)="1001") END IF; -END IF(reset='0')END PROCESS;END fun;2.分計(jì)數(shù)器模塊的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS PORT(clk,clk1, reset,sethour:IN STD_LOGIC; c
47、hour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY minute ;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; -enmin_1為59分時的進(jìn)位信號 BEGIN -enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串 daout<=count; enhour_2<=(sethour and clk1); -sethour
48、為手動調(diào)時控制信號,高電平有效 chour<= (enhour_1 or enhour_2); PROCESS(clk,reset,sethour) BEGIN IF(reset='1') THEN -若reset為0,則異步清零 count<="" ELSIF(clk'event and clk='1')THEN -否則,若clk上升沿到 IF(count (3 DOWNTO 0) ="1001")THEN-若個位計(jì)時恰好到"1001"即9 IF(count <16#60#)
49、 THEN -又若count小于16#60#,即60 IF(count="") THEN-又若已到59D enhour_1<='1' -則置進(jìn)位為1 count<="" -count復(fù)0 ELSE count<=count+7; -若count未到59D,則加7,即作"加6校正" END IF; -使前面的16#60#的個位轉(zhuǎn)變?yōu)?421BCD的容量 ELSE count<=""-count復(fù)0(有此句,則對無效狀態(tài)電路可自啟動) END IF; -END IF(count<16#60#) ELSIF (count <16#60#) THEN count<=count+1; -若count<16#60#則count加1 enhour_1<='0' after 100 ns; -沒有發(fā)生進(jìn)位 ELSE count<="" -否則,若count不小于16#60# count復(fù)0 END IF; -END IF(count(3 DOWNTO 0)="1001") END IF; -END IF(reset='
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)商標(biāo)簽化管理辦法
- 廚師考核激勵管理辦法
- 前置項(xiàng)目資金管理辦法
- 標(biāo)準(zhǔn)補(bǔ)助經(jīng)費(fèi)管理辦法
- 公園游玩收費(fèi)管理辦法
- 生物降解纖維功能化-洞察及研究
- 供水供電維護(hù)管理辦法
- 園區(qū)租賃企業(yè)管理辦法
- 提升學(xué)生研究能力:閱讀資料的選擇與指導(dǎo)
- 公益關(guān)愛基金管理辦法
- NBT 47013.4-2015 承壓設(shè)備無損檢測 第4部分:磁粉檢測
- 裕龍島煉化一體化項(xiàng)目(一期)環(huán)境影響報(bào)告
- 跨境電商海外倉租賃協(xié)議
- 2024年黑龍江高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷試題(含答案詳解)
- 截肢術(shù)患者圍手術(shù)期護(hù)理
- (正式版)HGT 6277-2024 甲醇制烯烴(MTO)級甲醇
- vcm音圈馬達(dá)制造工藝
- 喘息性肺炎護(hù)理查房
- 暖氣片購銷合同
- 【特崗】2017-2019年云南省特崗教師化學(xué)真題全解析版
- 夏季防暑降溫科普課件
評論
0/150
提交評論