tica, Arial, sans-serif">大家好,刚刚学习verilog有两个问题想请教以下
1. 为什么在verilog中的进位是从9进位,但是实际是10有效呢?
比如一个秒表中的进位程序如下
always_ff @(posedge clk)
begin
if (reset)
begin
count1 <= '0;
count2 <= '0;
count3 <= '0;
count4 <= '0;
end
else if(enable)
begin
if (count1 == 4'b1001)
begin
count1 <= '0;
if (count2 == 4'b1001)
begin
count2 <= '0;
if (count3 == 4'b1001)
begin
count3 <= '0;
if (count4 == 4'b1001)
begin
count4 <= '0;
end
else
count4 <= count4 + 1'b1;
end
else
count3 <= count3 + 1'b1;
end
else
count2 <= count2 + 1'b1;
end
else
count1 <= count1 + 1'b1;
end
end
endmodule
程序比较简单,但是为什么进位时的判定条件是 if (count1 == 4'b1001)
而不是if (count1 == 4'b1010) 呢? 从C的角度看,应该是等于10才归零才进位呀?
2.为什么这个程序会陷入死循环? pos和an一直等于0,不管我按了reset没有。。
always_ff @(posedge clk)
if (reset)
begin
pos <= '0; // set all bits to 0
an <= '0; // set all bits to 0
end
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>