レジスタ内のバイナリを符号拡張してゼロ拡張するコードの形式は何ですか?Verilog:レジスタでバイナリを拡張するには?
すなわち
reg[0:0] a; //a is 1-bit.
reg[31:0] b, c; //b and c are 32-bits.
//some code...
、32ビットにa
を符号拡張b
に追加し、そしてc
に結果を置きます。
ゼロ拡張a
を32ビットに変換してb
に追加し、結果をc
に入力します。
レジスタ内のバイナリを符号拡張してゼロ拡張するコードの形式は何ですか?Verilog:レジスタでバイナリを拡張するには?
すなわち
reg[0:0] a; //a is 1-bit.
reg[31:0] b, c; //b and c are 32-bits.
//some code...
、32ビットにa
を符号拡張b
に追加し、そしてc
に結果を置きます。
ゼロ拡張a
を32ビットに変換してb
に追加し、結果をc
に入力します。
署名拡張にはさまざまな方法がありますが、最小限のコードを必要とする方法を使用します。 Verilog レプリケーションとの連結操作を使用します。
レプリケーション形式:{numberOfTimesToRepeat{value}}
すなわち{20 {[0]}}
a
における第0ビットは、20回の登録レプリケート。
連結形式:レジスタ{value1, value2}
すなわち{A、B}
連結しバイナリa
とb
を登録します。サイン拡張する
:
{{31 {[0]}}、A}
がa
レジスタ31回で0ビット目を複製し、そしてその前に連結レジスタのバイナリはa
です。ゼロ拡張する
:
{{31 {ゼロ}}、A} //ゼロはゼロのビットを含む1ビットのレジスタです。
値0を31回複製し、レジスタa
のバイナリの前に連結します。ここ
@toolicあなたがそこで何をしたのか説明できますか?ありがとう – NoName
'reg [0:0] a;' => 'reg a;'これは1ビットです。 –