verilog中减法相关问题

2019-07-15 20:56发布

我设置一个初值为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在计算时,可以判断正负?
希望哪位大神可以帮忙解决问题,谢谢。





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
geyuer
2019-07-16 02:11
我后面设置了一个wire型的M【23:0】,
且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时正确置位了。


一周热门 更多>