Как генерировать разные типы компонентов - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 3 разных типа компонентов. Например, type0, type1 и type2. Все они имеют одинаковые порты, но функции. Я хочу использовать константу, такую ​​как 0, 1 и 3, чтобы поместить соответствующий компонент в мой топ дизайн. Я хочу знать, как это сделать.

С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете использовать несколько архитектур для одного и того же объекта:

entity my_component is
--(only one port declaration for all component)
end entity;

architecture type1 of my_component is
--(type1 behavior)
end architecture;

architecture type2 of my_component is
--(type2 behavior)
end architecture;

architecture type3 of my_component is
--(type3 behavior)
end architecture;

Затем вы можете вызвать любую нужную вам архитектуру в вашем файле top_level:

typ1_inst0 : entity work.my_component(type1)
--(port map ...)

typ2_inst0 : entity work.my_component(type2)
--(port map ...)

typ3_inst0 : entity work.my_component(type3)
--(port map ...)
0 голосов
/ 05 сентября 2018

Вы можете использовать оператор generate, например:

G0 : if SOME_CONSTANT = 0 generate
  I0 : type0 ( ...
end generate;
G1 : if SOME_CONSTANT = 1 generate
  I1 : type1 ( ...
end generate;
G2 : if SOME_CONSTANT = 2 generate
  I2 : type2 ( ...
end generate;
-- etc

Если вы используете VHDL-2008, существует оператор case - generate:

G : case SOME_CONSTANT generate
  when 0 =>
    I0 : type0 ( ...
  when 1 =>
    I1 : type1 ( ...
  when 2 => 2 
    I2 : type2 ( ...
  -- etc
end generate;
...