資源描述:
《簡單時鐘 verilog設計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、VerilogEDA課程設計VerilogEDA課程設計(簡單時鐘電路)2012年春季期信息科學與工程學院電科09-1班黎富林3090748113VerilogEDA課程設計一、實驗目的1.掌握可編程邏輯器件的應用開發(fā)技術——設計輸入、編譯、仿真和器件編程;2.熟悉一種EDA軟件使用;3.掌握Verilog設計方法;4.掌握分模塊分層次的設計方法;5.用Verilog完成一個多功能數(shù)字鐘設計。二、實驗要求1.基本功能①具有“秒”、“分”、“時”計時功能,小時按24小時制計時。②具有校時功能,能對“分”和“小時”進行調(diào)整。③
2、仿廣播電臺正點報時。在59分51秒、53秒、55秒、57秒發(fā)出低音512Hz信號,在59分59秒時發(fā)出一次高音1024Hz信號,音響持續(xù)1秒鐘,在1024Hz音響結(jié)束時刻為整點。2.拓展功能①任意時刻鬧鐘②自動報整點時數(shù)③小時計數(shù)器改為12翻1三、實驗設計1.數(shù)字鐘整體設計框圖數(shù)字鐘電路系統(tǒng)由主體電路和擴展電路兩大部分所組成2.數(shù)字鐘模塊設計VerilogEDA課程設計分和秒計數(shù)器都是模M=60的計數(shù)器,時計數(shù)器是一個模M=24的計數(shù)器3.數(shù)字鐘輸入輸出分配Adj_Min校分控制→按鍵K1→8Adj_Hour校時控制→按鍵
3、K2→9Set_Min鬧鈴校分控制→按鍵K3→10Set_Hour鬧鈴校時控制→按鍵K4→11Type鬧鈴切換控制→按鍵K5→16Bell蜂鳴器控制信號→按鍵K6→17Chg實現(xiàn)24、12進制轉(zhuǎn)換控制→按鍵K7→18Second0-Second7秒輸出信號→數(shù)碼管1,2→21-25,27-29Minute0-Minute7分輸出信號→數(shù)碼管4,5→38,39,47-52Hour0-Hour7小時輸出信號→數(shù)碼管7,8→60-62,64-67,69四.各工作模式仿真波形1.時鐘正常計時波形00:00:59時刻波形00:59:
4、59時刻波形23:59:59時刻波形VerilogEDA課程設計2.定時鬧鐘波形如圖所示為01:02:00-01:02:59的一分鐘鬧鐘波形。3.仿電臺報時波形如圖所示,在任意小時59分的51、53、55、57秒內(nèi)蜂鳴器為低頻(512Hz)信號輸出,在59秒內(nèi)蜂鳴器為高頻(1024Hz)信號輸出,實現(xiàn)模仿電臺報時功能。3.整點報時波形如圖所示,在06:00:00后的6秒內(nèi),蜂鳴器前半秒無輸入,后半秒有高頻(1024Hz)輸入,達到整點報時功能。在N小時整時刻,蜂鳴器會鳴響N次。如此仿真中為六點,響六下4.12翻1功能波形如
5、圖所示,在chg按鍵為低電平時,Hour輸出類型為12翻1,實現(xiàn)12翻1功能。通常chg按鍵為高電平,即24小時制。五、實測將程序文件下載到FPGAVerilogEDA課程設計芯片上,即可看到從零開始的處于計數(shù)狀態(tài)的數(shù)字鐘。其結(jié)果由六個BCD碼7段顯示管顯示,形式為—小時:分鐘:秒鐘。將按鍵模式設置為琴鍵模式,按下Type鍵一次,觀察到時鐘處于鬧鐘設置狀態(tài),設置時間為6:58。再一次按下Type鍵,數(shù)字鐘處于校時狀態(tài),將時間校正為6:57。按下Type鍵,時鐘處于計數(shù)狀態(tài)。觀察時鐘,當?shù)竭_6:58時,鬧鈴以1kHZ的頻率響
6、起,鬧鈴功能實現(xiàn)。當處于6:59的51秒、53、55、57秒時,報警為“嘀嘀嘀”,當為59秒時為“嘟”,報時功能實現(xiàn)。當為6:00時,蜂鳴器以1Hz的頻率響起6下,報整點功能實現(xiàn)。六、源代碼moduleComplete_Clock(Hr,Min,Sec,ALARM,_1kHzIN,Adj_Min,Adj_Hour,Set_Min,Set_Hour,Bell,Type);input_1kHzIN;output[7:0]Hr,Min,Sec;wire[7:0]Hr,Min,Sec;supply1Vdd;inputAdj_Min
7、,Adj_Hour;wire[7:0]Hour,Minute,Second;wireMinL_EN,MinH_EN,Hour_EN;wire_1Hz,_500Hz;regALARM_Radio;wireALARM_Clock;outputALARM;wire[7:0]Set_Hr,Set_Min;wireHr_H_EQU,Hr_L_EQU,Min_H_EQU,Min_L_EQU;inputSet_Hour,Set_Min;inputBell;inputType;Divided_FrequencyU0(_1Hz,_500Hz
8、,Vdd,Vdd,_1kHzIN);counter10U1(Second[3:0],Vdd,Vdd,_1Hz);counter6U2(Second[7:4],Vdd,(Second[3:0]==4'h9),_1Hz);assignMinL_EN=Adj_Min?Vdd:(Second==8'h59);a