条件演算子

今までは論理演算、又は算術演算で組合せ回路を設計してきた。
こんな仕様が与えられたらどうするか?

『sw1がONの場合, sw2の値をledに出力, そうでなければsw3の値をledに出力する回路を設計せよ』

これをC言語で書くとこうなる。

if( sw1 == 1){
  led = sw2;
} else {
  led = sw3;
}

この仕様を満たすにはsw1の値に応じて(条件)ledの値を切り替える回路を設計すればよい。
もちろんverilogにもif文があるのだが, 次回に述べるように少々面倒くさい。
実は上述したC言語は条件演算子を使って

led = ( sw1 == 1) ? sw2 : sw3;

と書ける。実はverilogでも条件演算子が使え、書式もC言語と同じ。
ただし、組合せ回路の式だからassignをつけなければならない。
従って仕様を満たす回路の記述は

module selector( sw1, sw2, sw3, led);
  input sw1, sw2, sw3;
  output led;

  assign = ( sw1 == 1'b1) ? sw2 : sw3;

endmodule

である。もちろん条件演算子の中に条件演算子を書けば複雑な条件分岐も記述できる。
複雑な条件分岐は次回に述べるfunction文を用いたほうがよい。

function文(1)【Altera DE0】へ進む
Verilog入門へ戻る


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-04-13 (水) 11:12:38 (2385d)