版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 電子信息學(xué)院</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課 程 名 稱: 《數(shù)字系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)》 </p><p> 題 目: 多功能數(shù)字鐘設(shè)計(jì) </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è)計(jì)目標(biāo)和流程分析3</p><p> 1.1課程設(shè)計(jì)目標(biāo)3</p><
4、p> 1.2開發(fā)環(huán)境說明3</p><p> 1.3設(shè)計(jì)流程說明3</p><p><b> 2系統(tǒng)設(shè)計(jì)3</b></p><p> 2.1系統(tǒng)架構(gòu)設(shè)計(jì)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è)計(jì)目標(biāo)和流程分析</p><p><b> 課程設(shè)計(jì)目標(biāo)</b></p><p> 基于Verilog語言描述系統(tǒng)的功能;在quartusII環(huán)
6、境中編譯通過;仿真通過并得到正確的波形;掌握數(shù)字系統(tǒng)的分析和設(shè)計(jì)方法。能夠熟練的、合理的選用集成電路器件。掌握數(shù)字鐘得設(shè)計(jì)制作方法。</p><p> 用Verilog硬件描述語言設(shè)計(jì)數(shù)字鐘,實(shí)現(xiàn)的目標(biāo)如下:</p><p> 1)具有時(shí)、分、秒計(jì)數(shù)顯示功能,以二十四小時(shí)循環(huán)計(jì)時(shí)。</p><p> 2)具有調(diào)節(jié)小時(shí),分鐘的功能,可以通過按鍵選擇時(shí)和分。<
7、;/p><p> 3)具有整點(diǎn)報(bào)時(shí)及鬧鈴時(shí)間可調(diào)的功能。</p><p> 4)數(shù)字鐘具有四種模式:正常顯示、時(shí)間調(diào)整、鬧鈴時(shí)間調(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ǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Bl
9、ock)、輸入輸出模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。 現(xiàn)場可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能
10、的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實(shí)現(xiàn)</p><p> 硬件:采用quartusII</p><p> Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Lang
11、uage)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p> 語言:Verilog HDL硬件描述語言簡介</p><p> Verilog HDL就是在用途最廣泛的C語言的基礎(chǔ)上發(fā)展起來的一種硬件描述語言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年
12、末首創(chuàng)的,最初只設(shè)計(jì)了一個(gè)仿真與驗(yàn)證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時(shí)序分析工具。1985年Moorby推出它的第三個(gè)商用仿真器Verilog-XL,獲得了巨大的成功,從而使得Verilog HDL迅速得到推廣應(yīng)用。1989年CADENCE公司收購了GDA公司,使得VerilogHDL成為了該公司的獨(dú)家專利。1990年CADENCE公司公開發(fā)表了Verilog HDL,并成立LVI組織以促進(jìn)Verilog HDL成為IEEE標(biāo)準(zhǔn),
13、即IEEE Standard 1364-1995. 模塊是Verilog 的基本描述單位,用于描述某個(gè)設(shè)計(jì)的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。一個(gè)設(shè)計(jì)的結(jié)構(gòu)可使用開關(guān)級原語、門級原語和用戶定義的原語方式描述; 設(shè)計(jì)的數(shù)據(jù)流行為使用連續(xù)賦值語句進(jìn)行描述; 時(shí)序行為使用過程結(jié)構(gòu)描述。一個(gè)模塊可以在另一個(gè)模塊中使用。 說明部分用于定義不同的項(xiàng),例如模塊描述中使用的寄存</p><p><b> 設(shè)
14、計(jì)流程說明</b></p><p><b> 系統(tǒng)設(shè)計(jì)</b></p><p> 系統(tǒng)架構(gòu)設(shè)計(jì) clk</p><p><b> 關(guān)鍵模塊代碼分析</b></p><p><b> 2.2.1分頻模塊</b></p><p>
15、 分頻模塊用于為系統(tǒng)的實(shí)現(xiàn)提供穩(wěn)定的工作頻率和計(jì)時(shí)信號源,要求產(chǎn)生兩路不同頻率的信號,分頻為1HZ頻率的信號作為計(jì)時(shí)模塊的秒信號的產(chǎn)生,100HZ的信號用于秒表計(jì)時(shí)模塊的信號,1000HZ的信號用于數(shù)碼管動(dòng)態(tài)顯示的掃描頻率。</p><p><b> 分頻模塊的實(shí)現(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;//計(jì)數(shù)器清零</p><p
18、> sec = ~sec;//置位秒標(biāo)志</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;//計(jì)數(shù)器清零</p><p> clk_1s= ~clk_1s;//置位秒標(biāo)志</p><p><b> end</b></p><p
20、> if(c2== 25'd2400000)//tiaoshi?</p><p><b> begin</b></p><p> c2 = 25'd0;//計(jì)數(shù)器清零</p><p> clk_xiaozhun= ~clk_xiaozhun;//置位秒標(biāo)志</p><p
21、><b> end</b></p><p><b> end</b></p><p> ----------------------------產(chǎn)生1000HZ數(shù)碼管動(dòng)態(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計(jì)時(shí)模塊</b></p><p> 模塊功能為正常計(jì)時(shí),即每秒鐘讀一次數(shù),秒表加1,秒計(jì)時(shí)滿60進(jìn)1給分計(jì)時(shí),分計(jì)時(shí)滿60進(jìn)1給小時(shí)計(jì)時(shí),小時(shí)計(jì)時(shí)滿24清零。從功能上講分別為模60計(jì)數(shù)器和模24計(jì)數(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;//分個(gè)位加一
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;//時(shí)個(gè)位加一</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;//時(shí)十位加一</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 校準(zhǔn)模塊</p><p> 校準(zhǔn)模塊
34、分為鬧鐘校準(zhǔn)模塊和當(dāng)前時(shí)間校準(zhǔn)模塊,layer為模式,當(dāng)layer==2’b10時(shí),進(jìn)入當(dāng)前時(shí)間校準(zhǔn)模塊,當(dāng)layer==2’b11時(shí),進(jìn)入鬧鐘校準(zhǔn)模塊,當(dāng)pos為1時(shí),對分的個(gè)位或十位進(jìn)行校時(shí),當(dāng)pos為0時(shí),對時(shí)的個(gè)位或十位進(jìn)行校時(shí)。</p><p> 2.2.4 鬧鐘模塊</p><p> 當(dāng)當(dāng)前時(shí)間與設(shè)置的鬧鐘時(shí)間一致時(shí),鬧鐘響起,本設(shè)計(jì)采用的是音樂蜂鳴器,通過寫入樂譜對應(yīng)的頻
35、率可實(shí)現(xiàn)音樂的輸出,歌曲為《世上只有媽媽好》。</p><p> 2.2.5 整點(diǎn)報(bào)時(shí)模塊</p><p> (hour1[15:12]==0&&hour1[11:8]==0&&hour1[7:4]==0&&hour1[3:0]==0)</p><p> 當(dāng)分秒對應(yīng)00:00時(shí),讓蜂鳴器發(fā)出響聲</p>
36、;<p><b> 調(diào)試結(jié)果</b></p><p> 通過四個(gè)按鍵的控制(S1:秒表啟動(dòng)及暫停、加功能;S2秒表清零、減功能;S3:模式選擇;S4:分和時(shí)的選擇)能在數(shù)碼管上顯示時(shí)間,并能對時(shí)間進(jìn)行調(diào)整,能進(jìn)行秒表計(jì)數(shù)功能,當(dāng)當(dāng)前時(shí)間與設(shè)置鬧鐘時(shí)間一致時(shí)鬧鐘響起,并在整點(diǎn)時(shí)蜂鳴器發(fā)出一聲“嘀”的報(bào)時(shí)聲。</p><p><b> 小結(jié)&
37、lt;/b></p><p> 通過近來對FPGA的學(xué)習(xí),我對ISE軟件總體操作步驟已比較熟悉。接下來的時(shí)間是要提高對FPGA的掌握能力,將FPGA運(yùn)用到數(shù)字信號處理和通信原理上。 ,另外,對Verilog語言的學(xué)習(xí)不僅是能讀懂別人的程序,更重要的是能寫出條理清晰的程序。通過做多功能數(shù)字鐘,我發(fā)現(xiàn)自己對Verilog語言還不是很熟悉,接下來的時(shí)間要加強(qiáng)語言的學(xué)習(xí),多看一些語言方面的書籍。</p&g
38、t;<p><b> 附錄:主要代碼</b></p><p> module clockxjx (clk,key,dig,seg,beep);//模塊名clock</p><p> input clk;//輸入時(shí)鐘</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)機(jī)</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;//定義計(jì)數(shù)寄存器</p><p> reg[23:0]hour1,hour2,h
43、our3;//定義現(xiàn)在時(shí)刻寄存器</p><p> reg[23:0]hour;//miaobiao</p><p> reg sec,keyen;//定義標(biāo)志位</p><p> reg[1:0] layer;//定義標(biāo)志位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:時(shí)鐘頻率,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;//控制每一個(gè)音的長短(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;//計(jì)數(shù)器加1</p><p> if(count == count
49、_end)</p><p><b> begin</b></p><p> count <= 16'h0;//計(jì)數(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;//計(jì)數(shù)器清零</p><p> sec = ~sec;//置位秒標(biāo)志</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;//計(jì)數(shù)器清零</p><p> clk_1s= ~clk_1s;//置位秒標(biāo)志</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;//計(jì)數(shù)器清零</p><p> clk_xia
55、ozhun= ~clk_xiaozhun;//置位秒標(biāo)志</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ù)碼管動(dòng)態(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];//秒個(gè)位</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];//分個(gè)位</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];//時(shí)個(gè)位</p><p> 3'd7:disp_dat = dat[23:20];//時(shí)十位</p><p><b> end
66、case</b></p><p> case(c3[17:15])//選擇數(shù)碼管顯示位</p><p> 3'd0:dig_r = 8'b11111110;//選擇第一個(gè)數(shù)碼管顯示</p><p> 3'd1:dig_r = 8'b11111101;//選擇第二個(gè)數(shù)碼管顯示</p>
67、<p> 3'd2:dig_r = 8'b11111011;//選擇第三個(gè)數(shù)碼管顯示</p><p> 3'd3:dig_r = 8'b11110111;//選擇第四個(gè)數(shù)碼管顯示</p><p> 3'd4:dig_r = 8'b11101111;//選擇第五個(gè)數(shù)碼管顯示</p><p
68、> 3'd5:dig_r = 8'b11011111;//選擇第六個(gè)數(shù)碼管顯示</p><p> 3'd6:dig_r = 8'b10111111;//選擇第七個(gè)數(shù)碼管顯示</p><p> 3'd7:dig_r = 8'b01111111;//選擇第八個(gè)數(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> //計(jì)時(shí)處理部分</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;//分個(gè)位加一</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;//時(shí)個(gè)位加一</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;//時(shí)十位加一</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;//分個(gè)位加一</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;//時(shí)個(gè)位加一</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;//時(shí)十位加一</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;//分個(gè)位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//分個(gè)位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;//分個(gè)位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//分個(gè)位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)//一個(gè)節(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字邏輯課程設(shè)計(jì)報(bào)告--多功能數(shù)字鐘
- 多功能數(shù)字鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 多功能 數(shù)字鐘
- 數(shù)字邏輯課程設(shè)計(jì)---多功能數(shù)字鐘
- 課程設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)與制作
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告 (2)
- 數(shù)字鐘課程設(shè)計(jì)--多功能數(shù)字鐘的電路設(shè)計(jì)
- 課程設(shè)計(jì)---多功能電子數(shù)字鐘
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- vhdl課程設(shè)計(jì)---多功能數(shù)字鐘
- 多功能數(shù)字鐘電路課程設(shè)計(jì)
- 數(shù)字邏輯課程設(shè)計(jì)---多功能數(shù)字鐘 (2)
- 數(shù)字電路課程設(shè)計(jì)(多功能數(shù)字鐘)
- 課程設(shè)計(jì)--多功能數(shù)字鐘的設(shè)計(jì)
- 課程設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì).doc
- 數(shù)字電路課程設(shè)計(jì)(多功能數(shù)字鐘)
評論
0/150
提交評論