基于VHDL語言的作息時間控制器設(shè)計
引言
超高速集成電路硬件描述語言(VHDL)是一種用于電路設(shè)計的高級語言,與其他硬件描述語言相比,其具有語言簡潔、靈活性強、不依賴于器件設(shè)計等特點,使其成為EDA技術(shù)通用的硬件描述語言,使EDA技術(shù)更便于設(shè)計者掌握[1]。
本文依托QuartusⅡ軟件環(huán)境,采用VHDL語言編程,在不修改標準時鐘電路的基礎(chǔ)上,通過軟件編程設(shè)計了一款能夠?qū)⒂脩糇飨r間在標準時鐘電路中進行提醒的作息時間控制器,該作息時間控制器實現(xiàn)了不同作息事件不同提醒程度和方式的設(shè)計目的。
1設(shè)計原理
一款根據(jù)作息時間的不同,通過不同程度和方式提醒的作息時間控制器,其提醒和模式設(shè)計是整個設(shè)計的核心。本文充分運用VHDL語言"自頂向下"的設(shè)計優(yōu)點,將整個系統(tǒng)進行模塊劃分,設(shè)計每一個模塊的功能及各模塊之間的接口,最終確定分為四大模塊:分頻模塊、時間調(diào)整模塊、計數(shù)器模塊以及顯示模塊。
2功能模塊
2.1分頻模塊
該模塊負責(zé)輸入時鐘信號,因為該ⅡFРA中已有的時鐘信號是50>HM的時鐘信號,所以該分頻器是一個50M分頻的分頻器,以保證通過這個分頻器后每一個輸入信號是1S,從而使后面的計時器每一次計數(shù)為1S,保證計數(shù)的準確。其Symbol如圖1所示,其中clk為系統(tǒng)時鐘信號輸入端,larrz為1HM時鐘頻率輸出端。
圖11Hz分頻器symbol
2.2時間調(diào)整模塊
該模塊負責(zé)實現(xiàn)計時器的預(yù)設(shè)功能,通過手動輸入信號,在計時之初就改變計時器的初始計時狀態(tài)。計時器的最大計時時間是固定的,即23h59min59S,同時可以手動校正與標準時鐘的誤差。調(diào)整電路設(shè)計如圖2所示,該模塊是由一個非門和一個二選一或門組成的,其中非門的作用是將輸入的低電壓轉(zhuǎn)化為高電壓,二選一或門的作用是保證標準時鐘電路正常進行的情況下,通過手動也能對時鐘電路進行控制。
2.3計數(shù)器模塊
該模塊把分頻器模塊輸出的信號作為相應(yīng)信號,每有一個信號則作用一次,并在這個計時器模塊中加入了暫停和清零兩個信號的端口,用另外兩個可自由控制的開關(guān)給定信號,來控制暫停和清零功能的動作與否[4]。同時為了完成最大計時為23h59min59s,這個計數(shù)器模塊由3個計數(shù)器組成,2個60計數(shù)器用來統(tǒng)計秒位和分位的時間變化,1個24計數(shù)器用來統(tǒng)計時位的時間變化。其中60秒位計時器的輸入端鏈接60分位計時器的輸出端,保證每60s顯示1min,60分位計時器的輸入端鏈接24時位計時器的輸出端,保證每60min顯示1h,這樣設(shè)計可以保證計時器的計時規(guī)律與實際計時規(guī)律相同,更直觀。
60進制計數(shù)器其symbo1如圖3所示,引腳c1k是接受從60秒位計時器中來的進位信號,并把這個時鐘信號導(dǎo)入到模塊中,即實際中計時60s記為1min:引腳c1r是控制清零功能的,當系統(tǒng)收到從這個端口進入的信號時,此計數(shù)器模塊內(nèi)的所有計時結(jié)果清零:引腳en是控制暫停功能的,當系統(tǒng)收到從這個端口進入的信號時,此計時器不管c1k口是否有信號,系統(tǒng)均保持計時不變,保持當前狀態(tài):引腳pa為接受改變亮燈模式的輸入信號:引腳h[3..o]是輸出亮燈模式的類型的信號:引腳q[3..o]是輸出計時個位的結(jié)果信號,能顯示0到9:引腳b[3..0]是輸出計時十位的結(jié)果信號,能顯示0到6:引腳carry是輸出進位信號,當此計數(shù)器達到最大值即60時,系統(tǒng)則輸出一個進位信號,同時系統(tǒng)計時結(jié)果清零。引腳sh1、sh2、sh3、sh4是在達到作息時間表中時間時向彩燈輸出信號,達到鬧鐘設(shè)定秒、分鐘位效果。
24進制計數(shù)器其symbo1如圖4所示,引腳c1k、c1r、en與60進制計數(shù)器功能相同。引腳q[3..o]是輸出計時個位的結(jié)果信號,能顯示0到9:引腳b[3..0]是輸出計時十位的結(jié)果信號,能顯示0到9:引腳carry是輸出進位信號,當此計數(shù)器達到最大值即24時,系統(tǒng)則輸出一個進位信號,同時系統(tǒng)計時結(jié)果清零。引腳sh1、sh2、sh3是在達到作息時間表時間時向彩燈輸出信號,達到鬧鐘控制時位的效果。
2.4顯示模塊
該模塊用來處理計數(shù)器模塊的輸出信號,通過相應(yīng)的編碼把計時結(jié)果顯示在7位LED數(shù)碼管上,從而使計時結(jié)果能夠直觀顯示出來[5]。其symbo1如圖5所示,引腳d[3..0]是接受從計時器模塊輸出的信號,每一個顯示模塊與一位計時器輸出信號相對應(yīng):引腳h[6..0]是把處理后的計時器輸出信號編譯到7位LED數(shù)碼管上,使得每一位數(shù)字能夠顯示出來。
圖424進制時計數(shù)器symbol
圖5顯示模塊symbol
3結(jié)語
本文利用VHDL語言,在Quartus一軟件環(huán)境下進行編程設(shè)計的作息時間控制器,當下載到DE2-115開發(fā)板上進行硬件驗證,所得結(jié)果滿足設(shè)計要求。
在設(shè)計過程中,發(fā)現(xiàn)作息時間控制器與我們?nèi)粘K玫聂[鐘等提醒器件相近,但該作息時間控制器無法與鬧鐘一樣可以讓用戶自己設(shè)定提醒時間,希望能與讀者共同探討是否能將作息時間表的設(shè)定交予用戶設(shè)定的合理方案。