




文檔簡介
1、基于 VHDL 語言的多功能數(shù)字鐘設計 摘 要 VHDL作為一種硬件描述語言,可用于數(shù)字電路與系統(tǒng)的描述、模擬和自動設計與 仿真等,是當今電子設計自動化的核心技術。 本文使用VHDL語言設計了一個數(shù)字時 鐘電路,給出了設計該數(shù)字系統(tǒng)的流程和方法。本設計方法具有硬件描述能力強,設 計方法靈活,便于修改等優(yōu)點,大大降低了數(shù)字系統(tǒng)設計的難度,提高了工作效率。 本設計采用EDA技術,以硬件描述語言VHDL為系統(tǒng)邏輯描述手段設計文件,在 MAX+Plus工具軟件環(huán)境下,采用自頂向下的設計方法,由各個基本模塊共同構建了 一個基于CPLD的數(shù)字鐘。 系統(tǒng)主芯片采用EPM7128SLC84,由時鐘模塊、控制模
2、塊、計時模塊、數(shù)據(jù)譯碼 模塊、顯示以及報時模塊組成。經(jīng)編譯和仿真所設計的程序,在可編程邏輯器件上下 載驗證,本系統(tǒng)能夠完成時、分、秒的分別顯示,由按鍵輸入進行數(shù)字鐘的校時、清 零、啟停功能。 關鍵詞:硬件描述語言,VHDL,數(shù)字電路設計, 數(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 總體設計方案.3 3 單元模塊電路設計.4 3.1 時間顯示電路模塊設計 .4 3.2 按鍵及指示燈電路模塊的設計 .5 3.3 蜂鳴器及有源晶振電路的設計 .7 3.4 CPLD 編程下載電路的設計.8 3.5 電源電路的設計 .9 3.5.1 變壓器次級電壓估算.9 3.5.2 變壓器輸入功率的計算.9 3.5.3 濾波電容參數(shù)的選取.10 3.6 EPM7128SLC84 器件介紹.
8、10 4 CPLD 編程設計.11 4.1 系統(tǒng)信號的定義及頂層模塊.11 4.2 時鐘節(jié)拍產(chǎn)生模塊 .12 4.3 模式選擇功能模塊.14 4.4 快速時間設置功能模塊 .16 4.5 秒、分、時計時與時間調整模塊 .16 4.6 鬧鈴時間設置模塊.18 4.7 鬧鈴與整點報時模塊.19 4.8 七段顯示譯碼模塊 .20 4.9 LED 顯示模塊 .22 5 系統(tǒng)功能仿真.25 5.1 時鐘節(jié)拍產(chǎn)生模塊的仿真波形 .25 5.2 模式選擇功能模塊的仿真波形 .26 5.3 鬧鈴設置功能模塊的仿真波形 .27 5.4 七段譯碼功能模塊的仿真波形 .28 5.5 LED 顯示功能模塊的仿真波形
9、.30 5.6 系統(tǒng)總體功能仿真波形 .31 總 結.32 致 謝.33 參考文獻.34 附錄 A:基于 CPLD 的多功能數(shù)字鐘電路圖 .35 附錄 B:基于 VHDL 語言的時、分、秒等電路的源碼.36 1 緒論 1.1 課題背景 我們已經(jīng)進入了數(shù)字化和信息化的時代,其特點是各種數(shù)字產(chǎn)品的廣泛應用?,F(xiàn) 代數(shù)字產(chǎn)品在性能提高、復雜度增大的同時,其更新?lián)Q代的步伐也越來越快,實現(xiàn)這 種進步的因素在于生產(chǎn)制造技術和電子設計技術的進步。生產(chǎn)制造技術以微細加工技 術為代表,目前已進展到深亞微米階段,可以在幾平方厘米的芯片上集成數(shù)千萬個晶 體管1。 PLD 器件和 EDA 技術的出現(xiàn),改變了傳統(tǒng)的設計思
10、路,使人們可以立足于 PLD 芯片來實現(xiàn)各種不同的功能,新的設計方法能夠由設計者自己定義器件內(nèi)部邏輯和管 腳,將原來由電路板設計完成的工作大部分放在芯片的設計中進行。這樣不僅可以通 過芯片設計實現(xiàn)各種邏輯功能,而且由于管腳定義的靈活性,減輕了原理圖和印制板 設計的工作量和難度,增加了設計的自由度,提高了效率。同時這種設計減少了所需 芯片的種類和數(shù)量,縮小了體積,降低了功耗,提高了系統(tǒng)的可靠性2。 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的 報時功能。諸如定時自動報警、定時啟閉電路、定時開關烘箱、通斷動力設備,甚至 各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化
11、為基礎的。因此,研究數(shù) 字鐘及擴大其應用,有著非常現(xiàn)實的意義。 1.2 本課題研究的內(nèi)容 本設計是基于 CPLD(MAX7000S 系列)的多功能數(shù)字鐘設計。硬件界面為一個 6 位的 LED 數(shù)碼管,時間顯示方式為 6 位同時顯示,即顯示狀態(tài)為:88:88:88。顯 示的時間制為 24 小時制。三個時間設定按鍵,分別為 MODE 模式選擇鍵,SET 設定 鍵和 CHANGE 數(shù)值修改鍵3。 按鍵功能介紹:MODE 按鍵用來選擇當前數(shù)字鐘的工作模式,系統(tǒng)正常工作在模 式 0 下。當在正常時鐘模式下第一次按下 MODE 鍵時,系統(tǒng)進入模式 1,即鬧鈴模式, 在此模式下可以通過 SET 和 CHAN
12、GE 按鍵的配合使用來設定所需要的鬧鈴時間。當 再一次按下 MODE 按鍵后系統(tǒng)進入手動校時模式,在此模式下通過 SET 和 CHANGE 按鍵的配合使用,可以改變當前時間。SET 按鍵則用于在不同的模式下選擇當前設定 的位置,比如當前設定的位置是小時,則再一次按下 SET 按鍵后當前設定的位置變?yōu)?分鐘。CHANGE 按鍵用來將當前設定位置的時間值加 1,當長時間按下 CHANGE 按 鍵時,當前設定值為連續(xù)快速加 1,此功能用于快速設定時間4。 系統(tǒng)帶四個指示燈電路,一個為電源指示燈,其他三個為工作狀態(tài)指示燈,即分 別為 LED_ALARM、LED_HOUR 和 LED_MIN。LED_A
13、LARM 用于指示當前是否設有 鬧鈴,當 LED_ALARM 指示燈亮時表明當前設有鬧鈴。LED_HOUR 和 LED_MIN 用 于指示當前設定的是時間的小時還是分鐘,當 LED_HOUR 指示燈亮時表明此時設定的 是時間的小時值,當 LED_MIN 指示燈亮時表明此時設定的是時間的分鐘值。 鬧鈴的功能是實現(xiàn)當?shù)竭_預設的時間點時產(chǎn)生為時 20s 的“嘀嘀嘀嘀”急促短音。 整點報時的功能是實現(xiàn)在每個整點的 5 秒鐘前產(chǎn)生整點報時音,報時音為“嘀嘀嘀-嘟” 4 短一長音。 2 總體設計方案 整個設計的方式采用 TOP-DOWN 設計方法,即自頂向下的設計。這種設計方法 首先從系統(tǒng)設計入手,在頂層
14、進行功能方框圖的劃分和結構設計。在功能級進入仿真 和糾錯,并用硬件描述語言對高層次的系統(tǒng)行為進行描述,然后用綜合工具將設計轉 化為具體門電路網(wǎng)表,其對應的物理實現(xiàn)可以是 PLD 器件或專用集成電路。由于設計 的主要仿真和調試過程是在高層次上完成的,這一方面有利于早期發(fā)現(xiàn)結構上的錯誤, 避免設計工作的浪費,同時也減少了邏輯功能仿真的工作量,提高了設計的一次成功 率5。 多功能數(shù)字鐘設計分為 1 個頂層模塊和 8 個功能子模塊。頂層模塊名稱為 clock.v。各功能子模塊分別為:系統(tǒng)分頻功能模塊 clk_generate.v、模式選擇功能模塊 mode_select.v、快速時間設置功能模塊 fa
15、st_settime.v、秒分時計時與時間調整模塊 time_mode0.v、鬧鈴時間設置模塊 alarm_set.v、鬧鈴與整點報時模塊 alarm.v、7 段顯示 譯碼模塊 decoder_7seg.v 以及 LED 顯示功能模塊 display.v。 圖 2.1 整個系統(tǒng)的模塊劃分 3 單元模塊電路設計 3.1 時間顯示電路模塊設計 時間顯示電路主要由兩部分組成,如圖 3.1 所示。其中一部分為六位 LED 數(shù)碼管 的驅動電路,另一部分為 LED 數(shù)碼管電路。LED 驅動電路由 Q1、Q2、Q3、Q4、Q5、Q6 六個三極管和 R5、R6、R7、R8、R9、R10 基極偏置電阻 組成。驅
16、動三級管為 PNP 型三極管,用于開關電路中。當三極管 Q1 的基極(即 CPLD 的 LED0 輸出端)為低電平時,Q1 的發(fā)射結正向偏置,集電結反向偏置,因此 三極管處于導通狀態(tài),此時有 Vce0.20.3V。反之當 Q1 的基極為高電平時 Q1 截止。 Q1Q6 的基極(LED0LED5)分別接 CPLD 的 PIN74、PIN73、PIN70、PIN69、PIN68、PIN67,分別作為 LED 數(shù)碼管的位選端6。 圖 3.1 LED 顯示電路 LED 的顯示方式有靜態(tài)顯示和動態(tài)方式兩種工作方式。LED 顯示器工作于靜態(tài)顯 示方式時,各位的共陰極(或共陽極)連接在一起并接地(或+5V)
17、 ;每位的段碼線 (Adp)分別與一個 8 位的鎖存器輸出相連。之所以為靜態(tài)顯示,是因為各個 LED 的 顯示字符的字符一經(jīng)確定,相應鎖存器鎖存的段碼輸出將維持不變,直到送入另一個 字符的段碼為止。正因為如此,靜態(tài)顯示器的亮度都較高。但是因為靜態(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 的段碼線都是獨立的,因此一個 6 位的 LED 顯示器需要占用 6*8+6=54 個 I/O 口,在這種情況下為了簡化接線,本設計采用的是動態(tài)掃描方式來顯示。 在動態(tài)顯示方式下,通常將所有位的段碼線相應并聯(lián)在一起,由一個 8 位的 I/O 口控制,形成段碼線的多路復用,而各位的共陽極或共陰極分別由相應的 I/O 口控制, 形成各位的分時選通7。圖 3.1 所示的電路是一個六位的 LED 顯示電路。其中段碼線 占用 1 個 8 位 I/O 口,而位選線占用六位 I/O 口。由于各段碼線并聯(lián),8 位
19、 I/O 口輸出 的段碼對各個顯示位來說都是相同的。因此,在同一時刻,如果各位位選線都處于選 通狀態(tài)的話六位 LED 將顯示相同的字符。若使各個 LED 能同時顯示出與本位相應的 字符,就必須采用動態(tài)顯示方式,即在某一時刻,只讓某一位的位選線處于選通狀態(tài), 而其他各位的位選處于關閉狀態(tài),同時,段碼線上輸出相應的要顯示的字符段碼。這 樣,在同一時刻,六位 LED 中只有選通的那一位顯示出字數(shù),而其它則是熄滅的。同 樣在下一時刻,只讓下一位的位選線處于選通狀態(tài),而其它各位的位選線處于關閉狀 態(tài),在段碼線上輸出將要顯示字符的段碼,則同一時刻,只有選通位顯示相應的字符, 而其它各位是熄滅的,如此循環(huán)下
20、去,就可以使各位顯示出將要顯示的字符。 3.2 按鍵及指示燈電路模塊的設計 根據(jù)電子電路常識,采用灌電流工作方式的電路的功耗要比采用拉電流方式工作 的電路小。因此本設計中所有的外部鍵盤,指示二極管均采用灌電流的工作方式。當 多功能數(shù)字鐘的按鍵未按下時按鍵的輸出(即 CPLD 的輸入)為低電平,當按鍵按下 時輸出(即 CPLD 的輸入)為高電平。 在本設計中只有三個按鍵,分別為 MODE、SET、CHANGE。MODE 按鍵用于模 式選擇,按下一次 MODE 按鍵后電路進入鬧鈴設置模式,在該模式下可以用 SET 鍵來 選擇當前是設置小時還是設置分鐘,而用 CHANGE 鍵可以改變當前設置鬧鈴的小
21、時或 分鐘(向上加一) 。再按一次 MODE 鍵則進入手動校時功能模式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 按鍵電路 在本設計中共有四個指示燈,一個為電源指示燈,其它三個是工作狀態(tài)指示燈, D1 為鬧鈴報警指示電路,當設置鬧鈴后鬧鈴指示電路就工作在點亮狀態(tài),指示當前設 有鬧鈴。D2 和 D3 用來指示當前設置狀態(tài)。當在鬧鈴設置模式和手動校時模式下,D2 或 D3 會有一個在點亮狀態(tài),當 D2 亮時表示當
22、前設置的是小時,當 D3 亮時表示當前 設置的是分鐘。指示燈電路如圖 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。當 CPLD 的引腳輸出為高電平時相應的指示燈就點亮。 3.3 蜂鳴器及有源晶振電路的設計 在本設計中由于有音調的變換,所以必需采用交流蜂鳴器。由于 CPLD 管腳的驅 動能力有限,因此通過連接一個三極管來增強驅動能力,從而提高蜂鳴器的響度。二 極管 D9 起到續(xù)流
23、保護的作用,蜂鳴器電路如圖 3.4 所示。 R28 1K R29 RES2 Q7 8550 VCC D9 BUZZER 圖 3.4 蜂鳴器電路 系統(tǒng)時鐘采用 2.048MHZ 的有源晶體振蕩器。為了使有源晶振能輸出較好的波形, 必需保證供電的穩(wěn)定。所以在晶振電路的前端加了兩個小電容對電源進行濾波,在時 鐘輸出端加了一個小電阻,能有效地抑制高次諧波和實現(xiàn)阻抗匹配。有源晶振電路如 圖 3.5 所示。 R25 33K C1 102 C2 102 VCC GND 2 CLKOUT 3 NC 1 VCC 4 圖 3.5 有源晶振電路 3.4 CPLD 編程下載電路的設計 CPLD 器件多采用 JTAG
24、編程方式,JTAG 編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中 先對芯片進行預編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上, 再用 JTAG 編程,從而大大加快工程進度。JTAG 接口可對 PSD 芯片內(nèi)部的所有部件進 行編程9。 在硬件結構上,JTAG 接口包括兩部分:JTAG 端口和控制器。與 JTAG 接口兼 容的器件可以是微處理器(MPU) 、微控制器(MCU) 、PLD、CPL、FPGA、ASIC 或 其它符合 IEEE.1149.1 規(guī)范的芯片。IEEE.1149.1 標準中規(guī)定對應于數(shù)字集成電路芯片 的每個引腳都設有一個移位寄存單元,稱為邊界掃描單元 BSC。它將 JTA
25、G 電路與內(nèi) 核邏輯電路聯(lián)系起來,同時隔離內(nèi)核邏輯電路和芯片引腳。由集成電路的所有邊界掃 描單元構成邊界掃描寄存器 BSR。邊界掃描寄存器電路僅在進行 JTAG 測試時有效, 在集成電路正常工作時無效,不影響集成電路的功能。JTAG 編程方式對 CPLD 和 FPGA 器件都支持,用于 CPLD 器件的下載文件是 POF 文件。JTAG 下載電路如圖 3.6 所示。JTAG 下載電路的 10 針接口引腳定義為:1 引腳為 TCK 時鐘,2 引腳接地,3 引腳 TDO 為測試數(shù)據(jù)輸出(數(shù)據(jù)輸出,來自器件) ,4 引腳接電源電壓,5 引腳 TMS 為測試模式選擇(編程使能) ,NC 為 NO-CO
26、NNECT。9 引腳 TDI 為測試數(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 電源電路的設計 本設計中的核心器件為 MAX7000S 系列的 EPM7128SLC84,I/O 口電壓 VCCIO 和 核心電壓 VCCINT 均支持正 5V,因此在本設計中統(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 以及保險絲組成,其電路圖如圖 3.7 所示。電源的輸出為+5V 輸出。下 面介紹電源各部分參數(shù)的整定方法。 3.5.1 變壓器次級電壓估算 由于穩(wěn)壓器要正常工作時輸入端的電壓必需要比輸出端高 2.5V 時才能
28、使其穩(wěn)定工 作。考慮到市網(wǎng)交流電壓的波動情況,在市網(wǎng)電壓為 200V 時也能正常工作,則有 220/200*Vac 要大于 8.0,所以 Vac 必需要大于 8.8V,即交流變壓器的副邊輸出電壓應 該高于 8.8V,在本設計中選取 9V。 3.5.2 變壓器輸入功率的計算 假設負載電流為 500mA,若輸出電壓為 5V,則有效功率為 5V*0.5A=2.5W。正常 情況下變壓器輸出功率約為 9V*1.2*1.5A=5.4W,當市網(wǎng)電壓升到 250V 時,變壓器的 輸出功率為 5.4W*250/220=6.2W。小型電源變壓器的效率一般為 75%左右。因此電源 變壓器的輸入功率為 6.2W/0.
29、75=8.27W。 3.5.3 濾波電容參數(shù)的選取 假設負載電流為 500mA,若輸出電壓為 7.5V,則等效負載電阻為 15。電源頻率 為 50hz,則 T=0.02s,根據(jù) CRL=(35)T/2,則 C=(35)T/2 /RL=20003300uF。在本設計中取 2200uF。電容耐壓應大于 1.42*Vac 即 Vc=1.42*9*250/220=14.5V(其中 250/220 是考慮市網(wǎng)電源電壓過高時的情況)。在本設 計中電容耐壓值取 16V。 3.6 EPM7128SLC84 器件介紹10 本次設計的核心器件采用 ALTERA 公司的 CPLD 可編程器件。ALTERA 公司的
30、MAX7000S 系列 CPLD 有著較高的性價比。MAX7000S 系列是基于 ALTERA 第二代 MAX 架構的高密度、高性能的 PLD 器件。MAX7000 器件包含 32256 個可聯(lián)結成 16 個宏單元組的邏輯陣列塊的宏單元。 圖 3.8 EPM7128SLC 的 PLCC 封裝 EPM7128SLC84 是 MAX7000S 家族成員之一,它有如下的特點:可用邏輯門個數(shù) 為 2500 門,128 個宏單元,8 個邏輯陣列塊,最大用戶可用 I/O 口 100 個,支持 5V 在 系統(tǒng)編程和符合 IEEE.STD.1179 的 JTAG 下載接口,內(nèi)建邊界掃描測試電路,支持片 上調試
31、,EPM7128SLC84-15 的封裝如圖 3.8 所示。 4 CPLD 編程設計 4.1 系統(tǒng)信號的定義及頂層模塊 整個系統(tǒng)輸入、輸出信號的定義: sysclk:系統(tǒng)的時鐘信號,由外部有源晶振產(chǎn)生,頻率為 2.048Mhz; mode:外接按鍵,模式選擇信號,mode=0 時為時鐘模式,mode=1 時為設定鬧鐘模 式,mode=2 時為手動設定時間模式; set:外接按鍵,用于在手動設置時間時選擇是調整小時還是分鐘;若長時間按住該 鍵,還可以使秒信號清零,用于精確調整時間; change:外接按鍵,手動調整時間,每按一次計數(shù)器加 1;若長時間按住則連續(xù)快 速加 1,用于快速調時和定時;
32、alarm:接蜂鳴器,輸出到蜂鳴器的信號,用于產(chǎn)生鬧鈴音和報時音;鬧鈴音為持 續(xù) 20s 的急促的“嘀嘀嘀”音,整點報時音為“嘀嘀嘀-嘟”四短一長音;Dataout:輸 出信號,輸出顯示時間的數(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(); /調用時鐘節(jié)拍產(chǎn)生模塊 time_mode0 time_mode0(); / 秒、分、時計時與時間調整模塊 mode_select mode_select(); /調用模式選擇功能模塊 fast_settime fast_settime(); /調用快速時間設置功能模塊 alarm_set alarm_set(); /調用鬧鈴時間設置模塊 alarm alarm(); /調用鬧鈴與整點報時模塊 decoder_7seg decoder_7seg(); /調用 7 段譯碼模塊 display display(); /調用顯示模塊 endmodule 4.2 時鐘
34、節(jié)拍產(chǎn)生模塊 由于整個系統(tǒng)只有一個晶體振蕩器,但是設計需要不同的時鐘信號,因此需要設 計一個分頻進程,對系統(tǒng)的有源晶振產(chǎn)生的 2.048Mhz 時鐘進行分頻,產(chǎn)生需要的時鐘 節(jié)拍。在本設計中總共用到如下幾個時鐘節(jié)拍:1hz 的時鐘 CLK,4HZ 的時鐘 CLK_4hz,1Khz 的時鐘信號 CLK_1K,和 50hz 的時鐘 displayclk。其中 CLK 節(jié)拍用于 產(chǎn)生秒計時信號,在每個 CLK 的上升沿到來時秒計數(shù)器加 1。CLK_4hz 節(jié)拍用于快速 調整時間,當長時間按下 CHANG 按鍵時,當前設置的時鐘快速增加11。CLK_1K 節(jié) 拍用于鬧鈴音的產(chǎn)生,displayclk
35、時鐘節(jié)拍是頻率為 50hz 的信號,由于本設計中顯示 部分采用 LED 動態(tài)顯示的方式,因此必需要有一個掃描信號對 6 位的 LED 的每個位 進行輪流選通點亮。分頻進程的原理是在 CPLD 內(nèi)部設置一個分頻計數(shù)器和一個觸發(fā) 器,當計數(shù)到分頻值時觸發(fā)器進行翻轉,因此只要設置不同的分頻計數(shù)器的計數(shù)值就 可以得到不同的時鐘節(jié)拍。在 CPLD 內(nèi)部設置分頻計數(shù)器的缺點是,CPLD 的觸發(fā)器 資源有限,設置計數(shù)器對資源的占用比較大,因此盡量可能少用一些時鐘節(jié)拍,或者 盡量使需要使用的時鐘節(jié)拍相同,還有一種方法是利用兩個已有的時鐘信號進行邏輯 運算從而獲得想要的時鐘節(jié)拍。系統(tǒng)的分頻進程如下: 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ù)器,用于產(chǎn)生周期為 1S 的時鐘信號 reg 19:0div_count2; /分頻時鐘計數(shù)器,用于產(chǎn)生頻率為 4hz 的時鐘信號 reg 11:0div_count3; /分頻時鐘計數(shù)器,用于產(chǎn)生頻率為 1Khz 的時鐘信號 reg 14
37、:0divclk_cnt; /分頻時鐘計數(shù)器,用于產(chǎn)生 50HZ 的數(shù)碼管掃描信號 displayclk always (posedge sysclk) begin if (reset) div_count1=21d; if (div_count1=21d) /=0.5S begin clk=clk; /clk 為周期為 1S 的時鐘信號 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 的時鐘信號 div_count2=20d; end else begin div_count2=div_count2+1b1; end end always (posedge sysclk) begin /產(chǎn)生周期為 50HZ 和 1KHZ 的時鐘節(jié)拍 end endmodule 4.3 模式選擇功能模塊 本設計是多功能數(shù)字鐘,實現(xiàn)的功能是以數(shù)字形式顯示時、分、秒的時間, 能進 行手動快校時、快校分或慢校時、慢校分。該多功能電子鐘共有 3 種模式。分別為: 模式 0 為正常時
39、鐘模式,模式 1 為設置鬧鈴功能,模式 2 為手動校時功能。多功能電 子鐘共有三個按鍵,一個 MODE 模式選擇鍵,用于選擇相應的模式,一個 SET 時間選 擇鍵,用于選擇當前設定的是分鐘或者是小時,一個 CHANGE 鍵,用于給當前值加 1,當長時間按住 CHANGE 時當前值連續(xù)快速加 1,用于快速設定時間12。模式選擇 進程如下所示。 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 /手動設定分鐘 count1=change; led_min,led_hou
41、r=2b10; end else begin /手動設定小時 counta=change; led_min,led_hour=2b01; end count2,countb=2b00; end 1:begin if (bool) begin /設定鬧鈴分鐘 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; /正常時鐘狀態(tài) endcase end endmodule 4.4 快速時間設置功能模塊 多功能數(shù)字鐘要求有快速時間設置功能和慢設置功能。所謂快速時間設置功能是 指一直按住按鍵不放時,當前值能夠快速的增加;而慢設置是指每按一次按鍵則當前 值向上增一??焖贂r間設置進程如下所示??焖贂r間設置進程,功能描述:長時間按 下“change”鍵,則分別生成 num1、num2、num3、num4 信號用于連續(xù)快速加 1。 當長時間按下 CHANGE 按鍵后,利用系統(tǒng)的 CLK_4HZ 對計數(shù)器進行快速加一處 理。如果不是長時間按下 CHANGE 按鍵的話則每按一次 CHANGE 按建鍵就對相應的
43、寄存器的值加一處理。 4.5 秒、分、時計時與時間調整模塊 秒計時程序采用周期為 1S 的基準時鐘信號 CLK,在每個 CLK 時鐘信號的上升沿 對秒寄存器加 1,當長時間按下 SET 按鍵后對秒寄存器進行清零,該功能用于準確校 時。CT1 為分計時的同步時鐘,在每個 CT1 時鐘信號的上升沿對分寄存器加 1。當未 長時間按下 CHANGE 按鍵時,CT1 時鐘是周期為 60 秒的時鐘信號。當長時間按下 CHANGE 后,CT1 時鐘變?yōu)橹芷跒?4HZ 的時鐘信號,該信號用于快速時間校準功能。 CTA 時鐘是周期為 60 分鐘的時鐘信號,在每個 CTA 時鐘信號的上升沿對小時寄存器 加 1,當
44、當前設置值為小時且長時間按下 CHANGE 按鍵后,CTA 時鐘變?yōu)橹芷跒?4HZ 的時鐘信號,該信號用于快速時間校準功能。 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) /分鐘計時進程 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) /小時計時與調整進程 begin if (hour1=8h23) hour1=0; else begin /此段 VHDL 語言時、分、秒源碼見附錄二 end end endmodule 4.6 鬧鈴時間設置模塊 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 鬧鈴與整點報時模塊 鬧鈴的功能是實現(xiàn)當?shù)竭_預設的時間點時產(chǎn)生為時 20s 的“嘀嘀嘀嘀”急促短音。 整點報時的功能是實現(xiàn)在每個整點的 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
49、sysclk) begin if (min1=amin) else alarm1=0; else alarm18d54)|(!(min1|sec1) if (sec18d58) alarm2=clk_1k; / 產(chǎn)生長音 else alarm2=clk_1k; /產(chǎn)生短音 else alarm2=0; end endmodule 4.8 七段顯示譯碼模塊 由于時鐘計數(shù)模式采用的是 BCD 碼計數(shù)方式,而顯示采用的 8 段發(fā)光二極管,每 個段代表一位二進制數(shù),在本系統(tǒng)中采用的是共陽極接法,因此 7 段碼為共陽編碼。 因此在數(shù)碼管上正常顯示時間的話,必需要對在三個模式下的時、分、秒進行譯碼才 能得
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 下,將正常計數(shù)值賦值給寄存器,等待譯碼 begin hour=hour1; min=min1; sec=sec1; end 3b01: /在模式 1 下,將鬧鈴時間設置值賦值給寄存器,等待譯碼 begin hour=ahour; min=amin; sec=8hzz; end 3b10: /在模式 2 下,
52、將手動計數(shù)值賦值給寄存器,等待譯碼 begin hour=hour1; min=min1; sec=8hzz; end endcase assign led_alarm=(ahour|amin)?1:0; /指示是否進行了鬧鈴定時 assign alarm=(alarm1)?clk_1k/產(chǎn)生鬧鈴音或整點報時音 end always ( sysclk ) begin case (hour7:4) 4b0000 : hour_msb=8hc0; /數(shù)字 0 的共陽編碼賦值給小時的十位 4b0001 : hour_msb=8hf9; /數(shù)字 1 的共陽編碼賦值給小時的十位 4b0010 : hou
53、r_msb=8ha4; /數(shù)字 2 的共陽編碼賦值給小時的十位 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 的共陽編碼賦值給小時的十位 4b10
54、01 : hour_msb=8h90; /數(shù)字 9 的共陽編碼賦值給小時的十位 endcase case (hour3:0) 4b0000 : hour_lsb=8hc0; /數(shù)字 0 的共陽編碼賦值給小時的個位 4b0001 : hour_lsb=8hf9; /數(shù)字 1 的共陽編碼賦值給小時的個位 4b0010 : hour_lsb=8ha4; /數(shù)字 2 的共陽編碼賦值給小時的個位 4b0011 : hour_lsb=8hb0; /數(shù)字 3 的共陽編碼賦值給小時的個位 4b0100 : hour_lsb=8h99; /數(shù)字 4 的共陽編碼賦值給小時的個位 4b0101 : hour_lsb
55、=8h92; /數(shù)字 5 的共陽編碼賦值給小時的個位 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 endmodule 4.9 LED 顯示模塊 LED 顯示電路與 CPLD 的接口電路共有兩種接法,一種接法是靜態(tài)顯示法,即外 接 6 個獨立的一位 LED 數(shù)碼管,在這種接法下
56、每一位 LED 的段碼線共有 8 根,因此 采用這種接法時總共需要 6*8+6=54 個 I/O 口,而采用這種接法時,分配 I/O 工作煩瑣, 且電路圖接線復雜。而第二種接法稱為動態(tài)顯示法,采用共陽或共陰極接法,而所謂 的共陽極接法是指將每位 LED 的段碼線連在一起共同接電源的正極,因此采用這種接 法時,一個 6 位的 LED 總共只需要 8+6=14 個 I/O 口,即 8 位的段碼線和 6 位的位選 線,采用這種方式的接法時,缺點是每次顯示時 6 位 LED 同時顯示相同的數(shù)字,因此 在這種接法下,必需要采用掃描的方式來顯示,即每一個時刻只能有一個 LED 處在點 亮的狀態(tài),其它 LE
57、D 熄滅,此時送出相應位的段碼。而在下一時刻則下一位 LED 處 于點亮狀態(tài),且在此時送出相應的段碼,如此循環(huán)往復就能顯示完 6 個不同的數(shù)字。 因此采用這種接法時必需要有一個掃描信號來選擇當前哪一位 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;
58、output 5:0ledselect; output 7:0dataout; reg 7:0dataout; reg 5:0ledselect; reg 2:0state; always (posedge displayclk) begin if (reset=0) /復位信號用于波形仿真時對分頻計數(shù)器初始化 begin state2:0=3b000; ledselect= 6b; end else begin case(state) 3b000: begin ledselect=6b; /數(shù)碼管的第一位(小時的十位)被點亮 dataout=hour_msb; /顯示當前時間的小時十位 st
59、ate = 3b001; end 3b001: begin ledselect=6b;/數(shù)碼管的第二位(小時的個位)被點亮 dataout=hour_lsb; /顯示當前時間的小時個位 state = 3b010; end 3b010: begin ledselect=6b;/數(shù)碼管的第三位(分的十位)被點亮 dataout=min_msb;/顯示當前時間的分的十位 state = 3b011; end 3b011: begin ledselect=6b;/數(shù)碼管的第四位(分的個位)被點亮 dataout=min_lsb; /顯示當前時間的分的個位 state = 3b100; end 3b1
60、00: begin ledselect=6b;/數(shù)碼管的第五位(秒的十位)被點亮 dataout=sec_msb;/顯示當前時間的秒的十位 state = 3b101; end 3b101: begin ledselect=6b;/數(shù)碼管的第六位(秒的個位)被點亮 dataout=sec_lsb;/顯示當前時間的秒的個位 state = 3b000; end endcase end end endmodule 5 系統(tǒng)功能仿真 5.1 時鐘節(jié)拍產(chǎn)生模塊的仿真波形 時鐘節(jié)拍產(chǎn)生模塊 clk_generat.v 用于產(chǎn)生整個系統(tǒng)所需要的時鐘節(jié)拍。在本系統(tǒng) 中總共需要 4 個不同的時鐘節(jié)拍,分別為
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初一上學期長郡數(shù)學試卷
- 高級瓦楞紙板及紙箱生產(chǎn)項目環(huán)評報告表
- 通信電纜施工方案
- 2024-2025學年下學期高一語文第二單元B卷
- 柴油裝卸系統(tǒng)施工方案
- 【專精特新】稀土永磁材料企業(yè)專精特新“小巨人”成長之路(智研咨詢)
- 信息技術下的立體幾何教學初探
- 高中歷史課堂教學情境創(chuàng)設的策略研究
- 南京科遠KD200變頻器使用手冊
- 中外教育史知到課后答案智慧樹章節(jié)測試答案2025年春牡丹江師范學院
- 港口航運運營管理專業(yè)總復習試題(四)及答案
- 《數(shù)字電子技術基礎 第4版》 課件 第 1 章 數(shù)字電路基礎(第4版)
- 高速鐵路客運組織與服務通用課件
- 電氣設備試驗、檢驗、調試記錄
- 物業(yè)管理費測算及物業(yè)增收途徑課件
- 歡樂的那達慕混聲合唱簡譜
- 【初中語文】羈旅思鄉(xiāng)類(10首)+中考語文必考古詩賞析(84首)(意象大全)
- JGJ107-2010鋼筋機械連接技術規(guī)程課件
- 綜合實踐活動課《美麗的麥稈畫》課件
- 【5A文】大型國有電力集團風電技術監(jiān)督導則及實施細則
- 季節(jié)性疾病防治知識講座
評論
0/150
提交評論