版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計選題報告</b></p><p><b> 畢業(yè)設計任務下達書</b></p><p> 現(xiàn)將畢業(yè)設計任務下達書發(fā)給你。畢業(yè)設計任務下達書內(nèi)容如下:</p><p><b> 畢業(yè)設計題目</b></p><p> 基于硬件描述語言
2、VHDL的電子鐘設計 </p><p><b> 主要內(nèi)容</b></p><p> 對此電子鐘系統(tǒng)進行合理的功能分析后,確定系統(tǒng)功能模塊。系統(tǒng)設計采用自頂向下的設計方法,用VHDL進行分模塊設計,完成系統(tǒng)的功能。 </p&g
3、t;<p><b> 具體要求</b></p><p> 本次設計是應用硬件描述語言VHDL進行編程,仿真并硬件實現(xiàn)電子鐘系統(tǒng)。利用開發(fā)平臺Quartus Ⅱ,并在CPLD上實現(xiàn)該系統(tǒng)。電子鐘系統(tǒng)包括正常計時,鬧鐘,定時器等模塊。 </p><p&
4、gt;<b> 主要參考文獻</b></p><p> [1] 林明權.VHDL數(shù)字控制系統(tǒng)設計范例[M]. 北京;電子工業(yè)出版社, 2003</p><p> [2] 雷伏容.VHDL電路設計[M]. 北京;清華大學出版社,2006</p><p> [3] 陳榮,陳華.VHDL芯片設計[M]. 北京;機械工業(yè)出版社,2006<
5、/p><p> [4] 楊恒,李愛國等. FPGA/CPLD最新實用技術指南[M]. 北京;清華大學出版社, 2005</p><p><b> 五、進程安排</b></p><p> 六、本畢業(yè)設計任務下達書于 2008 年1 月28 日發(fā)出。畢業(yè)設計應于 2008 年 6月 10 日前完成后交指導教師,由指導教師評閱后提交畢業(yè)論文
6、(設計)答辯委員會。</p><p> 七、畢業(yè)設計任務下達書一式兩份,一份給學生,一份留學院存檔。</p><p> 指導教師: 簽發(fā)于200 年 月 日</p><p> 分管院長: 簽發(fā)于200 年 月 日</p><p><b&g
7、t; 畢業(yè)設計開題報告</b></p><p><b> 畢業(yè)設計結題報告</b></p><p><b> 畢業(yè)設計成績評定表</b></p><p> 學院:計算機科學與技術學院 學號:</p><p> 注:1、論文(設計)
8、總成績=指導教師評定成績(50%)+評閱人評定成績(20%)</p><p> +答辯成績(30%)</p><p> 2、將總成績由百分制轉換為五級制,填入本表相應位置。</p><p><b> 目 錄</b></p><p><b> 1 引言1</b></p><
9、;p> 2 相關知識介紹1</p><p> 2.1 VHDL介紹2</p><p> 2.2 自頂向下設計方法3</p><p> 2.3 Quartus Ⅱ開發(fā)平臺3</p><p> 2.4 CPLD簡介4</p><p> 3 電子鐘系統(tǒng)設計方案4</p><p
10、> 3.1 電子鐘系統(tǒng)設計要求4</p><p> 3.2 系統(tǒng)設計方案概述及工作原理4</p><p> 4 電子鐘頂層設計5</p><p> 4.1 頂層設計分析5</p><p> 4.2 頂層電路圖6</p><p> 5 各模塊電路的設計6</p><p&g
11、t; 5.1 正常計數(shù)時間功能模塊6</p><p> 5.1.1 分頻組件設計7</p><p> 5.1.2 60進制計數(shù)器設計7</p><p> 5.1.3 24進制計數(shù)器設計8</p><p> 5.2 定時器設定于計時功能模塊9</p><p> 5.2.1 定時器組件設計思路及原理圖
12、9</p><p> 5.2.2 定時器仿真波形10</p><p> 5.3 鬧鐘模塊設計11</p><p> 5.3.1 鬧鐘組件的設計思路及原理圖11</p><p> 5.3.2 仿真波形11</p><p> 5.4 輸出選擇與數(shù)碼轉換模塊設計12</p><p&g
13、t; 5.4.1 秒/分查表組件設計12</p><p> 5.4.2 小時查表組件設計13</p><p> 5.5 掃描多路輸出模塊14</p><p> 5.5.1 bin2led 組件設計14</p><p> 5.5.2 scan4 組件設計15</p><p> 5.5.3 scan2
14、 組件設計16</p><p> 6 各模塊硬件實現(xiàn)結果17</p><p> 6.1 正常計數(shù)模塊的硬件實現(xiàn)結果18</p><p> 6.2 定時模塊的硬件實現(xiàn)結果19</p><p> 6.3 鬧鐘模塊硬件實現(xiàn)結果20</p><p><b> 7 小結20</b>&l
15、t;/p><p><b> 參考文獻:20</b></p><p><b> 致 謝21</b></p><p> 附錄:部分模塊代碼21</p><p> 基于硬件描述語言VHDL的電子鐘設計</p><p> 摘 要:VHDL(Very High Speed
16、 Integrated Circuit Hardware Description Language 即超高速集成電路硬件描述語言)在當今電子工程領域已經(jīng)成為通用的硬件描述語言。本文使用VHDL硬件描述語言設計了一個電子鐘系統(tǒng)。該系統(tǒng)在開發(fā)軟件Quartus Ⅱ環(huán)境中設計完成,本文給出了設計該數(shù)字系統(tǒng)的流程和方法,最后通過CPLD實現(xiàn)預定功能。</p><p> 關鍵詞:硬件描述語言;VHDL;Quartus Ⅱ
17、;電子鐘;CPLD</p><p> Design of Electronic clock Based On Hardware Description Language VHDL</p><p> (School of Computer Science & Technology,Information Engineering, Class 2 Grade 2004, 04221
18、0212)</p><p> Abstract: VHDL(Very High Speed Integrated Circuit Hardware Description Language)has become the common hardware description language in today’s electronic engineering field. This article introd
19、uces by using VHDL how to design an electronic clock system, which is finished under the Quartus Ⅱenvironment. This article introduces the process and method of the digital system design and left the CPLD to realize the
20、predetermined function.</p><p> Key words:hardware description language; VHDL; Quartus Ⅱ;electronic clock;CPLD</p><p><b> 1 引言</b></p><p> 隨著電子技術的飛速發(fā)展,各種電子設備及數(shù)字系統(tǒng)的復雜度
21、、集成度越來越高,現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏越來越快,要求產(chǎn)品開發(fā)周期短、開發(fā)成本低、保密性和可修改及可擴展性好,因此對集成電路的設計方法不斷提出了新的要求,因此EDA技術應運而生。所謂EDA(Electronic Design Automation)技術,是依賴目前功能已十分強大的計算機為工具,代替人完成數(shù)字系統(tǒng)設計、邏輯綜合、布局布線和仿真工作的技術。</p><p> 目前,EDA技術
22、已經(jīng)成為支撐現(xiàn)代電子設計的通用平臺,并逐步向支持系統(tǒng)級設計的方向發(fā)展。只有以硬件描述語言和邏輯綜合為基礎的自頂向下的設計方法才能滿足日趨復雜的數(shù)字系統(tǒng)設計要求。硬件描述語言有很多種,本文應用具有強大的電路描述和建模能力的VHDL語言進行電子鐘系統(tǒng)設計,為以后深入學習和應用電子系統(tǒng)現(xiàn)代設計方法打好基礎,并具有工程實用性。</p><p><b> 2 相關知識介紹</b></p>
23、<p> 本文所設計的電子鐘系統(tǒng)是運行在QuartusⅡ環(huán)境下的一個小型的數(shù)字系統(tǒng)。我采用了自頂向下的設計方法,應用功能強大的硬件描述語言VHDL完成系統(tǒng)的設計仿真。下面就本設計所用到的技術作一下簡單的介紹。</p><p> 2.1 VHDL介紹</p><p> VHDL是Very High Speed Integrated Circuit Hardware Des
24、cription Language的縮寫,是在ADA語言的基礎上發(fā)展起來的硬件描述語言。</p><p> VHDL誕生于1983年,1987年12月,VHDL被接納為標準硬件描述語言,即IEEE1076標準。經(jīng)過不斷更改和改善,1993年,VHDL重新修訂并增加了一些功能,即IEEE 1076-93標準。目前在電子工程領域,作為IEEE的工業(yè)標準硬件描述語言,VHDL已成為事實上的通用硬件描述語言。</
25、p><p> 電路設計的描述層次可分為系統(tǒng)級、算法級、寄存器傳輸級、門級和晶體管級,VHDL的建模范圍可以從最抽象的系統(tǒng)級一直到門級,從多個層次對電路進行模擬仿真。它除了具有硬件特征的語句外,其語言形式和描述風格以及句法和一般的計算機高級語言相當類似,然而它又有同軟件語言完全不同的性質。</p><p> 以下是一個VHDL的實例:</p><p> LIBRAR
26、Y IEEE;--IEEE庫使用說明語句</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY mux21 IS--實體說明部分</p><p><b> PORT(</b></p><p> a,b:IN STD_LOGIC;&
27、lt;/p><p> s:IN STD_LOGIC;</p><p> y:OUT STD_LOGIC</p><p><b> );</b></p><p> END ENTITY mux21;</p><p> ARCHITECTURE mux21a OF mux21 IS--結構體
28、說明部分</p><p><b> BEGIN</b></p><p> PROCESS(a,b,s)</p><p><b> BEGIN</b></p><p> IF s=’0' THEN y<=a;</p><p> ELSE y<=b;
29、</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE mux21a;</p><p> 這個程序是一個簡單的2選1多路選擇器的VHDL完整描述。它體現(xiàn)出了VHDL程序的一般結構:使用庫(Use)定義區(qū)——實體(Entit
30、y)定義區(qū)——結構(Architecture)定義區(qū)。其中Use定義區(qū)描述的是這個程序使用的定義庫,類似于C語言的頭文件包括;</p><p> Entity 定義區(qū)描述的電子的外部結構,就是指元件的輸入和輸出接口,它用以定義一個芯片的管腳狀態(tài);Architecture定義區(qū)里面是這個程序的關鍵部分,包括算法,功能,硬件的行為等都是在Architecture區(qū)里面描述的。</p><p>
31、; 一個完整的VHDL程序是對一個功能元件從外部和內(nèi)部兩個方面來進行描述,由于元件本身具有層次性,因此它既可以作為完成某一功能的邏輯電路單元而獨立存在,也可以作為一個部件,和其他功能元件一起構成更復雜的功能元件或數(shù)字系統(tǒng),因此其單元的概念很清晰,可以靈活地應用于自頂向下的數(shù)字系統(tǒng)設計流程。</p><p> 2.2 自頂向下設計方法</p><p> 本設計采用自頂向下的設計方法來完
32、成電子鐘系統(tǒng)。所謂自頂向下的設計方法,是指在設計過程中,從數(shù)字系統(tǒng)的最高層次出發(fā),進行仿真驗證,再將系統(tǒng)劃分成各個子模塊。然后再對各個子模塊進行仿真驗證,合格之后經(jīng)EDA開發(fā)平臺由計算機自動綜合成門級電路,進行門級仿真驗證。自頂向下的方法強調在每個層次進行仿真驗證,以保證系統(tǒng)性能指標的實現(xiàn),以便于在早期發(fā)現(xiàn)和糾正設計中出現(xiàn)的錯誤。</p><p> 自頂向下設計方法有一些突出的優(yōu)點:</p>&l
33、t;p> ?。?)適應于復雜和大規(guī)模的數(shù)字系統(tǒng)的開發(fā),便于層次式、結構化的設計思想。</p><p> (2)各個子系統(tǒng)可以同時并發(fā),縮短設計周期。</p><p> ?。?)對于設計的系統(tǒng)進行層層分解,且在每一層次進行仿真驗證,設計錯誤可以在早期發(fā)現(xiàn),提高了設計的正確性。</p><p> ?。?)邏輯綜合之前的設計工作與具體的實現(xiàn)工藝、器件等無關,因此,
34、設計的可移植性良好。</p><p> 2.3 Quartus Ⅱ開發(fā)平臺</p><p> Quartus II是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供從設計輸入到器件編程的全部功能。Quartus II可以產(chǎn)生并識別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件,為其他 EDA 工具提供了方便的接口;可以在Quartus II集成環(huán)境中自動運行其他 EDA 工具。Quartu
35、s II 軟件的開發(fā)流程可概括為以下幾步:設計輸入、設計編譯、設計時序分析、設計仿真和器件編程,具有FPGA和CPLD芯片設計的所有階段的解決方案。</p><p> (1)設計輸入 Quartus II軟件在File菜單中提供“New Project Wizard...”向導,引導設計者完成項目的創(chuàng)建。當設計者需要向項目中添加新的VHDL文件時,可以通過“New”選項選擇添加。</p><
36、;p> (2)設計編譯 Quartus II編譯器完成的功能有:檢查設計錯誤、對邏輯進行綜合、提取定時信息、在指定的Altera系列器件中進行適配分割,產(chǎn)生的輸出文件將用于設計仿真、定時分析及器件編程。</p><p> ?。?)設計定時分析 單擊Project菜單下的“Timing Settings...”選項,可以方便地完成時間參數(shù)的設定。Quartus II軟件的時序分析功能在編譯過程結束之后自
37、動運行,并在編譯報告的Timing Analyses文件夾中顯示。</p><p> (4)設計仿真 Quartus II軟件允許設計者使用基于文本的向量文件(.vec)作為仿真器的激勵,也可以在Quartus II軟件的波形編輯器中產(chǎn)生向量波形文件(.vwf)作為仿真器的激勵。</p><p> ?。?)器件編程 設計者可以將配置數(shù)據(jù)通過MasterBlaster或ByteBl
38、asterMV通信電纜下載到器件當中,通過被動串行(Passive Serial)配置模式或JTAG模式對器件進行配置編程,還可以在JTAG模式下給多個器件進行編程。</p><p> 2.4 CPLD簡介</p><p> CPLD 是Complex Programmable Logic Device的縮寫,即復雜可編程邏輯器件,內(nèi)部結構為“與或陣列”。該結構來自于典型的 PAL 、
39、GAL 器件的結構。任意一個組合邏輯都可以用“與或”表達式來描述,所以該“與或陣列”結構能實現(xiàn)大量的組合邏輯功能。</p><p> CPLD是一種用戶根據(jù)各自需要而自行構造邏輯功能的數(shù)字集成電路。其基本設計方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法,生成相應的目標文件,通過下載電纜將代碼傳送到目標芯片中,實現(xiàn)設計的數(shù)字系統(tǒng)。</p><p> CPLD具有編程靈活、集成
40、度高、設計開發(fā)周期短、適用范圍寬、開發(fā)工具先進、設計制造成本低、對設計者的硬件經(jīng)驗要求低、標準產(chǎn)品無需測試、保密性強、價格大眾化等特點,可實現(xiàn)較大規(guī)模的電路設計,因此被廣泛應用于產(chǎn)品的原型設計和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應用中小規(guī)模通用數(shù)字集成電路的場合均可應用CPLD器件。CPLD器件已成為電子產(chǎn)品不可缺少的組成部分。</p><p> 3 電子鐘系統(tǒng)設計方案</p>&
41、lt;p> 3.1 電子鐘系統(tǒng)設計要求</p><p> ?。?)能夠對秒、分、小時進行計時,每日按24小時計時制;</p><p> ?。?)能夠作為計時器使用;</p><p> ?。?)能夠設定鬧鐘;</p><p> 3.2 系統(tǒng)設計方案概述及工作原理</p><p> 根據(jù)系統(tǒng)設計要求,系統(tǒng)設計采
42、用自頂向下設計方法,由正常計時模塊、定時器模塊、鬧鐘模塊、數(shù)碼轉換模塊、掃描多路輸出模塊組成。</p><p> ?。?)首先按下復位開關rst進行復位清零操作,電子鐘從新計時開始。</p><p> ?。?)為了便于時鐘計數(shù),需要1hz的時鐘信號。而實驗箱上提供給系統(tǒng)的頻率大于1hz,這里取22.1184MHZ,所以要對頻率進行分頻,用來實現(xiàn)系統(tǒng)輸入信號產(chǎn)生一個1hz的時鐘信號。<
43、/p><p> ?。?)為了設定鬧鐘,本文設計了一個目標時間調整程序。將alarm的開關轉成on,ok鍵是off時,6個數(shù)字即顯示00:00:00,以等待輸入。當按下調秒鍵sec_tune時,秒針將從0持續(xù)增加到59后,再返回0,任何時刻彈出按鍵即顯示當時的值,調分鍵與調時鍵的原理與此相同。當ok鍵是on時,則停止設定,顯示時間便到正常計時。</p><p> ?。?)計時器的原理與鬧鐘程序有
44、相似之處。將stop的開關轉成on,ok鍵是off時,6個數(shù)字即顯示00:00:00,以等待輸入。當按下調秒鍵sec_tune時,秒針將從0持續(xù)增加到59后,再返回0,任何時刻彈出按鍵即顯示當時的值,調分鍵與調時鍵的原理與此相同。當ok鍵是on時,則停止設定,顯示時間為所設定的計時起始時間,并開始進行計時,直到計時器顯示00:00:00為止。</p><p> ?。?)為了節(jié)省6個七段顯示器顯示所需的電流消耗,本
45、文利用視覺暫留原理來讓七段顯示器輪流來顯示。</p><p><b> 4 電子鐘頂層設計</b></p><p> 4.1 頂層設計分析</p><p> 對于電子鐘的設計,這里將采用自頂向下的設計方法進行設計,因此首先需要進行電子鐘的頂層設計。本節(jié)將首先介紹電子鐘的系統(tǒng)結構和模塊劃分,然后設計出頂層VHDL設計程序。</p>
46、;<p> 根據(jù)前邊敘述的電子鐘的設計要求、工作原理和設計方案,這里給出設計系統(tǒng)結構框圖和外部管腳圖分別如圖4.1和圖4.2所示。</p><p> 圖4.1 系統(tǒng)結構框圖</p><p> 圖4.2 系統(tǒng)外部管腳圖</p><p> 由電子鐘的外部管腳圖可知,系統(tǒng)的輸入輸出信號包括:</p><p> ?。?)復位
47、開關信號rst:輸入信號;</p><p> ?。?)外部輸入的時鐘信號clk:輸入信號;</p><p> ?。?)鬧鐘觸發(fā)信號alarm:輸入信號;</p><p> ?。?)定時器信號stop:輸入信號;</p><p> ?。?)定時器計時開始信號ok:輸入信號;</p><p> (6)秒/分/時調整信號
48、sec_tune,min_tune,hour_tune:輸入信號;</p><p> ?。?)鬧鐘/定時器標志信號led_alarm,led_stop:輸出信號;</p><p> (8)LED七段譯碼管的輸出信號seg4[0..6],seg2[0..6]:輸出信號。</p><p> 由圖4.1知,系統(tǒng)劃分了五個模塊,劃分的這五個模塊,每個模塊都包含若干個組件
49、,因此首先建立一個程序包把所有的組件包含在一起,以便于主程序模塊的調用,然后再對每個組件進行編程設計。</p><p><b> 4.2 頂層電路圖</b></p><p><b> 頂層電路圖見附頁。</b></p><p> 5 各模塊電路的設計</p><p> 5.1 正常計數(shù)時間功
50、能模塊</p><p> 系統(tǒng)必須維持一個持續(xù)不斷計數(shù)的時鐘,從時間00:00:00到23:59:59循環(huán)不斷。首先將22.1184MHZ的系統(tǒng)輸入脈沖除以22118400得到1HZ的基本秒輸入,然后除以60得到分數(shù),再除以60得到小時數(shù),再除以24得一個滿日指針,這些功能的實現(xiàn)要用到三種組件:分頻組件,60進制計時組件,24進制計時組件。</p><p> 5.1.1 分頻組件設計&
51、lt;/p><p> 本設計采用的是CPLD芯片EP1K100QC208-3,內(nèi)部晶振為22.1184MHz,但是數(shù)碼顯示管位掃描信號和其他模塊的工作頻率是1Hz。所以要用分頻組件來對輸入時鐘進行22118400分頻。</p><p> 下面圖5.1是生成的分頻組件元器件圖形。</p><p> 接口:clk——時鐘輸入,輸入信號22.1184MHz</p&
52、gt;<p> f1hz——1Hz輸出信號</p><p> 圖5.1分頻組件器件圖</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.2</p><p> 圖5.2 分頻組件仿真波形圖</p><p> 由圖5.2知,輸入信號的周期是80ns,輸出信號的周期是1769472118ns,176
53、9472118除以80約等于22118400,證明分頻是正確的。</p><p> 5.1.2 60進制計數(shù)器設計</p><p> 為了讓計算過程容易閱讀,個位數(shù)信號one(0~9)與十位數(shù)信號ten(0~5)先以整數(shù)形式出現(xiàn),計算完成后再轉換成位矢量形式(信號ones和tens),便于以后轉換成七段LED顯示碼。雖然十進制僅需2位的位矢量,但為統(tǒng)一以后的七段顯示器輸出顯示的需要,這
54、里是以4位的位矢量表示的。if_then語句與適當?shù)臈l件進位適合時鐘計時,十進制的進位歸零必須配合個位數(shù)的進位歸零,而個位數(shù)的進位歸零則不必配合十進制的進位歸零,所以在if_then 語句中,十進制的計數(shù)動作應放在內(nèi)層。秒數(shù)的計數(shù)以1Hz的輸入為觸發(fā)信號,分數(shù)的計數(shù)以秒數(shù)的進位輸出full_sec作為觸發(fā)。</p><p> 下面圖5.3是60進制計數(shù)器器件圖形。</p><p> 接
55、口: carry:1hz時鐘信號或者是秒的進位信號</p><p><b> rst:復位信號</b></p><p> times:輸出十進制的秒數(shù)或分數(shù)</p><p><b> full:進位信號</b></p><p> 圖5.3 60進制計數(shù)器器件圖</p><
56、p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.4</p><p> 圖5.4 60進制計數(shù)器仿真波形圖</p><p> 由圖5.4知,每來一個carry上升沿,計數(shù)器就加1,當計數(shù)器當?shù)竭_第60個上升沿時,full=1,times由59歸零,仿真符合60進制計數(shù)器的要求。</p><p> 5.1.3 24進制計數(shù)器設計</p
57、><p> 24進制計數(shù)器的結構和原理與60進制計數(shù)器相類似,只是將除以60改為除以24,并在接收60分進位指針carry時,檢查是否同時為23小時,再決定進位與否。因此個為數(shù)信號one與十位數(shù)信號ten 先以整數(shù)形式出現(xiàn),計算完成后再轉換成位矢量形式,便于以后轉成了LED顯示碼。雖然十進制僅需2位的位矢量,但為統(tǒng)一以后的七段顯示器輸出顯示的需要,這里是以4位的位矢量表示的。個位數(shù)的進位歸零在十進制為2時,必須在o
58、ne等于3時進位,同時送出進位指針full=1,1小時后將指針歸零。</p><p> 下面圖5.5是生成的24進制計數(shù)器器件圖形。</p><p> 接口:carry:1hz時鐘信號或者是分的進位信號</p><p><b> rst:復位信號</b></p><p> times:輸出十進制的小時數(shù)</
59、p><p><b> full:進位信號</b></p><p> 圖5.5 24進制計數(shù)器器件圖</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.6</p><p> 圖5.6 24進制計數(shù)器仿真波形</p><p> 由上圖5.6知,carry信號的周期是1m
60、s,當?shù)竭_第24個上升沿時,full=1,times歸零。仿真符合24進制計數(shù)器的要求。</p><p> 5.2 定時器設定于計時功能模塊</p><p> 在此模塊中,先利用定時器組件設定定時器的計時時間,并執(zhí)行計時動作,取得計時中止指針,然后由計時中止指針標示出計時中止狀態(tài)led_stop=’1’。</p><p> 5.2.1 定時器組件設計思路及原理
61、圖</p><p> 將stop的開關轉成on,ok鍵是off時,6個數(shù)字即顯示00:00:00,以等待輸入。當按下調秒鍵sec_tune時,秒針將從0持續(xù)增加到59后,再返回0,任何時刻彈出按鍵即顯示當時的值,調分鍵與調時鍵的原理與此相同。當ok鍵是on時,則停止設定,顯示時間為所設定的計時起始時間,并開始進行計時,直到計時器顯示00:00:00為止。</p><p> 接口:rst
62、:復位信號</p><p> hz1:系統(tǒng)時鐘1hz</p><p> stop:輸入停止信號</p><p><b> ok:計時是否開始</b></p><p> sec_tune:按下以調秒</p><p> min_tune:按下以調分</p><p>
63、 hour_tune:按下以調時</p><p> stop_sec:定時秒數(shù)</p><p> stop_min:定時分數(shù)</p><p> stop_hour:定時小時數(shù)</p><p> index:定時器輸出停止信號</p><p><b> disp:顯示信號</b></
64、p><p> 圖5.7定時組件器件圖</p><p> 5.2.2 定時器仿真波形</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.8</p><p> 圖5.8定時器仿真波形</p><p> 由圖5.8知,當ok=1時,確定定時時間為5秒,然后時間遞減,減到零后完成定時。此時ind
65、ex=1,定時結束。</p><p> 5.3 鬧鐘模塊設計</p><p> 在此模塊中,先利用alarm_set組件確定鬧鐘的設定時刻,然后確認指針開關ok處于ok處于on(‘1’)時,開始進行目前正常時間與鬧鐘設定時間的對比動作,對比完成即設定alarm_index為1,然后再進一步標示出鬧鐘設定狀態(tài)led_alarm=’1’。</p><p> 5.3
66、.1 鬧鐘組件的設計思路及原理圖</p><p> 鬧鐘的功能就是設定特定的時間然后與正常時間對比,時間相同特定的等就會亮。這個組件的功能是調整秒分時以確定鬧鐘時間,并配合alarm,ok兩鍵來確定動作。</p><p> 接口: rst:復位信號</p><p> hz1:系統(tǒng)時鐘1hz</p><p> alarm:輸入鬧鐘信號&
67、lt;/p><p><b> ok:鬧鐘是否開始</b></p><p> sec_tune:按下以調秒</p><p> min_tune:按下以調分</p><p> hour_tune:按下以調時</p><p><b> sec:鬧鐘的秒數(shù)</b></p&
68、gt;<p><b> min:鬧鐘的分數(shù)</b></p><p> hour:鬧鐘的小時數(shù)</p><p> 圖5.9鬧鐘組件器件圖</p><p> 5.3.2 仿真波形</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.10。</p><p>
69、; 圖5.10 鬧鐘模塊仿真波形</p><p> 由圖5.10,當按下alarm鍵,即alarm=1時,可以進行調時分秒,然后當ok=1時,鬧鐘設定結束。</p><p> 5.4 輸出選擇與數(shù)碼轉換模塊設計</p><p> 通常6個時分秒數(shù)字所顯示的是正常的計時鬧鐘,但在鬧鐘與定時器時間設定過程中,必須顯示正在設定的鬧鈴時間或定時器計時時間。另外,在定
70、時器計時過程中,為了觀察進行時間,必須顯示正在計時的剩余時間。本模塊的功能就是進行輸出選擇,并進行數(shù)碼轉換來完成將輸出時間由整數(shù)形式轉成BCD形式的工作。本模塊用到了秒/分查表組件和小時查表組件。</p><p> 5.4.1 秒/分查表組件設計</p><p> 在此設計中,為了計算方便,前面的都是以整數(shù)來處理時間,但在電路中,數(shù)值均以二進制的形式存儲,所以需要設計一個查表程序來將秒
71、數(shù)或分數(shù)的0到59共60個整數(shù)轉換成二進制編碼的十進制(BCD)表示法,以便將來轉換成七段顯示器格式輸出。</p><p> 下面圖5.11是生成的秒/分查表器件圖形。</p><p> 接口: interg:輸入0到59的整數(shù)信號</p><p> one:輸出個位的BCD碼</p><p> ten:輸出十位的BCD碼</p
72、><p> 圖5.11秒/分查表組件器件圖</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.12</p><p> 圖5.12 秒/分查表組件仿真波形</p><p> 由圖知,十進制轉化成二進制,one代表十進制的個位,ten代表十進制的十位。例如18是00011000。仿真結果證明程序可行。</p&g
73、t;<p> 5.4.2 小時查表組件設計</p><p> 小時查表組件的思路與秒/分組件相似,只是將小時數(shù)0到23共24個整數(shù)轉換成二進制編碼表示。</p><p> 下面圖5.13是小時查表器件圖</p><p> 接口:interg:輸入0到23的整數(shù)信號</p><p> one:輸出個位的BCD碼</
74、p><p> ten:輸出十位的BCD碼</p><p> 圖5.13 小時查表組件器件圖</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.14</p><p> 圖5.14小時查表組件仿真波形圖</p><p> 由圖知,十進制轉化成二進制,one代表十進制的個位,ten代表十進制的
75、十位。例如5是00000101。仿真結果證明程序可行。</p><p> 5.5 掃描多路輸出模塊</p><p> 為了節(jié)省IC的輸出引腳及耗電量,可以將4組數(shù)字輸出或2組數(shù)字輸出作為多路輸出;另外使用四合一型七段顯示器與視覺暫留效應可降低顯示耗電量。首先將6個數(shù)字通過bin2led組件將BCD碼轉換成七段顯示器碼,然后分別將分秒的4個數(shù)字通過scan4組件掃描輸出,而將小時數(shù)的2個
76、數(shù)字通過scan2組件掃描輸出,最后完成整個電子鐘的功能。</p><p> 5.5.1 bin2led 組件設計</p><p> 在一般電路中,數(shù)值均以二進制的形式存儲與計算,但是要將其輸出值七段譯碼管顯示時,則必須提供一個電路模塊專門將二進制轉換成十進制輸出使用。此處我們以查表方式來設計轉換電路,使用并行語句with_select,列出0到9等10中對照數(shù)值情況。若為10及其以上
77、的數(shù)字,則顯示錯誤信息“E”。本設計用的實驗平臺的七段譯碼管是共陰極的。</p><p> 下面圖5.15是bin2led的器件圖。</p><p> 接口:bin:0到9的二進制表示形式,輸入信號</p><p> led:七段譯碼管顯示管對應顯示的數(shù)值</p><p> 圖5.15 bin2led組件器件圖</p>
78、<p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.16</p><p> 圖5.16 bin2led組件仿真波形圖</p><p> 由上圖分析,輸入的是0到9的二進制表示形式,輸出的是七段顯示譯碼,本設計的七段顯示器是共陰極的,所以,如輸入時6的二進制0110,輸出是1101101。仿真證明程序是可行的。</p><p> 5.
79、5.2 scan4 組件設計</p><p> 在本組件中,sel線選擇控制輸出4組數(shù)字a,b,c,d,輪流輸出至多路輸出mux_out;同時,電源控制信號pa,pb,pc,pd也同步配合多路輸出。</p><p> 下面圖5.17是scan4器件圖。</p><p> 接口:rst:復位信號</p><p> clk:外部時鐘信號&
80、lt;/p><p> a,b,c,d:分秒的各位數(shù)的七段譯碼</p><p> pa,pb,pc,pd:驅動信號</p><p> 圖5.17 scan4組件器件圖</p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.18</p><p> 圖5.18 scan4仿真波形圖</p&g
81、t;<p> 從上圖可知,clk每來一個上升沿,輸出muxout就輸出a,b,c,d中的一組,同時對應pa,pb,pc,pd分別等于1,如clk來第一個上升沿,輸出muxout是a組,同時pa=1。符合多路輸出的原理,此組件的程序可行。</p><p> 5.5.3 scan2 組件設計</p><p> 本組件與scan4組件相似,sel線選擇控制輸出2組數(shù)字a,b,
82、輪流輸出至多路輸出mux_out;同時,電源控制信號pa,pb也同步配合多路輸出。</p><p> 接口:rst:復位信號</p><p> clk:外部時鐘信號</p><p> a,b:小時的各位數(shù)的七段譯碼</p><p> pa,pb:驅動信號</p><p> 圖5.19 scan2器件圖<
83、/p><p> 在QuartusⅡ軟件中進行仿真后,得到仿真時序圖如圖5.20</p><p> 圖5.20 scan2 仿真波形圖</p><p> 從上圖可知,clk每來兩個上升沿,輸出muxout就輸出a,b中的一組,同時對應pa,pb分別等于1,如clk來第一個上升沿,輸出muxout是a組,同時pa=1,當來第三個上升沿時,輸出b組,同時pb=1。符合多
84、路輸出的原理,此組件的程序可行。</p><p> 6 各模塊硬件實現(xiàn)結果</p><p> 當各個模塊仿真結束之后,就分配管腳,分配管腳如圖6.1。</p><p><b> 圖6.1分配管腳圖</b></p><p> 分配完管腳之后,再編譯一次,編譯通過之后,就可以下載到CPLD上了,如圖6.2,是編譯結果
85、,可以看到工程編譯成功。</p><p><b> 圖6.2編譯結果圖</b></p><p> 6.1 正常計數(shù)模塊的硬件實現(xiàn)結果</p><p> 當程序下載到CPLD上時,即顯示正常時間,從00:00:00開始,圖6.3是其中的一個時間點00:00:07。</p><p> 圖6.3正常計數(shù)模塊硬件實現(xiàn)結果
86、</p><p> 6.2 定時模塊的硬件實現(xiàn)結果</p><p> 當按下stop鍵,時間變?yōu)?0:00:00,如圖6.4(a),然后可以調秒、分、時,設定定時器的起始時間,按下ok鍵,設定結束,時間開始遞減,即定時開始,如圖6.4(b)。定時結束后,led_stop 燈亮。如圖6.4(c),然后顯示正常時間,如圖6.4(d)。</p><p> (a)
87、 (b)</p><p> (c) (d)</p><p> 圖6.3定時模塊硬件實現(xiàn)結果</p><p> 6.3 鬧鐘模塊硬件實現(xiàn)結果</p>
88、<p> 當按下alarm鍵,時間變?yōu)?0:00:00,如圖6.5(a),然后可以調秒、分、時,設定鬧鐘的起始時間,按下ok鍵,設定結束,如圖6.5(b)。</p><p> (a) (b)</p><p> 圖6.5鬧鐘模塊硬件實現(xiàn)結果</p><p><b> 7 小結</b&g
89、t;</p><p> 本電子鐘系統(tǒng)采用自頂向下的方法,用硬件描述語言VHDL完成。該系統(tǒng)具有開發(fā)周期短,設計靈活度高,模塊分明,易于實現(xiàn)多功能化等特點。但是本系統(tǒng)也有不足的地方,就是鬧鐘模塊不太完善,有待改進??傮w上說,本設計系統(tǒng)能夠實現(xiàn)電子鐘的基本功能,能夠較好的進行功能擴展。</p><p><b> 參考文獻:</b></p><p&g
90、t; [1] 林明權.VHDL數(shù)字控制系統(tǒng)設計范例[M]. 北京:電子工業(yè)出版社, 2003</p><p> [2] 雷伏容.VHDL電路設計[M]. 北京:清華大學出版社,2006</p><p> [3] 陳榮,陳華.VHDL芯片設計[M]. 北京:機械工業(yè)出版社,2006</p><p> [4] 楊恒,李愛國等. FPGA/CPLD最新實用技術指南
91、[M]. 北京:清華大學出版社, 2005</p><p> [5] 孫研鵬,張芝賢等.VHDL與可編程邏輯器件應用[M]. 北京:航空工業(yè)出版社, 2006</p><p> [6] 辛春艷.VHDL硬件描述語言[M]. 北京:國防工業(yè)出版社,2002</p><p> [7] 曾繁泰,陳美金.VHDL程序設計[M]. 北京:清華大學出版社, 2000<
92、;/p><p> [8] 閻石.數(shù)字電子技術[M]. 北京:高等教育出版社, 2006</p><p> [9] Bob Zeidman, 基于FPGA&CPLD的數(shù)字IC設計方法 [M]. 趙宏圖譯,北京:北京航空航天大學出版社,2004</p><p> [10] http://www.pld.com.cn</p><p>
93、[11] http://www.altera.com.cn</p><p><b> 致 謝</b></p><p> 本課題在設計和論文的寫作過程中,XX老師多次詢問設計進程,幫助我開拓設計思路,給我提供相關資料,感謝XX老師的悉心指導。還有要感謝在本課題的設計過程中給予我硬件方面的指導和幫助的物理與電子工程學院的XX老師。同時特別感謝我的班主任XX老師這四年來
94、對我的關心和幫助。感謝XX等老師對我的教育和培養(yǎng),他們對工作的敬業(yè)精神及踏踏實實的作風,給我產(chǎn)生了積極的影響。最后,感謝我的父親、母親和同學對我的理解與支持。</p><p><b> 附錄:部分模塊代碼</b></p><p> ?。?)分頻器關鍵代碼</p><p> entity div22118400 is</p>&
95、lt;p> port(clk:in std_logic;</p><p> f1hz:out std_logic);</p><p> end div22118400;</p><p> architecture behave of div22118400 is</p><p> signal temp: integer ra
96、nge 0 to 22118399;</p><p><b> begin</b></p><p> process(clk)</p><p><b> begin</b></p><p> if rising_edge(clk) then</p><p> tem
97、p<=temp+1;</p><p> if temp>=22118399 then f1hz<='1';</p><p> else f1hz<='0';</p><p><b> end if;</b></p><p><b> end if;
98、</b></p><p> end process;</p><p> end behave;</p><p> (2)鬧鐘模塊關鍵代碼</p><p> entity alarm_set is</p><p> port(rst,hz1:in std_logic;</p><
99、p> alarm,ok:in std_logic;</p><p> sec_tune:in std_logic;</p><p> min_tune:in std_logic;</p><p> hour_tune:in std_logic;</p><p> sec,min:out integer range 0 to 5
100、9;</p><p> hour: out integer range 0 to 23);</p><p> end alarm_set;</p><p> architecture behave of alarm_set is</p><p> signal sec_temp,min_temp: integer range 0 to
101、 59;</p><p> signal hour_temp:integer range 0 to 23;</p><p><b> begin</b></p><p> tuning:process(rst,hz1,alarm,ok)</p><p><b> begin</b></
102、p><p> if rst='1' then sec_temp<=0;min_temp<=0;hour_temp<=0;</p><p> elsif rising_edge(hz1) then</p><p> if alarm='1' and ok='0' then</p><
103、;p> if sec_tune='1' then </p><p> if sec_temp=59 then sec_temp<=0;</p><p> else sec_temp<=sec_temp+1;</p><p><b> end if;</b></p><p><
104、;b> end if;</b></p><p> if min_tune='1' then </p><p> if min_temp=59 then min_temp<=0;</p><p> else min_temp<=min_temp+1;</p><p><b> e
105、nd if;</b></p><p><b> end if;</b></p><p> if hour_tune='1' then </p><p> if hour_temp=23 then hour_temp<=0;</p><p> else hour_temp<=
106、hour_temp+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> else null;</p><p><b> end if;</b></p><p><b&g
107、t; end if;</b></p><p> end process tuning;</p><p> sec<=sec_temp;</p><p> min<=min_temp;</p><p> hour<=hour_temp;</p><p> end behave;&
108、lt;/p><p> ?。?)定時模塊關鍵代碼</p><p> entity stop_watch is</p><p> port(rst,hz1:in std_logic;</p><p> stop:in std_logic;</p><p> ok:in std_logic;</p><
109、;p> sec_tune:in std_logic;</p><p> min_tune:in std_logic;</p><p> hour_tune:in std_logic;</p><p> stop_sec,stop_min:out integer range 0 to 59;</p><p> stop_hour
110、:out integer range 0 to 23;</p><p> index:out std_logic;</p><p> disp:out std_logic);</p><p> end stop_watch;</p><p> architecture behave of stop_watch is</p>
111、<p> signal a_sec,a_min:integer range 0 to 59;</p><p> signal a_hour:integer range 0 to 23;</p><p><b> begin</b></p><p> process(stop,ok,hz1,rst)</p>&
112、lt;p><b> begin</b></p><p> if rst='1'then index<='0';disp<='0';</p><p> elsif rising_edge(hz1) then </p><p> if stop='1' and
113、 ok='0' then </p><p> if sec_tune='1' then </p><p> if a_sec=59 then a_sec<=0;</p><p> else a_sec<=a_sec+1;</p><p><b> end if;</b>
114、</p><p><b> end if;</b></p><p> if min_tune='1' then</p><p> if a_min=59 then a_min<=0;</p><p> else a_min<=a_min+1;</p><p>&
115、lt;b> end if;</b></p><p><b> end if;</b></p><p> if hour_tune='1' then</p><p> if a_hour=23 then a_hour<=0;</p><p> else a_hour<
116、=a_hour+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> disp<='1';</p><p> elsif stop='1' and ok='1' the
117、n </p><p> if a_sec=0 then </p><p> if a_min=0 then</p><p> if a_hour=0 then index<='1';</p><p> disp<='0';</p><p> else a_hour&
118、lt;=a_hour-1;</p><p> a_min<=59;</p><p> a_sec<=59;</p><p><b> end if;</b></p><p> else a_min<=a_min-1;</p><p> a_sec<=59;<
119、/p><p><b> end if;</b></p><p> else a_sec<=a_sec-1;</p><p> index<='0';</p><p> disp<='1';</p><p><b> end if;&
120、lt;/b></p><p> else disp<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> stop_s
121、ec<=a_sec;</p><p> stop_min<=a_min;</p><p> stop_hour<=a_hour;</p><p> end behave;</p><p> 一致,故需要在電路上加一個校時電路,同時標準的1HZ時間信號必須做到準確穩(wěn)定.通常使用石英晶體振蕩器電路構成數(shù)字鐘.</p
122、><p> 數(shù)字鐘的計數(shù)電路是用兩個六十進制計數(shù)電路和24進制計數(shù)電路實現(xiàn)的。數(shù)字鐘的計數(shù)電路的設計可以用反饋清零法。當計數(shù)器正常計數(shù)時,反饋門不起作用,只有當進位脈沖到來時,反饋信號將計數(shù)電路清零,實現(xiàn)相應模的循環(huán)計數(shù)。以60進制為例,當計數(shù)器從00,01,02,……,59計數(shù)時,反饋門不起作用,只有當?shù)?0個秒脈沖到來時,反饋信號隨即將計數(shù)電路清零,實現(xiàn)模為60的循環(huán)計數(shù)。</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于vhdl語言的簡易電子鐘課程設計
- 基于c語言的電子鐘設計畢業(yè)設計
- 電子鐘畢業(yè)設計---數(shù)字電子鐘的設計
- vhdl硬件描述語言及其應用-數(shù)字ic前端設計實例
- 數(shù)字系統(tǒng)設計與硬件描述語言-基于vhdl的洗衣機控制器設計
- eda課程設計--vhdl語言實現(xiàn)數(shù)字電子鐘的設計
- 數(shù)字電子鐘設計畢業(yè)設計
- 自動化專業(yè)畢業(yè)設計---基于c語言的電子鐘設計
- 數(shù)字電子鐘畢業(yè)設計
- 基于vhdl電子鐘的設計作業(yè)說明書
- 電子時鐘課程設計--基于vhdl的電子鐘的設計
- 畢業(yè)設計--基于plc的數(shù)字電子鐘設計
- verilog硬件描述語言課程設計
- 數(shù)字電子鐘設計(純硬件設計)
- 畢業(yè)設計--數(shù)字電子鐘設計報告
- 畢業(yè)設計----基于單片機的電子鐘設計
- 電子鐘的設計與實現(xiàn)畢業(yè)設計
- 電子鐘的程序設計畢業(yè)設計
- 畢業(yè)設計----基于 vhdl語言的多功能數(shù)字鐘設計
- 簡易電子鐘led畢業(yè)設計
評論
0/150
提交評論