|
樓主大三剛學完pld,期末課程設計讓設計一個基于verilog HDL的秒表,苦思三天才寫出來一點點東西,不知道對錯,望各位大神指點迷津。指導指導。
hour1 //時的個位
min1 //分的個位
min2 //分的十位
sec1 //秒的個位
sec2 //秒的十位
clk //100hz時鐘輸入信號
key1 //清零按鍵信號
module miaobiao (hour1,min1,min2,sec1,sec2,clk,key1);
input clk;
input key1;
output[3:0]hour1;
output[3:0]min1;
output[3:0]min2;
output[3:0]sec1;
output[3:0]sec2;
reg hour1,min1,min2,sec1,sec2;
wire key1;
always@(posedge clk or negedge key1)
begin
if(!key1)) //是否需要清零
begin
sec1[3:0]=1'b0;
sec2[3:0]=1'b0;
min1[3:0]=1'b0;
min2[3:0]=1'b0;
hour1[3:0]=1'b0;
else if(!key1)
begin
sec1[3:0]=sec[3:0]+1'b1; //秒的個位加1
if(sec1[3:0]==4'ha) //秒的個位等于10
begin
sec1[3:0]=4'b0; //秒的個位清零
sec2[3:0]=sec[3:0]+1'b1; //秒的十位加1
if(sec2[3:0]==4'h6) //秒的十位為6
begin
sec2[3:0]=4'h0; //秒的十位清零
min1[3:0]=min1[3:0]+1'b1; //分鐘的個位加1
if(sec2[3:0]==4'ha)
begin
min1[3:0]=4'h0; //分鐘的個位清零
min2[3:0]=min[3:0]+1'b1; //分的十位加1
if(min2[3:0]==4'h6) //分的十位為6
begin
min2[3:0]=4'h0; //分的十位清零
hour1[3:0]=hour1[3:0]+1'b1; //時的個位加1
if(hour[3:0]==4'h1) //時的個位為1
hout1[3:0]=4'h0; //時的個位清零(計時器最長計時為1小時)
end
end
end
end
end
end
end
endmodule
|
-
-
秒表.rar
2018-1-19 10:54 上傳
點擊文件名下載附件
559 Bytes, 下載次數: 24
|