首页 > 解决方案 > 最高有效位的 32 位 OR 操作 Verilog 意外结果

问题描述

Or32的TestModule

GTKWave 结果

我的问题是为什么最重要的位会得到一个意想不到的 x?

module Or32(//32-Bit-Or
    input [31:0] a,
    input [31:0] b,
    output [31:0] o
    );

    integer i;
    reg [31:0]mid;
    always@* begin
        for (i = 0;i < 31; i++) begin
            mid[i] = a[i] || b[i];
        end
    end
    assign o = mid;
endmodule

标签: verilog

解决方案


x由于您的循环条件,最重要的位得到了。

for (i = 0;i < 31; i++)

满足的最后一个值i < 3130,但你mid最重要的位是31。将您的条件更改为i < 32


推荐阅读