Скидання: синхронний проти асинхронний


15

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

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

Спасибі

Відповіді:


11

Здається, на це багато поглядів.
Асинхронне твердження, як вважають, є гарною практикою синхронного дезастереження. Це дозволяє уникнути того, що годинник не працює (або працює надто повільно, щоб захопити сигнал скидання) при синхронному твердженні, а також можлива метастабільність при асинхронному дезасервісі.

Ви б використовували синхронізатор скидання (два FF) з виведенням, прив’язаним до решти конструкцій:

Скидання

Пара обговорень:
Асинхронізація та скидання синхронізації
Letters On Sync проти Async Resets


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

Ні, випуск скидання асинхронно не гарантується чистим через необхідний час відновлення (наприклад, встановлення / утримання). Тому ви скинете скидання синхронно.
Олі Глазер

Моє запитання полягає в тому, чи маючи latch1 випустити сигнал скидання, який подає засувку2 на той самий край годинника, який використовує latch2, повністю кошерним, тобто чи мінімальний час поширення від годинника latch1 до його виходу буде задовольняти вимогу утримання для входу скидання latch2. До речі, що ви думаєте про мою відповідь вище? Схема, яку ви накреслили, надає мало імунітету на імпульси рута на лінії скидання, коли має бути можливим майже повний імунітет.
supercat

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

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

7

Я б віддав перевагу асинхронному скиданню над синхронним скиданням з кількох причин (не в конкретному порядку):

  • Додавання асинхронного набору або функції скидання до тригера, ймовірно, призведе до меншої конструкції за рахунок інтеграції логіки в одну комірку (проти невідкидного триггера з воротом AND на вході)
  • Менше воріт призводить до менш перевантаженої проводки / місця та маршруту
  • Це простіший / простіший процес скидання мікросхеми (більш зручний для користувачів / тесту)
  • Визначення шляху скидання асинхронним спрощує статичний аналіз часу розподілу сигналу скидання
  • Синхронне скидання додало б додаткової логіки в критичний шлях потоку даних і ускладнить виконання вимог налаштування та утримання
  • У той час як FPGA має 4-6 вхідну довільну логічну функцію на вході, ви "платите" за кожен вхід у ворота ASIC (більше входів = більший затвор; складні функції = кілька воріт)

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


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

4

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

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

http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf

Ура.


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

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

Каммінгс каже, що фільтри з глюком "некрасиві". Я ніколи не бачив жодного в ІС, над якими працював. Ми, як правило, використовуємо тригери Шмітта у всіх осередках вхідних майданчиків, щоб уникнути цих проблем, а скидання ввімкненого режиму, яке я використовую, аналогічно очищене. До речі, у яких випадках у вас були короткі імпульси на лінії скидання? Я бачив це в деяких сценаріях тестування сканування, але вони все ще в порядку, так як тривалість циклу годин, а не цілеспрямовані короткі імпульси. На останньому вашому коментарі відхилення скидання має бути синхронізовано на годинник, щоб уникнути порушень s / h під час скидання та забезпечити скидання всіх флопів на одному краї.
змішаний_сигнал_old

Фільтри глюка часто корисні для визначення того, які типи входів можуть викликати метастабільність, але вони не усувають метастабільних станів. Завданням фільтра глюка має бути забезпечення того, що будь-які метастабільні стани, які можуть виникнути, знаходяться в ситуаціях "небайдужих". Іноді необхідно, щоб один пристрій був здатний скинути інший пристрій, підключений до нього. Якщо провід скидання не буде подвійно синхронізований, буде ризик запуску імпульсів від сусідніх подій ОУР та інших подібних нападів.
supercat

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

2

Іншим підходом, який може здатися навіть безпечнішим, ніж підхід "async assert / sync release", буде встановлення асинхронного детектора скидання (так само, як описано в іншому місці, з асинхронним "утвердженням" та синхронним "випуском"), але має вихід з що захищають будь-які пристрої вводу / виводу, спрямовані назовні, без асинхронного скидання нічого (крім засувки в самому детекторі). Якщо використовується два детектора асинхронного скидання, один для ліній вводу / виводу і один для подачі детектора синхронного скидання, і якщо один спроектований для ліній вводу / виводу, так що він буде спрацьовувати лише імпульсами скидання, які звучать достатньо для надійності Якщо вимкнути основний детектор, можна уникнути навіть відключення виходів у випадках, коли не збирається скидати процесор. Зауважте, що якщо це зробити, імпульс скидання законної довжини буде скинути виходи асинхронно,

Інша річ, яку слід врахувати, полягає в тому, що системи часто мають деякі регістри, на які не слід впливати на скидання. Якщо асинхронний скидання може потрапити в схему, яка записує в ці регістри, можливо, імпульс скидання, який надходить у невідповідний час, перекриє ці регістри, навіть якщо це чистий (не рутовий) імпульс. Наприклад, якщо код намагається записати на адресу 1111, а скидання асинхронізації, яке надходить безпосередньо перед тимчасовим імпульсом, примушує один із адресних фіксаторів до нуля так само, як надходить імпульс годинника, це може спричинити помилкове записування на адресу 1110. Хоча можна було використовувати декілька внутрішніх ліній скидання з комбінаторними затримками, щоб забезпечити відключення записів реєстру до того, як адреса стала клоберованою, використовуючи синхронну внутрішню логіку скидання, щоб уникнути проблеми взагалі.

До речі, ось схема, що ілюструє концепцію. Біля лівого нижнього кута - два логічні входи для скидання. Один генерує "чистий" скидання імпульсу, а інший генерує справді хиткий. Жовтий світлодіод вказує на скидання основної системи; синій світлодіод вказує на включення вводу / виводу. Натискання чистого скидання призведе до негайного «скидання» виходів; натискання невдалого скидання або спричинить затримку скидання вихідних даних, або залишить їх непорушеними (в тренажері немає жодного способу викликати випадок "залишити їх незадіяними").


Я думаю, це звучить як гарна ідея. так багато відтінків сірого з начебто простими речами, як скидання.
Олі Глазер

0

Як досвідчений інженер ( 3 роки з дизайном FPGA та вбудованими системами ), я кажу вам, що вам потрібно перевірити таблицю даних та посібник користувача FPGA. Це не проста відповідь.

Ви повинні зробити свій дизайн FIT типу обраного типу FPGA . Деякі FPGA мають FlipFlops, які були розроблені для скидання Async, деякі призначені для скидання Sync.

Ви повинні перевірити посібник користувача FPGA щодо того, який тип FlipFlops у вас є.

Виконавець / Mapper вибере спеціальні маршрути для скидання ( код може працювати на більш високій частоті та займає менше місця ), якщо ви збігаєте код з типом примітивів FPGA.

Ваша конструкція працюватиме в будь-якому випадку , але іноді реалізатор FPGA вийде зі свого шляху, щоб ваша логіка працювала ( додає більше логіки ), але це призведе до зниження максимальної частоти та / або більше FPGA ресурсів.

Приклад: протестовано за допомогою ZYNQ Xilinx ( FPGA призначена для синхронізованого скидання - див. Посібник користувача примітивів ). Змінивши скидання з асинхронізації на синхронізацію , максимальна стабільна частота перейшла з 220 МГц на 258 МГц, і тому я перейшов свій запас частоти.

Також я можу додати, що Виконавець не знає, що таке сигнал та час скидання. Він призначає фліпфлоп-штифти сигналам ЗАМОВЛЕННЯ, а не по імені. Тож у деяких FPGA реалізатор вибирає перший сигнал після "процесу () початку" у VHDL як тактовий час, у деяких як скидання, залежно від того, на який FPGA встановлений реалізатор.


Я не згоден з вашим твердженням про те, що "Виконавець не знає, що таке сигнал годинника та скидання". Інструменти синтезу роблять висновок про годинник та який скидається тим, як вони використовуються. Сигнал тактового сигналу використовується з крайовою специфікацією, скидання не є. Крім того, будь -який триггер може використовуватися із специфікацією синхронного скидання, і, як ви зауважили, це часто призводить до швидших критичних шляхів.
Джо Хасс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.