В дополнение к превосходному ответу Марти, спецификация SystemVerilog предлагает тип данных byte
. Далее объявляется 4x8-битная переменная (4 байта), каждому байту присваивается значение, а затем отображаются все значения:
module tb;
byte b [4];
initial begin
foreach (b[i]) b[i] = 1 << i;
foreach (b[i]) $display("Address = %0d, Data = %b", i, b[i]);
$finish;
end
endmodule
Это распечатывает:
Address = 0, Data = 00000001
Address = 1, Data = 00000010
Address = 2, Data = 00000100
Address = 3, Data = 00001000
По концепции это похоже на reg [7:0] a [0:3];
Марти. Однако byte
— это тип данных с 2 состояниями (0 и 1), а reg
— с 4 состояниями (01xz). Использование byte
также требует, чтобы ваша цепочка инструментов (симулятор, синтезатор и т. д.) поддерживала этот синтаксис SystemVerilog. Обратите также внимание на более компактный синтаксис цикла foreach (b[i])
.
Спецификация SystemVerilog поддерживает широкий спектр типов многомерных массивов. LRM может объяснить их лучше, чем я; см. IEEE Std 1800-2005, глава 5.
person
toolic
schedule
10.06.2010