reg[7:0]
是8位「登記」,或可變
reg[7:0] numbers[3:0]
是1 d陣列4層的元件,命名 numbers
,其中的每一個是8位的寄存器
- 的
numbers
一個元件被稱爲訪問
numbers[i][j]
是numbers[i]
的位選。它訪問位 j
在numbers
- 的
i
個元素作爲toolic說,這是更傳統的數組索引是 編號[lsb:msb]
,但沒有很好的理由。
當分配兩個對象時,位從左到右複製,與VHDL相同。
Verilog對位和部分選擇和數組索引進行檢查很差。請參閱下面的代碼。
module top;
initial
test;
task test;
reg[3:0] a[0:1];
reg[0:3] b[0:1];
reg[2:5] c[0:1];
begin
a[0] = 4'b1101;
a[1] = 4'b0110;
a[2] = 4'b0001; // error, but not caught by Verilog
$display("a[2] is %d", a[2]); // modelsim produces no warning, prints 'a[2] is x'
$display("a[0][4] is %b", a[0][4]); // modelsim warns, and prints 'a[0][4] is x'
$display( // produces '1.1.0.1'
"a[0][3:0] is %b.%b.%b.%b", a[0][3], a[0][2], a[0][1], a[0][0]);
b[0] = a[0];
$display("b[0] is %d", b[0]); // produces '13'
$display( // produces '1.1.0.1'
"b[0][0:3] is %b.%b.%b.%b", b[0][0], b[0][1], b[0][2], b[0][3]);
c[0] = a[0];
$display("c[0] is %d", c[0]); // produces '13'
$display( // produces '1.1.0.1'
"c[0][2:5] is %b.%b.%b.%b", c[0][2], c[0][3], c[0][4], c[0][5]);
end
endtask
endmodule
來源
2013-05-28 09:50:37
EML
運行模擬並找出。 – toolic