Карта портов внутри процесса VHDL - PullRequest
0 голосов
/ 18 ноября 2018

Я создал битовый поток для четырехбитного полного сумматора, используя параллельные операторы. Теперь я хочу расширить эту аппаратную конфигурацию, чтобы показать результат на двух 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;

Может ли кто-нибудь объяснить мне, почему это не работает?

Кроме того, я хотел бы использовать этот алгоритм с полным сумматором, который я уже создал. Возможно ли это с использованием другого подхода?

...