1

在一个简单的模块中,我定义了一个 4 位数组寄存器,并使用它为 4 位数组输出分配一个值。即使它已被定义为 4 位数组,输出也像 1 位线一样工作。

`timescale 1ns/1ps

module test(input in,
            output wire [3:0] outpt);

    reg [3:0] A = 4;    
    assign outpt = A;

endmodule

module testbench1();

    test tst(in, outpt);
    initial begin
        $strobe("| %d | %d |",outpt,tst.A);
    end

endmodule

当我运行测试平台时:如果 A = 5,则输出将为 1。如果 A = 4,输出将为 0。即使我已将其定义为 4 位数组,输出也像 1 位一样。

我正在使用 .v 文件和程序 Active HDL 10.2。

4

1 回答 1

1

outpttest. 由于您没有明确声明outptin testbench1,因此它默认为 1 位。您应该将其声明为:

wire [3:0] outpt;

一些模拟器会为此生成警告消息。在 edaplayground 上试试你的代码。

于 2019-11-09T01:37:38.327 回答