可否發你的「eda的數字鐘設計報告 使用verilog hd

時間 2022-01-18 17:25:16

1樓:至尊逆流

這個好像幫不了,我用的是vhdl,找找其他人吧……

2樓:匿名使用者

module asd (

input ncr,en,cp1,adj_min,adj_hour,sel,//sel to change the display;

input wire sign,//set clock signal

input wire set0,set1,set2,set3,set4,set5,//to set the minuteset and hourset

output wire [7:0] a,b,c,d,

output reg glare,time

);wire [7:0]hour1,minute1,second1,hour2,minute2,second2;

supply1 vcc;

wire[7:0]hour,minute,second;

wire cp;

wire minl_en,minh_en,hour_en;

reg [6:0]minuteset,hourset,temp;

//*****====hour:minute:second counter*****====

freq freq_n1

(.clk50m(cp1),

.rst(~ncr),

.clk1hz(cp)

);always@(posedge sign)

begin

temp=7'h00;

temp[0]=set0;

temp[1]=set1;

temp[2]=set2;

temp[3]=set3;

if((set4==1)&&(set5==0)) temp=(temp+7'h16);

if((set4==1)&&(set5==1)) temp=(temp+7'h48);

if((set4==0)&&(set5==1)) temp=(temp+7'h32);

minuteset=temp;

endalways@(negedge sign)

begin

temp=7'h00;

temp[0]=set0;

temp[1]=set1;

temp[2]=set2;

temp[3]=set3;

if((set4==1)&&(set5==0)) temp=(temp+7'h16);

if((set4==1)&&(set5==1)) temp=(temp+7'h48);

if((set4==0)&&(set5==1)) temp=(temp+7'h32);

hourset=temp;

endcounter10 u1(second[3:0],ncr,en,cp);

disp s2_disp(cp,second[3:0],second2);

counter6 u2(second[7:4],ncr,(second[3:0]==4'h9),cp);

disp s1_disp(cp,second[7:4],second1);

//assign minl_en = adj_min ? (second==8'h59):vcc;

assign minh_en = (((adj_min==1'h0)&&(minute[3:0]==4'h9))||((adj_min==1'h1)&&(minute[3:0]==4'h9)&&(second==8'h59)));

//counter10 u3(minute[3:0],ncr,minl_en,cp);

disp m2_disp(cp,minute[3:0],minute2);

counter6 u4(minute[7:4],ncr,minh_en,cp);

disp m1_disp(cp,minute[7:4],minute1);

assign hour_en = adj_hour? ((minute==8'h59)&&(second==8'h59)):vcc;

counter24 u5(hour[7:4],hour[3:0],ncr,hour_en,cp);

disp h2_disp(cp,hour[3:0],hour2);

disp h1_disp(cp,hour[7:4],hour1);

always@(posedge cp)

begin

if((en==1)&&(hour==hourset)&&(minute==minuteset)&&(second<=8'h09)) glare<=1'h1;

else glare<=1'h0;

endalways@(posedge cp)

begin

if((minute==8'h59)&&(second>=8'h55)&&(second!=8'h59)) time<=1'h1;

else if((hour>=8'h01)&&(minute==8'h00)&&(second<=8'h03)) time<=1'h1;

else time<=1'h0;

enddispsel n_dispsel(hour2,hour1,minute2,minute1,second2,second1,a,b,c,d,sel);

endmodule

//*********counter6.v(bcd:0~5)********

module counter6(q,ncr,en,cp);

input cp,ncr,en;

output [3:0]q;

reg [3:0]q;

always@(posedge cp or negedge ncr)

begin

if(~ncr) q<=4'b0000;

else if(~en) q<=q;

else if(q==4'b0101) q<=4'b0000;

else q<=q+1'b1;

endendmodule

//**********counter10.v(bcd:0~5)**********

module counter10(q,ncr,en,cp);

input cp,ncr,en;

output [3:0] q;

reg [3:0] q;

always@(posedge cp or negedge ncr)

begin

if(~ncr) q<=4'b0000;//

else if(~en) q<=q;

else if(q==4'b1001) q<=4'b0000;

else q<=q+1'b1;

endendmodule

//*********counter24.v(bcd:0~23)*********

module counter24(cnth,cntl,ncr,en,cp);

input cp,ncr,en;

output [3:0]cnth,cntl;

reg [3:0]cnth,cntl;

reg co;

always@(posedge cp or negedge ncr)

begin

if(!ncr)<=8'h00;

else if(~en)<=;

else if((cnth>2)||(cntl>9)||((cnth==2)&&(cntl>=3)))

<=8'h00;

else if((cnth==2)&&(cntl<3))

begin cnth<=cnth;cntl<=cntl+1'b1;end

else if(cntl==9)

begin cnth<=cnth+1'b1;cntl<=4'b0000;end

else

begin cnth<=cnth; cntl<=cntl+1'b1;end

endendmodule

module disp

(input wire clk50m,

input wire[3:0] hexcode,

output wire[7:0] segmentcode

);reg[7:0] segment;

//assign segmentcode[7:0] = segment[7:0]; //1 for light on the led

assign segmentcode[7:0] = ~segment[7:0];//0 for light on the led

always @(posedge clk50m)

begin

begin

case(hexcode)

4'h0:

begin

segment <= 8'h3f;

end4'h1:

begin

segment <= 8'h06;

end4'h2:

begin

segment <= 8'h5b;

end4'h3:

begin

segment <= 8'h4f;

end4'h4:

begin

segment <= 8'h66;

end4'h5:

begin

segment <= 8'h6d;

end4'h6:

begin

segment <= 8'h7d;

end4'h7:

begin

segment <= 8'h07;

end4'h8:

begin

segment <= 8'h7f;

end4'h9:

begin

segment <= 8'h6f;

enddefault:

begin

segment <= 8'h00;

endendcase

endend

endmodule

module dispsel

(input wire[7:0] hourh, //輸入的小時高位的7段顯示編碼

input wire[7:0] hourl, //輸入的小時低位的7段顯示編碼

input wire[7:0] minh, //輸入的分鐘高位的7段顯示編碼

input wire[7:0] minl, //輸入的分鐘低位的7段顯示編碼

input wire[7:0] sech, //輸入的秒鐘高位的7段顯示編碼

input wire[7:0] secl, //輸入的秒鐘低位的7段顯示編碼

output wire[7:0] hex3, //輸出的選擇後的7段顯示編碼,分配到開發板的hex3顯示管

output wire[7:0] hex2, //輸出的選擇後的7段顯示編碼,分配到開發板的hex2顯示管

output wire[7:0] hex1, //輸出的選擇後的7段顯示編碼,分配到開發板的hex1顯示管

output wire[7:0] hex0, //輸出的選擇後的7段顯示編碼,分配到開發板的hex0顯示管

input wire sel //選擇輸入訊號

);assign hex3[7:0] = sel?8'hff:hourh[7:0]; //選擇輸入訊號為1時,hex3顯示為無效資料,選擇輸入訊號為0時顯示小時高位訊號

assign hex2[7:0] = sel?8'hff:hourl[7:0]; //選擇輸入訊號為1時,hex2顯示為無效資料,選擇輸入訊號為0時顯示小時高位訊號

assign hex1[7:0] = sel?sech[7:

0]:minh[7:0]; //選擇輸入訊號為1時,hex1顯示為秒鐘高位訊號,選擇輸入訊號為0時顯示分鐘高位訊號

assign hex0[7:0] = sel?secl[7:

0]:minl[7:0];//選擇輸入訊號為1時,hex1顯示為秒鐘低位訊號,選擇輸入訊號為0時顯示分鐘低位訊號

endmodule

module freq

(input wire clk50m,

input wire rst,

output reg clk1hz

);parameter cnt_1hz = 50000000;

reg[31:0] cnt;

always @(posedge clk50m or posedge rst)

begin

if(rst)

begin

clk1hz <= 0;

cnt <= 0;

endelse

begin

if(cnt >= cnt_1hz -1)

begin

cnt <= 0;

endelse

begin

cnt <= cnt + 1;

endif(cnt < cnt_1hz/2)

begin

clk1hz <= 0;

endelse if(cnt < cnt_1hz - 1)

begin

clk1hz <= 1;

endend

endendmodule

你印象最深的瀑布是什麼,可否聊聊?

為什麼黃果樹今年評為最差?黃果樹獲得差評實至名歸理所當然 但凡景區人多一點 買票排隊,坐車排隊,進景區門口排隊,吃飯排隊,上廁所排隊。景區好像根本沒有解決的意思 解決 旺季週末多增設臨時售票口,發揮電腦自動取票功能!買票都浪費半個多小時是常見的事情!坐車通道只有兩個,太少,遊客上車太難!要增加遊客上...

小明在鏡子裡看到沒有數字的時針鐘面上的時間是四時十分那麼實際的時間是()時()分

小百合 小明在鏡子裡看到乙個沒有數字的時針鐘面上的時間是四時十分那麼實際的時間是 7 時 20 分 林辰 因為鏡子裡看到的事物與實際事物是對稱的。鐘面上的數字就是以鏈結 12與6 這條直線對稱。所以鏡子裡看到的應該是 8時50分 我可愛的雨總 七點五十或19 50。望採納 小明從鏡子裡看到乙個鐘面的...

可否一下讓你用詞形容未來,你的選擇

快樂小答 如果要我用一個詞來形容我的未來,我的選擇只能是渺忙的。 夏至 如果讓我用一個詞形容未來的話,我會覺得我們中國應該是那種無懈可擊的狀態吧,比現在肯定要好。 編號 如果讓我用一個詞來形容未來,那麼我會用精彩兩個字,我相信我的未來是精彩的,他有無限的可能,所以我也憧憬,未來是我最美的期待。 瞎胡...