如何生成不同类型的组件

时间:2018-09-05 12:41:16

标签: components vhdl

我有3种不同类型的组件。例如type0,type1和type2。它们都具有相同的端口,但功能相同。我想使用0、1和3这样的常量将相应的组件放入我的顶级设计中。我想知道这样做的方法。

最诚挚的问候

2 个答案:

答案 0 :(得分:0)

您可以使用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;

答案 1 :(得分:0)

您可以对同一实体使用多种架构:

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 ...)