pp.9-10
1.4.1 エンティティとアーキテクチャと
VHDLでは、2種類の構成体を使ってハードウェアモジュールを記述します。1つはエンティティ宣言です。単にエンティティとも言います。モジュールの入出力を記述する部分のことです。もう1つはアーキテクチャボディです。単にアーキテクチャとも言います。モジュール内部の構造または動作を記述する部分のことです。図1.1aに半加算器モジュールの接続図を示します。この接続図に対応したエンティティとアーキテクチャとを図1.1bに示します。
エンティティ宣言(VHDLコードの上半分)でモジュールの入出力を指定します。半加算器にはa、bという2つの入力ポートと、sum、carryという2つの出力ポートとがあります。モジュールの動作はアーキテクチャボディ(VHDLコードの下半分)で定義します。各出力の値は、2つの入力を引数とするブール函数によって与えられます。これは、セクション1.3で述べたようにデータフロースタイルでの記述です。
アーキテクチャに動作を記述する
モジュールの動作または構造はアーキテクチャボディに記述します。モジュールの動作を記述する方法は、下のようにいくつかあります。
- データフロースタイル: コンカレントシグナルアサインメントを使う。
- ストラクチュラルスタイル: 他のモジュールを実体化して、目的とする動作の一部を担わせる。
- アルゴリズミックスタイル: プロセスステートメント内部に一連の計算手順を記述する。
- 上のそれぞれを組み合わせる。
図1.1bのアーキテクチャに使用したステートメントはコンカレントシグナルアサインメントと呼ばれます。コンカレントシグナルアサインメントは、アサインメント記号(<=
)の右辺にあるシグナルが変化したときに実行されます。したがって、出力であるsumおよびcarryは、入力の変化したときに自動的に値が更新されます。組み合わせ論理回路をそのまま記述したのと同じことです。
VHDLでのネットを表す要素はシグナルと呼ばれます。エンティティで宣言するポートもシグナルですので、アーキテクチャで使用できます。sum <= a xor b
は、シグナルa、bの値を読み取って、その2つの値のxorを求めて、その結果をシグナルsumへアサインする働きをします。エンティティポートで定義するシグナルだけでなく、ローカルに使用する(private use)内部シグナルはアーキテクチャに宣言できます。