1

「myReg」と呼ばれる 8 ビットの出力 reg と「checkReg」と呼ばれる 8 ビットの入力があるとします。16 進値を使用して case ステートメントでそれらの値をチェックして割り当てることはできますか?

たとえば(コードが常にブロックにあると仮定します)

case (checkReg)
    2'hA0:myReg <= 2'h10;
    2'hB0:myReg <= 2'hC0;
    //Other cases
endcase

上記のコードで次のことを実行したい: checkReg = 10100000 の場合、myReg を 00010000 に設定します。

16 進数値を確認してベクトルに割り当て、自動的に 2 進数に変換できるかどうかはわかりませんでした。

4

1 に答える 1

4

ストレートベース変換 (bin、oct、hex、dec) の場合、verilog で特別な変換を行う必要はありません。BCD 変換などには、追加の手順が必要です。

単一引用符の前の数字はビット サイズであり、桁数ではありません。2'hA0そうでなけれ8'hA0ば、上位ビット値がマスクされます。

reg [7:0] myReg;
always @* begin
  case (checkReg)
    8'hA0: myReg = 8'h10;
    8'hB0: myReg = 8'hC0;
    //Other cases
  endcase
end
于 2014-11-25T22:47:14.583 に答える