Все волхвы c происходит в экземпляре (компонент или сущность). Предполагая, что вы уже сделали объявление компонента, в месте, где вы хотите создать мультиплексоры разного размера:
-- Create 8:1 Mux
Mux8_1 : mux2to1_gen
generic map (p => 8 )
port map (x => A8, y => B8, s => Mux8Sel, m => MuxOut8) ;
-- Create 5:1 Mux
Mux5_1 : mux2to1_gen
generic map (p => 5 )
port map (x => X5, y => Y5, s => Mux5Sel, m => MuxOut5) ;
Выше использовался обычно предпочтительный метод именованной ассоциации. Вы также можете позиционно связать порты, как показано ниже, однако это усложняет поддержку и проверку проектов. Имейте в виду, что большая часть кода написана одним человеком, но проверена многими (включая человека, который делает следующую ревизию), поэтому, хотя именованная ассоциация увеличивает усилие захвата проекта, оно уменьшает общее усилие.
-- Create 8:1 Mux
Mux8_1 : mux2to1_gen
generic map (8 )
port map (A8, B8, Mux8Sel, MuxOut8) ;