資源描述:
《西安交大數(shù)電數(shù)字鐘實驗報告.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、.西安交通大學數(shù)字電子技術實驗報告數(shù)字鐘設計姓名:**學院:**學院班級:**22學號:212******5一、實驗名稱基于VerilogHDL設計的多功能數(shù)字鐘二、試驗任務及要求實驗要求以VerilogHDL語言為手段,設計多功能數(shù)字鐘。多功能數(shù)字鐘應該具有的功能有:顯示時—分—秒、整點報時、小時和分鐘可調等基本功能。整個鐘表的工作應該是在1Hz信號的作用下進行,這樣每來一個時鐘信號,秒增加Word資料.1秒,當秒從59秒跳轉到00秒時,分鐘增加1分,同時當分鐘從59分跳轉到00分時,小時增加1小時,小時
2、的范圍為0~23時。在實驗中為了顯示與編寫方便,該設計采用一個位24位二進制碼[23:0]cnt記錄時間,每四位記錄一個數(shù),從高到低分別為時針十位、時針個位、分針十位、分針個位、秒針十位、秒針個位。實驗中由于七段碼管是掃描的方式顯示,所以雖然時鐘需要的是1Hz時鐘信號,但是掃描需要一個比較高頻率的信號,因此為了得到準確的1Hz信號,必須對輸入的系統(tǒng)時鐘50Mhz進行分頻。關于調整時間功能,該設計采用四個按鈕調整對應位的數(shù)值,從而調整時間。一、實驗條件該實驗以VerilogHDL語言為手段,以XilinxIS
3、EDesignSuite13.4_1軟件實現(xiàn)源程序的綜合與仿真,并用BASYS2開發(fā)板作為目標器件。二、設計過程1.列寫多功能數(shù)字鐘設計--層次結構圖2.擬定數(shù)字鐘的組成框圖,在XilinxISEDesignSuite13.4_1軟件中,使用Verilog語言輸入,采用分層次分模塊的方法設計電路;3.設計各單元電路并進行仿真;4.對數(shù)字鐘的整體邏輯電路圖,選擇器件,分配引腳,進行邏輯綜合;5.下載到Basys2實驗平臺上,實際測試數(shù)字鐘的邏輯功能。三、Verilog代碼moduleclock(inputcl
4、k,inputen,inputkey1,inputkey2,inputkey3,inputkey4,outputsec,Word資料.outputwire[7:0]seg,outputwire[3:0]digit);wire[3:0]num0,mum1,num2,num3;dispu0(clk,num0,mum1,num2,num3,seg,digit);clk_genu1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3);endmodule//////
5、//////////////////////////////moduledisp(inputclk,input[3:0]num0,input[3:0]num1,input[3:0]num2,input[3:0]num3,outputreg[7:0]sm_seg,outputreg[3:0]an);reg[1:0]s;reg[3:0]digit;reg[16:0]clkdiv;always@(*)beginan=4'b1111;s<=clkdiv[16:15];an[s]=0;case(s)0:digit<=
6、num0;1:digit<=num1;2:digit<=num2;3:digit<=num3;default:digit<=num0;endcasecase(digit)4'h0:sm_seg=8'hc0;//"0"4'h1:sm_seg=8'hf9;//"1"4'h2:sm_seg=8'ha4;//"2"4'h3:sm_seg=8'hb0;//"3"4'h4:sm_seg=8'h99;//"4"4'h5:sm_seg=8'h92;//"5"4'h6:sm_seg=8'h82;//"6"Word資料.4'h
7、7:sm_seg=8'hf8;//"7"4'h8:sm_seg=8'h80;//"8"4'h9:sm_seg=8'h90;//"9"default:sm_seg=8'hff;//"x"endcaseendalways@(posedgeclk)clkdiv<=clkdiv+17'd1;Endmodule///////////////////////////////////////////moduleclk_gen(inputclk,inputen,inputbt0,inputbt1,inputbt2,inpu
8、tbt3,outputregsec,output[3:0]num0,output[3:0]num1,output[3:0]num2,output[3:0]num3);reg[25:0]ctr;reg[3:0]mytime[3:0];reg[7:0]s;assignnum0=mytime[0];assignnum1=mytime[1];assignnum2=mytime[2];assignnum3=mytime[3