記事一覧

VHDL言語の記述について思うこと -- 第1回 出力信号 --

こんにちは、ハルモグラ(m'・ω・`)mです。

私は、長年FPGAの設計に携わっていますが、その経験からみたVHDL言語の記述方法についてコメントしてみます。

前置きですが、文法については、いろいろと参考書やインターネットから調べることが出来ますので、ここでは詳しく解説致しません。
初回は、出力信号の書き方についてです。

同時処理文で記述される出力信号は、異なるプロセス文の両方に記述した場合は、コンパイラエラーとなります。
この場合は、出力端子が短絡しているイメージと考えられます。
ファイル 160-1.gif

しかし、同一のアーキテクチャ内、プロセス文中に複数行書かれた場合は、どうなるでしょうか。
実は、コンパイルエラーとなりません。
この場合は、一番最後の行が有効な式として扱われます。
C言語に例えれば、最適化により最終行のみ実行コードが生成されるのと、似ています。
ファイル 160-2.gif

意外と、意図せずこの記述をしてしまった時、間違いに気が付かないのです。
従って、以下のルールに従って記述することをお勧めします。

・複数行に同じ出力信号に対する記述をしない。
・一つのプロセス文は、大きくならないように、小さな単位に分けて記述する。
大きくなると見通しが悪くなり、誤って離れた場所で同じ出力信号を記述してしまう。
・特にアーキテクチャ直下の出力信号は、検索機能を使用して複数行存在しないか確認する。
・アーキテクチャ直下に出力信号数が多くなる場合は、プロセス文やコンポーネント文へ移動する。