При выполнении различных арифметических и логических операций, а также при управлении ЦВМ возникает необходимость хранить код числа в течение некоторого времени. Иногда нужно сдвинуть этот код вправо или влево, произвести подсчет количества импульсов выбрать заданные комбинации кодов и т. д. Такие операции выполняют специальные устройства ЦВМ: регистры, счетчики и дешифраторы
Регистром называется устройство, предназначенное для приема, хранения и выдачи одного n – разрядного слова.
Следовательно, если код имеет n разрядов, то регистр должен иметь п одноразрядных запоминающих элементов, предназначенных для хранения этого кода. В качестве запоминающих элементов в регистрах ЦВМ обычно применяют триггеры. В регистре для каждого разряда хранимого слова имеется один вход и один или два выхода, если слово должно выдаваться в прямом и обратном кодах. Регистры подразделяют на регистры без сдвига и сдвигающие регистры, в которых возможен сдвиг хранимого слова.
На рисунке 1, а показана схема одного разряда регистра. Основным элементом схемы является триггер, который имеет два устойчивых состояния, одно из которых соответствует коду «1», а другое коду «0».
Перед подачей кода числа в эту схему необходимо стереть имевшийся ранее код. Для этой цели на вход триггера подается отрицательный импульс, который обеспечивает переход триггера в положение «0».
Код числа в виде электрического импульса поступает через входной вентиль совпадения В1 на вход У «1» триггера. Вентиль Вх предназначен для того, чтобы можно было осуществлять прием числа на триггер только в определенное время. Входной импульс числа пройдет через вентиль только в том случае, если на другой вход вентиля будет подан высокий потенциал по шине ПЧ (прием числа). Пройдя через вентиль, импульс числа (если на вход поступает код «1») установит триггер в положение «1».
Рисунок 1 – Схемы регистров: а – одного разряда регистра; б – n-разрядного регистра на триггерах; в– сдвигающего регистра.
При поступлении кода «0» триггер останется в положении «0». Опрос состояния триггера осуществляется с помощью вентиля совпадения В2. Один вход вентиля подключают к выходу «1» триггера, на другой вход подключают импульс ВЧ, разрешающий выдачу кода. Если триггер стоит в положении «1», вентиль откроется и на выходе появится импульс, совпадающий по фазе с импульсом ВЧ. Схемы всех разрядов регистра одинаковы и подобны схеме, изображенной на рисунке 1, а. Схема регистра для n-разрядного числа приведена на рисунке 1, б. Для приведения всех элементов регистра в исходное (нулевое) состояние на Вход 2 подают сигнал сброса. После этого одновременно по п входным каналам подают код числа. По тем каналам, где подается код «1», этот код будет зафиксирован, остальные триггеры останутся в нулевом состоянии.
Для запоминания числа и для сдвига его на один или несколько разрядов вправо или влево используют схемы сдвигающего регистра рисунке 1, б. В этой схеме выход одной триггерной ячейки соединен со входом другой через линии задержки τ1, τ2, τ3.
Принцип действия схемы заключается в следующем. Допустим, что на регистр занесен код «111». В этом случае все три триггера регистра находятся в состоянии, соответствующем коду «1». Если теперь по шине сдвига подать одновременно во все триггеры импульс сдвига, то все триггеры будут установлены в положение, соответствующее коду «0». Во время перехода триггеров из состояния «1» в состояние «0» в линиях задержки τ1, τ2, τ3 передаются импульсы отрицательной полярности. Эти импульсы, задержанные в линиях задержки на некоторое время, поступят на вход следующих триггеров Т2 и Т3и установят эти триггеры вновь в положение, соответствующее коду «1». Таким образом, в результате подачи на регистр первого импульса сдвига получим новый код «011» вместо исходного кода «111», т. е. число будет сдвинуто вправо на один разряд. Если на вход регистра подать не один, а три импульса сдвига, то число, хранившееся в регистре, будет сдвинуто не на один, а на три разряда. В данном случае на выходе регистра будет последовательный код «111», а в самом сдвигающем регистре – код «000».
Из изложенного следует, что сдвигающий регистр не только сдвигает хранившийся в нем код, но и преобразует параллельный код в последовательный. Был рассмотрен пример, когда во всех разрядах регистра установлен код «1». Если же в предыдущем разряде регистра установлен код «0», то при подаче импульса сдвига импульс в линию задержки не будет передан, значит, в следующем разряде после сдвига будет установлен код «0».