Verilog 对于二进制数的循环

Verilog 对于二进制数的循环,verilog,Verilog,我想在Verilog中使用for循环从二进制0000000到0011111。我对for循环的增量部分有问题。我应该如何准确地移动到0011111 我尝试了以下代码,但它给了我一个错误 for(DATA_IN=7'b0000000; DATA_IN<=7'b0011111; 1<<DATA_IN); 对于(DATA_IN=7'b000000;DATA_IN要通过循环每次增加1,请使用DATA_IN=DATA_IN+1。以下是一个自包含的示例: module tb; reg [

我想在Verilog中使用
for
循环从二进制0000000到0011111。我对
for
循环的
增量部分有问题。我应该如何准确地移动到0011111

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

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

对于(DATA_IN=7'b000000;DATA_IN要通过循环每次增加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

您可以在for循环中使用二进制,并使用i=i+1轻松递增:

module my_design;
    reg [7:0] DATA_IN;
    
    initial begin
        // Note that ++ operator does not exist in Verilog !
        for (DATA_IN = 7'b0000000; DATA_IN <= 7'b0011111; DATA_IN = DATA_IN + 1) begin
            $display ("Current loop#%0d ", DATA_IN);
        end
    end
endmodule
模块my_设计;
reg[7:0]数据输入;
初始开始
//请注意,++运算符在Verilog中不存在!

对于(DATA_IN=7'b0000000;DATA_IN二进制数只是看待整数的一种不同方式。您可以同样轻松地使用十进制表示从0到31——因此使用与在任何其他for循环中使用十进制数相同的构造。@PAULTNX程序员,但我必须严格使用二进制。问题是:您希望如何从一个接一个?是一个简单的增量吗?左移?右移?还有其他吗?所有这些都将以不同的迭代次数结束。你是否只是复制了@toolic提出的解决方案?Tbf,我回答问题时没有查看现有的答复。但这是一个基本的for循环,ofc它应该看起来类似,不是吗T
module my_design;
    reg [7:0] DATA_IN;
    
    initial begin
        // Note that ++ operator does not exist in Verilog !
        for (DATA_IN = 7'b0000000; DATA_IN <= 7'b0011111; DATA_IN = DATA_IN + 1) begin
            $display ("Current loop#%0d ", DATA_IN);
        end
    end
endmodule