版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 電子信息學(xué)院</b></p><p><b> 課程設(shè)計報告</b></p><p> 課 程 名 稱: 《數(shù)字系統(tǒng)設(shè)計課程設(shè)計》 </p><p> 題 目: 多功能數(shù)字鐘設(shè)計 </p><p> 年級/專業(yè)/班:
2、 2011級電科X班 </p><p> 學(xué) 生 姓名1: xxx </p><p> 學(xué) 號: </p><p> 學(xué) 生 姓名2: xxx </p><
3、p> 學(xué) 號: </p><p> 2014 年 7 月 1 日</p><p><b> 目 錄</b></p><p> 1課程設(shè)計目標和流程分析3</p><p> 1.1課程設(shè)計目標3</p><
4、p> 1.2開發(fā)環(huán)境說明3</p><p> 1.3設(shè)計流程說明3</p><p><b> 2系統(tǒng)設(shè)計3</b></p><p> 2.1系統(tǒng)架構(gòu)設(shè)計3</p><p> 2.2子模塊分析3</p><p> 2.3調(diào)試結(jié)果3</p>&l
5、t;p><b> 3小結(jié)3</b></p><p><b> 附錄:主要代碼3</b></p><p> 課程設(shè)計目標和流程分析</p><p><b> 課程設(shè)計目標</b></p><p> 基于Verilog語言描述系統(tǒng)的功能;在quartusII環(huán)
6、境中編譯通過;仿真通過并得到正確的波形;掌握數(shù)字系統(tǒng)的分析和設(shè)計方法。能夠熟練的、合理的選用集成電路器件。掌握數(shù)字鐘得設(shè)計制作方法。</p><p> 用Verilog硬件描述語言設(shè)計數(shù)字鐘,實現(xiàn)的目標如下:</p><p> 1)具有時、分、秒計數(shù)顯示功能,以二十四小時循環(huán)計時。</p><p> 2)具有調(diào)節(jié)小時,分鐘的功能,可以通過按鍵選擇時和分。<
7、;/p><p> 3)具有整點報時及鬧鈴時間可調(diào)的功能。</p><p> 4)數(shù)字鐘具有四種模式:正常顯示、時間調(diào)整、鬧鈴時間調(diào)整、秒表。</p><p><b> 開發(fā)環(huán)境說明</b></p><p> 硬件:采用基于EP1C12Q240C8芯片的FPGA開發(fā)平臺</p><p> FP
8、GA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Bl
9、ock)、輸入輸出模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。 現(xiàn)場可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來實現(xiàn)組合邏輯,每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/O,由此構(gòu)成了既可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能
10、的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)</p><p> 硬件:采用quartusII</p><p> Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Lang
11、uage)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。</p><p> 語言:Verilog HDL硬件描述語言簡介</p><p> Verilog HDL就是在用途最廣泛的C語言的基礎(chǔ)上發(fā)展起來的一種硬件描述語言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年
12、末首創(chuàng)的,最初只設(shè)計了一個仿真與驗證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時序分析工具。1985年Moorby推出它的第三個商用仿真器Verilog-XL,獲得了巨大的成功,從而使得Verilog HDL迅速得到推廣應(yīng)用。1989年CADENCE公司收購了GDA公司,使得VerilogHDL成為了該公司的獨家專利。1990年CADENCE公司公開發(fā)表了Verilog HDL,并成立LVI組織以促進Verilog HDL成為IEEE標準,
13、即IEEE Standard 1364-1995. 模塊是Verilog 的基本描述單位,用于描述某個設(shè)計的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。一個設(shè)計的結(jié)構(gòu)可使用開關(guān)級原語、門級原語和用戶定義的原語方式描述; 設(shè)計的數(shù)據(jù)流行為使用連續(xù)賦值語句進行描述; 時序行為使用過程結(jié)構(gòu)描述。一個模塊可以在另一個模塊中使用。 說明部分用于定義不同的項,例如模塊描述中使用的寄存</p><p><b> 設(shè)
14、計流程說明</b></p><p><b> 系統(tǒng)設(shè)計</b></p><p> 系統(tǒng)架構(gòu)設(shè)計 clk</p><p><b> 關(guān)鍵模塊代碼分析</b></p><p><b> 2.2.1分頻模塊</b></p><p>
15、 分頻模塊用于為系統(tǒng)的實現(xiàn)提供穩(wěn)定的工作頻率和計時信號源,要求產(chǎn)生兩路不同頻率的信號,分頻為1HZ頻率的信號作為計時模塊的秒信號的產(chǎn)生,100HZ的信號用于秒表計時模塊的信號,1000HZ的信號用于數(shù)碼管動態(tài)顯示的掃描頻率。</p><p><b> 分頻模塊的實現(xiàn):</b></p><p> -----------------------------產(chǎn)生100
16、HZ的秒表信號-----------------------</p><p> always @(posedge clk) //定義clock上升沿觸發(fā)</p><p><b> begin</b></p><p> c3= c3 + 1'b1;</p><p> c1=c1 + 1'
17、;b1;</p><p> c2=c2 + 1'b1;</p><p> if(c3 == 25'd480000)//miaobiao</p><p><b> begin</b></p><p> c3 = 25'd0;//計數(shù)器清零</p><p
18、> sec = ~sec;//置位秒標志</p><p><b> end</b></p><p> ------------------------------產(chǎn)生1000HZ的秒信號------------------------</p><p> if(c1== 25'd24000000)//0
19、.5S到了嗎?</p><p><b> begin</b></p><p> c1 = 25'd0;//計數(shù)器清零</p><p> clk_1s= ~clk_1s;//置位秒標志</p><p><b> end</b></p><p
20、> if(c2== 25'd2400000)//tiaoshi?</p><p><b> begin</b></p><p> c2 = 25'd0;//計數(shù)器清零</p><p> clk_xiaozhun= ~clk_xiaozhun;//置位秒標志</p><p
21、><b> end</b></p><p><b> end</b></p><p> ----------------------------產(chǎn)生1000HZ數(shù)碼管動態(tài)掃描顯示部分----------------</p><p> always @(posedge clk) //count[1
22、7:15]大約1ms改變一次</p><p><b> begin</b></p><p> if(layer==2'b01)</p><p> begin dat=hour;end</p><p> else if(layer==2'b00)</p><p> begi
23、n dat=hour1;end</p><p> else if(layer==2'b10)</p><p> begin dat=hour2;end</p><p><b> else </b></p><p> begin dat=hour3;end</p><p> cas
24、e(c3[17:15])</p><p><b> ……</b></p><p><b> 2.2.2計時模塊</b></p><p> 模塊功能為正常計時,即每秒鐘讀一次數(shù),秒表加1,秒計時滿60進1給分計時,分計時滿60進1給小時計時,小時計時滿24清零。從功能上講分別為模60計數(shù)器和模24計數(shù)器。&l
25、t;/p><p> always @(negedge sec )//miaobiao</p><p><b> begin</b></p><p> if(!key_done[1]&&layer==2'b01)//是清零鍵嗎?</p><p><b> begin<
26、/b></p><p> hour = 24'h0;//是,則清零</p><p><b> end</b></p><p> else if(!keyen)</p><p><b> begin</b></p><p> hour[3:0
27、] = hour[3:0] + 1'b1;//秒加1</p><p> if(hour[3:0] == 4'ha)</p><p><b> begin</b></p><p> hour[3:0] = 4'h0;</p><p> hour[7:4] = hour[7:4] + 1&
28、#39;b1;//秒的十位加一</p><p> if(hour[7:4] == 4'ha)</p><p><b> begin</b></p><p> hour[7:4] = 4'h0;</p><p> hour[11:8] = hour[11:8] + 1'b1;//分個位加一
29、</p><p> if(hour[11:8] == 4'ha)</p><p><b> begin</b></p><p> hour[11:8] = 4'h0;</p><p> hour[15:12] = hour[15:12] + 1'b1;//分十位加一</p>
30、<p> if(hour[15:12] == 4'h6)</p><p><b> begin</b></p><p> hour[15:12] = 4'h0;</p><p> hour[19:16] = hour[19:16] + 1'b1;//時個位加一</p><p>
31、 if(hour[19:16] == 4'ha)</p><p><b> begin</b></p><p> hour[19:16] = 4'h0;</p><p> hour[23:20] = hour[23:20] + 1'b1;//時十位加一</p><p><b>
32、end</b></p><p> if(hour[23:16] == 8'h24)</p><p> hour[23:16] = 8'h0;</p><p><b> end</b></p><p><b> end</b></p><p>
33、;<b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p> 2.2.3 校準模塊</p><p> 校準模塊
34、分為鬧鐘校準模塊和當前時間校準模塊,layer為模式,當layer==2’b10時,進入當前時間校準模塊,當layer==2’b11時,進入鬧鐘校準模塊,當pos為1時,對分的個位或十位進行校時,當pos為0時,對時的個位或十位進行校時。</p><p> 2.2.4 鬧鐘模塊</p><p> 當當前時間與設(shè)置的鬧鐘時間一致時,鬧鐘響起,本設(shè)計采用的是音樂蜂鳴器,通過寫入樂譜對應(yīng)的頻
35、率可實現(xiàn)音樂的輸出,歌曲為《世上只有媽媽好》。</p><p> 2.2.5 整點報時模塊</p><p> (hour1[15:12]==0&&hour1[11:8]==0&&hour1[7:4]==0&&hour1[3:0]==0)</p><p> 當分秒對應(yīng)00:00時,讓蜂鳴器發(fā)出響聲</p>
36、;<p><b> 調(diào)試結(jié)果</b></p><p> 通過四個按鍵的控制(S1:秒表啟動及暫停、加功能;S2秒表清零、減功能;S3:模式選擇;S4:分和時的選擇)能在數(shù)碼管上顯示時間,并能對時間進行調(diào)整,能進行秒表計數(shù)功能,當當前時間與設(shè)置鬧鐘時間一致時鬧鐘響起,并在整點時蜂鳴器發(fā)出一聲“嘀”的報時聲。</p><p><b> 小結(jié)&
37、lt;/b></p><p> 通過近來對FPGA的學(xué)習(xí),我對ISE軟件總體操作步驟已比較熟悉。接下來的時間是要提高對FPGA的掌握能力,將FPGA運用到數(shù)字信號處理和通信原理上。 ,另外,對Verilog語言的學(xué)習(xí)不僅是能讀懂別人的程序,更重要的是能寫出條理清晰的程序。通過做多功能數(shù)字鐘,我發(fā)現(xiàn)自己對Verilog語言還不是很熟悉,接下來的時間要加強語言的學(xué)習(xí),多看一些語言方面的書籍。</p&g
38、t;<p><b> 附錄:主要代碼</b></p><p> module clockxjx (clk,key,dig,seg,beep);//模塊名clock</p><p> input clk;//輸入時鐘</p><p> input[3:0] key;//輸入按鍵<
39、;/p><p> output[7:0]dig;//數(shù)碼管選擇輸出引腳</p><p> output[7:0] seg;//數(shù)碼管段輸出引腳</p><p> output beep;</p><p> reg[24:0]c1,c2;</p><p> reg clk_1s,clk
40、_xiaozhun;</p><p> reg[24:0] dat;//xianshi register</p><p><b> //xinyue</b></p><p> reg beep_r;//寄存器</p><p> reg[7:0] state;//樂譜狀態(tài)機</p
41、><p> reg[15:0]count,count_end;</p><p> reg[23:0]count1;</p><p> //end yinyue</p><p><b> reg pos;</b></p><p> reg[7:0] seg_r;//定義數(shù)碼管輸
42、出寄存器</p><p> reg[7:0] dig_r;//定義數(shù)碼管選擇輸出寄存器</p><p> reg[3:0] disp_dat;//定義顯示數(shù)據(jù)寄存器</p><p> reg[24:0]c3;//定義計數(shù)寄存器</p><p> reg[23:0]hour1,hour2,h
43、our3;//定義現(xiàn)在時刻寄存器</p><p> reg[23:0]hour;//miaobiao</p><p> reg sec,keyen;//定義標志位</p><p> reg[1:0] layer;//定義標志位state</p><p> reg[3:0]dout1,do
44、ut2,dout3;//寄存器</p><p> wire[3:0]key_done;//按鍵消抖輸出</p><p> //樂譜參數(shù):D=F/2K (D:參數(shù),F:時鐘頻率,K:音高頻率)</p><p> parameter L_5=16'd61224,</p><p> L_6=16'd
45、54545,</p><p> M_1=16'd45863,</p><p> M_2=16'd40865,</p><p> M_3=16'd36402,</p><p> M_5=16'd30612,</p><p> M_6=16'd27273,</p>
46、;<p> H_1=16'd22956;</p><p> parameterTIME = 12000000;//控制每一個音的長短(250ms)</p><p> assign beep = beep_r;//輸出音樂</p><p> assign dig = dig_r;//輸出數(shù)碼管選擇<
47、;/p><p> assign seg = seg_r;//輸出數(shù)碼管譯碼結(jié)果</p><p> always@(posedge clk)</p><p><b> begin</b></p><p> if((hour3[23:8]==hour1[23:8])||(hour1[15:12]==0&a
48、mp;&hour1[11:8]==0&&hour1[7:4]==0&&hour1[3:0]==0))</p><p><b> begin</b></p><p> count <= count + 1'b1;//計數(shù)器加1</p><p> if(count == count
49、_end)</p><p><b> begin</b></p><p> count <= 16'h0;//計數(shù)器清零</p><p> beep_r <= !beep_r;//輸出取反</p><p><b> end</b></p>
50、<p><b> end</b></p><p> else beep_r =0;</p><p><b> end</b></p><p><b> //秒信號產(chǎn)生部分</b></p><p> always @(posedge clk) /
51、/定義clock上升沿觸發(fā)</p><p><b> begin</b></p><p> c3= c3 + 1'b1;</p><p> c1=c1 + 1'b1;</p><p> c2=c2 + 1'b1;</p><p> if(c3 == 25'
52、d480000)//miaobiao</p><p><b> begin</b></p><p> c3 = 25'd0;//計數(shù)器清零</p><p> sec = ~sec;//置位秒標志</p><p><b> end</b></p&
53、gt;<p> if(c1== 25'd24000000)//0.5S到了嗎?</p><p><b> begin</b></p><p> c1 = 25'd0;//計數(shù)器清零</p><p> clk_1s= ~clk_1s;//置位秒標志</p>&l
54、t;p><b> end</b></p><p> if(c2== 25'd2400000)//tiaoshi?</p><p><b> begin</b></p><p> c2 = 25'd0;//計數(shù)器清零</p><p> clk_xia
55、ozhun= ~clk_xiaozhun;//置位秒標志</p><p><b> end</b></p><p><b> end</b></p><p> //按鍵消抖處理部分</p><p> assign key_done = (dout1 | dout2 | dout3);
56、//按鍵消抖輸出</p><p> always @(posedge c3[17])</p><p><b> begin</b></p><p> dout1 <= key;</p><p> dout2 <= dout1;</p><p> dout3 <= dou
57、t2;</p><p><b> end</b></p><p> always @(negedge key_done[2])//121</p><p><b> begin</b></p><p> layer=layer+1'b1;</p><p>
58、//if(layer==2'b11)</p><p> // begin layer=2'b00;end</p><p><b> end</b></p><p> always @(negedge key_done[3])//xiao shi shi fen haishi shi seclet</p>&
59、lt;p><b> begin</b></p><p> if(layer==2'b10||layer==2'b11)</p><p> pos=~pos; </p><p><b> end</b></p><p> always @(negedge key_d
60、one[0])</p><p><b> begin</b></p><p> if(layer==2'b01)</p><p> begin keyen = ~keyen;end//將琴鍵開關(guān)轉(zhuǎn)換為乒乓開關(guān)</p><p><b> end</b></p>
61、<p> //數(shù)碼管動態(tài)掃描顯示部分</p><p> always @(posedge clk) //count[17:15]大約1ms改變一次</p><p><b> begin</b></p><p> if(layer==2'b01)</p><p> begin
62、dat=hour;end</p><p> else if(layer==2'b00)</p><p> begin dat=hour1;end</p><p> else if(layer==2'b10)</p><p> begin dat=hour2;end</p><p><b&g
63、t; else </b></p><p> begin dat=hour3;end</p><p> case(c3[17:15])//選擇掃描顯示數(shù)據(jù)</p><p> 3'd0:disp_dat = dat[3:0];//秒個位</p><p> 3'd1:disp_dat = da
64、t[7:4];//秒十位</p><p> 3'd2:disp_dat = 4'ha;//顯示"-"</p><p> 3'd3:disp_dat = dat[11:8];//分個位</p><p> 3'd4:disp_dat = dat[15:12];//分十位</p>
65、<p> 3'd5:disp_dat = 4'ha;//顯示"-"</p><p> 3'd6:disp_dat = dat[19:16];//時個位</p><p> 3'd7:disp_dat = dat[23:20];//時十位</p><p><b> end
66、case</b></p><p> case(c3[17:15])//選擇數(shù)碼管顯示位</p><p> 3'd0:dig_r = 8'b11111110;//選擇第一個數(shù)碼管顯示</p><p> 3'd1:dig_r = 8'b11111101;//選擇第二個數(shù)碼管顯示</p>
67、<p> 3'd2:dig_r = 8'b11111011;//選擇第三個數(shù)碼管顯示</p><p> 3'd3:dig_r = 8'b11110111;//選擇第四個數(shù)碼管顯示</p><p> 3'd4:dig_r = 8'b11101111;//選擇第五個數(shù)碼管顯示</p><p
68、> 3'd5:dig_r = 8'b11011111;//選擇第六個數(shù)碼管顯示</p><p> 3'd6:dig_r = 8'b10111111;//選擇第七個數(shù)碼管顯示</p><p> 3'd7:dig_r = 8'b01111111;//選擇第八個數(shù)碼管顯示</p><p><
69、;b> endcase</b></p><p><b> end</b></p><p> always @(posedge clk)</p><p><b> begin</b></p><p> case(disp_dat)</p><p>
70、 4'h0:seg_r = 8'hc0;//顯示0</p><p> 4'h1:seg_r = 8'hf9;//顯示1</p><p> 4'h2:seg_r = 8'ha4;//顯示2</p><p> 4'h3:seg_r = 8'hb0;//顯示3&
71、lt;/p><p> 4'h4:seg_r = 8'h99;//顯示4</p><p> 4'h5:seg_r = 8'h92;//顯示5</p><p> 4'h6:seg_r = 8'h82;//顯示6</p><p> 4'h7:seg_r = 8
72、'hf8;//顯示7</p><p> 4'h8:seg_r = 8'h80;//顯示8</p><p> 4'h9:seg_r = 8'h90;//顯示9</p><p> 4'ha:seg_r = 8'hbf;//顯示-</p><p>
73、 default:seg_r = 8'hff;//不顯示</p><p><b> endcase</b></p><p> if((c3[17:15]== 3'd2)&sec)</p><p> seg_r = 8'hff;</p><p><b> end&
74、lt;/b></p><p><b> //計時處理部分</b></p><p> always @(negedge sec )//miaobiao</p><p><b> begin</b></p><p> if(!key_done[1]&&layer==2
75、9;b01)//是清零鍵嗎?</p><p><b> begin</b></p><p> hour = 24'h0;//是,則清零</p><p><b> end</b></p><p> else if(!keyen)</p><p
76、><b> begin</b></p><p> hour[3:0] = hour[3:0] + 1'b1;//秒加1</p><p> if(hour[3:0] == 4'ha)</p><p><b> begin</b></p><p> hour[3:0]
77、 = 4'h0;</p><p> hour[7:4] = hour[7:4] + 1'b1;//秒的十位加一</p><p> if(hour[7:4] == 4'ha)</p><p><b> begin</b></p><p> hour[7:4] = 4'h0;<
78、/p><p> hour[11:8] = hour[11:8] + 1'b1;//分個位加一</p><p> if(hour[11:8] == 4'ha)</p><p><b> begin</b></p><p> hour[11:8] = 4'h0;</p><p&
79、gt; hour[15:12] = hour[15:12] + 1'b1;//分十位加一</p><p> if(hour[15:12] == 4'h6)</p><p><b> begin</b></p><p> hour[15:12] = 4'h0;</p><p> hour[
80、19:16] = hour[19:16] + 1'b1;//時個位加一</p><p> if(hour[19:16] == 4'ha)</p><p><b> begin</b></p><p> hour[19:16] = 4'h0;</p><p> hour[23:20] = h
81、our[23:20] + 1'b1;//時十位加一</p><p><b> end</b></p><p> if(hour[23:16] == 8'h24)</p><p> hour[23:16] = 8'h0;</p><p><b> end</b><
82、/p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b>
83、;</p><p> //shizhong</p><p> always @(negedge clk_1s)//clock</p><p><b> begin</b></p><p> if(layer!=2'b10)</p><p><b> begin</
84、b></p><p> hour1[3:0] = hour1[3:0] + 1'b1;//秒加1</p><p> if(hour1[3:0] == 4'ha)</p><p><b> begin</b></p><p> hour1[3:0] = 4'h0;</p>
85、;<p> hour1[7:4] = hour1[7:4] + 1'b1;//秒的十位加一</p><p> if(hour1[7:4] == 4'h6)</p><p><b> begin</b></p><p> hour1[7:4] = 4'h0;</p><p>
86、 hour1[11:8] = hour1[11:8] + 1'b1;//分個位加一</p><p> if(hour1[11:8] == 4'ha)</p><p><b> begin</b></p><p> hour1[11:8] = 4'h0;</p><p> hour1[15
87、:12] = hour1[15:12] + 1'b1;//分十位加一</p><p> if(hour1[15:12] == 4'h6)</p><p><b> begin</b></p><p> hour1[15:12] = 4'h0;</p><p> hour1[19:16] =
88、 hour1[19:16] + 1'b1;//時個位加一</p><p> if(hour1[19:16] == 4'ha)</p><p><b> begin</b></p><p> hour1[19:16] = 4'h0;</p><p> hour1[23:20] = hour1
89、[23:20] + 1'b1;//時十位加一</p><p><b> end</b></p><p> if(hour1[23:16] == 8'h24)</p><p> hour1[23:16] = 8'h0;</p><p><b> end</b></
90、p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> else </b&g
91、t;</p><p><b> begin </b></p><p> if(layer==2'b10)</p><p> hour1=hour2;</p><p><b> end</b></p><p><b> end</b>&l
92、t;/p><p> always @(posedge clk_xiaozhun)</p><p><b> begin</b></p><p> if(layer==2'b10)//jiaoshi</p><p><b> begin</b></p><p>
93、if(pos==1'b1)</p><p><b> begin </b></p><p> if(!key_done[0])</p><p><b> begin </b></p><p> if(hour2[11:8]==4'h9&&hour2[15:12
94、]==4'h5)</p><p><b> begin </b></p><p> hour2[11:8]=4'h0;</p><p> hour2[15:12]=4'h0;</p><p><b> end</b></p><p><
95、;b> else </b></p><p> begin if(hour2[11:8]==4'h9)</p><p><b> begin</b></p><p> hour2[11:8]=4'h0;</p><p> hour2[15:12]=hour2[15:12] + 1
96、'b1;//分十位加1</p><p><b> end</b></p><p><b> else</b></p><p> hour2[11:8]=hour2[11:8] + 1'b1;</p><p><b> end</b></p>
97、<p><b> end</b></p><p> if(!key_done[1])</p><p><b> begin</b></p><p> if(hour2[11:8]!=4'h0)</p><p><b> begin </b><
98、/p><p> hour2[11:8] = hour2[11:8]-1'b1;//分個位jian1 </p><p><b> end </b></p><p><b> else</b></p><p><b> begin </b></p>
99、<p> if(hour2[15:12] > 4'h0)</p><p><b> begin</b></p><p> hour2[15:12]<= hour2[15:12]-1'b1;//分十位jian一</p><p> hour2[11:8] <= 4'h9; </p
100、><p><b> end</b></p><p> else if(hour2[15:12]==4'h0)</p><p><b> begin </b></p><p> hour2[15:12] <= 4'h5;</p><p> hour
101、2[11:8] <= 4'h9;</p><p><b> end</b></p><p> end </p><p><b> end</b></p><p><b> end</b></p>
102、<p> else//tiaoshi</p><p><b> begin </b></p><p> if(!key_done[0])</p><p><b> begin </b></p><p> if(hour2[19:16]==4'h3&&hou
103、r2[23:20]==4'h2)</p><p><b> begin </b></p><p> hour2[19:16]=4'h0;</p><p> hour2[23:20]=4'h0;</p><p><b> end</b></p><
104、;p><b> else </b></p><p> begin if(hour2[19:16]==4'h9)</p><p><b> begin</b></p><p> hour2[19:16]=4'h0;</p><p> hour2[23:20]=hour2
105、[23:20] + 1'b1;//分十位加1</p><p><b> end</b></p><p><b> else</b></p><p> hour2[19:16]=hour2[19:16] + 1'b1;</p><p><b> end</b&g
106、t;</p><p><b> end</b></p><p> if(!key_done[1])</p><p><b> begin</b></p><p> if(hour2[23:16]==8'h00)</p><p><b> begin
107、 </b></p><p> hour2[23:20] <= 4'h2;</p><p> hour2[19:16] <= 4'h3;</p><p><b> end</b></p><p> else if(hour2[23:16]==8'h10)</p
108、><p><b> begin </b></p><p> hour2[23:20] <= 4'h0;</p><p> hour2[19:16] <= 4'h9;</p><p><b> end</b></p><p> else if
109、(hour2[23:16]==8'h20)</p><p><b> begin </b></p><p> hour2[23:20] <= 4'h1;</p><p> hour2[19:16] <= 4'h9;</p><p><b> end</b>
110、</p><p> else begin hour2[19:16] = hour2[19:16]-1'b1;end//分個位jian1 </p><p><b> end</b></p><p><b> end</b></p><p>&
111、lt;b> end</b></p><p><b> else </b></p><p> hour2=hour1;</p><p><b> end</b></p><p> always @(posedge clk_xiaozhun)</p><
112、;p><b> begin</b></p><p> if(layer==2'b11)//jiaoshi</p><p><b> begin</b></p><p> //hour[7:0]=8'd00;</p><p> if(pos==1'b1)<
113、;/p><p><b> begin </b></p><p> if(!key_done[0])</p><p><b> begin </b></p><p> if(hour3[11:8]==4'h9&&hour3[15:12]==4'h5)</p&g
114、t;<p><b> begin </b></p><p> hour3[11:8]=4'h0;</p><p> hour3[15:12]=4'h0;</p><p><b> end</b></p><p><b> else </b&
115、gt;</p><p> begin if(hour3[11:8]==4'h9)</p><p><b> begin</b></p><p> hour3[11:8]=4'h0;</p><p> hour3[15:12]=hour3[15:12] + 1'b1;//分十位加1</
116、p><p><b> end</b></p><p><b> else</b></p><p> hour3[11:8]=hour3[11:8] + 1'b1;</p><p><b> end</b></p><p><b>
117、 end</b></p><p> if(!key_done[1])</p><p><b> begin</b></p><p> if(hour3[11:8]!=4'h0)</p><p><b> begin </b></p><p> h
118、our3[11:8] = hour3[11:8]-1'b1;//分個位jian1 </p><p><b> end </b></p><p><b> else</b></p><p><b> begin </b></p><p> if(hour
119、3[15:12] > 4'h0)</p><p><b> begin</b></p><p> hour3[15:12]<= hour3[15:12]-1'b1;//分十位jian一</p><p> hour3[11:8] <= 4'h9; </p><p><b
120、> end</b></p><p> else if(hour3[15:12]==4'h0)</p><p><b> begin </b></p><p> hour3[15:12] <= 4'h5;</p><p> hour3[11:8] <= 4'
121、;h9;</p><p><b> end</b></p><p> end </p><p><b> end</b></p><p><b> end</b></p><p> else//tia
122、oshi</p><p><b> begin </b></p><p> if(!key_done[0])</p><p><b> begin </b></p><p> if(hour3[19:16]==4'h3&&hour3[23:20]==4'h2)
123、</p><p><b> begin </b></p><p> hour3[19:16]=4'h0;</p><p> hour3[23:20]=4'h0;</p><p><b> end</b></p><p><b> els
124、e </b></p><p> begin if(hour3[19:16]==4'h9)</p><p><b> begin</b></p><p> hour3[19:16]=4'h0;</p><p> hour3[23:20]=hour3[23:20] + 1'b1;/
125、/分十位加1</p><p><b> end</b></p><p><b> else</b></p><p> hour3[19:16]=hour3[19:16] + 1'b1;</p><p><b> end</b></p><p&
126、gt;<b> end</b></p><p> if(!key_done[1])</p><p><b> begin</b></p><p> if(hour3[23:16]==8'h00)</p><p><b> begin </b></p>
127、;<p> hour3[23:20] <= 4'h2;</p><p> hour3[19:16] <= 4'h3;</p><p><b> end</b></p><p> else if(hour3[23:16]==8'h10)</p><p><b
128、> begin </b></p><p> hour3[23:20] <= 4'h0;</p><p> hour3[19:16] <= 4'h9;</p><p><b> end</b></p><p> else if(hour3[23:16]==8'
129、;h20)</p><p><b> begin </b></p><p> hour3[23:20] <= 4'h1;</p><p> hour3[19:16] <= 4'h9;</p><p><b> end</b></p><p>
130、; else begin hour3[19:16] = hour3[19:16]-1'b1;end//分個位jian1 </p><p><b> end</b></p><p><b> end</b></p><p><b> end</b&
131、gt;</p><p><b> end</b></p><p> always @(posedge clk)</p><p><b> begin</b></p><p> if(count1 < TIME)//一個節(jié)拍250mS</p><p>
132、 count1 = count1 + 1'b1;</p><p><b> else</b></p><p><b> begin</b></p><p> count1 = 24'd0;</p><p> if(state == 8'd147)</p>
133、<p> state = 8'd0;</p><p><b> else</b></p><p> state = state + 1'b1;</p><p> case(state)</p><p> 8'd0,8'd1,8'd2,8'd3,8
134、9;d4,8'd5: count_end=M_6;</p><p> 8'd6,8'd7: count_end=M_5;</p><p> 8'd8,8'd9,8'd10,8'd11: count_end=M_3;</p><p> 8'd1
135、2,8'd13,8'd14,8'd15: count_end=M_5;</p><p> 8'd16,8'd17,8'd18,8'd19: count_end=H_1;</p><p> 8'd20,8'd21: count_end=M_6;</p&
136、gt;<p> 8'd22,8'd23: count_end=M_5;</p><p> 8'd24,8'd25,8'd26,8'd27,8'd28,8'd29,8'd30,8'd31: count_end=M_6;</p><p> 8'd32,
137、8'd33,8'd34,8'd35: count_end=M_3;</p><p> 8'd36,8'd37: count_end=M_5;</p><p> 8'd38,8'd39: count_end=M_6;</p><p
138、> 8'd40,8'd41,8'd42,8'd43: count_end=M_5;</p><p> 8'd44,8'd45,8'd46,8'd47: count_end=M_3;</p><p> 8'd48,8'd49: count_e
139、nd=M_1;</p><p> 8'd50,8'd51: count_end=M_6;</p><p> 8'd52,8'd53: count_end=M_5;</p><p> 8'd54,8'd55:
140、 count_end=M_3;</p><p> 8'd56,8'd57,8'd58,8'd59,8'd60,8'd61,8'd62,8'd63: count_end=M_2;</p><p> 8'd64,8'd65,8'd66,8'd67,8'd68,8'
141、d69: count_end=M_2;</p><p> 8'd70,8'd71: count_end=M_3;</p><p> 8'd72,8'd73,8'd74,8'd75: count_end=M_5;</p><p> 8'd76,8&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多功能數(shù)字鐘課程設(shè)計報告
- 多功能數(shù)字鐘課程設(shè)計報告
- 多功能數(shù)字鐘課程設(shè)計報告
- 數(shù)字邏輯課程設(shè)計報告--多功能數(shù)字鐘
- 多功能數(shù)字鐘課程設(shè)計
- 課程設(shè)計-- 多功能 數(shù)字鐘
- 數(shù)字邏輯課程設(shè)計---多功能數(shù)字鐘
- 課程設(shè)計--多功能數(shù)字鐘設(shè)計
- 數(shù)字鐘課程設(shè)計---多功能數(shù)字鐘的設(shè)計與制作
- 多功能數(shù)字鐘課程設(shè)計報告 (2)
- 數(shù)字鐘課程設(shè)計--多功能數(shù)字鐘的電路設(shè)計
- 課程設(shè)計---多功能電子數(shù)字鐘
- eda課程設(shè)計——多功能數(shù)字鐘
- vhdl課程設(shè)計---多功能數(shù)字鐘
- 多功能數(shù)字鐘電路課程設(shè)計
- 數(shù)字邏輯課程設(shè)計---多功能數(shù)字鐘 (2)
- 數(shù)字電路課程設(shè)計(多功能數(shù)字鐘)
- 課程設(shè)計--多功能數(shù)字鐘的設(shè)計
- 課程設(shè)計--多功能數(shù)字鐘設(shè)計.doc
- 數(shù)字電路課程設(shè)計(多功能數(shù)字鐘)
評論
0/150
提交評論