ホテルを選ぶとき、これだけは譲れない条件TOP3は?

こんにちは!verilogHDLについての質問をお願いします。

私は現在、verilogHDLの勉強をしているのですが以下の記述が理解できません。

input[31:0] A;
reg[3:0] B;

assign B[0] = ^(A[7:0]);
assign B[1] = ^(A[15:8]);
assign B[2] = ^(A[23:16]);
assign B[3] = ^(A[31:24]);

"^"が排他的論理和ということは分るのですが右辺がどの様に評価され左辺になにが代入されるか見当がつきません。
”A = 32'hFF00FF00”だった場合どの様になるのか具体的に解説して頂ければ幸いです。

宜しくお願いします。

A 回答 (1件)

Verilog独特の記述スタイルである「リダクション演算」を行っています.


ビット幅をもった信号内の全てのビットに対して演算子が作用して結果は1ビットとなります.

^(A[7:0]) は「 A[7] ^ A[6] ^ A[5] ^ A[4] ^ A[3] ^ A[2] ^ A[1] ^ A[0] 」と等価です.
可読性を考慮するならば積極的にリダクション演算を利用した方が記述が楽ちんですね.

結果として質問に記述されているサンプルは
32ビット幅のバスのデータについて, バイトレーン単位の偶数パリティ値をB[3:0]にそれぞれ取得しています.

assing A = 32'hFF00_FF00
とした場合, B[3:0]には 4'b0000 が格納されます.
    • good
    • 0
この回答へのお礼

なるほど!とても便利な記述方法ですね。

親切、丁寧な解説をありがとうございました。
非常に助かりました!!

お礼日時:2010/07/06 23:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報