演算の記述



実際に演算をするための記述を行います。演算時には、キャリーフラグの値を 簡単に生成するために,17ビット長の変数をひとつ宣言しておき、その変数に 演算結果を格納します。その後、改めて結果のための変数に16ビット分を代入 します。

キャリーフラグとは、加算時の桁上がり(キャリー)、減算時の桁借り(ボロー)、 シフト回転時のあふれビットを表すフラグです。
tmpの最上位ビットがキャリーフラグになることに注 意して下さい。

また、シフト回転演算は、 束線からのビットの切出し および 連結演算 を使用して下さい。 「*」、「/」、「<<」、「>>」の演算子を使うと乗算器、除算器、シフタなど が生成されるため、巨大な回路になってしまいます。

算術左シフト演算については、Intelプロセッサの仕様に合わせて下さい。
情報処理技術者試験に出てくる COMET/CASL プロセッサとは仕様が異なります。

コメントは // 後に記述できますが、下例のように漢字(2バイトコード)を 使用してはいけません。


  ...
  reg    [16:0] tmp;	// 演算結果
  ...
  always @( A or B or CB )
  begin
    case ( CB )
    `IADD   : tmp <= { 1'b0, A } + { 1'b0, B }; // 加算
       ...
       ...
       ...
       ...
       ...
       ...
       ...
       ...
       ...
    `ILSR   : tmp <= { A[0],  1'b0, A[15:1] };	// 論理右シフト
       ...
       ...
       ...
       ...
    default : tmp <= { 1'b0, A }; 		// パス演算(IPAS)
    endcase
  end
  ...
  assign Y    = 結果の再代入;
  ...


次は、 フラグの記述 についてみていきます。


| CAD Home |