architecture

回路プログラム本体が入ります。


例として、上位階層からビット数を指定できるカウンタのentityを書きます。
下位層が無いシンプルな回路ですが、いろんな要素が含まれています。

architecture RTL of Ncuntr is         --entityと同じ名前

 signal q : std_logic_vector (n-1 downto 0); --内部ロジックでのみ使う信号

 begin

  Qout  <= q;                --出力信号は内部で使用できないためQoutを設定
  Carry <= and_reduce(q);           --全ビットのand use ieee.std_logic_misc.all;が必要

  process (Rst_n, Clk) begin
   if Rst_n = '0' then           --非同期リセット
    q  <= (others => '0');
   elsif (Clk'event and Clk = '1') then   --Clk立ち上がりFF
    if (Syncz_n='0') then         --同期クリア
     q  <= (others => '0');
    elsif (Cnten='1') then
     q  <= q + '1';           --カウントアップ
    end if;
   end if;
  end process;

end RTL;

VHDLでは出力信号(out)は内部で使うことができないため、Qout, q に分けています。
 私は内部信号と外部信号を分けるため、内部信号は小文字から、外部信号は大文字から始まる信号名としています。

others => '0' は全ビットに 0 を書き込むことをしめします。便利な記述ですが、入門書にはあまり書かれていません。


VHDL目次          MAIL  HOME