首页 > 解决方案 > 带有二进制数的 For 循环

问题描述

我想for在 Verilog 中使用循环从二进制 0000000 到 0011111。我对for循环的增量部分有疑问。我应该如何移动才能到达 0011111?

我尝试了以下代码,但它给了我一个错误。

for(DATA_IN=7'b0000000; DATA_IN<=7'b0011111; 1<<DATA_IN);

标签: verilog

解决方案


要在每次循环中增加 1,请使用DATA_IN=DATA_IN+1. 这是一个独立的示例:

module tb;

reg [7:0] DATA_IN;

initial begin
    for (DATA_IN=7'b0000000; DATA_IN<=7'b0011111; DATA_IN=DATA_IN+1) begin
        $displayb(DATA_IN);
    end
end

endmodule

输出:

00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00001011
00001100
00001101
00001110
00001111
00010000
00010001
00010010
00010011
00010100
00010101
00010110
00010111
00011000
00011001
00011010
00011011
00011100
00011101
00011110
00011111

推荐阅读