Що таке перекос годинника, і чому він може бути негативним?


10

Мій компілятор HDL (Quartus II) формує звіти про терміни. У ній вузли мають стовпчик "перекос годинника". Єдине визначення перекосу годинника, яке я знайшов, знаходиться в документації TimeQuest (див. Сторінку 7-24):

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

Отже, якщо перекос - це «невизначеність», чому деякі мої перекоси годинника негативні (наприклад, -0,048)? Що саме таке перекос годинника?

Відповіді:


8

З Вікіпедії :

ТSкешRiRjТСiТСj

ТSкешi,j=ТСi-ТСj

Косий годинник може бути позитивним чи негативним. Якщо сигнали тактових сигналів повністю синхронізовані, то спостереження тактової частоти, що спостерігається в цих регістрах, дорівнює нулю.

Отже, кількість перекосів годин в одному регістрі відносно іншого регістра. Оскільки він відносний, він може бути позитивним чи негативним.

Деякі ілюстрації:

позитивний / негативний перекіс провідний / відстаючи косий

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

Внутрішнє блокування передач відбувається, коли передача реєстрації до регістра відбувається в ядрі пристрою, а джерела та години призначення надходять з того ж вихідного штифта PLL або порту годинника.

Отже, якщо реєстр призначення фізично наближений до схеми генерації тактових годин, то, ймовірно, годинник прийде до реєстру призначення до того, як він прийде до вихідного регістра, в результаті чого ведучий перекіс годинника насправді позитивний. Якщо реєстр призначення отримав край годинника після регістра джерела, косий годинник буде відстаючим або негативним.

Зазначений інший спосіб, перекос годинника - це невизначеність того, наскільки тісно разом за часом край годинника досягне двох окремих регістрів, заданих у одиницях часу відносно вихідного регістра в передачі реєстр-регістр.

Розширення цього difintion включити інтер переклади -clock і встановлення і час утримання стає трохи неакуратно. Тому, мабуть, простіше думати про це як про те, "як синхронний" край або час утримування між двома регістрами. Ми схильні думати про «синхронність» як «що відбувається в той же час». Але речі рідко трапляються абсолютно в один і той же час. Тому нам потрібно поставити толерантність до того часу. А допуски часто висловлюються як позитивні, так і негативні (тобто ±).


10

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

Цей стиль дизайну дозволяє людям швидко розробляти цифрові логічні системи без огляду на терміни. Їх система буде "просто працювати" до тих пір, поки буде достатньо часу від одного краю годинника до другого, щоб внутрішній стан встояв.

У такому стилі дизайну, перекос годинника та інші проблеми, пов’язані з тимчасовим обмеженням, не мають значення, за винятком з'ясування "Яка максимальна тактова частота для цієї системи?".

Що саме таке перекос годинника?

Наприклад:

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

У реальному технічному забезпеченні сигнал "CLK" ніколи насправді не перемикається рівно одночасно при кожному реєстрі. Годинники перекіс Tskew є затримка вниз по течії годин по відношенню до потоку годин ( ):

Tskew (джерело, призначення) = призначення_час - джерело_часу

де source_time - час активного краю тактового сигналу в реєстрі вихідного джерела (у цьому випадку R1 або R2), а призначення_час - час "того ж" активного краю тактового сигналу в деякому реєстрі нижнього течії (у цьому випадку 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 протягом короткого часу продовжують приводити старі значення до комбінаційної логіки перед переключенням на нові значення. Це встановлено апаратним забезпеченням і гарантується виробником, але лише до тих пір, поки ми відповідаємо 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командою - навіщо мені взагалі хотіти "вручну вказати" перекос?

(*) Один виняток: асинхронні системи .


Я вважаю, що ідея додавання затримки для мінімізації перекосу годинника іноді може спричинити затримку годинника майже на повний цикл. Після того, як годинник працює та працює, ви можете встановити його так, щоб перекинутий флоп A бачив ребро годинника 1 в той самий час, коли фліп-флоп B бачить край годинника 2. З зовнішнього вигляду вони різні краї, але схема не має Доглядайте за тим, щоб краї були ідеально вирівняні.
ajs410

1

Перекос годинника - це коли годинник потрапляє в різні точки ланцюга в різний час через відстань, ємність тощо, що може призвести до його несправності. Я думаю, що негатив повинен бути, коли годинник потрапляє до цього моменту, перш ніж він потрапляє на еталон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.