CPU EDGE TRIGGERED

From PSXDEV
Jump to: navigation, search

Contents

Активная логика (триггеры)

Edge-triggered схемы срабатывают не по уровню, а по факту смены уровня с 0 на 1 (задний фронт, raising edge, posedge в Verilog) или с 1 на 0 (передний фронт, falling edge, negedge в Verilog).

400px

Смысл этого в том, чтобы "открыть" триггер только в первую половину полутакта или в последнюю. То есть мы можем по идее умножить частоту, если использовать два триггера, один из которых настроен на задний фронт, а другой на передний.

Либо мы можем за 1 полутакт сделать сразу два действия, опять же используя этот трюк. Первое действие мы вешаем на триггер по заднему фронту, а второе - на триггер по переднему фронту. Память DDR так и работает.

Активная логика отличается от пассивной тем, что умеет запоминать некоторые состояния (в данном случае триггеры запоминают входное значение).

Семейство триггеров по нарастающему фронту выглядит так (не все пока изучены):

DFFs.jpg

TODO: Добавить сюда же описание триггеров по спадающему фронту, уже нашлась парочка.

DFF срабатывающий по нарастающему фронту (posedge, смена CLK 0->1)

Стандартный D-триггер (в англ. литературе называется D flip/flop).

DFF.jpg

Обозначается символом :
Dff symbol.jpg (уголок рядом с CLK означает, что элемент срабатывает по фронту, а не по уровню)

Логика работы основана на propagation delay, с помощью которого управляются 2 внутренних D-latch:

Dff rising flow.JPG

На картинке я пометил 1 и 2 - внутренние сигналы CLK, которые есть на транзисторной схеме. Сигнал 1 немного запаздывает относительно сигнала 2, благодаря дополнительному инвертору. В результате чего выходной D-latch обновляется только когда 12 = 00 (то есть когда CLK меняет своё значение с 0 на 1).

Схемка для симуляции в Logisim лежит в SVN.

250px

DFF по нарастающему фронту, со сбросом

Взяв за основу DFF, разработчики стали плодить его модификации.

Одна из них - DFF с дополнительным входом для сброса (причем вход в инверсной логике, как это обычно принято делать для сигналов сброса).

DFFR circuit.jpg

  • Если /res (in2) равен нулю (сброс), то на выходе всегда будет 0
  • Иначе схема работает как обычный DFF, устанавливая значение по нарастающему фронту

DFFR logic.png

DFF со сбросом применяются например в счётчиках, а /RES используется когда нужно сбросить счётчик.

DFF по нарастающему фронту, селектируемый по MUX, со сбросом

Данный вариант ячейки является гибридным: вместо обычного входа (D) на ней установлен мультиплексируемый вход.

Вероятнее всего комбинация MUX + DFF встречалась настолько часто, что разработчики решили добавить гибридную ячейку.

Схема не особо отличается от DFFR.

Топология:
DFFR MUX topo.jpg

Транзисторная схема:
DFFR MUX trans.jpg

Логическая схема:
DFFR MUX logic.jpg