【複雑な組合せ回路】
アーキテクチャ記述の中のVHDL本体の記述で、複雑な論理回路の記述には
process文を使います。複雑とは、1行では表現できないという意味です。
記述はprocess文として同時処理文の式の集合体として記述します。
実際の記述フォーマットは下記のようになります。
《センシティビティリスト》
信号名をカンマで区切って並べたリストで、ここに記述された信号に変化があると
以下の式が活性化されて実行されます。
組合せ回路をプロセス文で記述するときは、センシティビティリストには、すべての
入力信号を記述する必要があります。
《順次処理文》
実体を記述する式で、基本的に記述された順に順番に一気に実行されます。
その意味で同時処理文となります。
この記述の中で条件分岐をさせるために、IF文とCASE文が使えます。
【IF文の使い方】
プロセス文で複雑なロジックを記述するためには、条件式が記述できると見やすく
簡単に記述できるようになります。このための基本の条件式がIF文です。
IFで注意が必要なことは、プロセス文で組合せロジックを生成するためには、すべての
場合を記述する必要があります。そうしないとラッチ動作になってしまい、レジスタが
自動的に挿入されてしまいます。
まずIF文の基本的な書式は下記の3通りとなります。
《関係演算子》
IF文の条件を記述するときに使う演算子を関係演算子といい、結果がTRUEかFALSEと
なります。関係演算子は下記の6種類です。
= 、 /= 、 < 、 <= 、 > 、 >=
例 AND ORセレクタの例
SELの0か1によって出力Yを切り替える動作をします。
【CASE文の使い方】
もうひとつの条件分岐の記述方法がCASE文です。この場合には多方向分岐
が可能となります。
基本書式は下図のようにします。ここで、case文の場合にはすべての条件式が
同時に実行されるので、同じ値が複数使われることは許されていません。
またすべての取りうる値を記述する必要があります。しかし毎回すべての場合を
記述するのは大変なのでで、when othres が用意されていて残り全ての場合と
いう意味となります。
例 下記は2ビットのデーコーダの例です。
4通りの全てのケースと、ZやX値のその他の場合の条件のために
when othresを使ってその他として一括定義しています。