Регистр сдвига – регистр, обеспечивающий помимо хранения информации, сдвиг влево или вправо всех разрядов одновременно на одинаковое число позиций.
При этом выдвигаемые за пределы регистра разряды теряются, а в освобождающиеся разряды заносится информация, поступающая по отдельному внешнему входу регистра сдвига.
Обычно эти регистры обеспечивают сдвиг кода на одну позицию влево или вправо. Но существуют и универсальные регистры сдвига, которые выполняют сдвиг как влево, так и вправо в зависимости от значения сигнала на специальном управляющем входе или при подаче синхросигналов на разные входы регистра.
Регистр сдвига может быть спроектирован и таким образом, чтобы выполнять сдвиг одновременно не на одну, а на несколько позиций.
Регистры сдвига строятся на двухступенчатых триггерах.
Схема четырехразрядного регистра, выполняющего сдвиг на один разряд от разряда 0 к разряду 3, показана на рис. 2.7, а его условно-графическое обозначение – на рис. 2.8. Ввод информации в данный регистр – последовательный через внешний вход D0.
Регистр имеет вход асинхронной установки всех разрядов в "0". Для наглядности каждый двухступечатый регистр представлен двумя одноступенчатыми с соответствующей организацией синхронизации первой и второй ступеней. Пунктиром обозначен реальный двухступенчатый триггер.
Рис. 2.7. Структура регистра сдвига
Рис. 2.8. Условно-графическое обозначение четырехразрядного регистра сдвига
с асинхронным входом установки в "0"
Работа регистра сдвига в каждом периоде сигнала синхронизации разбивается на две фазы: при высоком и при низком значении синхросигнала:
При высоком уровне синхросигнала проводится запись значения выхода (i – 1)-го разряда регистра в первую ступень i-го разряда. Вторая ступень каждого разряда сохраняет свое прежнее значение. В этой фазе состояние первой ступени i-го триггера повторяет состояние второй ступени (i – 1)-го триггера. Вторые ступени каждого триггера, а следовательно, и выходы регистра в целом, остаются неизменными.
При низком уровне синхросигнала значение, записанное в первой ступени каждого триггера, перезаписывается в его вторую ступень. Запись в первую ступень триггера запрещена. В этой фазе состояния первой и второй ступеней каждого триггера становятся одинаковыми.
Поступление сигнала R = 0 вне зависимости от значения сигнала на входе синхронизации С и сигнала на входе D0 устанавливает все разряды регистра в нулевое состояние.