На основе триггеров строятся более сложные устройства ЭВМ, в частности регистры.
Схема простейшего параллельного регистра показана на рисунке
Рис.2.14. Параллельный регистр
Схема состоит из n D-триггеров, в которые по сигналу синхронизации С (обычно С подается в отрицательной логике, что и отражено в рисунке) записывается n– разрядный двоичный код, который хранится в регистре (сигналы Q0 - Qn-1). С приходом следующего сигнала синхронизации код может обновиться и регистр хранит новый код до прихода следующего синхросигнала и т.д. Обычно в регистрах предусмотрено принудительное асинхронное (т.е. независящее от синхросигналов) обнуление, сигнал которого Rчаще всего подается в отрицательной логике, что и отражено на схеме.
Кроме параллельных регистров бывают сдвигающие регистры, которые могут сдвигать код влево(вверх) или вправо(вниз). Существуют и универсальные регистры, сочетающие параллельный и сдвигающий регистр.
Пример такого регистра показан на рисунке:
Рис.2.15. Универсальный регистр
Кроме сигналов, присутствующих в параллельном регистре, имеются дополнительные управляющие сигналы q1,q0. Они определяют режим работы, например сочетание q0=0, q1=0 определяет режим параллельной записи, сочетание q1=1, q0=0 определяет режим сдвига влево, сочетание q1=0, q0=1 определяет режим сдвига вправо, сочетание q1=1, q0=1 определяет режим хранения.
Полная схема такого регистра достаточно громоздка, поэтому мы поясним принцип сдвига в регистре по упрощенной схеме. Рассмотрим вначале сдвиг влево (вверх):
Рис.2.16. Сдвиг влево, «вверх»
При сигнале сдвига состояние i-1 триггера переписывается в iтриггер, а состояние iтриггера в i+1 триггер и т.д.
Точно по таком же принципу построена схема сдвига вправо, только там при сигнале сдвига состояние i+1 триггера переписывается в iтриггер, а состояние iтриггера в i-1 триггер и т.д.
Отметим исключительно важный момент:
При сдвиге вверх(влево) на n разрядов код умножается в 2n раз
| Исх.число 2 (нули слева от 1 не приводим)
| | После сдвига на 1 разряд влево – 4 (22)
| | После сдвига исх.числа на 2 разряда влево -8 (23)
| | После сдвига исх.числа на 3 разряда влево -16 (24)
|
|
При сдвиге вправо на nразрядов код делится в 2n раз
Это можно проследить на вышеприведенной таблице, если считать исходный код 16 и последовательно сдвигать его вправо.