我设置一个初值为0的计数器counter[23:0],一个输入信号B[23:0]。设置一个初始值为0的falg寄存器。
verilog代码如下:
if(counter==B-1)
begin
counter<=0;
flag<=1;
end
else begin
counter<=counter+1;
flag<=0;
end
当B=0时,我的仿真结果中发现,flag信号并没有置位。我想问一下,在FPGA中,当B=0时,B-1是24'hFFFFFF吗?如果是的话,当counter计数到24'hFFFFFF时条件已经满足了,为什么我的flag信号没有置位呢?还是说verilog在计算时,可以判断正负?
希望哪位大神可以帮忙解决问题,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
且assign M=B-1;
然后将代码变成:
if(counter==M)
begin
counter<=0;
flag<=1;
end
else begin
counter<=counter+1;
flag<=0;
end
B=0的情况下,得出的仿真结果中,M=24‘HFFFFFF;
而flag信号在counter计数到24‘hFFFFFF时正确置位了。
一周热门 更多>