Почему передняя кромка предпочтительна по заднему краю

Flip-Flops (, Регистры...) обычно срабатывают с восходящим или спадающим фронтом. Но в основном в коде вы видите if-предложение, которое использует триггер переднего фронта. На самом деле я никогда не видел код с падающим фронтом.

Почему? Это потому, что, естественно, программисты используют передний фронт, потому что они привыкли, или это связано с каким-то физическим/аналоговым законом/фактом, где программирование переднего фронта быстрее/проще/энергоэффективно/...?

Ответ 1

Как говорит zennehoy, это соглашение - но один возвращается к тому, когда в дискретные чипы была выполнена логика с несколькими воротами или триггерами внутри них, Эти пакеты флипфлопов всегда поднимались, как только я вспоминал, но, может быть, кто-то с лучшим воспоминанием о желтых книгах меня исправит!

The TI Logic databooks

Итак, когда синтез пришел, без сомнения, все чувствовали себя комфортно, играя на этом пути!

Ответ 2

Не более, чем вопрос конвенции.

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

Ответ 3

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

Поскольку положительное ребро является типичным значением по умолчанию (как в FPGA), для работы с отрицательным фронтом тактового сигнала обычная процедура заключается в просто использовании DFF с положительным фронтом с инвертированной версией синхронизирующего сигнала, подключенного к его порту синхронизации. Если это делается локально (рядом с портом синхронизации DFF), тогда необходимы два дополнительных транзистора (для создания CMOS-инвертора для часов).

Ответ 4

это несколько условно, но если вы посмотрите на дизайн падения по сравнению с нарастающим фронтом, есть только разница в добавленном инверторе, и он оказался менее 2 транзисторами меньше по фронту

но есть проекты, которые используют оба, например, в некоторых кэшах данных, которые вы пишете по нарастающему фронту и читаете по заднему фронту, или наоборот, в зависимости от выбора дизайна!

Хороший вопрос, и попробуйте его или возьмите курс (возможно, онлайн) на цифровых интегральных схемах