- •7 Форма представления чисел с фиксированной точкой
- •8 Форма представления чисел с плавающей точкой
- •9 Форматы двоично-десятичных чисел
- •10. Машинные коды
- •Прямой код
- •Обратный код
- •. Дополнительный код
- •11 Составные части компьютера
- •13. Триггеры
- •12 Логические элементы
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •14 Асинхронный и синхронный d-триггеры
- •17. Дешифраторы
- •18 Одноразрядный сумматор
- •Полусумматор
- •19. Многоразрядные сумматоры
- •20 Двоично-десятичные сумматоры
- •21 Мультиплексоры
- •22. Демультиплексоры
- •23. Регистры
- •24 Счетчики
- •25 Двоично-десятичные счетчики
- •26 Классификация архитектур системы команд
- •27 Классификация по составу и сложности команд
- •28 Классификация по месту хранения операндов
- •29 Архитектура с выделенным доступом к памяти
- •30 Типы команд
- •Команды пересылки данных
- •Операции с целыми числами
- •Операции с числами в форме с плавающей запятой
- •Логические операции
- •Операции сдвигов
- •Операции с десятичными числами
- •Simd-команды
- •Команды для работы со строками
- •Команды преобразования
- •Команды ввода/вывода
- •Команды управления системой
- •Команды управления потоком команд
- •31 Формат команд
- •Длина команды
- •Разрядность полей команды
- •32 Выбор адресности команд
- •33. Способы адресации операндов
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •34 Косвенная регистровая адресация
- •Адресация со смещением
- •Относительная адресация
- •35 Базовая регистровая адресация
- •Индексная адресация
- •Страничная адресация
- •Блочная адресация
- •36 Распространенность различных видов адресации
- •Способы адресации в командах управления потоком команд
- •37 Функциональная организация фон-неймановской вычислительной машины
- •38 Устройство управления
- •39 Арифметико-логическое устройство
- •40 Основная память
- •Модуль ввода/вывода
- •41. Стандартный цикл команды
- •42 Организация шин
- •43 Шины «процессор-память»
- •Шина ввода/вывода
- •44 Системная шина
- •45 Иерархия шин
- •46 Арбитраж шин
- •47 Протокол шины
- •48 Методы повышения эффективности шин
- •49 Стандартизация шин
23. Регистры
Регистры предназначены для приема, временного хранения и выдачи данных. Чаще всего данные сохраняются в регистре на время выполнения одной или нескольких машинных команд. Кроме хранения данных регистры могут выполнять и другие операции (сдвиг данных, логические операции). Основу регистра составляют триггеры, число которых равно разрядности хранимых данных.
Наиболее простую схему имеет регистр с параллельной записью данных. На рис. 2.34 приведена схема регистра, построенного на синхронных D-триггерах с дополнительными асинхронными входами S и R. Записываемые данные (D0 ... Dn - 1) подаются на информационные входы триггеров. Запись производится при поступлении сигнала «Прием», подаваемого в определенный момент времени на входы синхронизации всех триггеров регистра. Для установки регистра в состояние «0» используется сигнал «Уст. 0», который подается на дополнительные входы триггеров R.
Рис. 2.34. Регистр с параллельной записью
Данные из регистра с параллельной записью и входом установки в состояние «0» могут быть выданы в прямом или обратном (инверсном) коде (рис. 2.35, а). Условное графическое обозначение регистра показано на рис. 2.35, б.
Рис. 2.35. Регистр:
а – схема выдачи данных из регистра; б – условное графическое обозначение
Для выдачи данных из регистра в прямом или обратном коде подается соответствующий управляющий сигнал.
Данные обычно выдаются из одного регистра и одновременно принимаются в другой (рис. 2.36). При этом используются регистры, построенные на синхронных RS-триггерах, а передача данных осуществляется в парафазном коде. В этом случае прием данных в регистр Рг1 производится при поступлении сигнала ПрРг1, а запись данных из Рг1 в регистр Рг2 – при поступлении сигнала ПрРг2.
Рис. 2.36. Схема передачи данных из регистра в регистр
Передача данных между регистрами может выполняться как прямо, т.е. без изменения номеров разрядов, так и со сдвигом влево или вправо на один или несколько разрядов.
Для сдвига информации в пределах одного регистра используются сдвигающие регистры (рис. 2.37). Сложность сдвига заключается в том, что каждый разряд регистра должен одновременно принять новую и передать старую информацию. Для устойчивой работы сдвигающего регистра в каждом разряде используют два однотактных триггера или один двухтактный, т.е. сдвигающий регистр фактически состоит из двух регистров.
Сдвигающий регистр представляет собой сдвоенный регистр и состоит из регистров первой (Рг1ст) и второй (Рг2ст) ступеней, между которыми производится обмен данными. Перед сдвигом в регистрах первой и второй ступеней записана одна и та же информация. При сдвиге данные сначала передаются из Рг2ст в Рг1ст со сдвигом вправо, затем возвращаются в Рг2ст без сдвига.
Рис. 2.37. Схема сдвига данных на один разряд вправо
Схема регистра сдвига на один разряд вправо, выполненного на однотактных RS-триггерах, приведена на рис. 2.38. Сдвиг производится при поступлении сигнала «Сдвиг». Каждый сигнал «Сдвиг» вызывает сдвиг данных на один разряд. При этом в освободившийся разряд записывается «0», а данные, выходящие из регистра, теряются.
Рис. 2.38. Регистр сдвига вправо
Аналогичным образом можно построить регистр сдвига вправо, регистр со сдвигом данных на несколько разрядов в одном такте или реверсивный сдвигающий регистр, позволяющий сдвигать данные влево или вправо в зависимости от управляющего сигнала.
На основе сдвигающего регистра можно построить преобразователь последовательного кода в параллельный, и наоборот (рис. 2.39).
Преобразователь выполнен на основе регистра со сдвигом данных вправо на один разряд. Регистр сдвига состоит из двухтактных JK-триггеров с дополнительными асинхронными входами S и R. Для преобразования параллельного кода в последовательный регистр устанавливается в нулевое состояние сигналом «Уст. 0». Затем данные в параллельном коде поступают на дополнительные входы регистра S. При подаче сигнала «Сдвиг» данные в последовательном коде выдаются на последовательный выход регистра. Для преобразования последовательного кода в параллельный данные подаются на последовательный вход одновременно с поступлением сигналов «Сдвиг». После заполнения регистра данные могут быть выданы в параллельном коде с выходов D1, D2, ..., Dn-1.
Рис. 2.39. Преобразователь параллельного кода в последовательный
Подача сигналов с выходов последнего триггера на входы J и К первого триггера позволяет получить кольцевой регистр сдвига, в котором разряды данных последовательно проходят через все триггеры, а состояние регистра периодически повторяется.
