2012-11-07 18 views
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?

+0

請發表合法的Verilog代碼。 0xff不能編譯。 – toolic

回答

4

你找到答案的原因很難找到答案,因爲結果取決於你聲明的東西。您已將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

+0

謝謝保羅!一個很好的解釋加上一個答案。另外,感謝編輯,我主要是一個C人,只是犯了一個錯誤。 – Rich

3

b[0]被分配給最高有效位a[7];即a[7] == 1

2

但是,我不確定這是打字錯誤還是打算使用解壓聲明。 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的正確答案。

+0

我簡化它從我實際上看的源文件。我正在查看一些定義爲壓縮結構的一部分的數組。如果一個結構被打包,那麼這是否意味着它的位陣列被打包? – Rich

+1

是的。打包的結構體只能具有整數或包裝類型作爲其字段。 – jclin

+0

好,我錯過了它是一個解壓縮數組。 –