将地图移植到多个实体的最佳方式

Best way to port map to multiple entities

如果某个实体需要在另一个 "top-level" 实体中多次引用,最好的方法是什么?

例如,给定某个实体My_Entity(此处为简化描述):

entity My_Entity is
    port (
        etc ...
    );
end My_Entity;

...我如何描述使用 10 My_Entity 的顶级实体?

entity Top_Entity is
    port (
        etc ...
    );
end Top_Entity;

architecture rtl of Top_Entity is
begin
    entity1 : entity work.My_Entity(rtl) port map (
        etc ...
    );

    entity2 : entity work.My_Entity(rtl) port map (
        etc ...
    );

    -- repeat 10 times? or is there a better way?
end rtl;

是的。使用生成循环:

entity Top_Entity is
    port (
        etc ...
    );
end Top_Entity;

architecture rtl of Top_Entity is
begin

    G: for I in 1 to 10 generate   -- the label "G" is compulsory here
        -- I varies between 1 and 10 here
        -- you can use it to distinguish between instances
        -- eg to connect each to a different element of an array
        entity1 : entity work.My_Entity(rtl) port map (
             etc ...
        );
    end generate;

end rtl;