Выходной массив не будет принимать значение регистра массива [Verilog, Active HDL] - PullRequest
1 голос
/ 09 ноября 2019

В простом модуле я определил 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

1 Ответ

1 голос
/ 09 ноября 2019

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

wire [3:0] outpt;

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

...