Когда использование защелок лучше, чем триггеры в FPGA, которая поддерживает оба?


20

Вопрос:

Когда использование защелок лучше, чем триггеры в FPGA, которая поддерживает оба?

Фон:

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

Общий совет - даже от производителей ПЛИС - это следить за защелками или никогда не использовать защелки и т. Д. Для этого совета есть очень веские причины, детали которых всем хорошо известны. Тем не менее, большинство советов сформулированы так: «Не используйте защелки, если вы не знаете, что они вам нужны».

Я опытный дизайнер ПЛИС, и с годами я думал, что знаю, что мне нужна защелка, и быстро понял, что есть лучший способ сделать это с помощью триггеров. Мне интересно услышать примеры, когда использование защелок однозначно лучше.

Важная заметка:

Защелки против шлепанцев часто раздражают людей. Меня интересует только ответ на вопрос. Ответы, поясняющие разницу между защелками и триггерами, разъясняющие причины использования НЕ использовать защелки, подробно описывающие, почему триггеры лучше, чем защелки, рассказывающие о том, как защелки лучше в целях не-ПЛИС и т. Д., Были бы совершенно не по теме.


Когда вы используете FPGA, чтобы точно имитировать существующую схему, которая использует защелки?
Majenko

Ответы:


11

Ваш вопрос в основном "когда вы знаете, что вам нужны защелки?" Что, как вы подразумевали, является субъективным вопросом. Ожидайте больше мнений, чем фактов в качестве ответов. Это, как говорится, вот мое мнение:

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

За последние 13 с лишним лет это единственный раз, когда мне нужны защелки.


2
Спасибо за ответ. Я мысленно заполняю ваш ответ в разделе «Обязательная обратная совместимость», что кажется вполне разумным. =)
WJL

8

Триггеры часто предпочтительнее защелок, потому что они имеют только четыре условия / ограничения гонки:

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

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

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


3
«Ответы, объясняющие разницу между защелками и триггерами, разъясняющие причины, по которым НЕ следует использовать защелки, подробно описывающие, почему триггеры лучше, чем защелки, рассказывающие о том, как лучше использовать защелки в не-FPGA целях и т. Д., Были бы совершенно неуместными». «.
Майенко

@supercat Хорошо, по крайней мере, во второй части вашего ответа есть соответствующий ответ на вопрос. =) Спасибо.
WJL

1
@Majenko: Возможно, мне следовало сказать «проще в использовании», чем «предпочтительнее»; Моя точка зрения заключалась не в том, чтобы утверждать, что следует по возможности избегать защелки, а в том, чтобы предположить, что кто-то, использующий защелки, должен знать о сложностях.
суперкат

@supercat, не могли бы вы прояснить свой пример с короткой трассировкой?
Филипп

1

В моей работе иногда приходилось реализовывать защелки в ПЛИС, но это всегда было «последним средством». Типичные приложения включали соединения с асинхронными интерфейсами или шинами, если я не мог обеспечить тактовую частоту, достаточную для обеспечения надлежащей выборки и синхронизации шины и сигналов управления.

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

Чтобы избежать гонок, вы должны реализовать эти комбинационные функции специальным избыточным способом. К сожалению (в данном конкретном случае ;-), в противном случае это очень хорошее свойство), инструменты синтеза FPGA оптимизируют ваш дизайн, удаляя все избыточности. Поэтому, если вы хотите реализовать защелку в FPGA, вы должны реализовать ее «вручную» и защитить от оптимизации (например, в VHDL вам может потребоваться установить атрибут «keep» в «true» для сигналов, используемых внутри вашей защелки) ,


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

-1

С точки зрения сроков:

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

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


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