![多功能數(shù)字鐘(電工課程設(shè)計)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/0258bb44-4602-47d2-b53a-3eaa9ece6c11/0258bb44-4602-47d2-b53a-3eaa9ece6c111.gif)
![多功能數(shù)字鐘(電工課程設(shè)計)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/0258bb44-4602-47d2-b53a-3eaa9ece6c11/0258bb44-4602-47d2-b53a-3eaa9ece6c112.gif)
![多功能數(shù)字鐘(電工課程設(shè)計)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/0258bb44-4602-47d2-b53a-3eaa9ece6c11/0258bb44-4602-47d2-b53a-3eaa9ece6c113.gif)
![多功能數(shù)字鐘(電工課程設(shè)計)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/0258bb44-4602-47d2-b53a-3eaa9ece6c11/0258bb44-4602-47d2-b53a-3eaa9ece6c114.gif)
![多功能數(shù)字鐘(電工課程設(shè)計)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/0258bb44-4602-47d2-b53a-3eaa9ece6c11/0258bb44-4602-47d2-b53a-3eaa9ece6c115.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄1 前言2 總體方案設(shè)計2.1 方案論述2.2 設(shè)計方式3 單元模塊電路設(shè)計3.1 時間顯示電路模塊設(shè)計3.2 按鍵及指示燈電路模塊的設(shè)計3.3 蜂鳴器及有源晶振電路的設(shè)計3.4 cpld 編程下載電路的設(shè)計3.5 電源電路電路的設(shè)計3.6 epm7128slc84 器件介紹4 cpld 編程設(shè)計4.1 系統(tǒng)信號的定義及頂層模塊4.2 時鐘節(jié)拍產(chǎn)生模塊4.3 模式選擇功能模塊4.4 快速時間設(shè)置功能模塊4.5 秒、分、時計時與時間調(diào)整模塊4.6 鬧鈴時間設(shè)置模塊4.7 鬧鈴與整點報時模塊4.8 7 段顯示譯碼模塊4.9 led 顯示模塊5 系統(tǒng)功能及功能仿真5.1 系統(tǒng)功能5.2 功能仿真
2、5.2.1 時鐘節(jié)拍產(chǎn)生模塊的仿真波形5.2.2 模式選擇功能模塊的仿真波形5.2.3 鬧鈴設(shè)置功能模塊的仿真波形5.2.4 7 段譯碼功能模塊的仿真波形5.2.5 led 顯示功能模塊的仿真波形5.2.6 系統(tǒng)總體功能仿真波形6 設(shè)計總結(jié)7 參考文獻(xiàn)附錄:基于cpld 的多功能數(shù)字鐘電路圖1 前言我們已經(jīng)進(jìn)入了數(shù)字化和信息化的時代,其特點是各種數(shù)字產(chǎn)品的廣泛應(yīng)用?,F(xiàn)代數(shù)字產(chǎn)品在性能提高、復(fù)雜度增大的同時,其更新?lián)Q代的步伐也越來越快,實現(xiàn)這種進(jìn)步的因素在于生產(chǎn)制造技術(shù)和電子設(shè)計技術(shù)的進(jìn)步。生產(chǎn)制造技術(shù)以微細(xì)加工技術(shù)為代表,目前已進(jìn)展到深亞微米階段,可以在幾平方厘米的芯片上集成數(shù)千萬個晶體管。p
3、ld 器件和 eda 技術(shù)的出現(xiàn), 改變了這種傳統(tǒng)的設(shè)計思路,使人們可以立足于pld 芯片來實現(xiàn)各種不同的功能,新的設(shè)計方法能夠由設(shè)計者自己定義器件內(nèi)部邏輯和管腳,將原來由電路板設(shè)計完成的工作大部分放在芯片的設(shè)計中進(jìn)行。這樣不僅可以通過芯片設(shè)計實現(xiàn)各種邏輯功能,而且由于管腳定義的靈活性,減輕了原理圖和印制板設(shè)計的工作量和難度,增加了設(shè)計的自由度,提高了效率。同時這種設(shè)計減少了所需芯片的種類和數(shù)量,縮小了體積, 降低了功耗, 提高了系統(tǒng)的可靠性。本設(shè)計是基于cpld的多功能數(shù)字鐘設(shè)計。 硬件界面為一個6 位的 led 數(shù)碼管,時間顯示方式為6 位同時顯示,即顯示狀態(tài)為:88:88:88。顯示的時
4、間制為24小時制。三個時間設(shè)定按鍵,分別為mode 模式選擇鍵, set 設(shè)定鍵和change 數(shù)值修改鍵。按鍵功能介紹:mode 按鍵用來選擇當(dāng)前數(shù)字鐘的工作模式,系統(tǒng)正常工作在模式0 下, 即模式 0 為正常時鐘模式。 當(dāng)在正常時鐘模式下第一次按下mode鍵時,系統(tǒng)進(jìn)入模式1,即鬧鈴模式,在此模式下可以通過set和 change按鍵的配合使用來設(shè)定所需要的鬧鈴時間。當(dāng)再一次按下mode 按鍵后系統(tǒng)進(jìn)入手動校時模式,在此模式下通過set和 change 按鍵的配合使用,可以改變當(dāng)前時間。set按鍵則用于在不同的模式下選擇當(dāng)前設(shè)定的位置,比如當(dāng)前設(shè)定的位置是小時,則再一次按下set 按鍵后當(dāng)前
5、設(shè)定的位置變?yōu)榉昼?。change按鍵用來將當(dāng)前設(shè)定位置的時間值加1,當(dāng)長時間按下change 按鍵時,當(dāng)前設(shè)定值為連續(xù)快速加1,此功能用于快速設(shè)定時間。系統(tǒng)帶四個指燈電路,一個為電源指示燈,其他三個為工作狀態(tài)指示燈,即分別為led_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è)定的是時間的小時還是分鐘,當(dāng) led_hour指示燈亮?xí)r表明此時設(shè)定的是時間的小時值,當(dāng) led_min 指示燈亮?xí)r表明此時設(shè)定的是時間的分鐘值。鬧鈴的功能是實現(xiàn)當(dāng)?shù)竭_(dá)
6、預(yù)設(shè)的時間點時產(chǎn)生為時20s 的“ 嘀嘀嘀嘀 ” 急促短音。整點報時的功能 title= 下一頁 | 是實現(xiàn)在每個整點的5 秒鐘前產(chǎn)生整點報時音,報時音為“ 嘀嘀嘀 - 嘟”4短一長音。2 總體方案設(shè)計2.1 方案論述本設(shè)計是基于cpld的多功能數(shù)字鐘設(shè)計。 硬件界面為一個6 位的 led 數(shù)碼管,時間顯示方式為6 位同時顯示,即顯示狀態(tài)為:88:88:88。顯示的時間制為24小時制。三個時間設(shè)定按鍵,分別為mode 模式選擇鍵, set 設(shè)定鍵和change 數(shù)值修改鍵。按鍵功能介紹:mode 按鍵用來選擇當(dāng)前數(shù)字鐘的工作模式,系統(tǒng)正常工作在模式 0 下,即模式 0 為正常時鐘模式。 當(dāng)在正
7、常時鐘模式下第一次按下mode 鍵時,系統(tǒng)進(jìn)入模式1,即鬧鈴模式,在此模式下可以通過set 和 change 按鍵的配合使用來設(shè)定所需要的鬧鈴時間。當(dāng)再一次按下mode 按鍵后系統(tǒng)進(jìn)入手動校時模式,在此模式下通過set 和 change 按鍵的配合使用,可以改變當(dāng)前時間。set按鍵則用于在不同的模式下選擇當(dāng)前設(shè)定的位置,比如當(dāng)前設(shè)定的位置是小時,則再一次按下 set 按鍵后當(dāng)前設(shè)定的位置變?yōu)榉昼?。change 按鍵用來將當(dāng)前設(shè)定位置的時間值加 1,當(dāng)長時間按下change 按鍵時,當(dāng)前設(shè)定值為連續(xù)快速加1,此功能用于快速設(shè)定時間。系統(tǒng)帶四個指示燈電路,一個為電源指示燈,其他三個為工作狀態(tài)指示燈
8、,即分別為 led_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è)定的是時間的小時還是分鐘,當(dāng) led_hour 指示燈亮?xí)r表明此時設(shè)定的是時間的小時值,當(dāng) led_min 指示燈亮?xí)r表明此時設(shè)定的是時間的分鐘值。電源采用 +5v 供電。整個設(shè)計的設(shè)計方式采用top-down 設(shè)計方法。多功能數(shù)字鐘設(shè)計分為1 個頂層模塊和8 個功能子模塊。頂層模塊名稱為clock.v。各功能子模塊分別為:系統(tǒng)分頻功能模塊clk_generate.v 、模式選擇
9、功能模塊mode_select.v 、快速時間設(shè)置功能模塊fast_settime.v 、秒、分、時計時與時間調(diào)整模塊time_mode0.v 、鬧鈴時間設(shè)置模塊alarm_set.v 、鬧鈴與整點報時模塊alarm.v 、7 段顯示譯碼模塊decoder_7seg.v以及 led 顯示功能模塊display.v 。2.2 設(shè)計方式topdown 設(shè)計,即自頂向下的設(shè)計。這種設(shè)計方法首先從系統(tǒng)設(shè)計入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計。在功能級進(jìn)入仿真和糾錯,并用硬件描述語言對高層次的系統(tǒng)行為進(jìn)行描述,然后用綜合工具將設(shè)計轉(zhuǎn)化為具體門電路網(wǎng)表,其對應(yīng)的物理實現(xiàn)可以是pld 器件或?qū)S眉呻?/p>
10、路。由于設(shè)計的主要仿真和調(diào)試過程是在高層次上完成的,這一方面有利于早期發(fā)現(xiàn)結(jié)構(gòu)上的錯誤,避免設(shè)計工作的浪費(fèi),同時也減少了邏輯功能仿真的工作量,提高了設(shè)計的一次成功率。整個設(shè)計的設(shè)計方式采用top-down 設(shè)計方法。多功能數(shù)字鐘設(shè)計分為1 個頂層模塊和8 個功能子模塊。頂層模塊名稱為clock.v。各功能子模塊分別為:系統(tǒng)分頻功能模塊clk_generate.v 、模式選擇功能模塊mode_select.v 、快速時間設(shè)置功能模塊fast_settime.v 、秒、分、時計時與時間調(diào)整模塊time_mode0.v 、鬧鈴時間設(shè)置模塊alarm_set.v 、鬧鈴與整點報時模塊alarm.v 、
11、7 段顯示譯碼模塊decoder_7seg.v以及 led 顯示功能模塊display.v 。圖 2.1 整個系統(tǒng)的模塊劃分3 單元模塊電路設(shè)計3.1 時間顯示電路模塊設(shè)計時間顯示電路主要由兩部分組成,如圖 3.1 所示。 其中一部分為六位led 數(shù)碼管的驅(qū)動電路,另一部分為led 數(shù)碼管電路。 led 驅(qū)動電路由q1、q2、q3、q4、q5、q6 六支三級管和r5、r6、r7、r8、 r9、r10 基極偏置電阻組成。驅(qū)動三級管為 pnp 型三極管,用于開關(guān)電路中。當(dāng)三級管q1 的基極(即cpld 的 led0 輸出端)為低電平時,q1 的發(fā)射結(jié)正向偏置,集電結(jié)反向偏置,因此三極管處于導(dǎo)通狀態(tài)
12、,此時有vce0.20.3v 。反之當(dāng)q1 的基極為高電平時q1 截止。 q1、 q2、q3 q6 的基極( led0led5 )分別接cpld的 pin74 、pin73 、pin70 、| | pin69、pin68 、pin67 ,分別作為led 數(shù)碼管的位選端。圖 3.1 led 顯示電路led 的顯示方式有靜態(tài)顯示和動態(tài)方式兩種工作方式。led 顯示器工作于靜態(tài)顯示方式時,各位的共陰極(或共陽極)連接在一起并接地(或+5v );每位的段碼線( adp )分別與一個8 位的鎖存器輸出相連。之所以為靜態(tài)顯示,是因為各個led 的顯示字符的字符一經(jīng)確定,相應(yīng)鎖存器鎖存的段碼輸出將維持不變,
13、直到送入另一個字符的段碼為止。正因為如此,靜態(tài)顯示器的亮度都較高。但是因為靜態(tài)顯示方式下, 各位 led 的段碼線都是獨立的,因此一個6 位的 led 顯示器需要占用6*8+6=54個 i/o 口,在這種情況下為了簡化接線,因此在本設(shè)計中采用的是動態(tài)掃描方式來顯示距離。在動態(tài)顯示方式下, 通常將所有位的段碼線相應(yīng)并聯(lián)在一起,由一個 8 位的 i/o口控制,形成段碼線的多路復(fù)用,而各位的共陽極或共陰極分別由相應(yīng)的i/o 口線控制,形成各位的分時選通。圖3.1 所示的電路是一個六位的led 顯示電路。其中段碼線占用1 個 8 位 i/o 口,而位選線占用六位i/o 口。由于各段碼線并聯(lián),8 位i/
14、o 口輸出的段碼對各個顯示位來說都是相同的。因此,在同一時刻,如果各位位選線都處于選通狀態(tài)的話六位led 將顯示相同的字符。 若要各位led 能同時顯示出與本位相應(yīng)的顯示字符,就必須采用動態(tài)顯示方式,即在某一時刻,只讓某一位的位選線處于選能狀態(tài),而其他各位的位選處于關(guān)閉狀態(tài),同時,段碼線上輸出相應(yīng)的要顯示的字符段碼。這樣,在同一時刻,六位led 中只有選通的那一位顯示出字任,而其它四位則是熄滅的。同樣在下一時刻,只讓下一位的位選線處于選通狀態(tài),而其它各位的位選線處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時刻,只有選通位顯示相應(yīng)的字符。而其它各位是熄滅的。如此循環(huán)下去,就可以使各位顯
15、示出將要顯示的字符。圖 3.1 所示三位數(shù)碼顯示管,常用的 led 顯示器為 8 段。每一個段對應(yīng)一個發(fā)光二極管。這種顯示器有共陽極和共陰極2 種。共陰極led 顯示器的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地。當(dāng)某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應(yīng)的段被顯示。同樣,共陽極led 顯示器的發(fā)光二極管的陽極連接在一起,通常此公共陽極接正電壓,當(dāng)某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應(yīng)的段被顯示。六位 led 顯示器有6 位位選線和48 根段碼線。段碼線控制顯示字符的字型,而位選線為各個led 顯示位中各段的公共端,它控制該led 顯示位的亮或暗。led顯示器工
16、作于靜態(tài)顯示方式時,各位的共陰極或共陽極連接在一起并接地或+5v 。在多位顯示時,為簡化硬件電路,通常將所有位的段碼線相應(yīng)段并聯(lián)在一起,由一個 8 位 i/o 口控制,形成段碼線的多路復(fù)用。由于各位段碼線并聯(lián),8 位 i/o 口輸出的段碼對各個顯示字符來說都是相同的,因此,在同一時刻,如果各位位選線都外于選通狀態(tài)的話,6 位 led 將顯示相同的字符,就必需采用動態(tài)顯示方式,即在某一時刻, 只讓某一位的位選線外于選通狀態(tài),而其他各位的位選線外于關(guān)閉狀態(tài),同時段碼線上輸出相應(yīng)位要顯示字符的段碼。這樣在同一時刻,6 位 led 中只有選通的那一位顯示出字符,而其他5 位是熄滅的。同樣在下一時刻,只
17、讓下一位的位選線外于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示字符的段碼, 則同一時刻, 只有選通位顯示出相應(yīng)的字任,而其他各位剛是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。雖然這些字符是在不同時刻出現(xiàn)的,但由于人的視覺暫留作用而感到同時顯示。3.2 按鍵及指示燈電路模塊的設(shè)計根據(jù)電子電路常識,采用灌電流工作方式的電路的功耗要比采用拉電流方式工作的電路小。 因此本設(shè)計中所有的外部鍵盤,指示二極管均采用灌電流的工作方式。當(dāng)多功能數(shù)字鐘的| | 按鍵未按下時按鍵的輸出(即 cpld 的輸入)為低電平,當(dāng)按鍵按下時輸出(即cpld 的輸入)為高電平。在本設(shè)計中只有
18、三個按鍵,分別為mode、 set、change。mode 按鍵用于模式選擇,按下一次mode 按鍵后電路進(jìn)入鬧鈴設(shè)置模式,在該模式下可以用set鍵來選擇當(dāng)前是設(shè)置小時還是設(shè)置分鐘,而用 change 鍵可以改變當(dāng)前設(shè)置鬧鈴的小時或分鐘(向上加一)。再按一次mode 鍵則進(jìn)入手動校時功能模式。按鍵電路如圖 3.2 所示。圖 3.2 按鍵電路在本設(shè)計中共有四個指示燈,一個為電源指示燈,其它三個是工作狀態(tài)指示燈,d1 為鬧鈴報警指示電路,當(dāng)設(shè)置鬧鈴后鬧鈴指示電路就工作在點亮狀態(tài),指示當(dāng)前設(shè)有鬧鈴。 d2 和 d3 用來指示當(dāng)前設(shè)置狀態(tài)。當(dāng)在鬧鈴設(shè)置模式和手動校時模式下,d2 或 d3 會有一個在點
19、亮狀態(tài),當(dāng)d2 亮?xí)r表示當(dāng)前設(shè)置的是小時,當(dāng)d3 亮?xí)r表示當(dāng)前設(shè)置的是分鐘。指示燈電路如圖3.3 所示。圖 3.3 指示燈電路引腳的連接為,d1 接 cpld的 pin61 , d2 接 cpld 的 pin63 ,d3 接 cpld 的pin64 。當(dāng) cpld 的引腳輸出為高電平時相應(yīng)的指示燈就點亮。3.3 蜂鳴器及有源晶振電路的設(shè)計在本設(shè)計中由于有音調(diào)的變換,所以必需采用交流蜂鳴器。由于cpld管腳的驅(qū)動能力有限, 因此通過連接一個三極管來增強(qiáng)驅(qū)動能力,從而提高蜂鳴器的響度。二極管 d9 起到續(xù)流保護(hù)的作用,蜂鳴器電路如圖3.4 所示。圖 3.4 蜂鳴器電路系統(tǒng)時鐘采用2.048mhz
20、的有源晶體振蕩器。為了使有源晶振能輸出較好的波形,必需保證供電的穩(wěn)定。所以在晶振電路的前端加了兩個小電容對電源進(jìn)行濾波,在時鐘輸出端加了一個小電阻,能有效地抑制高次諧波和實現(xiàn)阻抗匹配。有源晶振電路如圖3.5 所示。圖 3.5 有源晶振電路3.4 cpld 編程下載電路的設(shè)計cpld器件多采用jtag 編程方式, jtag 編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用jtag 編程 ,從而大大加快工程進(jìn)度。jtag 接口可對psd 芯片內(nèi)部的所有部件進(jìn)行編程。在硬件結(jié)構(gòu)上,jtag 接口包括兩部分:jtag 端口和控制器。與j
21、tag 接口兼容的器件可以是微處理器(mpu)、微控制器( mcu)、pld、cpl、fpga、asic 或其它符合ieee1149.1 規(guī)范的芯片。 ieee1149.1 標(biāo)準(zhǔn)中規(guī)定對應(yīng)于數(shù)字集成電路芯片的每個引腳都設(shè)有一個移位寄存單元,稱為邊界掃描單元bsc。它將 jtag 電路與內(nèi)核邏輯電路聯(lián)系起來,同時隔離內(nèi)核邏輯電路和芯片引腳。由集成電路的所有邊界掃描單元構(gòu)成邊界掃描寄存器bsr。邊界掃描寄存器電路僅在進(jìn)行jtag 測試時有效, 在集成電路正常工作時無效,不影響集成電路的功能。jtag 編程方式對cpld和 fpga 器件都支持,用于cpld器件的下載文件是pof 文件。 jtag
22、下載電路如圖 3.6 所示。圖 3.6 jtag 下載電路jtag 下載電路的10 針接口引腳定義為。1 引腳為 tck 時鐘, 2 引腳接地, 3引腳 tdo 為測試數(shù)據(jù)輸出 (數(shù)據(jù)輸出, 來自器件) ,4 引腳接電源電壓,5 引腳 tms為測試模式選擇(編程使能),nc 為 no-connect。 9 引腳 tdi 為測試數(shù)據(jù)輸入(數(shù)據(jù)輸入到器件),10 引腳接地。3.5 電源電路電路的設(shè)計本設(shè)計中的核心器件為max7000s 系列的 epm7128slc84 , i/o 口電壓 vccio和核心電壓vccint 均支持正5v,因此在本設(shè)計中統(tǒng)一給i/o 端口和內(nèi)核提供+5v的電壓。圖 3
23、.7 電源電路電源電路是由電源變壓器t、橋堆、濾波電容c11、c13、c15、c17 及集成三端穩(wěn)壓電路7805 以及保險絲組成,其電路圖如圖3.7 所示。電源的輸出為+5v 輸出。本系統(tǒng)采用7805 穩(wěn)壓電路下面介紹電原各部分參數(shù)的整定方法:1 變壓器次極電壓估算(以便選取合適的變壓器):由于穩(wěn)壓管要正常工作時輸入端的電壓必需要比輸出端高2.5v 時才能使穩(wěn)壓管穩(wěn)定工作??紤]到市網(wǎng)交流電壓的波動情況,在市網(wǎng)電壓為200v 時也能正常工作,則 | | 有 220/200*vac要大于 8.0,所以 vac 必需要大于8.8v ,即交流變壓器的負(fù)邊輸出電壓應(yīng)該高于8.8v ,在本設(shè)計中選取 9v
24、。2 變壓器輸入功率的計算:假設(shè)負(fù)載電流為500ma ,若輸出電壓為5v,則有效功率為5v*0.5a=2.5w。正常情況下變壓器輸出功率約為9v*1.2*1.5a=5.4w,當(dāng)市網(wǎng)電壓升到250v時,變壓器的輸出功率為5.4w*250/220=6.2w。小型電源變壓器的效率一般為75% 左右。因此電源變壓器的輸入功率為6.2w/0.75=8.27w。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è)計中取2
25、200uf 。3. 電容耐壓應(yīng)大于1.42*vac即 vc=1.42*9*250/220=14.5v(其中 250/220是考慮市網(wǎng)電源電壓過高時的情況。在本設(shè)計中電容耐壓值取16v。3.6 epm7128slc84 器件介紹本次設(shè)計的核心器件采用altera 公司的 cpld可編程器件。altera 公司的max7000s 系列 cpld有著較高的性價比。max7000s 系列是基于altera 第二代max 架構(gòu)的高密度、高性能的pld 器件。 max7000 器件包含32256 個可聯(lián)結(jié)成16 個宏單元組的邏輯陣列塊的宏單元。epm7128slc84 是 max7000s 家族成員之一,
26、它有如下的特點:可用邏輯門個數(shù)為 2500 門, 128 個宏單元, 8 個邏輯陳列塊,最大用戶可用i/o 口 100 個,支持5v 在系統(tǒng)編程和符合ieee.std.1179r的 jtag 下載接口,內(nèi)建邊界掃描測試電路,支持片上調(diào)試epm7128slc84-15 的封裝圖如圖3.8 所示圖 3.8 epm7128slc 的 plcc封裝4 cpld 編程設(shè)計4.1 系統(tǒng)信號的定義及頂層模塊整個系統(tǒng)輸入、輸出信號的定義:sysclk: 系統(tǒng)的時鐘信號,由外部有源晶振產(chǎn)生,頻率為2.048mhz ;mode: 外接按鍵,模式選擇信號,mode=0時為時鐘模式,mode=1時為設(shè)定鬧鐘模式, m
27、ode=2時為手動設(shè)定時間模式;set: 外接按鍵,用于在手動設(shè)置時間時選擇是調(diào)整小時還是分鐘;若長時間按住該鍵,還可以使秒信號清零,用于精確調(diào)整時間;change: 外接按鍵, 手動調(diào)整時間, 每按一次計數(shù)器加1;若長時間按住則連續(xù)快速加 1,用于快速調(diào)時和定時;alarm :接蜂鳴器,輸出到蜂鳴器的信號,用于產(chǎn)生鬧鈴音和報時音;鬧鈴音為持續(xù) 20s 的急促的 “ 嘀嘀嘀 ” 音,整點報時音為“ 嘀嘀嘀 - 嘟” 四短一長音;dataout: 輸出信號,輸出顯示時間的數(shù)碼管顯示的段碼。include clk_generate.v include time_mode0.v include mo
28、de_select.v include fast_settime.v include alarm_set.v include alarm.v include decoder_7seg.v include display.v module clock; clk_generate clk_generate(); / 調(diào)用時鐘節(jié)拍產(chǎn)生模塊time_mode0 time_mode0(); / 秒、分、時計時與時間調(diào)整模塊mode_select mode_select(); / 調(diào)用模式選擇功能模塊fast_settime fast_settime(); / 調(diào)用快速時間設(shè)置功能模塊alarm_set
29、alarm_set(); / 調(diào)用鬧鈴時間設(shè)置模塊alarm alarm(); / 調(diào)用鬧鈴與整點報時模塊decoder_7seg decoder_7seg(); / 調(diào)用 7 段譯碼模塊display display(); / 調(diào)用顯示模塊endmodule 4.2 時鐘節(jié)拍產(chǎn)生模塊由于整個系統(tǒng)只有一個晶體振蕩器,但是設(shè)計需要不同的時鐘信號,因此需要設(shè)計一個分頻進(jìn)程,對系的的有源晶振產(chǎn)生的2.048mhz 時鐘進(jìn)行分頻,產(chǎn)生需要的時鐘節(jié)拍。在本設(shè)計中總共用到如下幾個時鐘節(jié)拍:1hz 的時鐘 clk,4hz 的時鐘 clk_4hz,1khz 的時鐘信號clk_1k,和 50hz 的時鐘 dis
30、playclk 。其中 clk節(jié)拍用于產(chǎn)生秒計時信號,在每個clk 的上升沿到來時秒計數(shù)器加1。clk_4hz 節(jié)拍用于快速調(diào)整時間, 當(dāng)長時間按下chang 按鍵時,當(dāng)前設(shè)置的時鐘快速增加。| | clk_1k節(jié)拍用于鬧鈴音的產(chǎn)生,displayclk 時鐘節(jié)拍是頻率為50hz 的信號,由于本設(shè)計中顯示部分采用led 動態(tài)顯示的方式,因此必需要有一個掃描信號對6 位的 led 的每個位進(jìn)行輪流選通點亮。分頻進(jìn)程的原理是在 cpld內(nèi)部設(shè)置一個分頻計數(shù)器和一個觸發(fā)器,當(dāng)計數(shù)到分頻值時觸發(fā)器進(jìn)行翻轉(zhuǎn),因此只要設(shè)置不同的分頻計數(shù)器的計數(shù)值就可以得到不同的時鐘節(jié)拍。在cpld內(nèi)部設(shè)置分頻計數(shù)器的缺點
31、是,cpld的觸發(fā)器資源有限,設(shè)置計數(shù)器對資源的占用比較大,因此盡量可能少用一些時鐘節(jié)拍,或者盡量使需要使用的時鐘節(jié)拍相同,還有一種方法是利用兩個已有的時鐘信號進(jìn)行邏輯運(yùn)算從面獲得想要的時鐘節(jié)拍。系統(tǒng)的分頻進(jìn)程如下:module 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ù)器,用于產(chǎn)生
32、周期為1s 的時鐘信號reg 19:0div_count2; / 分頻時鐘計數(shù)器,用于產(chǎn)生頻率為4hz 的時鐘信號reg 11:0div_count3; / 分頻時鐘計數(shù)器,用于產(chǎn)生頻率為1khz 的時鐘信號reg 14:0divclk_cnt; / 分頻時鐘計數(shù)器,用于產(chǎn)生50hz 的數(shù)碼管掃描信號displayclk always (posedge sysclk) begin if (reset) div_count1=21d0000000; if (div_count1=21d1024000) /1024000/2048000=0.5s begin clk=clk; /clk為周期為 1
33、s 的時鐘信號div_count1=21d0000000; end else begin div_count1=div_count1+1b1; end end always (posedge sysclk) begin if (reset) div_count2=20d000000; if (div_count2=20d256000) /512000/2048000=0.25s begin clk_4hz=clk_4hz; /clk_4hz為 4hz 的時鐘信號div_count2=20d000000; end else begin div_count2=div_count2+1b1; end
34、 end always (posedge sysclk) begin / 產(chǎn)生周期為50hz 和 1khz 的時鐘節(jié)拍end endmodule 4.3 模式選擇功能模塊本設(shè)計是多功能數(shù)字鐘,實現(xiàn)的功能是以數(shù)字形式顯示時、分、秒的時間,能進(jìn)行手動快校時、快校分或慢校時、慢校分。該多功能電子共有3 種模式。分別為:模式 0 為正常時鐘模式,模式1 為設(shè)置鬧鈴功能,模式2 為手動校時功能。多功能電子鐘共有三個按鍵,一個mode 模式選擇鍵,用于選擇相應(yīng)的模式,一個set 時間選擇鍵,用于選擇當(dāng)前設(shè)定的是分鐘或者是小時,一個change 鍵,用于給當(dāng)前值加 1,當(dāng)長時間按住change時當(dāng)前值連續(xù)快
35、速加1,用于快速設(shè)定時間。模式選擇進(jìn)程如下所示。module mode_select( clk,mode,set,change,count1,counta,count2,countb,led_min,led_hour,m); input mode,set,change,clk; output count1,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)
36、 m=0; else m=m+1; end always (posedge set) bool=bool; always (posedge clk) begin case(m) 2: begin if (bool) begin / 手動設(shè)定分鐘count1=change; led_min,led_hour=2b10; end else begin / 手動設(shè)定小時counta=change; led_min,led_hour=2b01; end count2,countb=2b00; end 1:begin if (bool) begin / 設(shè)定鬧鈴分鐘count2=change; led_
37、min,led_hour=2b10; end else begin | | ; /設(shè)定鬧鈴小時countb=change; led_min,led_hour=2b01; end count2,countb=2b00; end default: ount1,count2,counta,countb,led_min,led_hour=0; / 正常時鐘狀態(tài)endcase end endmodule 4.4 快速時間設(shè)置功能模塊多功能數(shù)字鐘要求有快速時間設(shè)置功能和慢設(shè)置功能。所謂快速時間設(shè)置功能是指一直按住按鍵不放時,當(dāng)前值能夠快速的增加;而慢設(shè)置是指每按一次按鍵則當(dāng)前值向上增一。快速時間設(shè)置進(jìn)程如
38、下所示??焖贂r間設(shè)置進(jìn)程,功能描述:長時間按下 “change”鍵,則分別生成num1 、num2 、num3 、num4 信號用于連續(xù)快速加 1。當(dāng)長時間按下change 按鍵后,利用系統(tǒng)的clk_4hz 對計數(shù)器進(jìn)行快速加一處理。如果不是長時間按下change按鍵的話則每按一次change 按建鍵就對相應(yīng)的寄存器的值加一處理。(本段的veriloghdl 代碼詳見符件)4.5 秒、分、時計時與時間調(diào)整模塊秒計時程序采用周期為1s 的基準(zhǔn)時鐘信號clk,在每個clk 時鐘信號的上升沿對秒寄存器加1,當(dāng)長時間按下set按鍵后對秒寄存器進(jìn)行清零,該功能用于準(zhǔn)確校時。 ct1 為分計時的同步時鐘,
39、在每個ct1 時鐘信號的上升沿對分寄存器加1。當(dāng)未長時間按下change按鍵時, ct1 時鐘是周期為60 秒的時鐘信號。當(dāng)長時間按下 change后,ct1 時鐘變?yōu)橹芷跒?hz 的時鐘信號, 該信號用于快速時間校準(zhǔn)功能。cta 時鐘是周期為60 分鐘的時鐘信號, 在每個 cta 時鐘信號的上升沿對小時寄存器加1,當(dāng)當(dāng)前設(shè)置值為小時且長時間按下change 按鍵后, cta 時鐘變?yōu)橹芷跒?4hz 的時鐘信號,該信號用于快速時間校準(zhǔn)功能。module time_mode0(clk,set,m,count1,ct1,counta,m_clk,h_clk,cta,sec1,min1,hour1)
40、; 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) begin if (!(sec1 8d59) | set & (!m) / 按住 set 鍵一段時間,秒信號自動清零sec1 7:0 = 8h00; if (!(set & (!m) minclk =1b1; else begin if (sec13:0=4b100
41、1) 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ìn)程begin if (min1 = 8d59) begin min1 = 0; hclk = 1; end else begin if (min13:0 =9) begin min13:0 =0; min17:4=min17:4 + 1; end else begin min13:0 =min13:0 +1; hclk
42、 =0; end end end always (posedge cta) / 小時計時與調(diào)整進(jìn)程begin if (hour1=8h23) hour1=0; else begin / 此段源碼見附件end end endmodule 4.6 鬧鈴時間設(shè)置模塊module alarm_set(ct2,ctb,amin,ahour); input ct2,ctb; output 7:0amin,ahour; reg 7:0amin,ahour; always (posedge ct2) begin if (amin=8d59) amin=0; else if (amin3:0=9) begin
43、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 endmodule 4.7 鬧鈴與整點報時模塊鬧鈴的功能是實現(xiàn)當(dāng)?shù)竭_(dá)預(yù)設(shè)的時間點時產(chǎn)| | 生為時 20s 的 “ 嘀嘀嘀嘀 ” 急促短音。 整點報時的功能是實現(xiàn)在每個
44、整點的 5 秒鐘前產(chǎn)生整點報時音,報時音為“ 嘀嘀嘀 - 嘟”4短一長音。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 sysclk) begin if (min1=amin)&(hour1=ahour) if (sec18d20) alarm1=1; else
45、 alarm1=0; else alarm18d54)|(!(min1|sec1) if (sec18d54) alarm2=clk_1k; / 產(chǎn)生長音else alarm2=clk_1k; / 產(chǎn)生短音else alarm2=0; end endmodule 4.8 7 段顯示譯碼模塊由于時鐘計數(shù)模式采用的是bcd 碼計數(shù)方式,而顯示采用的8 段發(fā)光二極管,每個段代表一位二進(jìn)制數(shù),在本系統(tǒng)中采用的是共陽極接法,因此7 段碼為共陽編碼。因此在數(shù)碼管上正常顯示時間的話,必需要對在三個模式下的時、分、秒進(jìn)行譯碼才能得到正常的顯示。module decoder_7seg(sysclk,clk,cl
46、k_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,sec_lsb; reg 7:0hour,min,sec,hour_msb,hour_
47、lsb,min_msb,min_lsb,sec_msb,sec_lsb; wire led_alarm; always (posedge sysclk) begin case(m) 3b00: / 在模式 0 下,將正常計數(shù)值賦值給寄存器,等待譯碼begin hour=hour1; min=min1; sec=sec1; end 3b01: / 在模式 1 下,將鬧鈴時間設(shè)置值賦值給寄存器,等待譯碼begin hour=ahour; min=amin; sec=8hzz; end 3b10: / 在模式 2 下,將手動計數(shù)值賦值給寄存器,等待譯碼begin hour=hour1; min=mi
48、n1; sec=8hzz; end endcase assign led_alarm=(ahour|amin)?1:0; / 指示是否進(jìn)行了鬧鈴定時assign alarm=(alarm1)?clk_1k&clk_4hz:0)|alarm2;/產(chǎn)生鬧鈴音或整點報時音end always ( sysclk ) begin case (hour7:4) 4b0000 : hour_msb=8hc0; / 數(shù)字 0 的共陽編碼賦值給小時的十位4b0001 : hour_msb=8hf9; / 數(shù)字 1 的共陽編碼賦值給小時的十位4b0010 : hour_msb=8ha4; / 數(shù)字 2 的
49、共陽編碼賦值給小時的十位4b0011 : hour_msb=8hb0; / 數(shù)字 3 的共陽編碼賦值給小時的十位4b0100 : hour_msb=8h99; / 數(shù)字 4 的共陽編碼賦值給小時的十位4b0101 : hour_msb=8h92; / 數(shù)字 5 的共陽編碼賦值給小時的十位4b0110 : hour_msb=8h82; / 數(shù)字 6 的共陽編碼賦值給小時的十位4b0111 : hour_msb=8hf8; / 數(shù)字 7 的共陽編碼賦值給小時的十位4b1000 : hour_msb=8h80; / 數(shù)字 8 的共陽編碼賦值給小時的十位4b1001 : hour_msb=8h90;
50、/ 數(shù)字 9 的共陽編碼賦值給小時的十位endcase case (hour3:0) 4b0000 : hour_lsb=8hc0; / 數(shù)字 0 的共陽編碼賦值給小時的個位4b0001 : hour_lsb=8hf9; / 數(shù)字 1 的共陽編碼賦值給小時的個位4| | b0010 : hour_lsb=8ha4; / 數(shù)字 2 的共陽編碼賦值給小時的個位4b0011 : hour_lsb=8hb0; / 數(shù)字 3 的共陽編碼賦值給小時的個位4b0100 : hour_lsb=8h99; / 數(shù)字 4 的共陽編碼賦值給小時的個位4b0101 : hour_lsb=8h92; / 數(shù)字 5 的共
51、陽編碼賦值給小時的個位4b0110 : hour_lsb=8h82; / 數(shù)字 6 的共陽編碼賦值給小時的個位4b0111 : hour_lsb=8hf8; / 數(shù)字 7 的共陽編碼賦值給小時的個位4b1000 : hour_lsb=8h80; / 數(shù)字 8 的共陽編碼賦值給小時的個位4b1001 : hour_lsb=8h90; / 數(shù)字 9 的共陽編碼賦值給小時的個位endcase / 此段分別將min7:0 和 sec7:0 進(jìn)行譯碼,編碼方式與上述方式一樣endmodule 4.9 led 顯示模塊led 顯示電路與cpld的接口電路共有兩種接法,一種接法是靜態(tài)顯示法,即外接 6 個獨
52、立的一位led 數(shù)碼管, 在這種接法下每一位led 的段碼線共有8 根,因此采用這種接法時總共需要6*8+6=54個 i/o 口,而采用這種接法時,分配i/o 工作煩瑣,且電路圖接線復(fù)雜。而第二種接法稱為動態(tài)顯示法,采用共陽或共陰極接法,而所謂的共陽極接法是指將每位led 的段碼線連在一起共同接電源的正極,因此采用這種接法時,一個 6 位的 led 總共只需要8+6=14個 i/o 口,即 8 位的段碼線和 6 位的位選線,采用這種方式的接法時,缺點是每次顯示時6 位 lde 同時顯示相同的數(shù)字,因此在這種接法下,必需要采用掃描的方式來顯示,即每一個時刻只能有一個 led 處在點亮的狀態(tài),其它
53、led 熄滅,此時送出相應(yīng)位的段碼。而在下一時刻則下一位led 處于點亮狀態(tài),且在此時送出相應(yīng)的段碼,如此循環(huán)往復(fù)就能顯示完 6 個不同的數(shù)字。因此采用這種接法時必需要有一個掃描信號來選擇當(dāng)前哪一位 led 處于點亮狀態(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; out
54、put 5:0ledselect; output 7:0dataout; reg 7:0dataout; reg 5:0ledselect; reg 2:0state; always (posedge displayclk) begin if (reset=0) / 復(fù)位信號用于波形仿真時對分頻計數(shù)器初始化begin state2:0=3b000; ledselect= 6b000000; end else begin case(state) 3b000: begin ledselect=6b011111; /數(shù)碼管的第一位(小時的十位)被點亮dataout=hour_msb; / 顯示當(dāng)前時
55、間的小時十位state = 3b001; end 3b001: begin ledselect=6b101111;/數(shù)碼管的第二位(小時的個位)被點亮dataout=hour_lsb; / 顯示當(dāng)前時間的小時個位state = 3b010; end 3b010: begin ledselect=6b110111;/數(shù)碼管的第三位(分的十位)被點亮dataout=min_msb;/顯示當(dāng)前時間的分的十位state = 3b011; end 3b011: begin ledselect=6b111011;/數(shù)碼管的第四位(分的個位)被點亮dataout=min_lsb; / 顯示當(dāng)前時間的分的個位state = 3b100; end 3b100: begin ledselect=6b111101;/數(shù)碼管的第五位(秒的十位)被點亮dataout=sec_msb;/顯示當(dāng)前時間的秒的十位state = 3b101; end 3b101: begin ledselect=6b111110;/數(shù)碼管的第六位(秒的個位)被點亮dataout=sec_lsb;/顯示當(dāng)前
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球醫(yī)藥包裝用鋁箔行業(yè)調(diào)研及趨勢分析報告
- 木結(jié)構(gòu)住宅安裝行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 干粉砂漿、混凝土砌塊、道路穩(wěn)定土建設(shè)可行性研究報告
- 2025年摩托車后貨架項目可行性研究報告-20250102-225626
- 2025-2030年中國智能超聲波儀項目投資可行性研究分析報告
- 廣東省某俱樂部項目申請報告
- 年產(chǎn)2000噸塑料模具項目申請報告可行性研究報告
- 絎架搭棚行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2021-2026年中國動物旅游行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略規(guī)劃研究報告
- 2025-2030年中國儀器線路板項目投資可行性研究分析報告
- 2025-2030年中國清真食品行業(yè)運(yùn)行狀況及投資發(fā)展前景預(yù)測報告
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 2025年河南洛陽市孟津區(qū)引進(jìn)研究生學(xué)歷人才50人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險評估合同3篇
- 蛋雞生產(chǎn)飼養(yǎng)養(yǎng)殖培訓(xùn)課件
- 數(shù)字化轉(zhuǎn)型中的職業(yè)能力重構(gòu)
- 運(yùn)用PDCA降低住院患者跌倒-墜床發(fā)生率
- 2025屆高中數(shù)學(xué)一輪復(fù)習(xí)專練:橢圓(含解析)
- 立春氣象與生活影響模板
評論
0/150
提交評論