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

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

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

設計のポイント

VHDL記述のポイント:constantで定数を定義する

設計内容分類FPGA

実現したい仕様・課題

しきい値やタイマ値、アドレスなどの固定値をコード中に数値のまま散在させると、値の意味が読み取れず(マジックナンバー)、仕様変更時には該当箇所をすべて探して修正する必要があります。値の意味と変更箇所を一元化したいというのが課題です。

設計のポイント

固定値はconstant宣言で名前を付けて定義し、コード中では名前で参照します。constant TIMEOUT : integer := 50000; のように「意味のある名前・型・値」をセットで宣言することで、コードの可読性が向上し、値の変更はconstant定義1か所の修正で全参照箇所へ反映されます。クロック周波数から導出される時間系の定数は、constant CLK_HZ : integer := 50_000_000; を基準に、constant TICK_1MS : integer := CLK_HZ / 1000; のように他のconstantからの計算式で定義しておくと、クロック変更時の修正が基準値1つで済み、導出関係もコード上に残ります(VHDLでは数値リテラルにアンダースコア区切りが使え、桁の多い値の可読性を保てます)。genericとの使い分けは、「インスタンスごと・構成ごとに変えたい値はgeneric、その設計内で共通の固定値はconstant」が基準です。モジュール横断で使う定数はpackageに集約すると、プロジェクト全体の設定値が1ファイルで見渡せます。constantはROMテーブル(配列型定数)や状態の既定値など、あらゆる固定データに適用でき、「名前のない数値をコードに書かない」を規約とすることが、長期保守での品質を支えます。

【コード例】
constant CLK_HZ : integer := 50_000_000; — 基準クロック
constant TICK_1MS : integer := CLK_HZ / 1000; — 導出値

signal t : integer range 0 to TICK_1MS-1;
process(clk)
begin
if rising_edge(clk) then
if t = TICK_1MS-1 then
t <= 0; tick <= ‘1’;
else
t <= t + 1; tick <= ‘0’;
end if;
end if;
end process;

VHDL記述のポイント:constantで定数を定義する | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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