Учусь работать с компонентами. Задача: вставить две одинаковые компоненты. Т.е. например есть два входа и два выхода. первая компонента складывает оба входа и подает на первый выход. Вторая такая же компонента делает тоже самое, только на второй выход. Написал вот такой вот код:
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity top is
Port ( intop1 : in std_logic;
intop2 : in std_logic;
outtop1 : out std_logic;
outtop2 : out std_logic);
end top;
architecture Behavioral of top is
COMPONENT low1
PORT(
in1 : IN std_logic;
in2 : IN std_logic;
out1 : OUT std_logic
);
END COMPONENT;
begin
Inst_low1: low1 PORT MAP( in1 => intop1, in2 => intop2, out1 => outtop1);
Inst_low2: low1 PORT MAP( in1 => intop1, in2 => intop2, out1 => outtop2);
end Behavioral;
Выдает warning, что inst_low1 и inst_low2 одинаковые, поэтому inst_low2 убран. НО работает так, как я и задумывал. Т.е. написал я неправильно, но синтезатор сам додумывается, что мне надо (и делает это правильно), но как мне узнать как надо? Пробывал в одном inst_low1 в port map прописывать два раза порт out1 направляя его на разные выходы - ругается. Пробывал убирать вообще inst_low2 - работает как и написано (с отключенным вторым выходом).