版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于 VHDL語(yǔ)言的多功能數(shù)字鐘設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 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ì)方法靈活,便于修改
2、等優(yōu)點(diǎn),大大降低了數(shù)字系統(tǒng)設(shè)計(jì)的難度,提高了工作效率。</p><p> 本設(shè)計(jì)采用EDA技術(shù),以硬件描述語(yǔ)言VHDL為系統(tǒng)邏輯描述手段設(shè)計(jì)文件,在MAX+PlusⅡ工具軟件環(huán)境下,采用自頂向下的設(shè)計(jì)方法,由各個(gè)基本模塊共同構(gòu)建了一個(gè)基于CPLD的數(shù)字鐘。</p><p> 系統(tǒng)主芯片采用EPM7128SLC84,由時(shí)鐘模塊、控制模塊、計(jì)時(shí)模塊、數(shù)據(jù)譯碼模塊、顯示以及報(bào)時(shí)模塊組成。經(jīng)編
3、譯和仿真所設(shè)計(jì)的程序,在可編程邏輯器件上下載驗(yàn)證,本系統(tǒng)能夠完成時(shí)、分、秒的分別顯示,由按鍵輸入進(jìn)行數(shù)字鐘的校時(shí)、清零、啟停功能。</p><p> 關(guān)鍵詞:硬件描述語(yǔ)言,VHDL,數(shù)字電路設(shè)計(jì), 數(shù)字鐘</p><p> Digital Clock Design Based On The Hardware Description Language(VHDL)</p>&
4、lt;p> Author: 。。。。。。。。</p><p> Tutor: 。。。。。。。。</p><p><b> Abstract</b></p><p> VHDL can be used to describe,simulate and digital system automatically. Nowdays,it
5、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 o
6、f digital clock dasign. The result given in this 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 p</p><p>
7、The use of EDA design technology, hardware-description language VHDL description logic means for the system design documents, in MaxplusII tools environment, a top-down design, by the various modules together build a CPL
8、D-based digital clock.</p><p> The main system chips used EPM7128SLC84, make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling the desi
9、gn 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.
10、 </p><p> Key words: Hardware description language,VHDL, Digital circuit design, digital clock</p><p><b> 目 錄</b></p><p><b> 1 緒論1</b></p><p&
11、gt; 1.1 課題背景1</p><p> 1.2 本課題研究的內(nèi)容1</p><p> 2 總體設(shè)計(jì)方案3</p><p> 3 單元模塊電路設(shè)計(jì)4</p><p> 3.1 時(shí)間顯示電路模塊設(shè)計(jì)4</p><p> 3.2 按鍵及指示燈電路模塊的設(shè)計(jì)5</p><p&g
12、t; 3.3 蜂鳴器及有源晶振電路的設(shè)計(jì)7</p><p> 3.4 CPLD編程下載電路的設(shè)計(jì)8</p><p> 3.5 電源電路的設(shè)計(jì)9</p><p> 3.5.1 變壓器次級(jí)電壓估算9</p><p> 3.5.2 變壓器輸入功率的計(jì)算9</p><p> 3.5.3 濾波電容參數(shù)的選取
13、10</p><p> 3.6 EPM7128SLC84器件介紹10</p><p> 4 CPLD 編程設(shè)計(jì)11</p><p> 4.1系統(tǒng)信號(hào)的定義及頂層模塊11</p><p> 4.2 時(shí)鐘節(jié)拍產(chǎn)生模塊12</p><p> 4.3模式選擇功能模塊14</p><p&
14、gt; 4.4 快速時(shí)間設(shè)置功能模塊16</p><p> 4.5 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊16</p><p> 4.6鬧鈴時(shí)間設(shè)置模塊18</p><p> 4.7鬧鈴與整點(diǎn)報(bào)時(shí)模塊19</p><p> 4.8 七段顯示譯碼模塊20</p><p> 4.9 LED顯示模塊22<
15、/p><p> 5 系統(tǒng)功能仿真25</p><p> 5.1 時(shí)鐘節(jié)拍產(chǎn)生模塊的仿真波形25</p><p> 5.2 模式選擇功能模塊的仿真波形26</p><p> 5.3 鬧鈴設(shè)置功能模塊的仿真波形27</p><p> 5.4 七段譯碼功能模塊的仿真波形28</p><p&
16、gt; 5.5 LED顯示功能模塊的仿真波形30</p><p> 5.6 系統(tǒng)總體功能仿真波形31</p><p><b> 總 結(jié)32</b></p><p><b> 致 謝33</b></p><p><b> 參考文獻(xiàn)34</b></p&
17、gt;<p> 附錄A:基于CPLD的多功能數(shù)字鐘電路圖35</p><p> 附錄B:基于VHDL語(yǔ)言的時(shí)、分、秒等電路的源碼36</p><p><b> 1 緒論</b></p><p><b> 1.1 課題背景</b></p><p> 我們已經(jīng)進(jìn)入了數(shù)字化和信
18、息化的時(shí)代,其特點(diǎn)是各種數(shù)字產(chǎn)品的廣泛應(yīng)用?,F(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]。</p><p> PLD器件和EDA技術(shù)的出現(xiàn),改變了傳統(tǒng)的設(shè)計(jì)思路,使人們可以立足于PLD芯片來(lái)實(shí)現(xiàn)各種不同的功能,新的設(shè)計(jì)方法能
19、夠由設(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]。</p><p> 鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的
20、報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、定時(shí)啟閉電路、定時(shí)開(kāi)關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p> 1.2 本課題研究的內(nèi)容</p><p> 本設(shè)計(jì)是基于CPLD(MAX7000S系列)的多功能數(shù)字鐘設(shè)計(jì)。硬件界面為一個(gè)6位的LED數(shù)碼管,時(shí)間顯示方式為6位同時(shí)顯示,即顯示狀態(tài)為
21、:88:88:88。顯示的時(shí)間制為24小時(shí)制。三個(gè)時(shí)間設(shè)定按鍵,分別為MODE模式選擇鍵,SET設(shè)定鍵和CHANGE數(shù)值修改鍵[3]。</p><p> 按鍵功能介紹:MODE按鍵用來(lái)選擇當(dāng)前數(shù)字鐘的工作模式,系統(tǒng)正常工作在模式0下。當(dāng)在正常時(shí)鐘模式下第一次按下MODE鍵時(shí),系統(tǒng)進(jìn)入模式1,即鬧鈴模式,在此模式下可以通過(guò)SET和CHANGE按鍵的配合使用來(lái)設(shè)定所需要的鬧鈴時(shí)間。當(dāng)再一次按下MODE按鍵后系統(tǒng)進(jìn)入
22、手動(dòng)校時(shí)模式,在此模式下通過(guò)SET和CHANGE按鍵的配合使用,可以改變當(dāng)前時(shí)間。SET按鍵則用于在不同的模式下選擇當(dāng)前設(shè)定的位置,比如當(dāng)前設(shè)定的位置是小時(shí),則再一次按下SET按鍵后當(dāng)前設(shè)定的位置變?yōu)榉昼姟HANGE按鍵用來(lái)將當(dāng)前設(shè)定位置的時(shí)間值加1,當(dāng)長(zhǎng)時(shí)間按下CHANGE按鍵時(shí),當(dāng)前設(shè)定值為連續(xù)快速加1,此功能用于快速設(shè)定時(shí)間[4]。</p><p> 系統(tǒng)帶四個(gè)指示燈電路,一個(gè)為電源指示燈,其他三個(gè)為工
23、作狀態(tài)指示燈,即分別為L(zhǎng)ED_ALARM、LED_HOUR和LED_MIN。LED_ALARM用于指示當(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í)間的分鐘值。</p><p> 鬧鈴的功能是實(shí)現(xiàn)當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)間點(diǎn)時(shí)產(chǎn)生
24、為時(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)音。 </p><p><b> 2 總體設(shè)計(jì)方案</b></p><p> 整個(gè)設(shè)計(jì)的方式采用TOP-DOWN設(shè)計(jì)方法,即自頂向下的設(shè)計(jì)。這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。在功能級(jí)進(jìn)入仿真和糾錯(cuò),并用硬件
25、描述語(yǔ)言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,然后用綜合工具將設(shè)計(jì)轉(zhuǎn)化為具體門(mé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]。</p><p> 多功能數(shù)字鐘設(shè)計(jì)分為1個(gè)頂層模塊和8個(gè)功能子模塊。頂層模塊名稱為clock.v。各功能子模塊分別為:
26、系統(tǒng)分頻功能模塊clk_generate.v、模式選擇功能模塊mode_select.v、快速時(shí)間設(shè)置功能模塊fast_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。</p><p> 圖2.1 整個(gè)系統(tǒng)的模塊劃分&l
27、t;/p><p> 3 單元模塊電路設(shè)計(jì)</p><p> 3.1 時(shí)間顯示電路模塊設(shè)計(jì)</p><p> 時(shí)間顯示電路主要由兩部分組成,如圖3.1所示。其中一部分為六位LED數(shù)碼管的驅(qū)動(dòng)電路,另一部分為L(zhǎng)ED數(shù)碼管電路。LED驅(qū)動(dòng)電路由Q1、Q2、Q3、Q4、Q5、Q6六個(gè)三極管和R5、R6、R7、R8、R9、R10基極偏置電阻組成。驅(qū)動(dòng)三級(jí)管為PNP型三極管,
28、用于開(kāi)關(guān)電路中。當(dāng)三極管Q1的基極(即CPLD的LED0輸出端)為低電平時(shí),Q1的發(fā)射結(jié)正向偏置,集電結(jié)反向偏置,因此三極管處于導(dǎo)通狀態(tài),此時(shí)有Vce≈0.2~0.3V。反之當(dāng)Q1的基極為高電平時(shí)Q1截止。Q1~Q6的基極(LED0~LED5)分別接CPLD的PIN74、PIN73、PIN70、PIN69、PIN68、PIN67,分別作為L(zhǎng)ED數(shù)碼管的位選端[6]。 </p><p> 圖3.1 LED顯示電路
29、</p><p> LED的顯示方式有靜態(tài)顯示和動(dòng)態(tài)方式兩種工作方式。LED顯示器工作于靜態(tài)顯示方式時(shí),各位的共陰極(或共陽(yáng)極)連接在一起并接地(或+5V);每位的段碼線(A~dp)分別與一個(gè)8位的鎖存器輸出相連。之所以為靜態(tài)顯示,是因?yàn)楦鱾€(gè)LED的顯示字符的字符一經(jīng)確定,相應(yīng)鎖存器鎖存的段碼輸出將維持不變,直到送入另一個(gè)字符的段碼為止。正因?yàn)槿绱耍o態(tài)顯示器的亮度都較高。但是因?yàn)殪o態(tài)顯示方式下,各位LED的段
30、碼線都是獨(dú)立的,因此一個(gè)6位的LED顯示器需要占用6*8+6=54個(gè)I/O口,在這種情況下為了簡(jiǎn)化接線,本設(shè)計(jì)采用的是動(dòng)態(tài)掃描方式來(lái)顯示。</p><p> 在動(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口,而
31、位選線占用六位I/O口。由于各段碼線并聯(lián),8位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ù),而其它則是熄滅的。同樣在下
32、一時(shí)刻,只讓下一位的位選線處于選通狀態(tài),而其它各位的位選線處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時(shí)刻,只有選通位顯示相應(yīng)的字符,而其它各位是熄滅的,如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。</p><p> 3.2 按鍵及指示燈電路模塊的設(shè)計(jì)</p><p> 根據(jù)電子電路常識(shí),采用灌電流工作方式的電路的功耗要比采用拉電流方式工作的電路小。因此本設(shè)計(jì)中所有的外部
33、鍵盤(pán),指示二極管均采用灌電流的工作方式。當(dāng)多功能數(shù)字鐘的按鍵未按下時(shí)按鍵的輸出(即CPLD的輸入)為低電平,當(dāng)按鍵按下時(shí)輸出(即CPLD的輸入)為高電平。 </p><p> 在本設(shè)計(jì)中只有三個(gè)按鍵,分別為MODE、SET、CHANGE。MODE按鍵用于模式選擇,按下一次MODE按鍵后電路進(jìn)入鬧鈴設(shè)置模式,在該模式下可以用SET鍵來(lái)選擇當(dāng)前是設(shè)置小時(shí)還是設(shè)置分鐘,而用CHANGE鍵可以改變當(dāng)前設(shè)置鬧鈴的小時(shí)或分
34、鐘(向上加一)。再按一次MODE鍵則進(jìn)入手動(dòng)校時(shí)功能模式[8]。按鍵電路如圖3.2所示。</p><p><b> 圖3.2 按鍵電路</b></p><p> 在本設(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è)置模式和
35、手動(dòng)校時(shí)模式下,D2或D3會(huì)有一個(gè)在點(diǎn)亮狀態(tài),當(dāng)D2亮?xí)r表示當(dāng)前設(shè)置的是小時(shí),當(dāng)D3亮?xí)r表示當(dāng)前設(shè)置的是分鐘。指示燈電路如圖3.3所示。</p><p> 圖3.3 指示燈電路</p><p> 引腳的連接為,D1接CPLD的PIN61,D2接CPLD的PIN63,D3接CPLD的PIN64。當(dāng)CPLD的引腳輸出為高電平時(shí)相應(yīng)的指示燈就點(diǎn)亮。</p><p>
36、 3.3 蜂鳴器及有源晶振電路的設(shè)計(jì)</p><p> 在本設(shè)計(jì)中由于有音調(diào)的變換,所以必需采用交流蜂鳴器。由于CPLD管腳的驅(qū)動(dòng)能力有限,因此通過(guò)連接一個(gè)三極管來(lái)增強(qiáng)驅(qū)動(dòng)能力,從而提高蜂鳴器的響度。二極管D9起到續(xù)流保護(hù)的作用,蜂鳴器電路如圖3.4所示。</p><p><b> 圖3.4蜂鳴器電路</b></p><p> 系統(tǒng)時(shí)鐘采
37、用2.048MHZ的有源晶體振蕩器。為了使有源晶振能輸出較好的波形,必需保證供電的穩(wěn)定。所以在晶振電路的前端加了兩個(gè)小電容對(duì)電源進(jìn)行濾波,在時(shí)鐘輸出端加了一個(gè)小電阻,能有效地抑制高次諧波和實(shí)現(xiàn)阻抗匹配。有源晶振電路如圖3.5所示。</p><p> 圖3.5有源晶振電路</p><p> 3.4 CPLD編程下載電路的設(shè)計(jì)</p><p> CPLD器件多采用
38、JTAG編程方式,JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對(duì)芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上因此而改變,簡(jiǎn)化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進(jìn)度。JTAG接口可對(duì)PSD芯片內(nèi)部的所有部件進(jìn)行編程[9]。</p><p> 在硬件結(jié)構(gòu)上,JTAG 接口包括兩部分:JTAG 端口和控制器。與JTAG 接口兼容的器件可以是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、
39、ASIC 或其它符合IEEE.1149.1 規(guī)范的芯片。IEEE.1149.1 標(biāo)準(zhǔn)中規(guī)定對(duì)應(yīng)于數(shù)字集成電路芯片的每個(gè)引腳都設(shè)有一個(gè)移位寄存單元,稱為邊界掃描單元BSC。它將JTAG 電路與內(nèi)核邏輯電路聯(lián)系起來(lái),同時(shí)隔離內(nèi)核邏輯電路和芯片引腳。由集成電路的所有邊界掃描單元構(gòu)成邊界掃描寄存器BSR。邊界掃描寄存器電路僅在進(jìn)行JTAG 測(cè)試時(shí)有效,在集成電路正常工作時(shí)無(wú)效,不影響集成電路的功能。JTAG編程方式對(duì)CPLD和FPGA器件都支持
40、,用于CPLD器件的下載文件是POF文件。JTAG下載電路如圖3.6所示。JTAG下載電路的10針接口引腳定義為:1引腳為T(mén)CK時(shí)鐘,2引腳接地,3引腳TDO為測(cè)試數(shù)據(jù)輸出(數(shù)據(jù)輸出,來(lái)自器件),4引腳接電源電壓,5引腳TMS為測(cè)試模式選擇(編程使能),NC為NO-CONNECT。9引腳TDI為測(cè)試數(shù)據(jù)輸入(數(shù)據(jù)輸入到器件),10引腳接地。</p><p> 圖3.6 JTAG下載電路</p&
41、gt;<p> 3.5 電源電路的設(shè)計(jì)</p><p> 本設(shè)計(jì)中的核心器件為MAX7000S系列的EPM7128SLC84,I/O口電壓VCCIO和核心電壓VCCINT均支持正5V,因此在本設(shè)計(jì)中統(tǒng)一給I/O端口和內(nèi)核提供+5V的電壓。</p><p><b> 圖3.7 電源電路</b></p><p> 電源電路是由
42、電源變壓器T、橋堆、濾波電容C11、C13、C15、C17及集成三端穩(wěn)壓電路7805以及保險(xiǎn)絲組成,其電路圖如圖3.7所示。電源的輸出為+5V輸出。下面介紹電源各部分參數(shù)的整定方法。</p><p> 3.5.1 變壓器次級(jí)電壓估算</p><p> 由于穩(wěn)壓器要正常工作時(shí)輸入端的電壓必需要比輸出端高2.5V時(shí)才能使其穩(wěn)定工作??紤]到市網(wǎng)交流電壓的波動(dòng)情況,在市網(wǎng)電壓為200V時(shí)也能正
43、常工作,則有220/200*Vac要大于8.0,所以Vac必需要大于8.8V,即交流變壓器的副邊輸出電壓應(yīng)該高于8.8V,在本設(shè)計(jì)中選取9V。 </p><p> 3.5.2 變壓器輸入功率的計(jì)算</p><p> 假設(shè)負(fù)載電流為500mA,若輸出電壓為5V,則有效功率為5V*0.5A=2.5W。正常情況下變壓器輸出功率約為9V*1.2*1.5A=5.4W,當(dāng)市網(wǎng)電壓升到250V時(shí),變
44、壓器的輸出功率為5.4W*250/220=6.2W。小型電源變壓器的效率一般為75%左右。因此電源變壓器的輸入功率為6.2W/0.75=8.27W。</p><p> 3.5.3 濾波電容參數(shù)的選取</p><p> 假設(shè)負(fù)載電流為500mA,若輸出電壓為7.5V,則等效負(fù)載電阻為15Ω。電源頻率為50hz,則T=0.02s,根據(jù)CRL>=(3~5)T/2,則C>=[(3~
45、5)T/2]/RL=2000~3300uF。在本設(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。</p><p> 3.6 EPM7128SLC84器件介紹[10]</p><p> 本次設(shè)計(jì)的核心器件采用ALTERA公司的CPLD可編程器件。
46、ALTERA公司的MAX7000S系列CPLD有著較高的性價(jià)比。MAX7000S系列是基于ALTERA第二代MAX架構(gòu)的高密度、高性能的PLD器件。MAX7000器件包含32~256個(gè)可聯(lián)結(jié)成16個(gè)宏單元組的邏輯陣列塊的宏單元。</p><p> 圖3.8 EPM7128SLC的PLCC封裝</p><p> EPM7128SLC84是MAX7000S家族成員之一,它有如下的特點(diǎn):可用
47、邏輯門(mén)個(gè)數(shù)為2500門(mén),128個(gè)宏單元,8個(gè)邏輯陣列塊,最大用戶可用I/O口100個(gè),支持5V在系統(tǒng)編程和符合IEEE.STD.1179的JTAG下載接口,內(nèi)建邊界掃描測(cè)試電路,支持片上調(diào)試,EPM7128SLC84-15的封裝如圖3.8所示。</p><p> 4 CPLD 編程設(shè)計(jì)</p><p> 4.1系統(tǒng)信號(hào)的定義及頂層模塊</p><p> 整個(gè)系
48、統(tǒng)輸入、輸出信號(hào)的定義:</p><p> sysclk:系統(tǒng)的時(shí)鐘信號(hào),由外部有源晶振產(chǎn)生,頻率為2.048Mhz;</p><p> mode:外接按鍵,模式選擇信號(hào),mode=0時(shí)為時(shí)鐘模式,mode=1時(shí)為設(shè)定鬧鐘模式,mode=2時(shí)為手動(dòng)設(shè)定時(shí)間模式;</p><p> set:外接按鍵,用于在手動(dòng)設(shè)置時(shí)間時(shí)選擇是調(diào)整小時(shí)還是分鐘;若長(zhǎng)時(shí)間按住該鍵,
49、還可以使秒信號(hào)清零,用于精確調(diào)整時(shí)間;</p><p> change:外接按鍵,手動(dòng)調(diào)整時(shí)間,每按一次計(jì)數(shù)器加1;若長(zhǎng)時(shí)間按住則連續(xù)快速加1,用于快速調(diào)時(shí)和定時(shí);</p><p> alarm:接蜂鳴器,輸出到蜂鳴器的信號(hào),用于產(chǎn)生鬧鈴音和報(bào)時(shí)音;鬧鈴音為持續(xù)20s的急促的“嘀嘀嘀”音,整點(diǎn)報(bào)時(shí)音為“嘀嘀嘀---嘟”四短一長(zhǎng)音;Dataout:輸出信號(hào),輸出顯示時(shí)間的數(shù)碼管顯示的段碼
50、[12]。</p><p> `include "clk_generate.v" </p><p> `include "time_mode0.v"</p><p> `include "mode_select.v"</p><p> `include "
51、;fast_settime.v"</p><p> `include "alarm_set.v"</p><p> `include "alarm.v"</p><p> `include "decoder_7seg.v"</p><p> `include &qu
52、ot;display.v"</p><p> module clock;</p><p> clk_generate clk_generate(); //調(diào)用時(shí)鐘節(jié)拍產(chǎn)生模塊</p><p> time_mode0 time_mode0(); // 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊</p><p> mo
53、de_select mode_select(); //調(diào)用模式選擇功能模塊</p><p> fast_settime fast_settime(); //調(diào)用快速時(shí)間設(shè)置功能模塊</p><p> alarm_set alarm_set(); //調(diào)用鬧鈴時(shí)間設(shè)置模塊</p><p> alarm alarm();
54、0; //調(diào)用鬧鈴與整點(diǎn)報(bào)時(shí)模塊</p><p> decoder_7seg decoder_7seg(); //調(diào)用7段譯碼模塊</p><p> display display(); //調(diào)用顯示模塊</p><p><b> endmodule</b></p><p> 4.2 時(shí)鐘
55、節(jié)拍產(chǎn)生模塊</p><p> 由于整個(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ù)器加
56、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時(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ù)值就可以得到
57、不同的時(shí)鐘節(jié)拍。在CPLD內(nèi)部設(shè)置分頻計(jì)數(shù)器的缺點(diǎn)是,CPLD的觸發(fā)器資源有限,設(shè)置計(jì)數(shù)器對(duì)資源的占用比較大,因此盡量可能少用一些時(shí)鐘節(jié)拍,或者盡量使需要使用的時(shí)鐘節(jié)拍相同,還有</p><p> module clk_generate(reset,sysclk,clk,clk_4hz,clk_1k,displayclk);</p><p> input sysclk,reset;&l
58、t;/p><p> output clk,clk_4hz,clk_1k,displayclk;</p><p> reg clk,clk_4hz,clk_1k,displayclk;</p><p> reg [20:0]div_count1; //分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生周期為1S的時(shí)鐘信號(hào)</p><p> reg [19
59、:0]div_count2; //分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生頻率為4hz的時(shí)鐘信號(hào)</p><p> reg [11:0]div_count3; //分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生頻率為1Khz的時(shí)鐘信號(hào)</p><p> reg [14:0]divclk_cnt; //分頻時(shí)鐘計(jì)數(shù)器,用于產(chǎn)生50HZ的數(shù)碼管掃描信號(hào)displayclk</p>
60、<p> always @(posedge sysclk)</p><p><b> begin</b></p><p> if (reset) div_count1=21'd0000000;</p><p> if (div_count1==21'd1024000) //10240
61、00/2048000=0.5S</p><p><b> begin</b></p><p> clk<=~clk; //clk為周期為1S的時(shí)鐘信號(hào)</p><p> div_count1=21'd0000000;</p><p><b> end</b&g
62、t;</p><p><b> else </b></p><p><b> begin</b></p><p> div_count1=div_count1+1'b1;</p><p><b> end</b></p><p&g
63、t;<b> end</b></p><p> always @(posedge sysclk)</p><p><b> begin</b></p><p> if (reset) div_count2=20'd000000;</p><p> if (div_cou
64、nt2==20'd512000) //512000/2048000=0.25S</p><p><b> begin</b></p><p> clk_4hz<=~clk_4hz; //clk_4hz為4hz的時(shí)鐘信號(hào)</p><p> div_count2=20'd000000;</p
65、><p><b> end</b></p><p><b> else </b></p><p><b> begin</b></p><p> div_count2=div_count2+1'b1;</p><p><b&
66、gt; end</b></p><p><b> end</b></p><p> always @(posedge sysclk)</p><p><b> begin</b></p><p> …… //產(chǎn)生周期為50HZ和1KHZ的時(shí)鐘節(jié)拍</p><
67、p><b> end</b></p><p><b> endmodule</b></p><p> 4.3模式選擇功能模塊</p><p> 本設(shè)計(jì)是多功能數(shù)字鐘,實(shí)現(xiàn)的功能是以數(shù)字形式顯示時(shí)、分、秒的時(shí)間, 能進(jìn)行手動(dòng)快校時(shí)、快校分或慢校時(shí)、慢校分。該多功能電子鐘共有3種模式。分別為:模式0為正常時(shí)鐘模式
68、,模式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)程如下所示。</p><p> module mode_select( clk,mode,set,change,coun
69、t1,counta,count2,countb,led_min,led_hour,m);</p><p> input mode,set,change,clk;</p><p> output count1,counta,count2,countb,led_min,led_hour,m;</p><p> regbool,count1,counta,count
70、2,countb;</p><p> reg [1:0]m;</p><p> reg led_min,led_hour;</p><p> always @(posedge mode)</p><p><b> begin</b></p><p> if (m==2) m&
71、lt;=0;</p><p> else m<=m+1;</p><p><b> end</b></p><p> always @ (posedge set)</p><p> bool<=~bool;</p><p> always @ (posedge c
72、lk)</p><p><b> begin</b></p><p><b> case(m)</b></p><p> 2: begin </p><p> if (bool) </p><p> begin //手動(dòng)設(shè)定分鐘</p&
73、gt;<p> count1<=change;</p><p> {led_min,led_hour}<=2'b10;</p><p><b> end </b></p><p><b> else </b></p><p> begin
74、60; //手動(dòng)設(shè)定小時(shí) </p><p> counta<=change; </p><p> {led_min,led_hour}<=2'b01;</p><p><b> end </b></p><p> {count2,countb}<=2'b00;<
75、/p><p><b> end</b></p><p><b> 1:begin</b></p><p> if (bool) </p><p> begin //設(shè)定鬧鈴分鐘 </p><p> count2<=change;</p>
76、<p> {led_min,led_hour}<=2'b10;</p><p><b> end </b></p><p><b> else </b></p><p><b> begin </b></p><p> c
77、ountb<=change; </p><p> {led_min,led_hour}<=2'b01;</p><p><b> end </b></p><p> {count2,countb}<=2'b00;</p><p><b> end</b
78、></p><p> default: ount1,count2,counta,countb,led_min,led_hour}<=0; //正常時(shí)鐘狀態(tài)</p><p><b> endcase</b></p><p><b> end</b></p><p><
79、;b> endmodule</b></p><p> 4.4 快速時(shí)間設(shè)置功能模塊</p><p> 多功能數(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、num
80、2、num3、num4信號(hào)用于連續(xù)快速加1。</p><p> 當(dāng)長(zhǎng)時(shí)間按下CHANGE按鍵后,利用系統(tǒng)的CLK_4HZ對(duì)計(jì)數(shù)器進(jìn)行快速加一處理。如果不是長(zhǎng)時(shí)間按下CHANGE按鍵的話則每按一次CHANGE按建鍵就對(duì)相應(yīng)的寄存器的值加一處理。</p><p> 4.5 秒、分、時(shí)計(jì)時(shí)與時(shí)間調(diào)整模塊</p><p> 秒計(jì)時(shí)程序采用周期為1S的基準(zhǔn)時(shí)鐘信號(hào)CLK
81、,在每個(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)橹芷跒?HZ的時(shí)鐘信號(hào),該信號(hào)用于快速時(shí)間校準(zhǔn)功能。CTA時(shí)鐘是周期為60分鐘的時(shí)鐘信號(hào),在每個(gè)CTA時(shí)鐘信號(hào)的上升沿對(duì)小時(shí)寄存器加1,當(dāng)當(dāng)前設(shè)置值
82、為小時(shí)且長(zhǎng)時(shí)間按下CHANGE按鍵后,CTA時(shí)鐘變?yōu)橹芷跒?HZ的時(shí)鐘信號(hào),該信號(hào)用于快速時(shí)間校準(zhǔn)功能。</p><p> module time_mode0(clk,set,m,count1,ct1,counta,m_clk,h_clk,cta,sec1,min1,hour1);</p><p> input clk,set,m,count1,counta,ct1,cta,m_clk
83、,h_clk;</p><p> inout [7:0]sec1,min1,hour1;</p><p> reg minclk,hclk;</p><p> reg [7:0]sec1,min1,hour1;</p><p> wire m_clk,h_clk;</p><p> always @(pose
84、dge clk)</p><p><b> begin</b></p><p> if (!(sec1 ^ 8'd59) | set & (!m))</p><p> //按住SET鍵一段時(shí)間,秒信號(hào)自動(dòng)清零</p><p> sec1 [7:0] <= 8'h00;</p&g
85、t;<p> if (!(set & (!m))) </p><p> minclk <=1'b1;</p><p> else begin </p><p> if (sec1[3:0]==4'b1001)</p><p><b> begin <
86、/b></p><p> sec1[3:0]<=4'b0000;</p><p> sec1[7:4]<=sec1[7:4] + 1'b1;</p><p><b> end</b></p><p><b> else </b></p><
87、;p><b> begin</b></p><p> sec1[3:0] <= sec1[3:0] + 1'b1;</p><p> minclk<=1'b0;</p><p><b> end</b></p><p><b> end</
88、b></p><p><b> end</b></p><p> always @ (posedge ct1) //分鐘計(jì)時(shí)進(jìn)程</p><p><b> begin</b></p><p> if (min1 == 8'd59)</p><p&
89、gt;<b> begin </b></p><p> min1 <= 0; </p><p> hclk <= 1;</p><p><b> end</b></p><p><b> else </b></p><p><
90、b> begin </b></p><p> if (min1[3:0] ==9)</p><p><b> begin </b></p><p> min1[3:0] <=0;</p><p> min1[7:4]<=min1[7:4] + 1;</p>
91、<p><b> end</b></p><p><b> else </b></p><p><b> begin</b></p><p> min1[3:0] <=min1[3:0] +1;</p><p><b> hclk <
92、=0;</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p> always @ (posedge cta) //小時(shí)計(jì)時(shí)與調(diào)整進(jìn)程<
93、;/p><p><b> begin</b></p><p> if (hour1==8'h23) hour1<=0;</p><p> else begin</p><p> ……… //此段VHDL語(yǔ)言時(shí)、分、秒源碼見(jiàn)附錄二</p><p>
94、;<b> end</b></p><p><b> end</b></p><p><b> endmodule</b></p><p> 4.6鬧鈴時(shí)間設(shè)置模塊</p><p> module alarm_set(ct2,ctb,amin,ahour);</
95、p><p> input ct2,ctb;</p><p> output [7:0]amin,ahour;</p><p> reg [7:0]amin,ahour;</p><p> always @ (posedge ct2)</p><p><b> begin</b></p&
96、gt;<p> if (amin==8'd59) amin<=0;</p><p> else if (amin[3:0]==9)</p><p><b> begin </b></p><p> amin[3:0]<=0;</p><p> amin[7:4]&l
97、t;=amin[7:4] + 1;</p><p><b> end</b></p><p> else amin[3:0]<=amin[3:0] + 1;</p><p><b> end</b></p><p> always @ (posedge ctb)</p>
98、<p><b> begin</b></p><p> if (ahour==8'd23) ahour<=0;</p><p> else if (ahour[3:0]==9)</p><p><b> begin </b></p><p> ahour
99、[3:0]<=0;</p><p> ahour[7:4]<=ahour[7:4] + 1;</p><p><b> end</b></p><p> else ahour[3:0]<=ahour[3:0] + 1; </p><p><b> end</b>
100、</p><p><b> endmodule</b></p><p> 4.7鬧鈴與整點(diǎn)報(bào)時(shí)模塊</p><p> 鬧鈴的功能是實(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)音。 </p><p> mod
101、ule alarm(sysclk,clk_1k,min1,hour1,amin,ahour,alarm1,alarm2);</p><p> input sysclk,clk_1k;</p><p> input [7:0]min1,hour1,amin,ahour;</p><p> output alarm1,alarm2;</p><
102、p> reg alarm1,alarm2;</p><p> reg [7:0]sec1;</p><p> always @ (posedge sysclk)</p><p><b> begin</b></p><p> if ((min1==amin)&&(hour1==
103、ahour))</p><p> if (sec1<8'd20) </p><p> alarm1<=1;</p><p> else alarm1<=0;</p><p> else alarm1<=0;</p><p><b>
104、 end</b></p><p> always @ (posedge sysclk)</p><p><b> begin </b></p><p> if ((min1==8'd59)&&(sec1>8'd54)||(!(min1|sec1)))</p>&l
105、t;p> if (sec1>8'd58) alarm2<=clk_1k; // 產(chǎn)生長(zhǎng)音</p><p> else alarm2<=~clk_1k; //產(chǎn)生短音</p><p> else alarm2<=0;</p><p><b> end&l
106、t;/b></p><p><b> endmodule</b></p><p> 4.8 七段顯示譯碼模塊</p><p> 由于時(shí)鐘計(jì)數(shù)模式采用的是BCD碼計(jì)數(shù)方式,而顯示采用的8段發(fā)光二極管,每個(gè)段代表一位二進(jìn)制數(shù),在本系統(tǒng)中采用的是共陽(yáng)極接法,因此7段碼為共陽(yáng)編碼。因此在數(shù)碼管上正常顯示時(shí)間的話,必需要對(duì)在三個(gè)模式下的時(shí)、分
107、、秒進(jìn)行譯碼才能得到正常的顯示。</p><p> 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);</p><p> input sysclk,clk,c
108、lk_4hz,clk_1k, alarm1,alarm2;</p><p> input [7:0]ahour,amin,min1,hour1,sec1;</p><p> input [1:0]m;</p><p> output [7:0]hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb;</p>
109、;<p> reg [7:0]hour,min,sec,hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb;</p><p> wire led_alarm;</p><p> always @ (posedge sysclk)</p><p><b> begin</b>&
110、lt;/p><p><b> case(m) </b></p><p> 3'b00: //在模式0下,將正常計(jì)數(shù)值賦值給寄存器,等待譯碼</p><p><b> begin </b></p><p> hour<=hour1;</p>&l
111、t;p> min<=min1;</p><p> sec<=sec1;</p><p><b> end</b></p><p> 3'b01: //在模式1下,將鬧鈴時(shí)間設(shè)置值賦值給寄存器,等待譯碼</p><p><b> begin </b>&l
112、t;/p><p> hour<=ahour;</p><p> min<=amin;</p><p> sec<=8'hzz;</p><p><b> end</b></p><p> 3'b10: //在模式2下,將手動(dòng)計(jì)數(shù)值賦值給寄存器,等
113、待譯碼</p><p><b> begin </b></p><p> hour<=hour1;</p><p> min<=min1;</p><p> sec<=8'hzz;</p><p><b> end</b></p>
114、;<p><b> endcase</b></p><p> assign led_alarm=(ahour|amin)?1:0; //指示是否進(jìn)行了鬧鈴定時(shí)</p><p> assign alarm=((alarm1)?clk_1k&clk_4hz:0)|alarm2;//產(chǎn)生鬧鈴音或整點(diǎn)報(bào)時(shí)音</p><
115、;p><b> end</b></p><p> always @( sysclk )</p><p><b> begin</b></p><p> case (hour[7:4])</p><p> 4'b0000 : hour_msb=8'hc0;
116、 //數(shù)字0的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0001 : hour_msb=8'hf9; //數(shù)字1的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0010 : hour_msb=8'ha4; //數(shù)字2的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0011
117、 : hour_msb=8'hb0; //數(shù)字3的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0100 : hour_msb=8'h99; //數(shù)字4的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0101 : hour_msb=8'h92; //數(shù)字5的共陽(yáng)編碼賦值給小時(shí)的十位</p>
118、<p> 4'b0110 : hour_msb=8'h82; //數(shù)字6的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b0111 : hour_msb=8'hf8; //數(shù)字7的共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b1000 : hour_msb=8'h80; //數(shù)字8的
119、共陽(yáng)編碼賦值給小時(shí)的十位</p><p> 4'b1001 : hour_msb=8'h90; //數(shù)字9的共陽(yáng)編碼賦值給小時(shí)的十位</p><p><b> endcase</b></p><p> case (hour[3:0])</p><p> 4'b0000 : ho
120、ur_lsb=8'hc0; //數(shù)字0的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b0001 : hour_lsb=8'hf9; //數(shù)字1的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b0010 : hour_lsb=8'ha4; //數(shù)字2的共陽(yáng)編碼賦值給小時(shí)的個(gè)位 </p><
121、;p> 4'b0011 : hour_lsb=8'hb0; //數(shù)字3的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b0100 : hour_lsb=8'h99; //數(shù)字4的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b0101 : hour_lsb=8'h92; //數(shù)字5的共陽(yáng)編碼
122、賦值給小時(shí)的個(gè)位</p><p> 4'b0110 : hour_lsb=8'h82; //數(shù)字6的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b0111 : hour_lsb=8'hf8; //數(shù)字7的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b1000 : hour_lsb=8
123、9;h80; //數(shù)字8的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p> 4'b1001 : hour_lsb=8'h90; //數(shù)字9的共陽(yáng)編碼賦值給小時(shí)的個(gè)位</p><p><b> endcase</b></p><p><b> endmodule</b></p&g
124、t;<p> 4.9 LED顯示模塊</p><p> LED顯示電路與CPLD的接口電路共有兩種接法,一種接法是靜態(tài)顯示法,即外接6個(gè)獨(dú)立的一位LED數(shù)碼管,在這種接法下每一位LED的段碼線共有8根,因此采用這種接法時(shí)總共需要6*8+6=54個(gè)I/O口,而采用這種接法時(shí),分配I/O工作煩瑣,且電路圖接線復(fù)雜。而第二種接法稱為動(dòng)態(tài)顯示法,采用共陽(yáng)或共陰極接法,而所謂的共陽(yáng)極接法是指將每位LED的
125、段碼線連在一起共同接電源的正極,因此采用這種接法時(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),其它LED熄滅,此時(shí)送出相應(yīng)位的段碼。而在下一時(shí)刻則下一位LED處于點(diǎn)亮狀態(tài),且在此時(shí)送出相應(yīng)的段碼,如此循環(huán)往復(fù)就能顯示完6個(gè)不同的數(shù)字。因此采用這
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于vhdl語(yǔ)言編寫(xiě)的多功能數(shù)字鐘論文
- vhdl課程設(shè)計(jì)---多功能數(shù)字鐘
- 多功能數(shù)字鐘畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---多功能遙控?cái)?shù)字鐘的設(shè)計(jì)
- 基于vhdl語(yǔ)言的數(shù)字鐘
- 數(shù)字電路多功能數(shù)字鐘畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) 多功能數(shù)字鐘電路設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文—多功能數(shù)字鐘的設(shè)計(jì)論文
- 基于eda的多功能數(shù)字鐘電路設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) 多功能數(shù)字鐘電路設(shè)計(jì) (2)
- 基于fpga多功能數(shù)字鐘設(shè)計(jì)
- 電子時(shí)鐘畢業(yè)設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì)
- 基于vhdl簡(jiǎn)易數(shù)字鐘設(shè)計(jì)
- 基于vhdl的數(shù)字鐘設(shè)計(jì)【畢業(yè)論文】
- 基于quartus的多功能數(shù)字鐘設(shè)計(jì)
- eda數(shù)字鐘課程設(shè)計(jì)--用vhdl語(yǔ)言實(shí)現(xiàn)數(shù)字鐘的設(shè)計(jì)
- 多功能數(shù)字鐘論文設(shè)計(jì)
- vhdl語(yǔ)音數(shù)字鐘設(shè)計(jì)()
- 數(shù)字鐘課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)與制作
- 數(shù)字鐘畢業(yè)設(shè)計(jì)---可調(diào)數(shù)字鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論