2012-04-18 8 views
1
entity Adder4Bit is 
Port (A : in STD_LOGIC_VECTOR (3 downto 0); 
     B : in STD_LOGIC_VECTOR (3 downto 0); 
     S : out STD_LOGIC_VECTOR (3 downto 0); 
     COUT : out STD_LOGIC); 
end Adder4Bit; 

architecture structure of Adder4Bit is 

component FullAdder -- add the fulladder to this architecture 
port (
     A  : in std_logic; 
     B  : in std_logic; 
     CIN : in std_logic; 
     SUM : out std_logic; 
     COUT : out std_logic 
     ); 
end component; 

signal wires : std_logic_vector(3 downto 1) := "000";  -- Make a signal "wires" with initial value 000 

begin 

adder0 : FullAdder port map (A=> A(0), B => B(0), CIN => '0', SUM => S(0), COUT => wires(1)  ); 
adder1 : FullAdder port map (A=> A(1), B => B(1), CIN => wires(1), SUM => S(1), COUT => wires(2) ); 
adder2 : FullAdder port map (A=> A(2), B => B(2), CIN => wires(2), SUM => S(2), COUT => wires(3) ); 
adder3 : FullAdder port map (A=> A(3), B => B(3), CIN => wires(3), SUM => S(3), COUT => COUT  ); 


end structure; 

最下部のadder3では、プログラムがどのようにcoutがエンティティAdder4Bitに属し、どのようなcoutがFullAdderコンポーネントに属しているかを知ることができますか? 矢印の方向と関係がありますか?VHDL:コンポーネントポートからエンティティポートへ、何が何であるかをどのように知っていますか?

はもちろん、事前

答えて

4

中ありがとうございました、左側には、コンポーネントの内部名で、右側があなたVHDL信号の名前です。

これは、左のBがstd_logicで、右のものがstd_logic_vectorであることを知っているのと同じ方法です。

+0

申し訳ありません、ありがとうございます!しかし、もし私がいくつかのコンポーネントを持っていたら? – chwi

2

左手側は「ピン名」であり、右手側は「ワイヤ名」である - ので、これらの二つ:

adder2 : FullAdder port map (A=> A(2), B => B(2), CIN => wires(2), SUM => S(2), COUT => wires(3) ); 
adder3 : FullAdder port map (A=> A(3), B => B(3), CIN => wires(3), SUM => S(3), COUT => COUT  ); 

adder2COUTピンwires(3)adder3と呼ばれる信号に接続し'COUTピンはCOUTという信号に接続します。

これは、ピンと信号が同じものになっているという問題の1つです。それを維持すると、1週間ほどで考えることに気付かないでしょう!

関連する問題