下位層の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 で登録した物です。