Ответ на этот вопрос зависит от характера входного сигнала управления. Если управляющий вход является способом настройки дизайна во время компиляции, желаемые функциональные возможности могут быть достигнуты с помощью дженериков и создания операторов. В противном случае ....
Основываясь на том, как вы сформулировали свой вопрос, я собираюсь предположить, что это не так. Я предполагаю, что ваш дизайн должен поддерживать как в разное время, так и скомпилированный дизайн. В этом случае вы должны создавать экземпляры обоих компонентов и передавать данные обоим компонентам и как-то указывать на эти компоненты, когда данные действительны и должны быть обработаны. Например:
en1 <= not control;
en2 <= control;
U1 : entity work.design1
port map (
data => data,
en => en1
);
U2 : entity work.design2
port map (
data => data,
en => en2
);
В этом примере мы создали 2 новые сигналы, en1
и en2
которые «1» для того, чтобы каждый из компонентов в соответствующее время. В каждом из созданных экземпляров вам нужно посмотреть вход en
, чтобы определить, когда входные данные действительны.
Примечание. Возможно, у вашей конструкции уже есть сигнал, похожий на en1
или en2
. Например, у вас может быть общая «шина», которая имеет действительный сигнал, указывающий, когда данные на шине действительны. В этом случае, вы можете добавить что-то вроде этого, стробировании разрешающего сигнала с bus_valid
:
en1 <= not control and bus_valid;
en2 <= control and bus_valid;