Я создал битовый поток для четырехбитного полного сумматора, используя параллельные операторы. Теперь я хочу расширить эту аппаратную конфигурацию, чтобы показать результат на двух 7-сегментных дисплеях. Перед декодированием сегмента мне нужен конвертер двоичных данных в BCD. Алгоритм двойного дублирования кажется идеальным для работы. Но я столкнулся с проблемой при кодировании этой программы. Карта портов для 4-битного fa, похоже, выдает ошибки, когда я вызываю ее в процессе добавления 3. Это код, на который я ссылаюсь:
architecture Behavioral of BCD_conv is
component four_bit_fa is
Port ( a0 : in STD_LOGIC;
b0 : in STD_LOGIC;
s0 : out STD_LOGIC;
a1 : in STD_LOGIC;
b1 : in STD_LOGIC;
s1 : out STD_LOGIC;
a2 : in STD_LOGIC;
b2 : in STD_LOGIC;
s2 : out STD_LOGIC;
a3 : in STD_LOGIC;
b3 : in STD_LOGIC;
s3 : out STD_LOGIC;
cout : out STD_LOGIC;
cin : in STD_LOGIC);
end component;
begin
getSum : four_bit_fa port map(a0,b0,s0,a1,b1,s1,a2,b2,s2,a3,b3,s3,cout,cin);
Convert: process (a0,b0,a1,b1,a2,b2,a3,b3,cin)
begin
for i in 0 to 5 loop
if (d3 or (d2 and (d1 or d0))) = '1' then
getSum : four_bit_fa port map(d0,'1',d0,d1,'1',d1,d2,'0',d2,d3,'0',d3,'0','0');
end if;
end process Convert;
end Behavioral;
Может ли кто-нибудь объяснить мне, почему это не работает?
Кроме того, я хотел бы использовать этот алгоритм с полным сумматором, который я уже создал. Возможно ли это с использованием другого подхода?