演算の記述
実際に演算をするための記述を行います。演算時には、キャリーフラグの値を
簡単に生成するために,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 |