資源描述:
《基于VHDL的多功能數(shù)字鐘設(shè)計(jì)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、基于VHDL的多功能數(shù)字鐘設(shè)計(jì)報(bào)告021215班衛(wèi)時(shí)章02121451一、設(shè)計(jì)要求1、具有以二十四小時(shí)制計(jì)時(shí)、顯示、整點(diǎn)報(bào)時(shí)、時(shí)間設(shè)置和鬧鐘的功能。2、設(shè)計(jì)精度要求為1秒。二、設(shè)計(jì)環(huán)境:QuartusII三、系統(tǒng)功能描述1、系統(tǒng)輸入:時(shí)鐘信號(hào)clk采用50MHz;系統(tǒng)狀態(tài)及較時(shí)、定時(shí)轉(zhuǎn)換的控制信號(hào)為k、set,校時(shí)復(fù)位信號(hào)為reset,均由按鍵信號(hào)產(chǎn)生。2、系統(tǒng)輸出:LED顯示輸出;蜂鳴器聲音信號(hào)輸出。3、多功能數(shù)字電子鐘系統(tǒng)功能的具體描述如下:(一)計(jì)時(shí):正常工作狀態(tài)下,每日按24h計(jì)時(shí)制計(jì)時(shí)并顯示,蜂鳴器無(wú)聲,逢整點(diǎn)報(bào)時(shí)。(二)校時(shí):在計(jì)時(shí)顯示狀態(tài)下,按下“k”鍵,進(jìn)
2、入“小時(shí)”待校準(zhǔn)狀態(tài),若此時(shí)按下“set”鍵,小時(shí)開(kāi)始校準(zhǔn);之后按下“k”鍵則進(jìn)入“分”待校準(zhǔn)狀態(tài);繼續(xù)按下“k”鍵則進(jìn)入“秒”待復(fù)零狀態(tài);再次按下“k”鍵數(shù)碼管顯示鬧鐘時(shí)間,并進(jìn)入鬧鐘“小時(shí)”待校準(zhǔn)狀態(tài);再次按下“k”鍵則進(jìn)入鬧鐘“分”待校準(zhǔn)狀態(tài);若再按下“k”鍵恢復(fù)到正常計(jì)時(shí)顯示狀態(tài)。若校時(shí)過(guò)程中按下“reset”鍵,則系統(tǒng)恢復(fù)到正常計(jì)數(shù)狀態(tài)。(1)“小時(shí)”校準(zhǔn)狀態(tài):在“小時(shí)”校準(zhǔn)狀態(tài)下,顯示“小時(shí)”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。(2)“分”校準(zhǔn)狀態(tài):在“分”校準(zhǔn)狀態(tài)下,顯示“分”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的
3、頻率遞增計(jì)數(shù)。(3)“秒”校準(zhǔn)狀態(tài):在“秒復(fù)零”狀態(tài)下,顯示“秒”的數(shù)碼管以2Hz閃爍,并以1Hz的頻率遞增計(jì)數(shù)。(4)鬧鐘“小時(shí)”校準(zhǔn)狀態(tài):在鬧鐘“小時(shí)”校準(zhǔn)狀態(tài)下,顯示“小時(shí)”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。(5)鬧鐘“分”校準(zhǔn)狀態(tài):在鬧鐘“分”校準(zhǔn)狀態(tài)下,顯示“分”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。(三)整點(diǎn)報(bào)時(shí):蜂鳴器在“59”分鐘的第“51”、“53”、“55”、“57”秒發(fā)頻率為500Hz的低音,在“59”分鐘的第“59”秒發(fā)頻率為1000Hz的高音,結(jié)束時(shí)為整點(diǎn)。(四)顯示:采用掃描顯示方式驅(qū)
4、動(dòng)4個(gè)LED數(shù)碼管顯示小時(shí)、分,秒由兩組led燈以4位BCD碼顯示。(五)鬧鐘:鬧鐘定時(shí)時(shí)間到,蜂鳴器發(fā)出頻率為1000Hz的高音,持續(xù)時(shí)間為60秒。四、各個(gè)模塊分析說(shuō)明1、分頻器模塊(freq.vhd)(1)模塊說(shuō)明:輸入一個(gè)頻率為50MHz的CLK,利用計(jì)數(shù)器分出1KHz的q1KHz,500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz。(2)源程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfreqisport(CLK:instd_logic;--輸
5、入時(shí)鐘信號(hào)q1KHz:bufferstd_logic;q500Hz:bufferstd_logic;q2Hz:bufferstd_logic;q1Hz:outstd_logic);endfreq;architecturebhvoffreqisbeginP1KHZ:process(CLK)variablecout:integer:=0;beginifCLK'eventandCLK='1'thencout:=cout+1;--每來(lái)個(gè)時(shí)鐘上升沿時(shí)cout開(kāi)始計(jì)數(shù)ifcout<=25000thenq1KHz<='0';--當(dāng)cout<=25000時(shí),q1KHz輸出“0”elsif
6、cout<50000thenq1KHz<='1';--當(dāng)250007、endif;endprocess;P2HZ:process(q500Hz)variablecout:integer:=0;beginifq500Hz'eventandq500Hz='1'thencout:=cout+1;ifcout<=125thenq2Hz<='0';elsifcout<250thenq2Hz<='1';elsecout:=0;endif;endif;endprocess;P1HZ:process(q2Hz)variablecout:integer:=0;beginifq2Hz'eventandq2Hz='1