大家好:
小弟是verilog新手,目前在做一段簡單的計數功能時發生一些問題,但一直找不到真正原因,希望能請各位幫忙解答,謝謝!
always @(negedge rst_n or posedge clk)
begin 
 
if (!rst_n)
begin
cun <= 4'b0000 ;
end
 
else 
if (cun == 4'd9)
begin
cun <= 4'b0000 ;
end
 
else 
begin
cun <= cun + 1'b1 ;
end
 
end
 
以上單獨這段可以反覆由0數到9
 
但加入下面這段後就會變成第一次由0數到9 後面全部都變成由2數到9  EX: 0123456789 23456789 23456..
 
 always @(negedge rst_n or posedge clk)
 
begin 
if (!rst_n)
begin
cun1 <= 4'b0000 ;
end
 
else if (cun1 == 4'd5 && cun== 4'd9)
begin
cun1 <= 4'b0000 ;
end
 
else if (cun == 4'd9)
begin
cun1 <= cun1 + 1'b1 ;
end
 
end
-----------------
 
目前知道問題出在
 
else 
begin
cun <= cun + 1'b1 ;
end
 
需要改成else if(rst_n)才能正常動作
 
請問這是為什麼呢?