2013-03-21 6 views
2

У меня есть часы в моем коде VHDL, но я не использую его, просто мой процесс зависит только от рукопожатия, когда один компонент заканчивается и получает выход, этот вывод находится в списке чувствительности моего FSM и затем становится входом для следующего компонента, и, конечно, его выход также находится в списке чувствительности моего FSM (так что, когда будет завершено его вычисление) ... и так далее. Является ли этот метод неправильным? он работает в симуляции, а также в моделировании после маршрута, но получает следующие предупреждения: предупреждение: ДЕРЖАТЬ ВЫСОКОЕ НАРУШЕНИЕ НА I В ОТНОШЕНИИ К CLK; и предупреждение: ДЕРЖАТЬ Низкое НАРУШЕНИЕ НА I В ОТНОШЕНИИ К CLK;Vhdl без clk

это предупреждение не важно или мой код повредит мою fpga, потому что это не зависит от часов?

ответ

4

Предупреждение, которое вы получаете, касается нарушений времени. Вы получаете их, потому что инструменты обнаруживают, что ваш дизайн не подчиняется необходимым временным ограничениям для внутренних примитивов.

Например, входы в таблицы поиска (которые являются одним из основных строительных блоков внутри FPGA) необходимо удерживать в течение определенного времени для стабилизации выхода. Это очень сложно гарантировать, когда весь выбор времени зависит только от задержек и задержек самих компонентов, а также полностью асинхронно.

В зависимости от вашего фактического дизайна (в основном, его размера и сложности), я постараюсь угадать, что вы получите много очень трудных для отладки ошибок, как только вы получите его внутри FPGA , У вас будет намного удобнее время использовать часы. Это позволит вам иметь четкое представление о том, когда поступают сигналы, где и где вы сможете использовать внутренние инструменты для проверки времени. Кроме того, вам будет проще взаимодействовать с другими устройствами, и ваша система будет менее восприимчивой к шумным входам.

Итак, в общем, используйте часы. Вы (вероятно) не повредите свою ПЛИС, не делая этого, но часы избавят вас от множества неприятностей.

3

Ваш код, скорее всего, не повредит ваш FPGA, потому что он не зависит от часов. однако для синтеза вы всегда должны использовать зарегистрированную (синхронизированную) логику. без использования часов ваш дизайн не будет управляться из-за времени/задержки/маршрутизации/выключения/... это позволит вашему FSM вести себя «таинственно» при синтезе (даже если он работал в симуляции). вы найдете множество примеров хорошего FSM стиля реализации с помощью Google (поиск Moore или Мили FSM)

3

Определенно использовать часы. И только один такт в дизайне. Это самый простой способ - инструменты поддерживают этот стиль дизайна очень хорошо. Вы часто можете уйти с одним временным ограничением, особенно если ваши входы медленны и синхронны с теми же часами.

Когда вы приобрели опыт проектирования таким образом, вы можете перемещаться за пределы этого, но будьте готовы к большему анализу, ограничениям времени и потенциально создавать итерации, в то время как вы изучаете подводные камни переходов тактовых доменов и асинхронных сигналов.

+0

Спасибо за ответ, теперь его ясно. –

 Смежные вопросы

  • Нет связанных вопросов^_^