Коли використовувати засувки краще, ніж триггер у FPGA, який підтримує обидва?


20

Питання:

Коли використовувати засувки краще, ніж триггер у FPGA, який підтримує обидва?

Фон:

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

Загальна порада - навіть від постачальників FPGA - полягає в тому, щоб стежити за засувками або ніколи не використовувати засувки тощо. Для цієї поради є дуже вагомі причини, деталі яких загальновідомі. Однак більшість порад є фразовими: "не використовуйте засувки, якщо ви не знаєте, що вам потрібні".

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

Важлива примітка:

Засувки проти тригерів часто змушують людей здивовані. Мене цікавить лише відповідь на запитання. Відповіді, що пояснюють різницю між засувками та триггерами, пояснюючи причини використання НЕ використання засувок, детально пояснюючи, чому триггери краще, ніж засувки, і говорити про те, як засувки кращі в цілях, які не є FPGA тощо, були б абсолютно не актуальними.


Коли ви використовуєте FPGA, щоб точно імітувати існуючу схему, яка використовує засувки?
Majenko

Відповіді:


11

В основному ваше запитання: "коли ви знаєте, що вам потрібні засувки?" Що, як ви мали на увазі, є суб'єктивним питанням. Очікуйте більше думок, ніж фактів, як відповідей. Як сказано, ось моя думка:

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

За останні 13 років, це єдиний раз, коли мені потрібні засувки.


2
Дякую за відповідь. Я подумки подаю вашу відповідь під "обов'язковою зворотною сумісністю", що здається цілком розумним. =)
wjl

8

Фліп-флоп часто кращий для засувок, оскільки у них є лише чотири умови / обмеження гонки:

  1. час налаштування між зміною вводу даних та наступним активним краєм годинника, і
  2. провести час між краєм годинника та наступною зміною вводу даних;
  3. мінімальна тривалість активного імпульсу тактової частоти;
  4. мінімальна тривалість неактивного тактового імпульсу.

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

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


3
"Відповіді, що пояснюють різницю між засувками та триггерами, пояснюючи причини використання НЕ використання засувок, детально пояснюючи, чому триггери краще, ніж засувки, і говорити про те, як засувки краще в цілях, які не є FPGA, тощо, були б абсолютно не теми . "
Majenko

@supercat Добре, щонайменше, друга частина вашої відповіді має відповідну відповідь на питання. =) Дякую
wjl

1
@Majenko: Можливо, я мав би сказати "простіший у використанні", а не "кращий"; моя суть не в тому, щоб стверджувати, що слід уникати засувок, коли це можливо, а скоріше припускати, що хтось, хто використовує засувки, повинен усвідомлювати складності.
supercat

@supercat, чи можете ви поясніть свій приклад короткою хвилею?
Філіпп

1

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

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

Щоб уникнути перегонів, ви повинні реалізувати ці комбінаційні функції спеціальним резервним способом. На жаль (у даному конкретному випадку ;-), інакше це дуже хороша властивість) засоби синтезування FPGA оптимізують ваш дизайн, знімаючи всі надмірності. Тому, якщо ви хочете реалізувати засувку в FPGA, вам доведеться реалізувати її "вручну" та захистити від оптимізації (наприклад, у VHDL вам може знадобитися встановити атрибут "Keep" на "true" для сигналів, що використовуються внутрішньо у вашій засувці) .


-1 ОП спеціально запитала про те, коли слід використовувати засувки, і конкретно попросила читачів не наводити більше причин того, що засувки не слід використовувати.
Джо Хасс

-1

З точки зору термінів:

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

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


3
-1. Краще проаналізувати це належним чином із обмеженням на велосипеді та дозволити ділянці "асинхронізація" працювати протягом двох циклів. Дивіться, наприклад, сторінку 7-30 of altera.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.