Сдвиг — это одновременное пространственное перемещение двоичного слова в разрядной сетке с сохранением порядка следования нулей и единиц. Регистры, предназначенные для выполнения микроопераций сдвига, называются регистрами сдвига или сдвиговыми.
Микрооперации сдвига используют в процессе выполнения команд умножения, деления и нормализации. Кроме того, с помощью сдвига осуществляется преобразование параллельного кода в последовательный или наоборот (например, при обмене информацией с магнитными лентами и дисками).
Сдвиг слова может выполняться вправо (в сторону младших разрядов) или влево (в сторону старших разрядов).
Обозначим одноразрядные микрооперации сдвига вправо и влево символами R и L соответственно.
Различают правый и левый арифметический (Ra, La), логический (Rл, Lл) и циклический (Rц, Lц) сдвиги слова.
Пусть в регистре А записано слово Аn, Ап-1... А2 А1
где А1 — младший разряд; Аn — старший разряд.
Символически микрооперации сдвига записываются следующим образом:
|
|
• арифметические сдвиги (знаковый разряд не сдвигается):
RGA: = Ra(A) = An 0 An-1... A2; RGA: = La (A) = Аn Аn-2...А1 0;
• логические сдвиги (одновременно сдвигаются все разряды);
RGA: = Rл(A) = 0 Аn Аn-1...А2; RGA: = Lл(A) = Аn-1Аn-2...А1 0;
• циклические сдвиги (между старшим и младшим разрядами имеется кольцевая связь):
RGA:= Rц (A) =A1 Аn Аn-1...А2; RGA: = Lц(A) = An-1 An-2...А1 An
Арифметические и циклические сдвиги преимущественно используют при выполнении команд в процессорах, а логические сдвиги обеспечивают преобразование последовательного кода в параллельный и наоборот в устройствах связи с магнитными лентами и дисками.
Сдвиговые регистры проектируют на двухступенчатых RS- (или JK-) или D-триггерах с динамическим управлением по фронту. Такие триггеры обеспечивают разделение во время процессов приема новой информации в каждом разряде и выдачи (сдвига)старой.
Примем, что в реверсивном регистре должны выполняться параллельная запись слова А по сигналу управления Yзп и сдвиги информации влево и вправо под воздействием управляющих сигналов Lл и Rл.
Схема одного разряда регистра сдвига на RS-триггерах показана на рис. 5.6, а.
Экономичная схема разряда регистра, в которой функция на R-входе триггера
образуется инвертированием сигнала Si показана на рис. 3.6, б.
Однако в этом случае время записи данных увеличивается за счет задержки инвертора.
Схема разряда регистра сдвига на D-триггерах показана на рис. 5.6 в.
Рисунок 5.6-Схема разряда регистра сдвига:
а)-на RS-триггере; б)-с инвентором на входе R; в)-на D-триггере
Пример построения реверсивного трехразрядного регистра сдвига на D-триггерах с динамическим управлением представлен на рис. 5.7.
|
|
Рисунок 5.7-Схема реверсивного регистра на D-триггерах
Реверсивный регистр сдвига работает следующим образом.
При значении сигнала Yзп = 1 в регистр записывается информация параллельным однофазным кодом.
При значении сигнала Rл = 1 хранимая информация одновременно сдвигается в сторону младших разрядов, при этом разряд Q3 обнуляется.
При значении сигнала Lл = 1 информация в регистре одновременно сдвигается в сторону старших разрядов, при этом разряд Q1 обнуляется.
Запись и сдвиг информации происходят по фронту синхроимпульса.