2013-10-06 118 views

回答

1
考慮

通過SystemVerilog的所使用的術語中,[15:0]的數據類型後reg表示填充陣列尺寸。 reg [15:0]是一個16位的包裝的或整型。一個整數類型可以用在算術表達式中。 15是最高有效位(MSB),0是最低有效位(LSB)。索引積分值時,大多數計算機系統的LSB都爲0。

顯示在聲明的變量名稱右側的[0:15]是未包裝的尺寸。 reg [15:0] regfile[0:15]宣佈未包裝的陣列的包裝陣列。在Verilog中,一次只能選擇一個解壓數組的一個元素來讀或寫。因此,解包維度的數字排序的唯一重要性在於當您調用例如$readmemh的例程時。左邊的第一個索引表示默認加載的第一個元素,您通常希望它爲0.在SystemVerilog中,您可以將解壓後的數組作爲整體進行操作,因此索引排序變得更加重要。

Verilog-2001允許聲明多個未壓縮的尺寸,但是您一次只能選擇一個數組元素。 SystemVerilog還允許多個打包維度,以及執行某些操作(如分配和比較整個或部分解壓縮數組)的功能。

0

我認爲這是一個比規定更多的約定。例如,請參閱IEEE Std 1800-2012中的第7.4.4節「存儲器」。您的regfile被認爲是一個16位寬的16位存儲器。

1
reg[15:0] regfile[A:B]; 

是宣稱可使用A,A+1..B

reg[15:0] regfile[0:15]; 

索引(B-A+1) 16位寄存器快捷聲明

reg[15:0] regfile[0]; 
reg[15:0] regfile[1]; 
..................... 
reg[15:0] regfile[14]; 
reg[15:0] regfile[15]; 

它做同樣的,如果你反轉指標如下

reg[15:0] regfile[15:0]; 

以下聲明相同但具有不同索引10..24,25。指數0,1..9無效。

reg[15:0] regfile[25:10];