這是一個簡單的SystemVerilog問題,我很難找到答案。這個Verilog初始化語法的重要性順序是什麼?
在這種位陣列初始化語法中,b [0]部分是分配給最高有效位還是最低有效位?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
那麼[0] == 1或[7] == 1?
這是一個簡單的SystemVerilog問題,我很難找到答案。這個Verilog初始化語法的重要性順序是什麼?
在這種位陣列初始化語法中,b [0]部分是分配給最高有效位還是最低有效位?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
那麼[0] == 1或[7] == 1?
你找到答案的原因很難找到答案,因爲結果取決於你聲明的東西。您已將a
宣告爲[7:0]
。因此,在a
的位被分佈是這樣的:
a7 a6 a5 a4 a3 a2 a1 a0
你可以分配給{b[0], c[6:0}
a
:
a7 a6 a5 a4 a3 a2 a1 a0 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[7] == 1
如果你宣佈a
是[0:7]
結果將是:
a0 a1 a2 a3 a4 a5 a6 a7 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[0] == 1
謝謝保羅!一個很好的解釋加上一個答案。另外,感謝編輯,我主要是一個C人,只是犯了一個錯誤。 – Rich
b[0]
被分配給最高有效位a[7]
;即a[7] == 1
。
但是,我不確定這是打字錯誤還是打算使用解壓聲明。 bit a[7:0]
是unpacked array
,它並不意味着連續存儲,它不能直接指定打包或整數值。
以下是從SystemVerilog for Design
,P.114,5.3.1壓縮數組
解壓縮後的數組存儲通過每個元件獨立地,但在一個共同的陣列名稱分組。
P.122,5.3.5分配值,以陣列
SystemVerilog的延伸的Verilog與兩種其他方法將值分配給壓縮數組:
- 整個陣列可以被分配值的列表
- 可以爲數組的一個片段分配一個值列表。值的列表在'{}括號之間指定,與初始化解壓縮數組相同。
對於包裝數組,bit [7:0] a
,我們的確有Paul的正確答案。
請發表合法的Verilog代碼。 0xff不能編譯。 – toolic