【文章內(nèi)容簡介】
圖 215 多路選擇模塊的波形仿真圖 輸入端口 功能 TimeSet_EN 時間設(shè)置使能信號 hour1,hour0 自動模式中當前時間的小時數(shù)輸入 minute1,minute0 自動模式中當前時間的分鐘數(shù)輸入 second0,second1 自動模式中當前時間的秒數(shù)輸入 開 始 依輸入條件,判斷是自動顯示時間,或顯示調(diào)整后的時間 Timeset_EN=1? 顯示設(shè)置后的時間 顯示自動模式時的時間 結(jié) 束 hour_set1,hour_set0 時間設(shè)置后的小時數(shù)輸入 minute_set1,minute_set0 時間設(shè)置后的分鐘數(shù)輸入 second_set1,second_set0 時間設(shè)置后的秒數(shù)輸入 輸入端口 功能 hour_1,hour_0 當前需要顯示的小時輸出 minute_1,minute_0 當前需要 顯示的分鐘輸出 second_0,second_1 當前需要顯示的秒輸出 表 216 多路選擇模塊的端口說明 時間顯示動態(tài)位選模塊 time_disp_select 該模塊用來分時顯示時間數(shù)據(jù),但是在選擇合適的時間間隔下,人眼并不能分辨出是分時顯示的,這樣顯示的方式可以降低功耗,結(jié)構(gòu)功能圖如 217 所示,波形仿真圖如 218所示 。 圖 217 時間顯示動態(tài)位選模塊的結(jié)構(gòu)功能圖 圖 218(a) 時間顯示動態(tài)位選模塊的波形仿真圖 圖 218(b) 時間顯示動態(tài)位選模塊的波形仿真圖 TimeSet_EN 表示時間設(shè)置使能, Time_EN 表示時間自動顯示使能,clk_1kHz 用于動態(tài)顯示時間, clk_200Hz 用于閃爍顯示時間,timeset_disp_drive 表 示 時 間 設(shè) 置 數(shù) 據(jù) 顯 示 的 同 步 信 號 ,time_disp_select 表示顯示動態(tài)位選輸出信號。當 TimeSet_EN 為 0,Time_EN 為 1 時,以 clk_1kHz 為是時鐘信號,輸出自動顯示的時間,按位依次顯示;當 TimeSet_EN 為 1, Time_EN 為 0 時,則以 clk_200Hz為時鐘信號,輸出以 timeset_disp_drive 對 應(yīng)的位置。 顯示模塊 disp_data_mux 模塊是時間、日期等數(shù)據(jù)用數(shù)碼管顯示的控制與數(shù)據(jù)傳輸模塊,包括數(shù)據(jù)的傳輸以及 BCD 碼的譯碼等 ,結(jié)構(gòu)功能圖如 219 所示,波形仿真圖如 420 所示 。 圖 219 顯示模塊的結(jié)構(gòu)功能圖 顯示原理采用的是七段數(shù)碼管的現(xiàn)實原理,如 220 所示: 圖 220 七段數(shù)碼管的顯示原理 圖 221 顯示模塊的波形仿真圖 秒表模塊 stopwatch 該模塊實現(xiàn)秒表的功能,在實際中,可以通過改變自動工作模式下的時間的計數(shù)時鐘的頻率來實現(xiàn)秒表的功能,流程圖如 222 所示,結(jié)構(gòu)功能圖如 223 所示,波形仿真圖如 224 所示。 圖 222 秒表模塊的流程圖 圖 223 秒表模塊的結(jié)構(gòu)功能圖 開 始 EN=1? 秒表工作狀態(tài) 時間自動工作狀態(tài) 結(jié) 束 圖 224 秒表功能的波形仿真圖 EN 表示秒表使能控制信號, clk1 表示自動工作模式的時鐘信號,clk2 表示秒表工作模式的時鐘信號,故當 EN 為有效信號 1 時,輸出F_out 與 clk2 同,即處于秒表工作狀態(tài),同理 EN 為 0 時,輸出 F_out與 clk1 同,即處于自動工作狀態(tài)。 日期顯示與設(shè)置模塊 date_main 該模塊實現(xiàn)日期的顯示和日期的調(diào)整與設(shè)置,結(jié)構(gòu)功能圖如 225所示。 圖 225 時間顯示與設(shè)置模塊的結(jié)構(gòu)功能圖 日期自動工作模塊 autodate 該模塊實現(xiàn)的是日期的自動工作功能,結(jié)構(gòu)功能圖如 226 所示,波形仿真圖如 227 所示。 圖 226 日期自動工作模塊的結(jié)構(gòu)功能圖 圖 227(a) 日期自動工作模塊的波形仿真圖 圖 227(b) 日期自動工作模塊的波形仿真圖 日期設(shè)置模塊 setdate 該模塊用于日期,結(jié)構(gòu)功能圖如 228 所示。 圖 228 日期設(shè)置模塊的結(jié)構(gòu)功能圖 鬧鐘模塊 alarmclock 該模塊實現(xiàn)的功能包括鬧鐘的設(shè)置以及鬧鐘時間到后的提示,流程圖如 229 所示,結(jié)構(gòu)功能圖如 230 所示,波形仿真圖如 231 所示。 圖 229 鬧鐘模塊的流程圖 圖 230 鬧 鐘模塊的結(jié)構(gòu)功能圖 圖 231 鬧鐘模塊的波形仿真圖 開 始 設(shè)置的鬧鐘與當前時間比較 alarm=1’b1 鬧鐘工作 alarm=1’b0 鬧鐘不工作 EN=1 disp_drive3’b101? disp_drive=disp_drive+3,b1 disp_drive=3’b0 根據(jù)不同的disp_drive 選擇在不同的位置上的數(shù)值加 1 結(jié) 束 EN 為鬧鐘設(shè)置使能, clk_200Hz 用于設(shè)置中的閃爍顯示的時鐘,其中還定義了 hour_set1, hour_set0, minute_set1, minute_set0,second_set1, second_set0,用來表示已經(jīng)設(shè)置好的鬧鐘時間。鬧鐘一直處于工作狀態(tài),當前時間( hour1, hour0, minute1, minute0, second1,second0)與設(shè)置的鬧鐘時間相比較,當小時、分鐘、秒鐘的時間完全相同時,則鬧鈴響,輸出信號 alarm 為有效信號 1。 SW1 和 SW2是調(diào)整鍵,分別控制位選和數(shù)值的調(diào)整。 分頻模塊 fdiv 該模塊完成全局時鐘信號分頻輸出 200Hz、 60Hz、 1Hz 的三種時鐘信號 ,流程圖如 232 所示,結(jié)構(gòu)功能圖如 233 所示,波形仿真圖如 234 所示 。 圖 233 分頻模塊的結(jié)構(gòu)功能圖 圖 234 分頻模塊的波形仿真圖 圖 232 分頻模塊的流程圖 頂層模塊圖 將各個主模塊綜合成電子萬年歷系統(tǒng),其包括: fdiv 分頻模塊,maincontrol 主控制模塊, stopwatch 秒表模塊, time_auto_and_set 時間及其設(shè)置模塊, date_main 日期及其設(shè)置模塊, alarmclock 鬧鐘模塊,time_disp_select 時間顯示動態(tài)位選模塊及 disp_data_mux 顯示模塊,該頂層電路 Top 如圖 235 所示。 開始,輸入 1kHz 時鐘信號 posedge clk CNT4? 輸出 200Hz時鐘信號f200Hz CNT=CNT+1 posedge f200Hz CNT22? CNT2=CNT2+1 輸出 60Hz時鐘信號 posedge f200Hz CNT3199? CNT3=CNT3+1 輸出 1Hz 時鐘信號 結(jié) 束 ENc lk 1c lk 2F _o uts t op w at c hins t 2D at e_ENdat e_dis p_c lkday _END at e_Set _ENSW 1SW 2m ont h1[ 3. . 0]m ont h0[ 3. . 0]day 1[ 3. . 0]day 0[ 3. . 0]D is p_s elec t _dat e[ 5. . 0]dat e_m ainins t 4c lk _1k H zc lk _200H zT im e_ENT im eSet _ENt im es et _dis p_driv e[ 2. . 0]t im e_dis p_s elec t [ 5. . 0]t im e_dis p_s elec tins t 6c lk f 200H zf 60H zf 1H zf divins t 5SW 3 T im epiec e_ENT im eSet _ENSt opw at c h_ENAlarm c loc k _END at e_END at eSet _ENm ainc ont rolins t 3C LKT im ep iec e_ ENT im eS et _E NSW 1SW 2D ay _E Nho ur_ 1[ 3. . 0]ho ur_ 0[ 3. . 0]m inu t e_ 1[ 3. . 0]m inu t e_ 0[ 3. . 0]s ec on d_ 1[ 3. . 0]s ec on d_ 0[ 3. . 0]T im eS et _d is p_ dri v e[ 2. . 0]t im e_ au t o_ an d_ s etins t 1ENSW 1SW 2c lk _200H zhour1[ 3. . 0]hour0[ 3. . 0]m inut e1[ 3. . 0]m inut e0[ 3. . 0]s ec ond1[ 3. . 0]s ec ond0[ 3. . 0]alarmalarm c loc k _dis p_s elec t [ 5. . 0]alarm c loc kins t 11T im ep iec e_ ENT im eSe t _ENSt op w at c h_ ENt im e_ dis p_ s ele c t [ 5. . 0]Alarm c loc k _ENala rm c loc k _d is p_ s ele c t [ 5. . 0]ho ur1 [ 3. . 0]ho ur0 [ 3. . 0]m inu t e1 [ 3. . 0]m inu t e0 [ 3. . 0]s ec on d1 [ 3. . 0]s ec on d0 [ 3. . 0]D at e_ END at eSe t _ENda t e_ dis p_ s ele c t [ 5. . 0]m on t h1 [ 3. . 0]m on t h0 [ 3. . 0]da y 1[ 3. . 0]da y 0[ 3. . 0]dis p_ s ele c t [ 5. . 0]dis p_ da t a[ 6. . 0]dis p_ da t a_ m uxins t 8G N DC loc kIN P U TG N DSW 3IN P U TG N DSW 1IN P U TG N DSW 2IN P U TalarmO U T P U Tdis p_ s ele c t [ 5. . 0]O U T P U Tdis p_dat a[ 6. . 0]O U T P U T 圖 235 頂層電路 Top 三、附錄 電子萬年歷系統(tǒng)的 Verilog HDL 語言程序設(shè)計 部分代碼 module maincontrol(clk,SW3,Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN)。 output Timepiece_EN。 //時間自動顯示使能 output TimeSet_EN。 //時間調(diào)整與設(shè)置使能 output Stopwatch_EN。 //秒鐘功能使能 output Alarmclock_EN。 //鬧鐘時間設(shè)置使能 output Date_EN。 //時期顯示使能 output DateSet_EN。 //日期調(diào)整與設(shè)置使能 input SW3。 //功能號選擇 input clk。 reg Timepiece_EN。 reg TimeSet_EN。 reg Stopwatch_EN。 reg Alarmcloc