higildedzest
Junior Member level 3
recently i wrote a counter program,i compile it and successful.But when i started to run function simulation,the results were wrong.i do not understand,please everybody who know it give me some advices about it.thank you very much.
here is the code:
module counter(clk,reset,hour,min,sec);
input clk,reset;
output[7:0] hour,min,sec;
wire [7:0] hour,min,sec;
always@(posedge clk or posedge reset)
begin
reg[7:0] hour1,min1,sec1;
if(reset==1)
begin
hour1[3:0]<=0;
hour1[7:4]<=0;
min1[3:0]<=0;
min1[7:4]<=0;
sec1[3:0]<=0;
sec1[7:4]<=0;
end
else if(sec1[3:0]<4'b1001)
begin
sec1[3:0]<=sec1[3:0]+1;
end
else
begin
sec1[3:0]<=0;
if(sec1[7:4]<4'b0101)
begin
sec1[7:4]<=sec1[7:4]+1;
end
else
begin
sec1[7:4]<=0;
if(min1[3:0]<4'b1001)
begin
min1[3:0]<=min1[3:0]+1;
end
else
begin
min1[3:0]<=0;
if(min1[7:4]<4'b0101)
begin
min1[7:4]<=min1[7:4]+1;
end
else
begin
min1[7:4]<=0;
if(hour1[7:4]<4'b0010)
begin
if(hour1[3:0]<4'b1001)
begin
hour1[3:0]<=hour1[3:0]+1;
end
else
begin
hour1[3:0]<=0;
hour1[7:4]<=hour1[7:4]+1;
end
end
else
begin
if(hour1[3:0]<4'b0011)
begin
hour1[3:0]<=hour1[3:0]+1;
end
else
begin
hour1[7:4]<=0;
hour1[3:0]<=0;
end
end
end
end
end
end
end
assign hour=hour1,
min=min1,
sec=sec1;
endmodule
here is the code:
module counter(clk,reset,hour,min,sec);
input clk,reset;
output[7:0] hour,min,sec;
wire [7:0] hour,min,sec;
always@(posedge clk or posedge reset)
begin
reg[7:0] hour1,min1,sec1;
if(reset==1)
begin
hour1[3:0]<=0;
hour1[7:4]<=0;
min1[3:0]<=0;
min1[7:4]<=0;
sec1[3:0]<=0;
sec1[7:4]<=0;
end
else if(sec1[3:0]<4'b1001)
begin
sec1[3:0]<=sec1[3:0]+1;
end
else
begin
sec1[3:0]<=0;
if(sec1[7:4]<4'b0101)
begin
sec1[7:4]<=sec1[7:4]+1;
end
else
begin
sec1[7:4]<=0;
if(min1[3:0]<4'b1001)
begin
min1[3:0]<=min1[3:0]+1;
end
else
begin
min1[3:0]<=0;
if(min1[7:4]<4'b0101)
begin
min1[7:4]<=min1[7:4]+1;
end
else
begin
min1[7:4]<=0;
if(hour1[7:4]<4'b0010)
begin
if(hour1[3:0]<4'b1001)
begin
hour1[3:0]<=hour1[3:0]+1;
end
else
begin
hour1[3:0]<=0;
hour1[7:4]<=hour1[7:4]+1;
end
end
else
begin
if(hour1[3:0]<4'b0011)
begin
hour1[3:0]<=hour1[3:0]+1;
end
else
begin
hour1[7:4]<=0;
hour1[3:0]<=0;
end
end
end
end
end
end
end
assign hour=hour1,
min=min1,
sec=sec1;
endmodule