Что такое перекос часов и почему он может быть отрицательным?

10

Мой HDL-компилятор (Quartus II) генерирует временные отчеты. В нем узлы имеют столбец «перекоса часов». Единственное определение перекоса часов, которое я нашел, находится в документации TimeQuest (см. Стр. 7-24):

Чтобы вручную указать неопределенность часов или наклон для передач по часам, используйте set_clock_uncertaintyкоманду.

Итак, если асимметрия - это «неопределенность», почему некоторые из моих перекосов часов отрицательны (например, -0,048)? Что именно является перекосом часов?

Randomblue
источник

Ответы:

8

Из Википедии :

В синхронной схеме рассогласование часов ( ) представляет собой разницу во времени прихода между двумя последовательно смежными регистрами. При наличии двух последовательно смежных регистров и с временами прихода тактовых импульсов на тактовые выводы регистров как и соответственно, тогда тактовых импульсов можно определить как: R i R j T C i T C jTSkewRiRjTCiTCj

TSkewi,j=TCiTCj

Отклонение часов может быть положительным или отрицательным. Если тактовые сигналы находятся в полной синхронности, то асимметрия тактового сигнала, наблюдаемая в этих регистрах, равна нулю.

Таким образом, количество синхроимпульсов в одном регистре относительно другого регистра. Поскольку оно относительно, оно может быть положительным или отрицательным.

Некоторые иллюстрации:

положительный / отрицательный перекос опережающий / отстающий перекос

Возьмем, к примеру, передачу внутри часов, как определено в предоставленном вами документе TimeQuest:

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

Таким образом, если регистр назначения физически ближе к схеме генерации часов, то часы, вероятно, прибудут в регистр назначения до того, как поступят в регистр источника, что приведет к опережающему перекосу тактового сигнала, который на самом деле является положительным. Если бы регистр назначения получил фронт часов после исходного регистра, перекос часов был бы запаздывающим или отрицательным.

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

Расширение этого различия для включения межблочных передач, а также времени настройки и удержания становится немного беспорядочным. Так что, вероятно, проще думать об этом как о «насколько синхронном» фронте или времени удержания между двумя регистрами. Мы склонны думать о «синхронном» как о «происходящем одновременно». Но вещи редко происходят в одно и то же время. Таким образом, мы должны положить терпение в это время. И допуски часто указываются с точки зрения положительного и отрицательного (то есть ±).

embedded.kyle
источник
10

Современные цифровые логические устройства обычно (*) разрабатываются с «практикой синхронного проектирования»: глобально синхронный стиль проектирования передачи с регистрацией по фронту (RTL): все последовательные цепи разбиты на регистры с инициированным фронтом, подключенные к глобальному тактовому сигналу CLK и чистая комбинационная логика.

Этот стиль дизайна позволяет людям быстро проектировать цифровые логические системы без учета времени. Их система будет «просто работать» до тех пор, пока для установления внутреннего состояния достаточно времени от одного фронта часов к другому.

С этим стилем дизайна перекос часов и другие вопросы, связанные с синхронизацией , не имеют значения, за исключением выяснения «Какова максимальная тактовая частота для этой системы?».

Что именно является перекосом часов?

Например:

...
     R1 - register 1              R3
     +-+                  
   ->| |------>( combinational  )  +-+
...->| |------>(         logic  )->| |--...
   ->|^|------>(                )->|^|
     +-+       (                )  +-+
      |   +--->(                )   |
     CLK  | +->(                )  CLK
          | |
     R2:  | |
     +-+  | |               
...->| |->+ |
   ->|^|->--+
     +-+
      |
     CLK

В реальном оборудовании сигнал "CLK" никогда не переключается точно одновременно на каждом регистре. Часы перекос Tskew является задержка вниз по течению часов по отношению к потоку часов ( ):

Tskew (источник, назначение) = destination_time - source_time

где source_time - это время активного фронта тактового импульса в регистре источника в восходящем направлении (в данном случае R1 или R2), а destination_time - время "того же" фронта активного тактового импульса в некотором регистре назначения в нисходящем направлении (в данном случае R3) ,

  • отрицательный перекос часов: CLK на R3 переключается перед часами на R1.
  • положительный перекос часов: CLK на R3 переключается после часов на R1.

Каково влияние перекоса часов?

(возможно, временная диаграмма здесь сделает это более ясным)

Чтобы все работало должным образом, даже в худшем случае, входы R3 не должны изменяться во время установки R3 или времени удержания. Иными словами, чтобы вещи работали должным образом, мы должны спроектировать вещи так, чтобы:

Tskew (R1, R3) <Tco - Th.

Tclk_min = Tco + Tcalc + Tsu - Tskew (R1, R3).

где:

  • Tcalc - это максимальное время установления в худшем случае любого блока комбинационной логики в любой точке системы. (Иногда мы можем перепроектировать блок комбинационной логики, который находится на критическом пути, выдвигая части вверх или вниз по потоку или вставляя другой этап конвейерной обработки, так что новый дизайн имеет меньшую Tcalc, что позволяет нам увеличить тактовую частоту) ,
  • Tclk_min - минимальный период времени от одного активного фронта часов до следующего активного фронта часов. Мы рассчитываем это из приведенного выше уравнения.
  • Tsu - время установки регистра. Производитель регистра ожидает, что мы будем использовать часы достаточно медленные, чтобы всегда соответствовать этому требованию.
  • Th - время удержания регистра. Производитель регистров ожидает, что мы будем контролировать перекос часов, чтобы всегда соответствовать этому требованию.
  • Tco - задержка времени на выходе (время распространения). После каждого активного фронта тактового сигнала R1 и R2 продолжают вводить старые значения в комбинационную логику в течение короткого времени Tco перед переключением на новые значения. Это устанавливается аппаратным обеспечением и гарантируется производителем, но только при условии соблюдения Tsu и Th и других требований, которые производитель устанавливает для нормальной работы.

Слишком сильный позитивный перекос - это полная катастрофа. Слишком много положительного перекоса может (с некоторыми комбинациями данных) вызывать «пути утечки», так что вместо того, чтобы R3 фиксировал «правильные данные» в тактовые импульсы N + 1 (детерминированная функция данных, ранее зафиксированных в R1 и R2 в тактовых импульсах N) новые данные, зафиксированные в R1 и R2 в тактовом сигнале N + 1, могут просачиваться, нарушать комбинационную логику и вызывать фиксацию неправильных данных в R3 на «том же» фронте тактового сигнала N + 1.

Любое количество отрицательного перекоса может быть «исправлено» путем замедления тактовой частоты. Это только «плохо» в том смысле, что это заставляет нас запускать систему с более низкой тактовой частотой, чтобы дать входам R3 время для установления после того, как R1 и R2 фиксируют новые данные на фронте N тактовых импульсов, а затем позже R3 фиксирует результат на «следующем» фронте тактовой частоты N + 1.

Многие системы используют сеть распределения тактовых импульсов, которая пытается уменьшить перекос до нуля. Неудобно, путем тщательного добавления задержек вдоль тактового пути - пути от тактового генератора к входу CLK каждого регистра - можно увеличить кажущуюся скорость, с которой фронт фронта синхросигнала физически перемещается от входа CLK одного регистра к CLK вход следующего регистра, чтобы быстрее, чем скорость света.

В документации Altera упоминается

«Избегайте использования комбинационной логики в путях синхронизации, потому что это способствует перекосу часов».

Это относится к тому факту, что многие люди пишут HDL, который компилируется в FPGA таким способом, который каким-то образом вызывает что-то кроме глобального сигнала CLK для управления локальным входом CLK некоторых регистров. (Это может быть логика «стробирования тактовых импульсов», так что новые значения загружаются в регистр только при соблюдении определенных условий; или логика «делителя тактовых импульсов», которая пропускает только 1 из N тактов, или т. Д.). Этот локальный CLK обычно получается как-то из глобального CLK - тикает глобальный CLK, а затем либо локальный CLK не меняется, либо (небольшая задержка после того, как глобальный CLK пропускает сигнал через это «что-то другое») локальный CLK меняется один раз.

Когда это «что-то другое» управляет CLK нижестоящего регистра (R3), это делает перекос более позитивным. Когда это «что-то другое» управляет CLK вышестоящего регистра (R1 или R2), это делает перекос более отрицательным. Время от времени, что бы ни управляло CLK вышестоящего регистра, и то, что управляет CLK нижестоящего регистра, имеют практически одинаковую задержку, что делает перекос между ними практически нулевым.

Сеть распределения тактовых импульсов внутри некоторых ASIC специально разработана с небольшим количеством положительного сдвига тактовой частоты в некоторых регистрах, что дает комбинационной логике немного больше времени для установления, и поэтому вся система может работать с более высокой тактовой частотой. Это называется «оптимизацией перекоса часов» или «планированием асимметрии часов» и связано с « ретаймингом ».

Я все еще озадачен set_clock_uncertaintyкомандой - зачем мне когда-либо хотеть «вручную» указать перекос?

(*) Единственное исключение: асинхронные системы .

davidcary
источник
Я полагаю, что идея добавления задержки для минимизации перекоса тактов может иногда включать задержку тактов почти на полный цикл. После того, как часы запущены, вы можете настроить их так, чтобы триггер A видел край часов 1 в одно и то же точное время. Триггер B видит край часов 2. С внешнего вида это разные края, но схема не не волнует, пока края идеально выровнены.
ajs410
1

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

user12108
источник