組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

VHDL記述のポイント:同時処理文(when-else/with-select)とprocessの使い分け

設計内容分類FPGA

実現したい仕様・課題

VHDLでは組み合わせ回路を、アーキテクチャ直下の同時処理文(条件付き信号代入when-else、選択信号代入with-select)でも、process文でも記述できます。使い分けの方針がないと、単純なセレクタに長いprocessを書いて冗長になったり、複雑なロジックを同時処理文に詰め込んで読めなくなったりします。回路の性質に応じた書き分けの基準を持ちたいというのが課題です。

設計のポイント

単純な選択・分岐は同時処理文で、複雑な条件や多出力のロジックはprocessで、という使い分けを基本とします。when-elseは優先順位付きの条件選択(if-else連鎖に相当)、with-selectは1つのセレクタ値による等価な分岐(case文に相当)を1行の信号代入として表現でき、マルチプレクサやデコーダ程度の回路なら感度リストの管理も不要で、最も簡潔かつ安全です。一方、複数の中間値を経る計算、複数の出力信号を条件に応じて組み合わせる処理、状態による場合分けが深いロジックは、process内のif/case文で段階的に記述したほうが可読性が高くなります。どちらの記法でも「すべての条件で出力を確定させる」原則は同じで、when-elseでは最後のelse、with-selectではwhen othersを省略しないことがラッチ防止の要点です。VHDL-2008ではwhen-else/with-selectがprocess内でも使えるようになり、記述の自由度が上がっています。1つの設計内で「この規模なら同時処理文、これ以上はprocess」という基準をチームで揃えておくと、コードの見た目が統一され、レビュー効率が向上します。

【コード例】
— 条件付き代入(優先順位あり)
y <= a when sel = “00” else
b when sel = “01” else
c;

— 選択代入(case相当・並列選択)
with sel select
y <= a when “00”,
b when “01”,
c when others; — when othersで全条件を確定

VHDL記述のポイント:同時処理文(when-else/with-select)とprocessの使い分け | 組み込み機器・ハードウェア設計製作.com

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ