Элемент CLOCK: движущая сила синхронных схем
← Все статьи

Элемент CLOCK: движущая сила синхронных схем

4 мин

Тактовый генератор — это просто очень предсказуемый осциллятор

CLOCK — единственный элемент в Boolflow, который меняется сам по себе, без единого входа: после запуска он автоматически переключается между 0 и 1 с настроенной частотой, без переключателя INPUT или какой-либо проводки, чтобы его тактировать. Любая статья про триггеры, счётчики и регистры на этом сайте подразумевает, что вход CLK на самом деле тактируется каким-то элементом CLOCK.

Частота — это регулятор скорости симуляции, а не логики

Изменение частоты CLOCK меняет то, насколько быстро видимо тикает симуляция, но никогда не меняет то, что вычисляет схема, — счётчик достигнет 9 после десяти нарастающих фронтов независимо от того, приходят эти фронты раз в секунду или сто раз в секунду. Частота начинает по-настоящему иметь значение только тогда, когда синхронизация схемы должна соотноситься с чем-то вне симуляции — например, с целевой скоростью передачи UART.

Один тактовый генератор, много производных частот

Реальные схемы редко тактируют каждую ступень одной и той же исходной частотой. Соедините цепочкой блоки CLK_DIV от одного CLOCK, чтобы получить более медленные, связанные частоты, вместо того чтобы добавлять второй независимый осциллятор, — это важно, поскольку два несвязанных элемента CLOCK, тактирующие разные части одной схемы, вновь создают тот самый риск пересечения тактовых доменов, что разобран в статье о синхронном проектировании и метастабильности.

Попробуйте сами

Подключите один CNT4 напрямую к элементу CLOCK, а второй CNT4 — к тому же CLOCK, поделённому на 4 через два соединённых цепочкой блока CLK_DIV, в редакторе схем, и убедитесь, что второй счётчик продвигается на 1 за каждые 4 такта первого.

Подключить счётчик к элементу CLOCK →