component

下位層のentityを登録し、インスタンス設定を行います。


上位階層からビット数を指定できるカウンタをcomponemt登録した例を書きます。

component Ncuntr is
 generic ( n : integer :=1);         --ビット数=n:初期値1

 port (
    Clk   :in  std_logic;
    Rst_n  :in  std_logic;       --system asynchronous reset negative
    Syncz_n :in  std_logic;       --synchronous zero negative
    Cnten  :in  std_logic;       --counter enable
    Qout  :out  std_logic_vector (n-1 downto 0);
    Carry  :out  std_logic);

end component;


下記のentity文をコピー・アンド・ペーストして、entity→component と end 名前→end component に修正するだけです。
コメント等もそのまま残しておけば、分かりやすくなります。

entity Ncuntr is
 generic ( n : integer :=1);         --ビット数=n:初期値1

 port (
    Clk   :in  std_logic;
    Rst_n  :in  std_logic;       --system asynchronous reset negative
    Syncz_n :in  std_logic;       --synchronous zero negative
    Cnten  :in  std_logic;       --counter enable
    Qout  :out  std_logic_vector (n-1 downto 0);
    Carry  :out  std_logic);

end Ncuntr;


インスタンス文で component 登録された下位層プログラム信号を割り当てます。
上のコンポーネントをインスタンス割り当てした例を示します。

tstTim : Ncuntr 
  --インスタンス名 : コンポーネント名 2つの名前は違わなければならない
  --変えにくい場合、Instを追加 [例]testInst : test

 generic map ( n => 10)     --ここで具体的なビット数設定

 port map (
    Clk    => Clk,     --ポート名 => 信号名
    Rst_n   => Rst_n,    --ここの信号名はポート名と同じでも良い
    Syncz_n  => ctren,
    Cnten   => ctren,
    Qout    => timData,
    Carry   => open);    --使わない出力は open

この archtecture 内では信号名で各演算等を行います。
信号名は signal や entity で登録した物です。


VHDL目次          MAIL  HOME