Открыть сервис

Регистр сдвига

Регистр сдвига — это последовательностное логическое устройство, предназначенное для хранения и преобразования двоичной информации путём сдвига битового слова влево или вправо. Регистры сдвига являются фундаментальными элементами цифровой электроники и вычислительной техники, применяясь для реализации операций задержки, умножения и деления на степени двойки, преобразования последовательных кодов в параллельные и обратно, а также в качестве основы для построения счётчиков и генераторов псевдослучайных последовательностей.

История

Первые реализации регистров сдвига появились в середине XX века на основе электромеханических реле и вакуумных ламп. В 1940-х годах такие устройства использовались в ранних компьютерах, например, в машине «ЭНИАК» (ENIAC), где для хранения десятичных цифр применялись кольцевые регистры сдвига на декатронах.

С развитием полупроводниковой технологии в 1960-х годах регистры сдвига начали строиться на дискретных транзисторах и диодах. Ключевым этапом стало появление интегральных микросхем. В 1970-х годах компания Texas Instruments выпустила популярные серии ТТЛ-микросхем, такие как SN7495 (4-битный параллельно-последовательный регистр сдвига) и SN74164 (8-битный последовательный регистр сдвига). В СССР аналогичные микросхемы производились в сериях К155, К531, К555 и других.

В 1970-80-х годах регистры сдвига нашли широкое применение в бытовой электронике, в частности, в микрокалькуляторах, игровых приставках и первых персональных компьютерах. С появлением программируемых логических интегральных схем (ПЛИС) и микроконтроллеров аппаратные регистры сдвига стали часто заменяться программными реализациями, однако в ряде задач (например, в высокоскоростных интерфейсах) они остаются востребованными.

Классификация

Регистры сдвига классифицируются по нескольким признакам.

По способу ввода и вывода информации

  • Последовательные — данные вводятся и выводятся по одному биту за такт. Используются для преобразования последовательного кода в параллельный (SIPO, Serial-In Parallel-Out) или параллельного в последовательный (PISO, Parallel-In Serial-Out).
  • Параллельные — данные записываются и считываются одновременно всеми разрядами. Такие регистры называются параллельными регистрами хранения и не всегда относятся к сдвиговым, хотя могут быть объединены в одном устройстве.
  • Универсальные — поддерживают как последовательный, так и параллельный ввод/вывод. Примером служит микросхема 74HC595 (8-битный регистр сдвига с последовательным вводом и параллельным выводом, широко применяется в Arduino-проектах).

По направлению сдвига

  • Однонаправленные — сдвигают данные только влево (в сторону старших разрядов) или только вправо (в сторону младших разрядов).
  • Реверсивные — позволяют менять направление сдвига в зависимости от управляющего сигнала. Пример — микросхема К155ИР13 (4-битный реверсивный регистр сдвига).

По разрядности

Разрядность регистров сдвига варьируется от 1 до 64 бит и более. Наиболее распространены 4-, 8- и 16-битные устройства. В ПЛИС и микросхемах памяти разрядность может достигать тысяч бит.

По типу логики

  • ТТЛ (транзисторно-транзисторная логика) — классические серии 74xx, К155.
  • КМОП (комплементарная логика на МОП-транзисторах) — серии 4000, 74HC, 74HCT. Отличаются низким энергопотреблением.
  • ЭСЛ (эмиттерно-связанная логика) — высокоскоростные серии, применяются в СВЧ-устройствах.

Устройство и принцип работы

Основой регистра сдвига является цепочка последовательно соединённых триггеров (обычно D-триггеров или JK-триггеров). Каждый триггер хранит один бит данных. Выход каждого триггера соединён со входом следующего. Тактовый сигнал (CLK) подаётся на все триггеры одновременно.

Принцип сдвига вправо

При поступлении тактового импульса данные на входе первого триггера (D0) записываются в него. Одновременно значение, хранившееся в первом триггере, передаётся во второй, из второго — в третий и так далее. Таким образом, за один такт всё слово сдвигается на один разряд вправо. Младший бит (с выхода последнего триггера) может быть выведен наружу или потерян.

Принцип сдвига влево

Для сдвига влево цепь соединений триггеров изменяется: выход каждого триггера подаётся на вход предыдущего (соседнего слева). В универсальных регистрах направление сдвига задаётся управляющим сигналом.

Входы и выходы

Типичный регистр сдвига имеет следующие выводы:

  • Вход данных (D, SI, DS) — последовательный вход для ввода битов.
  • Выход данных (Q, SO) — последовательный выход.
  • Параллельные входы (D0–Dn) — для загрузки полного слова.
  • Параллельные выходы (Q0–Qn) — для считывания хранящегося слова.
  • Тактовый вход (CLK, CP) — для синхронизации.
  • Вход разрешения (EN, OE) — для управления выводом.
  • Вход сброса (CLR, MR) — для установки всех триггеров в ноль.

Применение

Преобразование кодов

Одно из основных применений — преобразование последовательного кода в параллельный и обратно. Например, в интерфейсе SPI (Serial Peripheral Interface) данные передаются по последовательной линии, а на приёмной стороне регистр сдвига преобразует их в параллельный код для дальнейшей обработки микропроцессором. В RS-232 и UART также используются регистры сдвига для последовательной передачи.

Умножение и деление на степени двойки

Сдвиг двоичного числа влево на один разряд эквивалентен умножению на 2, а сдвиг вправо — делению на 2 (с округлением в меньшую сторону для целых чисел). Это свойство широко используется в арифметико-логических устройствах (АЛУ) процессоров для быстрых операций.

Генерация псевдослучайных последовательностей

Регистры сдвига с линейной обратной связью (LFSR, Linear Feedback Shift Register) используются для генерации псевдослучайных чисел. В таких устройствах выходы некоторых разрядов суммируются по модулю 2 (XOR) и подаются на вход регистра. LFSR применяются в криптографии, тестировании цифровых схем, системах связи и игровых автоматах.

Задержка сигналов

Регистры сдвига могут использоваться как линии задержки. Если подать на вход последовательность битов, то на выходе она появится через число тактов, равное разрядности регистра. Это применяется, например, в цифровых фильтрах и эхо-эффектах.

Счётчики и делители частоты

На основе регистров сдвига строятся кольцевые счётчики (счётчики Джонсона) и делители частоты. В таких схемах выход последнего триггера подаётся на вход первого, образуя кольцо. При правильной обратной связи можно получить последовательность состояний, которая циклически повторяется, что позволяет делить тактовую частоту.

Управление светодиодными матрицами и индикаторами

В микроконтроллерных проектах (например, на Arduino) микросхема 74HC595 часто используется для управления большим количеством светодиодов или сегментных индикаторов. Она позволяет с помощью трёх линий (данные, такт, строб) управлять восемью выходами, что экономит выводы микроконтроллера.

Примеры реализации

На дискретных триггерах

Простейший 4-битный регистр сдвига можно собрать на четырёх D-триггерах (например, микросхема К155ТМ2). Вход первого триггера — последовательный вход данных. Выход первого триггера соединён со входом второго, и так далее. Тактовые входы всех триггеров объединены. При подаче тактовых импульсов данные сдвигаются.

Интегральные микросхемы

  • 74HC595 — 8-битный регистр сдвига с последовательным вводом, параллельным выводом и выходным регистром-защёлкой. Широко применяется в любительской и промышленной электронике.
  • CD4015 — КМОП-микросхема, содержащая два независимых 4-битных регистра сдвига.
  • К155ИР1 — 4-битный универсальный регистр сдвига с параллельной загрузкой и реверсивным сдвигом (советский аналог SN74194).

Программная реализация

В микроконтроллерах и компьютерах регистры сдвига часто реализуются программно. Например, на языке C сдвиг влево выполняется оператором <<, а вправо — >>. Для эмуляции аппаратного регистра сдвига с последовательным вводом можно использовать цикл, в котором бит за битом сдвигается переменная.

Интересные факты

  • Регистры сдвига лежат в основе так называемых «линейных конгруэнтных генераторов» (LCG), которые используются во многих языках программирования для генерации случайных чисел.
  • В криптографии регистры сдвига с обратной связью применялись в шифровальных машинах, например, в немецкой «Энигме» (Enigma) и американской SIGABA.
  • В советской вычислительной технике регистры сдвига на феррит-транзисторных элементах использовались в ЭВМ «Минск-22» и «Минск-32».
  • В современных ПЛИС регистры сдвига могут быть реализованы на уровне вентилей, что позволяет достигать тактовых частот в несколько гигагерц.

Источники

  • Угрюмов Е. П. Цифровая схемотехника. — СПб.: БХВ-Петербург, 2004.
  • Титце У., Шенк К. Полупроводниковая схемотехника. — М.: Мир, 1982.
  • Хоровиц П., Хилл У. Искусство схемотехники. — М.: Мир, 1993.
  • Texas Instruments. SN74HC595 8-Bit Shift Register Datasheet. — 2003.
  • Intel. Intel 8080 Microcomputer Systems User’s Manual. — 1975.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →