правильное использование и дизайн закрытых часов в Verilog - PullRequest
0 голосов
/ 13 мая 2018

У меня есть дизайн, над которым я работаю в Verilog.В части моей конструкции счетчик увеличивается на такт - это происходит за полчаса до того, как выход счетчика фиксируется в регистре сдвига параллельной нагрузки.

В некоторых случаях я хочу УДЕРЖАТЬ счетчик.Для этого я стробировал часы:

assign sync_gated = i_sync || !r_en;

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

Код синтезирует ОК, но я получаю это предупреждение:

y_ctr / sync_gated_inv (y_ctr / sync_gated_inv1: O) |ОТСУТСТВУЕТ () (y_ctr / r_axis_address_15) |16 |x_ctr / sync_gated_inv (x_ctr / sync_gated_inv1: O) |ОТСУТСТВУЕТ () (x_ctr / r_axis_address_15) |16 |--------------------------------------------- + --------------------------------- + ------- + (*) Эти 2 тактовых сигнала генерируютсяпо комбинаторной логике, и XST не может определить, какие первичные тактовые сигналы.Пожалуйста, используйте ограничение CLOCK_SIGNAL, чтобы указать тактовые сигналы, генерируемые комбинаторной логикой

Это плохой дизайн?если так, то почему?или мне просто нужно добавить какое-то ограничение, чтобы успокоить компилятор?

Спасибо.

1 Ответ

0 голосов
/ 13 мая 2018

Вы не можете «просто» управлять часами.Вы можете получить все виды артефактов синхронизации.Посмотрите здесь о том, как управлять часами.

...