3

これは単純なSystemVerilogの質問であり、答えを見つけるのに驚くほど困難な時間を過ごしています。

この種のビット配列初期化構文では、b [0]部分はaの最上位ビットに割り当てられていますか、それとも最下位ビットに割り当てられていますか?

bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;

a = {b[0], c[6:0]};

では、a [0]==1またはa[7]== 1ですか?

4

3 に答える 3

5

答えを見つけるのが難しいと思った理由は、結果があなたが物事をどのように宣言したかに依存しているからです。

あなたはであると宣言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

于 2012-11-07T18:19:10.620 に答える
3

b[0]最上位ビットに割り当てられa[7]ます; すなわちa[7] == 1

于 2012-11-07T16:27:50.300 に答える
2

ただし、タイプミスなのか、解凍された宣言を使用する意図があるのか​​はわかりません。bit a[7:0]は、unpacked array連続ストレージを意味するものではなく、パック値または整数値を直接割り当てることはできません。

SystemVerilog for Design以下は、P.114、5.3.1アンパックアレイから採用されています。

解凍された配列は、各要素を個別に格納しますが、共通の配列名でグループ化されます。

P.122、5.3.5配列への値の割り当て

SystemVerilogは、アンパックされた配列に値を割り当てる2つの追加の方法でVerilogを拡張します。-配列
全体に値のリストを割り当てることができます
-配列のスライスに値のリストを割り当てることができます。

値のリストは、アンパックされた配列を初期化する場合と同じように、'{}中括弧の間に指定されます。

パックされた配列についてはbit [7:0] a、Paulから正解があります。

于 2012-11-08T13:27:59.937 に答える