記事一覧

VHDL言語の記述について思うこと -- 第4回 generate文 --

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

第4回は、generate文についてです。

前々から、C言語のプリプロセッサ「#if」に相当する文法が無いかなぁと思っていました。
最近、それが有ることが分かり、とても便利ですのでお知らせします。

例えば、遅延時間カウンタが短いものと長いものの2通りの使い方を用意する場合、
generate文を使用しないと2種類のデザインを用意していました。
しかし、generate文を使用すれば下記のように一つのソースですみます。

-- 短い遅延時間カウンタ
DELAY_S: if (SHORT = 1) generate
process (CLK, RESET)
begin
if (RESET = '1') then
DELAY <= x"00";
elsif (CLK'event and CLK='1') then
if (DELAY = x"00") then
if (TRIG = '1') then
DELAY <= x"01";
end if;
else
DELAY <= DELAY + 1;
end if;
end if;
end process;
end generate;

-- 長い遅延時間カウンタ
DELAY_L: if (SHORT /= 1) generate
process (CLK, RESET)
begin
if (RESET = '1') then
DELAY <= x"0000";
elsif (CLK'event and CLK='1') then
if (DELAY = x"0000") then
if (TRIG = '1') then
DELAY <= x"0001";
end if;
else
DELAY <= DELAY + 1;
end if;
end if;
end process;
end generate;

この構文で、仕向け管理がし易くなりました。
もっと早く知ることができればよかったですね。

コメント一覧

jingting17 Eメール URL 2018年07月31日(火)22時42分 編集・削除

http://www.asicss.us.com/ asics running shoes
とですねるようまでに

コメント投稿

投稿フォーム
名前
Eメール
URL
コメント
削除キー
投稿キー
投稿キーにはキーと入力してください。(スパム対策。)