基于VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)_第1頁(yè)
基于VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)_第2頁(yè)
基于VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)_第3頁(yè)
基于VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)_第4頁(yè)
基于VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于 VHDL 語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì) 摘 要 VHDL作為一種硬件描述語(yǔ)言,可用于數(shù)字電路與系統(tǒng)的描述、模擬和自動(dòng)設(shè)計(jì)與 仿真等,是當(dāng)今電子設(shè)計(jì)自動(dòng)化的核心技術(shù)。 本文使用VHDL語(yǔ)言設(shè)計(jì)了一個(gè)數(shù)字時(shí) 鐘電路,給出了設(shè)計(jì)該數(shù)字系統(tǒng)的流程和方法。本設(shè)計(jì)方法具有硬件描述能力強(qiáng),設(shè) 計(jì)方法靈活,便于修改等優(yōu)點(diǎn),大大降低了數(shù)字系統(tǒng)設(shè)計(jì)的難度,提高了工作效率。 本設(shè)計(jì)采用EDA技術(shù),以硬件描述語(yǔ)言VHDL為系統(tǒng)邏輯描述手段設(shè)計(jì)文件,在 MAX+Plus工具軟件環(huán)境下,采用自頂向下的設(shè)計(jì)方法,由各個(gè)基本模塊共同構(gòu)建了 一個(gè)基于CPLD的數(shù)字鐘。 系統(tǒng)主芯片采用EPM7128SLC84,由時(shí)鐘模塊、控制模

2、塊、計(jì)時(shí)模塊、數(shù)據(jù)譯碼 模塊、顯示以及報(bào)時(shí)模塊組成。經(jīng)編譯和仿真所設(shè)計(jì)的程序,在可編程邏輯器件上下 載驗(yàn)證,本系統(tǒng)能夠完成時(shí)、分、秒的分別顯示,由按鍵輸入進(jìn)行數(shù)字鐘的校時(shí)、清 零、啟停功能。 關(guān)鍵詞:硬件描述語(yǔ)言,VHDL,數(shù)字電路設(shè)計(jì), 數(shù)字鐘 Digital Clock Design Based On The Hardware Description Language(VHDL) Author: 。 。 。 。 。 。 。 。 Tutor: 。 。 。 。 。 。 。 。 Abstract VHDL can be used to describe,simulate and digital

3、system automatically. Nowdays,it becomes a key technology in automatic electronic design. There is a lot of superiority in this description language.This article introduces the method and the process using VHDL to design a digital system by an example of digital clock dasign. The result given in thi

4、s paper shows that VHDL is one of the strongest tools in hardware description and it is a flexible among the design method. The method given in this paper can reduce the difficulty of digital system design and improve the work efficiency. The use of EDA design technology, hardware-description langua

5、ge VHDL description logic means for the system design documents, in MaxplusII tools environment, a top-down design, by the various modules together build a CPLD-based digital clock. The main system chips used EPM7128SLC84, make up of the clock module, control module, time module, data decoding modul

6、e, display and broadcast module. After compiling the design and simulation procedures, the programmable logic device to download verification, the system can complete the hours, minutes and seconds respectively, using keys to modify, cleared , start and stop the digital clock. Key words: Hardware de

7、scription language,VHDL, Digital circuit design, digital clock 目 錄 1 緒論.1 1.1 課題背景 .1 1.2 本課題研究的內(nèi)容 .1 2 總體設(shè)計(jì)方案.3 3 單元模塊電路設(shè)計(jì).4 3.1 時(shí)間顯示電路模塊設(shè)計(jì) .4 3.2 按鍵及指示燈電路模塊的設(shè)計(jì) .5 3.3 蜂鳴器及有源晶振電路的設(shè)計(jì) .7 3.4 CPLD 編程下載電路的設(shè)計(jì).8 3.5 電源電路的設(shè)計(jì) .9 3.5.1 變壓器次級(jí)電壓估算.9 3.5.2 變壓器輸入功率的計(jì)算.9 3.5.3 濾波電容參數(shù)的選取.10 3.6 EPM7128SLC84 器件介紹.

8、10 4 CPLD 編程設(shè)計(jì).11 4.1 系統(tǒng)信號(hào)的定義及頂層模塊.11 4.2 時(shí)鐘節(jié)拍產(chǎn)生模塊 .12 4.3 模式選擇功能模塊.14 4.4 快速時(shí)間設(shè)置功能模塊 .16 4.5 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊 .16 4.6 鬧鈴時(shí)間設(shè)置模塊.18 4.7 鬧鈴與整點(diǎn)報(bào)時(shí)模塊.19 4.8 七段顯示譯碼模塊 .20 4.9 LED 顯示模塊 .22 5 系統(tǒng)功能仿真.25 5.1 時(shí)鐘節(jié)拍產(chǎn)生模塊的仿真波形 .25 5.2 模式選擇功能模塊的仿真波形 .26 5.3 鬧鈴設(shè)置功能模塊的仿真波形 .27 5.4 七段譯碼功能模塊的仿真波形 .28 5.5 LED 顯示功能模塊的仿真波形

9、.30 5.6 系統(tǒng)總體功能仿真波形 .31 總 結(jié).32 致 謝.33 參考文獻(xiàn).34 附錄 A:基于 CPLD 的多功能數(shù)字鐘電路圖 .35 附錄 B:基于 VHDL 語(yǔ)言的時(shí)、分、秒等電路的源碼.36 1 緒論 1.1 課題背景 我們已經(jīng)進(jìn)入了數(shù)字化和信息化的時(shí)代,其特點(diǎn)是各種數(shù)字產(chǎn)品的廣泛應(yīng)用。現(xiàn) 代數(shù)字產(chǎn)品在性能提高、復(fù)雜度增大的同時(shí),其更新?lián)Q代的步伐也越來(lái)越快,實(shí)現(xiàn)這 種進(jìn)步的因素在于生產(chǎn)制造技術(shù)和電子設(shè)計(jì)技術(shù)的進(jìn)步。生產(chǎn)制造技術(shù)以微細(xì)加工技 術(shù)為代表,目前已進(jìn)展到深亞微米階段,可以在幾平方厘米的芯片上集成數(shù)千萬(wàn)個(gè)晶 體管1。 PLD 器件和 EDA 技術(shù)的出現(xiàn),改變了傳統(tǒng)的設(shè)計(jì)思

10、路,使人們可以立足于 PLD 芯片來(lái)實(shí)現(xiàn)各種不同的功能,新的設(shè)計(jì)方法能夠由設(shè)計(jì)者自己定義器件內(nèi)部邏輯和管 腳,將原來(lái)由電路板設(shè)計(jì)完成的工作大部分放在芯片的設(shè)計(jì)中進(jìn)行。這樣不僅可以通 過(guò)芯片設(shè)計(jì)實(shí)現(xiàn)各種邏輯功能,而且由于管腳定義的靈活性,減輕了原理圖和印制板 設(shè)計(jì)的工作量和難度,增加了設(shè)計(jì)的自由度,提高了效率。同時(shí)這種設(shè)計(jì)減少了所需 芯片的種類和數(shù)量,縮小了體積,降低了功耗,提高了系統(tǒng)的可靠性2。 鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的 報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、定時(shí)啟閉電路、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至 各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化

11、為基礎(chǔ)的。因此,研究數(shù) 字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。 1.2 本課題研究的內(nèi)容 本設(shè)計(jì)是基于 CPLD(MAX7000S 系列)的多功能數(shù)字鐘設(shè)計(jì)。硬件界面為一個(gè) 6 位的 LED 數(shù)碼管,時(shí)間顯示方式為 6 位同時(shí)顯示,即顯示狀態(tài)為:88:88:88。顯 示的時(shí)間制為 24 小時(shí)制。三個(gè)時(shí)間設(shè)定按鍵,分別為 MODE 模式選擇鍵,SET 設(shè)定 鍵和 CHANGE 數(shù)值修改鍵3。 按鍵功能介紹:MODE 按鍵用來(lái)選擇當(dāng)前數(shù)字鐘的工作模式,系統(tǒng)正常工作在模 式 0 下。當(dāng)在正常時(shí)鐘模式下第一次按下 MODE 鍵時(shí),系統(tǒng)進(jìn)入模式 1,即鬧鈴模式, 在此模式下可以通過(guò) SET 和 CHAN

12、GE 按鍵的配合使用來(lái)設(shè)定所需要的鬧鈴時(shí)間。當(dāng) 再一次按下 MODE 按鍵后系統(tǒng)進(jìn)入手動(dòng)校時(shí)模式,在此模式下通過(guò) SET 和 CHANGE 按鍵的配合使用,可以改變當(dāng)前時(shí)間。SET 按鍵則用于在不同的模式下選擇當(dāng)前設(shè)定 的位置,比如當(dāng)前設(shè)定的位置是小時(shí),則再一次按下 SET 按鍵后當(dāng)前設(shè)定的位置變?yōu)?分鐘。CHANGE 按鍵用來(lái)將當(dāng)前設(shè)定位置的時(shí)間值加 1,當(dāng)長(zhǎng)時(shí)間按下 CHANGE 按 鍵時(shí),當(dāng)前設(shè)定值為連續(xù)快速加 1,此功能用于快速設(shè)定時(shí)間4。 系統(tǒng)帶四個(gè)指示燈電路,一個(gè)為電源指示燈,其他三個(gè)為工作狀態(tài)指示燈,即分 別為 LED_ALARM、LED_HOUR 和 LED_MIN。LED_A

13、LARM 用于指示當(dāng)前是否設(shè)有 鬧鈴,當(dāng) LED_ALARM 指示燈亮?xí)r表明當(dāng)前設(shè)有鬧鈴。LED_HOUR 和 LED_MIN 用 于指示當(dāng)前設(shè)定的是時(shí)間的小時(shí)還是分鐘,當(dāng) LED_HOUR 指示燈亮?xí)r表明此時(shí)設(shè)定的 是時(shí)間的小時(shí)值,當(dāng) LED_MIN 指示燈亮?xí)r表明此時(shí)設(shè)定的是時(shí)間的分鐘值。 鬧鈴的功能是實(shí)現(xiàn)當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)間點(diǎn)時(shí)產(chǎn)生為時(shí) 20s 的“嘀嘀嘀嘀”急促短音。 整點(diǎn)報(bào)時(shí)的功能是實(shí)現(xiàn)在每個(gè)整點(diǎn)的 5 秒鐘前產(chǎn)生整點(diǎn)報(bào)時(shí)音,報(bào)時(shí)音為“嘀嘀嘀-嘟” 4 短一長(zhǎng)音。 2 總體設(shè)計(jì)方案 整個(gè)設(shè)計(jì)的方式采用 TOP-DOWN 設(shè)計(jì)方法,即自頂向下的設(shè)計(jì)。這種設(shè)計(jì)方法 首先從系統(tǒng)設(shè)計(jì)入手,在頂層

14、進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。在功能級(jí)進(jìn)入仿真 和糾錯(cuò),并用硬件描述語(yǔ)言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,然后用綜合工具將設(shè)計(jì)轉(zhuǎn) 化為具體門電路網(wǎng)表,其對(duì)應(yīng)的物理實(shí)現(xiàn)可以是 PLD 器件或?qū)S眉呻娐?。由于設(shè)計(jì) 的主要仿真和調(diào)試過(guò)程是在高層次上完成的,這一方面有利于早期發(fā)現(xiàn)結(jié)構(gòu)上的錯(cuò)誤, 避免設(shè)計(jì)工作的浪費(fèi),同時(shí)也減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的一次成功 率5。 多功能數(shù)字鐘設(shè)計(jì)分為 1 個(gè)頂層模塊和 8 個(gè)功能子模塊。頂層模塊名稱為 clock.v。各功能子模塊分別為:系統(tǒng)分頻功能模塊 clk_generate.v、模式選擇功能模塊 mode_select.v、快速時(shí)間設(shè)置功能模塊 fa

15、st_settime.v、秒分時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊 time_mode0.v、鬧鈴時(shí)間設(shè)置模塊 alarm_set.v、鬧鈴與整點(diǎn)報(bào)時(shí)模塊 alarm.v、7 段顯示 譯碼模塊 decoder_7seg.v 以及 LED 顯示功能模塊 display.v。 圖 2.1 整個(gè)系統(tǒng)的模塊劃分 3 單元模塊電路設(shè)計(jì) 3.1 時(shí)間顯示電路模塊設(shè)計(jì) 時(shí)間顯示電路主要由兩部分組成,如圖 3.1 所示。其中一部分為六位 LED 數(shù)碼管 的驅(qū)動(dòng)電路,另一部分為 LED 數(shù)碼管電路。LED 驅(qū)動(dòng)電路由 Q1、Q2、Q3、Q4、Q5、Q6 六個(gè)三極管和 R5、R6、R7、R8、R9、R10 基極偏置電阻 組成。驅(qū)

16、動(dòng)三級(jí)管為 PNP 型三極管,用于開關(guān)電路中。當(dāng)三極管 Q1 的基極(即 CPLD 的 LED0 輸出端)為低電平時(shí),Q1 的發(fā)射結(jié)正向偏置,集電結(jié)反向偏置,因此 三極管處于導(dǎo)通狀態(tài),此時(shí)有 Vce0.20.3V。反之當(dāng) Q1 的基極為高電平時(shí) Q1 截止。 Q1Q6 的基極(LED0LED5)分別接 CPLD 的 PIN74、PIN73、PIN70、PIN69、PIN68、PIN67,分別作為 LED 數(shù)碼管的位選端6。 圖 3.1 LED 顯示電路 LED 的顯示方式有靜態(tài)顯示和動(dòng)態(tài)方式兩種工作方式。LED 顯示器工作于靜態(tài)顯 示方式時(shí),各位的共陰極(或共陽(yáng)極)連接在一起并接地(或+5V)

17、 ;每位的段碼線 (Adp)分別與一個(gè) 8 位的鎖存器輸出相連。之所以為靜態(tài)顯示,是因?yàn)楦鱾€(gè) LED 的 顯示字符的字符一經(jīng)確定,相應(yīng)鎖存器鎖存的段碼輸出將維持不變,直到送入另一個(gè) 字符的段碼為止。正因?yàn)槿绱耍o態(tài)顯示器的亮度都較高。但是因?yàn)殪o態(tài)顯示方式下, Q1 9015 Q2 9015 Q3 9015 Q4 9015 Q5 9015Q6 9015 R4 330 R5 10K R6 10K R7 10K R8 10K R9 10K R10 10K R11 1.5K R12 1.5K R13 1.5K R14 1.5K R15 1.5K R16 1.5K VCC LED0LED1LED2LED

18、3LED4LED5 A B C D E F G db 5 4 3 2 1 0 LED 各位 LED 的段碼線都是獨(dú)立的,因此一個(gè) 6 位的 LED 顯示器需要占用 6*8+6=54 個(gè) I/O 口,在這種情況下為了簡(jiǎn)化接線,本設(shè)計(jì)采用的是動(dòng)態(tài)掃描方式來(lái)顯示。 在動(dòng)態(tài)顯示方式下,通常將所有位的段碼線相應(yīng)并聯(lián)在一起,由一個(gè) 8 位的 I/O 口控制,形成段碼線的多路復(fù)用,而各位的共陽(yáng)極或共陰極分別由相應(yīng)的 I/O 口控制, 形成各位的分時(shí)選通7。圖 3.1 所示的電路是一個(gè)六位的 LED 顯示電路。其中段碼線 占用 1 個(gè) 8 位 I/O 口,而位選線占用六位 I/O 口。由于各段碼線并聯(lián),8 位

19、 I/O 口輸出 的段碼對(duì)各個(gè)顯示位來(lái)說(shuō)都是相同的。因此,在同一時(shí)刻,如果各位位選線都處于選 通狀態(tài)的話六位 LED 將顯示相同的字符。若使各個(gè) LED 能同時(shí)顯示出與本位相應(yīng)的 字符,就必須采用動(dòng)態(tài)顯示方式,即在某一時(shí)刻,只讓某一位的位選線處于選通狀態(tài), 而其他各位的位選處于關(guān)閉狀態(tài),同時(shí),段碼線上輸出相應(yīng)的要顯示的字符段碼。這 樣,在同一時(shí)刻,六位 LED 中只有選通的那一位顯示出字?jǐn)?shù),而其它則是熄滅的。同 樣在下一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),而其它各位的位選線處于關(guān)閉狀 態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時(shí)刻,只有選通位顯示相應(yīng)的字符, 而其它各位是熄滅的,如此循環(huán)下

20、去,就可以使各位顯示出將要顯示的字符。 3.2 按鍵及指示燈電路模塊的設(shè)計(jì) 根據(jù)電子電路常識(shí),采用灌電流工作方式的電路的功耗要比采用拉電流方式工作 的電路小。因此本設(shè)計(jì)中所有的外部鍵盤,指示二極管均采用灌電流的工作方式。當(dāng) 多功能數(shù)字鐘的按鍵未按下時(shí)按鍵的輸出(即 CPLD 的輸入)為低電平,當(dāng)按鍵按下 時(shí)輸出(即 CPLD 的輸入)為高電平。 在本設(shè)計(jì)中只有三個(gè)按鍵,分別為 MODE、SET、CHANGE。MODE 按鍵用于模 式選擇,按下一次 MODE 按鍵后電路進(jìn)入鬧鈴設(shè)置模式,在該模式下可以用 SET 鍵來(lái) 選擇當(dāng)前是設(shè)置小時(shí)還是設(shè)置分鐘,而用 CHANGE 鍵可以改變當(dāng)前設(shè)置鬧鈴的小

21、時(shí)或 分鐘(向上加一) 。再按一次 MODE 鍵則進(jìn)入手動(dòng)校時(shí)功能模式8。按鍵電路如圖 3.2 所示。 R 1 4.7K R 2 4.7K R 3 4.7K S1 M OD E S2 SE T S3 C HA NG E V CCV CCV CC M OD E SE T C HA NG E 圖 3.2 按鍵電路 在本設(shè)計(jì)中共有四個(gè)指示燈,一個(gè)為電源指示燈,其它三個(gè)是工作狀態(tài)指示燈, D1 為鬧鈴報(bào)警指示電路,當(dāng)設(shè)置鬧鈴后鬧鈴指示電路就工作在點(diǎn)亮狀態(tài),指示當(dāng)前設(shè) 有鬧鈴。D2 和 D3 用來(lái)指示當(dāng)前設(shè)置狀態(tài)。當(dāng)在鬧鈴設(shè)置模式和手動(dòng)校時(shí)模式下,D2 或 D3 會(huì)有一個(gè)在點(diǎn)亮狀態(tài),當(dāng) D2 亮?xí)r表示當(dāng)

22、前設(shè)置的是小時(shí),當(dāng) D3 亮?xí)r表示當(dāng)前 設(shè)置的是分鐘。指示燈電路如圖 3.3 所示。 R1 7 1K R1 8 1K R1 9 1K D 1 LE D D 2 LE D D 3 LE D 圖 3.3 指示燈電路 引腳的連接為,D1 接 CPLD 的 PIN61,D2 接 CPLD 的 PIN63,D3 接 CPLD 的 PIN64。當(dāng) CPLD 的引腳輸出為高電平時(shí)相應(yīng)的指示燈就點(diǎn)亮。 3.3 蜂鳴器及有源晶振電路的設(shè)計(jì) 在本設(shè)計(jì)中由于有音調(diào)的變換,所以必需采用交流蜂鳴器。由于 CPLD 管腳的驅(qū) 動(dòng)能力有限,因此通過(guò)連接一個(gè)三極管來(lái)增強(qiáng)驅(qū)動(dòng)能力,從而提高蜂鳴器的響度。二 極管 D9 起到續(xù)流

23、保護(hù)的作用,蜂鳴器電路如圖 3.4 所示。 R28 1K R29 RES2 Q7 8550 VCC D9 BUZZER 圖 3.4 蜂鳴器電路 系統(tǒng)時(shí)鐘采用 2.048MHZ 的有源晶體振蕩器。為了使有源晶振能輸出較好的波形, 必需保證供電的穩(wěn)定。所以在晶振電路的前端加了兩個(gè)小電容對(duì)電源進(jìn)行濾波,在時(shí) 鐘輸出端加了一個(gè)小電阻,能有效地抑制高次諧波和實(shí)現(xiàn)阻抗匹配。有源晶振電路如 圖 3.5 所示。 R25 33K C1 102 C2 102 VCC GND 2 CLKOUT 3 NC 1 VCC 4 圖 3.5 有源晶振電路 3.4 CPLD 編程下載電路的設(shè)計(jì) CPLD 器件多采用 JTAG

24、編程方式,JTAG 編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中 先對(duì)芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上因此而改變,簡(jiǎn)化的流程為先固定器件到電路板上, 再用 JTAG 編程,從而大大加快工程進(jìn)度。JTAG 接口可對(duì) PSD 芯片內(nèi)部的所有部件進(jìn) 行編程9。 在硬件結(jié)構(gòu)上,JTAG 接口包括兩部分:JTAG 端口和控制器。與 JTAG 接口兼 容的器件可以是微處理器(MPU) 、微控制器(MCU) 、PLD、CPL、FPGA、ASIC 或 其它符合 IEEE.1149.1 規(guī)范的芯片。IEEE.1149.1 標(biāo)準(zhǔn)中規(guī)定對(duì)應(yīng)于數(shù)字集成電路芯片 的每個(gè)引腳都設(shè)有一個(gè)移位寄存單元,稱為邊界掃描單元 BSC。它將 JTA

25、G 電路與內(nèi) 核邏輯電路聯(lián)系起來(lái),同時(shí)隔離內(nèi)核邏輯電路和芯片引腳。由集成電路的所有邊界掃 描單元構(gòu)成邊界掃描寄存器 BSR。邊界掃描寄存器電路僅在進(jìn)行 JTAG 測(cè)試時(shí)有效, 在集成電路正常工作時(shí)無(wú)效,不影響集成電路的功能。JTAG 編程方式對(duì) CPLD 和 FPGA 器件都支持,用于 CPLD 器件的下載文件是 POF 文件。JTAG 下載電路如圖 3.6 所示。JTAG 下載電路的 10 針接口引腳定義為:1 引腳為 TCK 時(shí)鐘,2 引腳接地,3 引腳 TDO 為測(cè)試數(shù)據(jù)輸出(數(shù)據(jù)輸出,來(lái)自器件) ,4 引腳接電源電壓,5 引腳 TMS 為測(cè)試模式選擇(編程使能) ,NC 為 NO-CO

26、NNECT。9 引腳 TDI 為測(cè)試數(shù)據(jù)輸入 (數(shù)據(jù)輸入到器件) ,10 引腳接地。 R20 RES2 R21 RES2 R22 RES2 R23 RES2 VCC VCC TCK TDO TMS TDI TCK 1 END 2 TDO 3 VCC 4 TMS 5 NC 6 NC 7 NC 8 TDI 9 GND 10 JTAG10 JTAG 圖 3.6 JTAG 下載電路 3.5 電源電路的設(shè)計(jì) 本設(shè)計(jì)中的核心器件為 MAX7000S 系列的 EPM7128SLC84,I/O 口電壓 VCCIO 和 核心電壓 VCCINT 均支持正 5V,因此在本設(shè)計(jì)中統(tǒng)一給 I/O 端口和內(nèi)核提供+5V

27、的電 壓。 R24 510 T1 TRANS1 220V Vin 1 GND 2 Vout 3 7805 IC1 C15 104 C13 104 + C11 2200UF + C17 47UF D4 LED Vac ViVo VCC 1 2 3 4 FUSE1 圖 3.7 電源電路 電源電路是由電源變壓器 T、橋堆、濾波電容 C11、C13、C15、C17 及集成三端 穩(wěn)壓電路 7805 以及保險(xiǎn)絲組成,其電路圖如圖 3.7 所示。電源的輸出為+5V 輸出。下 面介紹電源各部分參數(shù)的整定方法。 3.5.1 變壓器次級(jí)電壓估算 由于穩(wěn)壓器要正常工作時(shí)輸入端的電壓必需要比輸出端高 2.5V 時(shí)才能

28、使其穩(wěn)定工 作??紤]到市網(wǎng)交流電壓的波動(dòng)情況,在市網(wǎng)電壓為 200V 時(shí)也能正常工作,則有 220/200*Vac 要大于 8.0,所以 Vac 必需要大于 8.8V,即交流變壓器的副邊輸出電壓應(yīng) 該高于 8.8V,在本設(shè)計(jì)中選取 9V。 3.5.2 變壓器輸入功率的計(jì)算 假設(shè)負(fù)載電流為 500mA,若輸出電壓為 5V,則有效功率為 5V*0.5A=2.5W。正常 情況下變壓器輸出功率約為 9V*1.2*1.5A=5.4W,當(dāng)市網(wǎng)電壓升到 250V 時(shí),變壓器的 輸出功率為 5.4W*250/220=6.2W。小型電源變壓器的效率一般為 75%左右。因此電源 變壓器的輸入功率為 6.2W/0.

29、75=8.27W。 3.5.3 濾波電容參數(shù)的選取 假設(shè)負(fù)載電流為 500mA,若輸出電壓為 7.5V,則等效負(fù)載電阻為 15。電源頻率 為 50hz,則 T=0.02s,根據(jù) CRL=(35)T/2,則 C=(35)T/2 /RL=20003300uF。在本設(shè)計(jì)中取 2200uF。電容耐壓應(yīng)大于 1.42*Vac 即 Vc=1.42*9*250/220=14.5V(其中 250/220 是考慮市網(wǎng)電源電壓過(guò)高時(shí)的情況)。在本設(shè) 計(jì)中電容耐壓值取 16V。 3.6 EPM7128SLC84 器件介紹10 本次設(shè)計(jì)的核心器件采用 ALTERA 公司的 CPLD 可編程器件。ALTERA 公司的

30、MAX7000S 系列 CPLD 有著較高的性價(jià)比。MAX7000S 系列是基于 ALTERA 第二代 MAX 架構(gòu)的高密度、高性能的 PLD 器件。MAX7000 器件包含 32256 個(gè)可聯(lián)結(jié)成 16 個(gè)宏單元組的邏輯陣列塊的宏單元。 圖 3.8 EPM7128SLC 的 PLCC 封裝 EPM7128SLC84 是 MAX7000S 家族成員之一,它有如下的特點(diǎn):可用邏輯門個(gè)數(shù) 為 2500 門,128 個(gè)宏單元,8 個(gè)邏輯陣列塊,最大用戶可用 I/O 口 100 個(gè),支持 5V 在 系統(tǒng)編程和符合 IEEE.STD.1179 的 JTAG 下載接口,內(nèi)建邊界掃描測(cè)試電路,支持片 上調(diào)試

31、,EPM7128SLC84-15 的封裝如圖 3.8 所示。 4 CPLD 編程設(shè)計(jì) 4.1 系統(tǒng)信號(hào)的定義及頂層模塊 整個(gè)系統(tǒng)輸入、輸出信號(hào)的定義: sysclk:系統(tǒng)的時(shí)鐘信號(hào),由外部有源晶振產(chǎn)生,頻率為 2.048Mhz; mode:外接按鍵,模式選擇信號(hào),mode=0 時(shí)為時(shí)鐘模式,mode=1 時(shí)為設(shè)定鬧鐘模 式,mode=2 時(shí)為手動(dòng)設(shè)定時(shí)間模式; set:外接按鍵,用于在手動(dòng)設(shè)置時(shí)間時(shí)選擇是調(diào)整小時(shí)還是分鐘;若長(zhǎng)時(shí)間按住該 鍵,還可以使秒信號(hào)清零,用于精確調(diào)整時(shí)間; change:外接按鍵,手動(dòng)調(diào)整時(shí)間,每按一次計(jì)數(shù)器加 1;若長(zhǎng)時(shí)間按住則連續(xù)快 速加 1,用于快速調(diào)時(shí)和定時(shí);

32、alarm:接蜂鳴器,輸出到蜂鳴器的信號(hào),用于產(chǎn)生鬧鈴音和報(bào)時(shí)音;鬧鈴音為持 續(xù) 20s 的急促的“嘀嘀嘀”音,整點(diǎn)報(bào)時(shí)音為“嘀嘀嘀-嘟”四短一長(zhǎng)音;Dataout:輸 出信號(hào),輸出顯示時(shí)間的數(shù)碼管顯示的段碼12。 include clk_generate.v include time_mode0.v include mode_select.v include fast_settime.v include alarm_set.v include alarm.v include decoder_7seg.v include display.v module clock; clk_generate

33、 clk_generate(); /調(diào)用時(shí)鐘節(jié)拍產(chǎn)生模塊 time_mode0 time_mode0(); / 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊 mode_select mode_select(); /調(diào)用模式選擇功能模塊 fast_settime fast_settime(); /調(diào)用快速時(shí)間設(shè)置功能模塊 alarm_set alarm_set(); /調(diào)用鬧鈴時(shí)間設(shè)置模塊 alarm alarm(); /調(diào)用鬧鈴與整點(diǎn)報(bào)時(shí)模塊 decoder_7seg decoder_7seg(); /調(diào)用 7 段譯碼模塊 display display(); /調(diào)用顯示模塊 endmodule 4.2 時(shí)鐘

34、節(jié)拍產(chǎn)生模塊 由于整個(gè)系統(tǒng)只有一個(gè)晶體振蕩器,但是設(shè)計(jì)需要不同的時(shí)鐘信號(hào),因此需要設(shè) 計(jì)一個(gè)分頻進(jìn)程,對(duì)系統(tǒng)的有源晶振產(chǎn)生的 2.048Mhz 時(shí)鐘進(jìn)行分頻,產(chǎn)生需要的時(shí)鐘 節(jié)拍。在本設(shè)計(jì)中總共用到如下幾個(gè)時(shí)鐘節(jié)拍:1hz 的時(shí)鐘 CLK,4HZ 的時(shí)鐘 CLK_4hz,1Khz 的時(shí)鐘信號(hào) CLK_1K,和 50hz 的時(shí)鐘 displayclk。其中 CLK 節(jié)拍用于 產(chǎn)生秒計(jì)時(shí)信號(hào),在每個(gè) CLK 的上升沿到來(lái)時(shí)秒計(jì)數(shù)器加 1。CLK_4hz 節(jié)拍用于快速 調(diào)整時(shí)間,當(dāng)長(zhǎng)時(shí)間按下 CHANG 按鍵時(shí),當(dāng)前設(shè)置的時(shí)鐘快速增加11。CLK_1K 節(jié) 拍用于鬧鈴音的產(chǎn)生,displayclk

35、時(shí)鐘節(jié)拍是頻率為 50hz 的信號(hào),由于本設(shè)計(jì)中顯示 部分采用 LED 動(dòng)態(tài)顯示的方式,因此必需要有一個(gè)掃描信號(hào)對(duì) 6 位的 LED 的每個(gè)位 進(jìn)行輪流選通點(diǎn)亮。分頻進(jìn)程的原理是在 CPLD 內(nèi)部設(shè)置一個(gè)分頻計(jì)數(shù)器和一個(gè)觸發(fā) 器,當(dāng)計(jì)數(shù)到分頻值時(shí)觸發(fā)器進(jìn)行翻轉(zhuǎn),因此只要設(shè)置不同的分頻計(jì)數(shù)器的計(jì)數(shù)值就 可以得到不同的時(shí)鐘節(jié)拍。在 CPLD 內(nèi)部設(shè)置分頻計(jì)數(shù)器的缺點(diǎn)是,CPLD 的觸發(fā)器 資源有限,設(shè)置計(jì)數(shù)器對(duì)資源的占用比較大,因此盡量可能少用一些時(shí)鐘節(jié)拍,或者 盡量使需要使用的時(shí)鐘節(jié)拍相同,還有一種方法是利用兩個(gè)已有的時(shí)鐘信號(hào)進(jìn)行邏輯 運(yùn)算從而獲得想要的時(shí)鐘節(jié)拍。系統(tǒng)的分頻進(jìn)程如下: modul

36、e clk_generate(reset,sysclk,clk,clk_4hz,clk_1k,displayclk); input sysclk,reset; output clk,clk_4hz,clk_1k,displayclk; reg clk,clk_4hz,clk_1k,displayclk; reg 20:0div_count1; /分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生周期為 1S 的時(shí)鐘信號(hào) reg 19:0div_count2; /分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生頻率為 4hz 的時(shí)鐘信號(hào) reg 11:0div_count3; /分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生頻率為 1Khz 的時(shí)鐘信號(hào) reg 14

37、:0divclk_cnt; /分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生 50HZ 的數(shù)碼管掃描信號(hào) displayclk always (posedge sysclk) begin if (reset) div_count1=21d; if (div_count1=21d) /=0.5S begin clk=clk; /clk 為周期為 1S 的時(shí)鐘信號(hào) div_count1=21d; end else begin div_count1=div_count1+1b1; end end always (posedge sysclk) begin if (reset) div_count2=20d; if (di

38、v_count2=20d) /=0.25S begin clk_4hz=clk_4hz; /clk_4hz 為 4hz 的時(shí)鐘信號(hào) div_count2=20d; end else begin div_count2=div_count2+1b1; end end always (posedge sysclk) begin /產(chǎn)生周期為 50HZ 和 1KHZ 的時(shí)鐘節(jié)拍 end endmodule 4.3 模式選擇功能模塊 本設(shè)計(jì)是多功能數(shù)字鐘,實(shí)現(xiàn)的功能是以數(shù)字形式顯示時(shí)、分、秒的時(shí)間, 能進(jìn) 行手動(dòng)快校時(shí)、快校分或慢校時(shí)、慢校分。該多功能電子鐘共有 3 種模式。分別為: 模式 0 為正常時(shí)

39、鐘模式,模式 1 為設(shè)置鬧鈴功能,模式 2 為手動(dòng)校時(shí)功能。多功能電 子鐘共有三個(gè)按鍵,一個(gè) MODE 模式選擇鍵,用于選擇相應(yīng)的模式,一個(gè) SET 時(shí)間選 擇鍵,用于選擇當(dāng)前設(shè)定的是分鐘或者是小時(shí),一個(gè) CHANGE 鍵,用于給當(dāng)前值加 1,當(dāng)長(zhǎng)時(shí)間按住 CHANGE 時(shí)當(dāng)前值連續(xù)快速加 1,用于快速設(shè)定時(shí)間12。模式選擇 進(jìn)程如下所示。 module mode_select( clk,mode,set,change,count1,counta,count2,countb,led_min,led_hour,m); input mode,set,change,clk; output count

40、1,counta,count2,countb,led_min,led_hour,m; regbool,count1,counta,count2,countb; reg 1:0m; reg led_min,led_hour; always (posedge mode) begin if (m=2) m=0; else m=m+1; end always (posedge set) bool=bool; always (posedge clk) begin case(m) 2: begin if (bool) begin /手動(dòng)設(shè)定分鐘 count1=change; led_min,led_hou

41、r=2b10; end else begin /手動(dòng)設(shè)定小時(shí) counta=change; led_min,led_hour=2b01; end count2,countb=2b00; end 1:begin if (bool) begin /設(shè)定鬧鈴分鐘 count2=change; led_min,led_hour=2b10; end else begin countb=change; led_min,led_hour=2b01; end count2,countb=2b00; end default: ount1,count2,counta,countb,led_min,led_hour

42、=0; /正常時(shí)鐘狀態(tài) endcase end endmodule 4.4 快速時(shí)間設(shè)置功能模塊 多功能數(shù)字鐘要求有快速時(shí)間設(shè)置功能和慢設(shè)置功能。所謂快速時(shí)間設(shè)置功能是 指一直按住按鍵不放時(shí),當(dāng)前值能夠快速的增加;而慢設(shè)置是指每按一次按鍵則當(dāng)前 值向上增一??焖贂r(shí)間設(shè)置進(jìn)程如下所示。快速時(shí)間設(shè)置進(jìn)程,功能描述:長(zhǎng)時(shí)間按 下“change”鍵,則分別生成 num1、num2、num3、num4 信號(hào)用于連續(xù)快速加 1。 當(dāng)長(zhǎng)時(shí)間按下 CHANGE 按鍵后,利用系統(tǒng)的 CLK_4HZ 對(duì)計(jì)數(shù)器進(jìn)行快速加一處 理。如果不是長(zhǎng)時(shí)間按下 CHANGE 按鍵的話則每按一次 CHANGE 按建鍵就對(duì)相應(yīng)的

43、寄存器的值加一處理。 4.5 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊 秒計(jì)時(shí)程序采用周期為 1S 的基準(zhǔn)時(shí)鐘信號(hào) CLK,在每個(gè) CLK 時(shí)鐘信號(hào)的上升沿 對(duì)秒寄存器加 1,當(dāng)長(zhǎng)時(shí)間按下 SET 按鍵后對(duì)秒寄存器進(jìn)行清零,該功能用于準(zhǔn)確校 時(shí)。CT1 為分計(jì)時(shí)的同步時(shí)鐘,在每個(gè) CT1 時(shí)鐘信號(hào)的上升沿對(duì)分寄存器加 1。當(dāng)未 長(zhǎng)時(shí)間按下 CHANGE 按鍵時(shí),CT1 時(shí)鐘是周期為 60 秒的時(shí)鐘信號(hào)。當(dāng)長(zhǎng)時(shí)間按下 CHANGE 后,CT1 時(shí)鐘變?yōu)橹芷跒?4HZ 的時(shí)鐘信號(hào),該信號(hào)用于快速時(shí)間校準(zhǔn)功能。 CTA 時(shí)鐘是周期為 60 分鐘的時(shí)鐘信號(hào),在每個(gè) CTA 時(shí)鐘信號(hào)的上升沿對(duì)小時(shí)寄存器 加 1,當(dāng)

44、當(dāng)前設(shè)置值為小時(shí)且長(zhǎng)時(shí)間按下 CHANGE 按鍵后,CTA 時(shí)鐘變?yōu)橹芷跒?4HZ 的時(shí)鐘信號(hào),該信號(hào)用于快速時(shí)間校準(zhǔn)功能。 module time_mode0(clk,set,m,count1,ct1,counta,m_clk,h_clk,cta,sec1,min1,hour1); input clk,set,m,count1,counta,ct1,cta,m_clk,h_clk; inout 7:0sec1,min1,hour1; reg minclk,hclk; reg 7:0sec1,min1,hour1; wire m_clk,h_clk; always (posedge clk)

45、begin if (!(sec1 8d59) | set if (!(set else begin if (sec13:0=4b1001) begin sec13:0=4b0000; sec17:4=sec17:4 + 1b1; end else begin sec13:0 = sec13:0 + 1b1; minclk=1b0; end end end always (posedge ct1) /分鐘計(jì)時(shí)進(jìn)程 begin if (min1 = 8d59) begin min1 = 0; hclk = 1; end else begin if (min13:0 =9) begin min13:

46、0 =0; min17:4=min17:4 + 1; end else begin min13:0 =min13:0 +1; hclk =0; end end end always (posedge cta) /小時(shí)計(jì)時(shí)與調(diào)整進(jìn)程 begin if (hour1=8h23) hour1=0; else begin /此段 VHDL 語(yǔ)言時(shí)、分、秒源碼見附錄二 end end endmodule 4.6 鬧鈴時(shí)間設(shè)置模塊 module alarm_set(ct2,ctb,amin,ahour); input ct2,ctb; output 7:0amin,ahour; reg 7:0amin,a

47、hour; always (posedge ct2) begin if (amin=8d59) amin=0; else if (amin3:0=9) begin amin3:0=0; amin7:4=amin7:4 + 1; end else amin3:0=amin3:0 + 1; end always (posedge ctb) begin if (ahour=8d23) ahour=0; else if (ahour3:0=9) begin ahour3:0=0; ahour7:4=ahour7:4 + 1; end else ahour3:0=ahour3:0 + 1; end en

48、dmodule 4.7 鬧鈴與整點(diǎn)報(bào)時(shí)模塊 鬧鈴的功能是實(shí)現(xiàn)當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)間點(diǎn)時(shí)產(chǎn)生為時(shí) 20s 的“嘀嘀嘀嘀”急促短音。 整點(diǎn)報(bào)時(shí)的功能是實(shí)現(xiàn)在每個(gè)整點(diǎn)的 5 秒鐘前產(chǎn)生整點(diǎn)報(bào)時(shí)音,報(bào)時(shí)音為“嘀嘀嘀- 嘟”4 短一長(zhǎng)音。 module alarm(sysclk,clk_1k,min1,hour1,amin,ahour,alarm1,alarm2); input sysclk,clk_1k; input 7:0min1,hour1,amin,ahour; output alarm1,alarm2; reg alarm1,alarm2; reg 7:0sec1; always (posedge

49、sysclk) begin if (min1=amin) else alarm1=0; else alarm18d54)|(!(min1|sec1) if (sec18d58) alarm2=clk_1k; / 產(chǎn)生長(zhǎng)音 else alarm2=clk_1k; /產(chǎn)生短音 else alarm2=0; end endmodule 4.8 七段顯示譯碼模塊 由于時(shí)鐘計(jì)數(shù)模式采用的是 BCD 碼計(jì)數(shù)方式,而顯示采用的 8 段發(fā)光二極管,每 個(gè)段代表一位二進(jìn)制數(shù),在本系統(tǒng)中采用的是共陽(yáng)極接法,因此 7 段碼為共陽(yáng)編碼。 因此在數(shù)碼管上正常顯示時(shí)間的話,必需要對(duì)在三個(gè)模式下的時(shí)、分、秒進(jìn)行譯碼才 能得

50、到正常的顯示。 module decoder_7seg(sysclk,clk,clk_4hz,clk_1k,m,alarm1,alarm2,ahour,amin,min1,hour1,sec1,hour_ msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb); input sysclk,clk,clk_4hz,clk_1k, alarm1,alarm2; input 7:0ahour,amin,min1,hour1,sec1; input 1:0m; output 7:0hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,s

51、ec_lsb; reg 7:0hour,min,sec,hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb; wire led_alarm; always (posedge sysclk) begin case(m) 3b00: /在模式 0 下,將正常計(jì)數(shù)值賦值給寄存器,等待譯碼 begin hour=hour1; min=min1; sec=sec1; end 3b01: /在模式 1 下,將鬧鈴時(shí)間設(shè)置值賦值給寄存器,等待譯碼 begin hour=ahour; min=amin; sec=8hzz; end 3b10: /在模式 2 下,

52、將手動(dòng)計(jì)數(shù)值賦值給寄存器,等待譯碼 begin hour=hour1; min=min1; sec=8hzz; end endcase assign led_alarm=(ahour|amin)?1:0; /指示是否進(jìn)行了鬧鈴定時(shí) assign alarm=(alarm1)?clk_1k/產(chǎn)生鬧鈴音或整點(diǎn)報(bào)時(shí)音 end always ( sysclk ) begin case (hour7:4) 4b0000 : hour_msb=8hc0; /數(shù)字 0 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0001 : hour_msb=8hf9; /數(shù)字 1 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0010 : hou

53、r_msb=8ha4; /數(shù)字 2 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0011 : hour_msb=8hb0; /數(shù)字 3 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0100 : hour_msb=8h99; /數(shù)字 4 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0101 : hour_msb=8h92; /數(shù)字 5 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0110 : hour_msb=8h82; /數(shù)字 6 的共陽(yáng)編碼賦值給小時(shí)的十位 4b0111 : hour_msb=8hf8; /數(shù)字 7 的共陽(yáng)編碼賦值給小時(shí)的十位 4b1000 : hour_msb=8h80; /數(shù)字 8 的共陽(yáng)編碼賦值給小時(shí)的十位 4b10

54、01 : hour_msb=8h90; /數(shù)字 9 的共陽(yáng)編碼賦值給小時(shí)的十位 endcase case (hour3:0) 4b0000 : hour_lsb=8hc0; /數(shù)字 0 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0001 : hour_lsb=8hf9; /數(shù)字 1 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0010 : hour_lsb=8ha4; /數(shù)字 2 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0011 : hour_lsb=8hb0; /數(shù)字 3 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0100 : hour_lsb=8h99; /數(shù)字 4 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0101 : hour_lsb

55、=8h92; /數(shù)字 5 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0110 : hour_lsb=8h82; /數(shù)字 6 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b0111 : hour_lsb=8hf8; /數(shù)字 7 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b1000 : hour_lsb=8h80; /數(shù)字 8 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 4b1001 : hour_lsb=8h90; /數(shù)字 9 的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 endcase endmodule 4.9 LED 顯示模塊 LED 顯示電路與 CPLD 的接口電路共有兩種接法,一種接法是靜態(tài)顯示法,即外 接 6 個(gè)獨(dú)立的一位 LED 數(shù)碼管,在這種接法下

56、每一位 LED 的段碼線共有 8 根,因此 采用這種接法時(shí)總共需要 6*8+6=54 個(gè) I/O 口,而采用這種接法時(shí),分配 I/O 工作煩瑣, 且電路圖接線復(fù)雜。而第二種接法稱為動(dòng)態(tài)顯示法,采用共陽(yáng)或共陰極接法,而所謂 的共陽(yáng)極接法是指將每位 LED 的段碼線連在一起共同接電源的正極,因此采用這種接 法時(shí),一個(gè) 6 位的 LED 總共只需要 8+6=14 個(gè) I/O 口,即 8 位的段碼線和 6 位的位選 線,采用這種方式的接法時(shí),缺點(diǎn)是每次顯示時(shí) 6 位 LED 同時(shí)顯示相同的數(shù)字,因此 在這種接法下,必需要采用掃描的方式來(lái)顯示,即每一個(gè)時(shí)刻只能有一個(gè) LED 處在點(diǎn) 亮的狀態(tài),其它 LE

57、D 熄滅,此時(shí)送出相應(yīng)位的段碼。而在下一時(shí)刻則下一位 LED 處 于點(diǎn)亮狀態(tài),且在此時(shí)送出相應(yīng)的段碼,如此循環(huán)往復(fù)就能顯示完 6 個(gè)不同的數(shù)字。 因此采用這種接法時(shí)必需要有一個(gè)掃描信號(hào)來(lái)選擇當(dāng)前哪一位 LED 處于點(diǎn)亮狀態(tài)。 module display(displayclk,reset,ledselect,dataout,hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_ lsb); input displayclk,reset; input 7:0hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb;

58、output 5:0ledselect; output 7:0dataout; reg 7:0dataout; reg 5:0ledselect; reg 2:0state; always (posedge displayclk) begin if (reset=0) /復(fù)位信號(hào)用于波形仿真時(shí)對(duì)分頻計(jì)數(shù)器初始化 begin state2:0=3b000; ledselect= 6b; end else begin case(state) 3b000: begin ledselect=6b; /數(shù)碼管的第一位(小時(shí)的十位)被點(diǎn)亮 dataout=hour_msb; /顯示當(dāng)前時(shí)間的小時(shí)十位 st

59、ate = 3b001; end 3b001: begin ledselect=6b;/數(shù)碼管的第二位(小時(shí)的個(gè)位)被點(diǎn)亮 dataout=hour_lsb; /顯示當(dāng)前時(shí)間的小時(shí)個(gè)位 state = 3b010; end 3b010: begin ledselect=6b;/數(shù)碼管的第三位(分的十位)被點(diǎn)亮 dataout=min_msb;/顯示當(dāng)前時(shí)間的分的十位 state = 3b011; end 3b011: begin ledselect=6b;/數(shù)碼管的第四位(分的個(gè)位)被點(diǎn)亮 dataout=min_lsb; /顯示當(dāng)前時(shí)間的分的個(gè)位 state = 3b100; end 3b1

60、00: begin ledselect=6b;/數(shù)碼管的第五位(秒的十位)被點(diǎn)亮 dataout=sec_msb;/顯示當(dāng)前時(shí)間的秒的十位 state = 3b101; end 3b101: begin ledselect=6b;/數(shù)碼管的第六位(秒的個(gè)位)被點(diǎn)亮 dataout=sec_lsb;/顯示當(dāng)前時(shí)間的秒的個(gè)位 state = 3b000; end endcase end end endmodule 5 系統(tǒng)功能仿真 5.1 時(shí)鐘節(jié)拍產(chǎn)生模塊的仿真波形 時(shí)鐘節(jié)拍產(chǎn)生模塊 clk_generat.v 用于產(chǎn)生整個(gè)系統(tǒng)所需要的時(shí)鐘節(jié)拍。在本系統(tǒng) 中總共需要 4 個(gè)不同的時(shí)鐘節(jié)拍,分別為

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論