Выходной массив не будет принимать значение регистра массива

В простом модуле я определил регистр 4-битного массива и использую его для присвоения значения выходному 4-битному массиву. Выход действует как 1-битный провод, даже если он был определен как 4-битный массив.

`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. Выход действует как 1-бит, хотя я определил его как 4-битный массив.

Я использую файлы .v и программу Active HDL 10.2.


person TomatoLV    schedule 09.11.2019    source источник


Ответы (1)


Вы явно объявили outpt 4-битным в test. Поскольку вы явно не объявили outpt в testbench1, по умолчанию он равен 1 биту. Вы должны объявить это как:

wire [3:0] outpt;

Некоторые симуляторы будут генерировать предупреждающее сообщение об этом. Попробуйте свой код на edaplayground.

person toolic    schedule 09.11.2019