FPGA的電子時(shí)鐘顯示程序_第1頁(yè)
FPGA的電子時(shí)鐘顯示程序_第2頁(yè)
FPGA的電子時(shí)鐘顯示程序_第3頁(yè)
FPGA的電子時(shí)鐘顯示程序_第4頁(yè)
FPGA的電子時(shí)鐘顯示程序_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、/*= *名 稱: 可調(diào)電子時(shí)鐘程序 *功 能: 電子時(shí)鐘顯示實(shí)驗(yàn) *接 口: *說(shuō) 明: 黑金II代FPGA開(kāi)發(fā)板,一個(gè)主程序,兩個(gè)子程序。 *編者 時(shí)間: Ye.FuYao 2014-04-28 Cycione EP2C8Q208C8*=*/主程序module main(clk,RSTn,KEY,duan_xuan,wei_xuan);/外部接口input clk,RSTn; /時(shí)鐘,復(fù)位輸入input 3:0KEY; /物理按鍵key_in按為0,松開(kāi)為1 output 7:0duan_xuan;/數(shù)碼管段選輸出output 5:0wei_xuan; /數(shù)碼管位選輸出/時(shí)鐘 /初始化時(shí)間

2、reg 7:0hour=8'd12;/時(shí)reg 7:0min=8'd0; /分reg 7:0sec=8'd0; /秒wire 3:0key_val;/按鍵值/調(diào)用子程序 ,獲取按鍵值key_value U1(.clk(clk),.RSTn(RSTn),.Key_in(KEY),.key_val(key_val);/key_val返回的按鍵值/秒定時(shí)器parameter T1S=25'd19_999_999;/定時(shí)值reg 24:0Count1; /計(jì)數(shù)值always(posedge clk or negedge RSTn)beginif(!RSTn)Count1

3、<=25'd0;else if(Count1=T1S)Count1<=25'd0;elseCount1<=Count1+1'b1;/脈沖累加end/計(jì)算時(shí)間always(posedge clk or negedge RSTn)beginif(!RSTn)sec<=8'd0; /秒計(jì)時(shí)器else if(Count1 = T1S) /脈沖數(shù)滿足T1Sbeginif(sec < 8'd60) /059beginsec = sec+8'd1; /秒加1if(sec = 8'd60)/第60秒beginsec = 8&

4、#39;d0;if(min < 8'd60) /059beginmin = min+8'd1; /分加1if(min = 8'd60)/第60分beginmin = 8'd0;if(hour < 8'd24)/023beginhour=hour+8'd1; /時(shí)加1if(hour = 8'd24)/第24時(shí)hour = 8'd0;endendendendendend/調(diào)時(shí)間,這段可以不用,直接初始化賦值else if(key_val=4'd4) /key4按下beginif(hour<8'd23)

5、hour<=hour+8'd1;/+1 elsehour<=8'd0;endelse if(key_val=4'd3) /key3按下beginif(hour>8'd0)hour<=hour-8'd1;/-1elsehour<=8'd23;endelse if(key_val=4'd2) /key2按下beginif(min>0)min<=min-8'd1; /+1elsemin<=8'd59;endelse if(key_val=4'd1) /key1按下begin

6、if(min<8'd59)min<=min+8'd1; /-1elsemin<=8'd0;end/調(diào)時(shí)結(jié)束end/*= *名 稱:調(diào)用六位數(shù)碼管顯示子程序 *功 能: *輸 入:clk, RSTn, sec, min, hour, duan_xuan, wei_xuan *輸 出:duan_xuan, wei_xuan *=*/ display_LED U2(.clk(clk),.RSTn(RSTn),.sec(sec),.min(min),.hour(hour), /input-時(shí)間參數(shù).duan_xuan(duan_xuan),.wei_xuan(

7、wei_xuan) /in_out-段選位選 );endmodule/=/*= *名 稱: 電子時(shí)鐘子程序 *功 能: 六位數(shù)碼管顯示時(shí)鐘 *接 口: *說(shuō) 明: *編者 時(shí)間: Ye.FuYao 2014-04-23 Cycione EP2C8Q208C8*=*/電子時(shí)鐘子程序module display_LED(clk,RSTn,sec,min,hour,duan_xuan,wei_xuan);input clk,RSTn; /時(shí)鐘,復(fù)位輸入/時(shí)分秒input 7:0sec;input 7:0min;input 7:0hour;output 7:0duan_xuan;/數(shù)碼管段選輸出out

8、put 5:0wei_xuan; /數(shù)碼管位選輸出reg 7:0duan_xuan;reg 5:0wei_xuan;/段選碼表 reg 7:0 SMG9:0; /10個(gè)8位的數(shù)組initial begin SMG0<=8'hc0; SMG1<=8'hf9; SMG2<=8'ha4; SMG3<=8'hb0; SMG4<=8'h99; SMG5<=8'h92; SMG6<=8'h82; SMG7<=8'hf8; SMG8<=8'h80; SMG9<=8'h9

9、0;end/位選碼表reg 5:0 wei5:0; /6個(gè)6位的數(shù)組initial begin wei0<=6'b111_110; wei1<=6'b111_101; wei2<=6'b111_011; wei3<=6'b110_111; wei4<=6'b101_111; wei5<=6'b011_111;end/=/分離數(shù)據(jù)reg 3:0rsec_One; /09reg 3:0rsec_Ten; /09reg 3:0rmin_One;reg 3:0rmin_Ten;reg 3:0rhour_One;reg

10、3:0rhour_Ten;always (posedge clk or negedge RSTn)beginif(!RSTn)begin rsec_Ten<=4'd0; rsec_One<=4'd0;endelsebeginrsec_Ten<=sec /10; /取十位 rsec_One<=sec %10; /取個(gè)位rmin_Ten<=min /10; /取十位 rmin_One<=min %10; /取個(gè)位rhour_Ten<=hour /10; /取十位 rhour_One<=hour %10; /取個(gè)位endend/=顯示/

11、掃描定時(shí)器parameter T4MS = 17'd59_999; /4ms/20M*0.004=80000reg 16:0Count2;always (posedge clk or negedge RSTn)begin if(!RSTn) Count2 <= 17'd0; else if(Count2 = T4MS) Count2 <= 17'd0; else Count2 <= Count2 + 17'd1;end/標(biāo)志位reg 3:0t=0; /07reg 31:0rData=0; /暫存數(shù)據(jù)/送數(shù)據(jù)always (posedge clk

12、 or negedge RSTn)beginif(!RSTn)/復(fù)位begint <= 4'd0;rData<=32'd0;duan_xuan<=8'b1111_1111;wei_xuan<=6'b111_111;endelse if(t = 4'd7) /標(biāo)志清0t <= 4'd0;else if(Count2 = T4MS) /等于4MS,標(biāo)志位變化begincase(t)4'd5: rData<=rhour_Ten; 4'd0: rData<=rhour_One; 4'd1:

13、 rData<=rmin_Ten; 4'd2: rData<=rmin_One; 4'd3: rData<=rsec_Ten; 4'd4: rData<=rsec_One; endcaseif(t < 4'd6) /05次beginduan_xuan <= SMGrData; /送段選wei_xuan <= weit; /送位選 endif(t = 4'd6) /第6次,秒閃beginif(rsec_One%2)beginduan_xuan <= 8'h7f; /送段選 wei_xuan <=

14、 wei1; /送位選endelse beginduan_xuan <= 8'hff; /送段選 wei_xuan <= wei1; /送位選 endendt <= t + 1'b1; /標(biāo)志加1endendendmodule /*= *名 稱: 按鍵子程序 *功 能: *接 口: *說(shuō) 明: 物理按鍵key_in按為0,松開(kāi)為1 *說(shuō) 明: 參考 *編者 時(shí)間: Ye.FuYao 2014-04-26 Cycione EP2C8Q208C8*=*/按鍵子程序module key_value(clk,RSTn,Key_in,key_val);input clk

15、,RSTn;input 3:0Key_in; /讀取按鍵output 3:0key_val; /返回按鍵值reg 3:0key_val; /按下開(kāi)始reg 3:0key_samp1,key_samp1_locked;always (posedge clk or negedge RSTn)if(!RSTn)begin key_samp1 <= 4'b1111;key_samp1_locked <= 4'b1111;endelsebeginkey_samp1 <= Key_in; /同一脈沖,現(xiàn)態(tài)(如按鍵Key_in0按下1110)key_samp1_locked

16、 <= key_samp1;/同一脈沖,原態(tài)(如無(wú)按鍵按下1111)end/當(dāng)key_samp1由1變?yōu)?時(shí)/key_changed1由0變?yōu)?,只維持一個(gè)時(shí)鐘周期,下個(gè)周期key_changed1還是0;wire 3:0key_changed1;/按下標(biāo)志assign key_changed1 = key_samp1_locked & (key_samp1); /目的:一有按鍵按下就標(biāo)記一次 /延時(shí)20msreg 3:0key_samp2,key_samp2_locked;parameter T20MS=19'd399_999; reg 18:0count;always

17、 (posedge clk or negedge RSTn)if(!RSTn)count<=19'd0;else if(key_changed1) /按鍵按下開(kāi)始清一次0count<=19'd0;else count<=count+1'b1; /按鍵按下直到按鍵松開(kāi),如果沒(méi)有抖動(dòng)/再次判斷/只有當(dāng)按鍵不變化(不抖動(dòng)),且維持20ms以上時(shí)/才將i_key采集至key_samp2always (posedge clk or negedge RSTn)if(!RSTn)key_samp2<=4'b1111;else if(count = T2

18、0MS) /20ms后,再判斷key_samp2<=Key_in; always (posedge clk or negedge RSTn)if(!RSTn)key_samp2_locked<=4'b1111;elsekey_samp2_locked<=key_samp2;/當(dāng)key_samp1由1變?yōu)?時(shí)/key_changed1由0變?yōu)?,只維持一個(gè)時(shí)鐘周期,下個(gè)周期key_changed1還是0;wire 3:0key_changed2;assign key_changed2 = key_samp2_locked & (key_samp2);/注意:這里按下為1松開(kāi)為0!/每次按鍵穩(wěn)定后,輸出鍵值always (posedge clk or negedge RSTn)if(!RSTn)key_val <= 4'b0;elsecase(key_changed2)4'

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論