資源描述:
《eda數(shù)字時(shí)鐘源代碼設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、moduletim(clk,modkey,key1,key2,dis,leg,line,row);inputclk;//輸入的頻率20MHzinputmodkey,key1,key2;//輸入的三個(gè)按鍵output[7:0]dis,leg;//打印輸出output[7:0]line,row;//鬧鐘相應(yīng)輸出wiref1;//1Hz的頻率wiref100;//0.01Hz的頻率wirefs;//刷新頻率1kHzwire[1:0]mkoo;//狀態(tài)鍵控制四種狀態(tài)//1.正常計(jì)時(shí)(00)//2.跑表(01)//3.調(diào)時(shí)(10)//4.鬧鐘(11)wir
2、e[3:0]a,b,c,d,e,f;//正常計(jì)時(shí)的輸出秒.分.時(shí)//a:秒的低位//b:秒的高位//c:分的低位//d:分的高位//e:時(shí)的低位//f:時(shí)的低位wire[3:0]a2,b2,c2,d2,e2,f2;//跑表的輸出秒.分.時(shí)//a2:秒的低位//b2:秒的高位//c2:分的低位//d2:分的高位//e2:時(shí)的低位//f2:時(shí)的低位wire[3:0]cc,dd,ee,ff;//鬧鐘的輸出分.時(shí)//cc:分的低位//dd:分的高位//ee:時(shí)的低位//ff:時(shí)的低位wire[7:0]leg1,dis1;//正常計(jì)時(shí)的打印輸出wire[7
3、:0]leg2,dis2;//跑表的打印輸出wire[7:0]leg3,dis3;//鬧鐘的打印輸出(LED顯示)wire[1:0]k1;//調(diào)時(shí)時(shí)啟動(dòng)閃爍狀態(tài)wire[1:0]kk1;//調(diào)鬧鐘時(shí)啟動(dòng)閃爍狀態(tài)wirelinerow;//鬧鐘的打印輸出(矩陣顯示)zhuangtai(modkey,fs,mkoo);//判斷鍵的狀態(tài)模塊(mkoo4種模式)正常計(jì)時(shí).跑表.調(diào)時(shí),鬧鐘modchosemc(leg1,dis1,leg2,dis2,leg3,dis3,fs,mkoo,leg,dis);//選擇模式輸出模塊fenpinfen(clk,f1,
4、f100,fs);//分頻:秒表,跑表,刷新3個(gè)頻率。jishiji(mkoo,key1,key2,f1,fs,a,b,c,d,e,f,kk1);//第一種模式正常計(jì)時(shí)print1p1(mkoo,kk1,fs,a,b,c,d,e,f,leg1,dis1);//計(jì)時(shí)的打印paobiaopao(f100,fs,mkoo,key1,key2,a2,b2,c2,d2,e2,f2);//跑表模塊print2p2(fs,a2,b2,c2,d2,e2,f2,leg2,dis2);//跑表的打印naozhongnao(mkoo,key1,key2,f1,c,d,
5、e,f,cc,dd,ee,ff,k1,linerow);//鬧鐘模塊print3p3(mkoo,k1,fs,cc,dd,ee,ff,leg3,dis3);//定時(shí)的打印模塊print4p4(fs,linerow,line,row);//鬧鐘相應(yīng)時(shí)的輸出打印模塊endmodule//(2)選擇模式按鍵狀態(tài):modulezhuangtai(mk,clkfs,mkoo);//(mkoo4種模式)正常計(jì)時(shí).跑表.調(diào)時(shí),鬧鐘inputclkfs;inputmk;output[1:0]mkoo;//用做模塊之間的連接reg[1:0]mkoo;//存儲(chǔ)模式選擇
6、always@(posedgeclkfs)beginif(mk==0)beginmkoo=mkoo+2'b01;endendendmodule//(3)分頻模塊:modulefenpin(clk,f1Hz,f100Hz,f);//分頻:秒表,跑表,刷新3個(gè)頻率inputclk;outputf1Hz,f100Hz,f;//用作模塊之間的連接,定義為wire型的regf1Hz,f100Hz,f;integeri,j,k;always@(posedgeclk)beginif(i==9999999)beginf1Hz=~f1Hz;//秒表頻率1Hzi=0
7、;endelsei=i+1;endalways@(posedgeclk)beginif(j==99999)beginf100Hz=~f100Hz;//跑表頻率100Hzj=0;endelsej=j+1;endalways@(posedgeclk)beginif(k==9999)beginf=~f;//刷新頻率1kHzk=0;endelsek=k+1;endendmodule//(4)正常計(jì)時(shí)模塊:modulejishi(mk,key1,key2,f1Hz,clk,a,b,c,d,e,f,k1);//第一種模式正常計(jì)時(shí)inputf1Hz,clk;i
8、nput[1:0]mk;inputkey1,key2;output[3:0]a,b,c,d,e,f;output[1:0]k1;reg[