Я пишу последовательный счетчик, который состоит из серии компонентов с одним счетчиком, которые используют компоненты D-flip-flop. В пределах одного счетчика мне нужно начинать с начального значения '0'
для q
, но у меня возникают проблемы с инициализацией этого.VHDL Initialize std_logic
q
является STD_LOGIC
сигнал, и я попытался инициализировать его следующим образом:
signal q : STD_LOGIC := '0';
Однако, когда я запускаю программу с помощью ModelSim она показывает значение U
как будто это Unassigned. Если я принудительно заморожу сигнал '0'
до q
, когда я запускаю его в ModelSim, тогда он работает.
Это единственный способ выполнить это, чтобы проверить значение в начале описания поведения и установить его на '0'
, если он не назначен?
Если я использую BIT
вместо STD_LOGIC
, все работает отлично.
Я бы опубликовал свой код, но я не хочу рисковать нарушениями академической целостности, поскольку это касается школьного проекта.
Что-нибудь еще диск Q? Обратите внимание, что если начальное значение равно «0», и есть драйвер, управляющий «U», два значения разрешаются «U». (И если вы этого не поняли, прочитайте о функциях разрешения). –
Ну, я порт сопоставляю вывод 'q' с компонентом D-flip-flop на' q', указанный в вопросе. Это то, что вы имеете в виду? –
Да, это твоя проблема. Вам нужно очистить «U» от триггера, либо сбросив его, либо синхронизируя в «0» или «1». –