Подходящий пример использования PIPO-регистра приведен на Рис. 2.20. На этой схеме к входу 8-битного регистра подключен выход АЛУ. Выходы регистра, в свою очередь, подключены к одному из входов АЛУ. Этот регистр служит для накопления результата последовательных операций и обычно называется аккумулятором, или рабочим регистром. Чтобы разобраться в работе этой схемы, рассмотрим процесс сложения двух слов — А и В. Если предположить, что АЛУ представляет собой две каскадно-соединенные микросхемы 74LS238, то последовательность операций может быть следующей:
1. Шаг программы
• Режим = 000 (сброс).
• По импульсу на входе «Исполнение» значение с выхода АЛУ (00000000) загружается в регистр.
• Выходные данные — ноль (00000000).
2. Шаг программы
• Значение слова А подается на вход АЛУ.
• Режим = 011 (сложить).
• По импульсу на входе «Исполнение» значение с выхода АЛУ (слово А +ноль) загружается в регистр.
• Выходные данные — слово А.
3. Шаг программы
• Значение слова В подается на вход АЛУ.
• Режим = 011 (сложение).
• По импульсу на входе «Исполнение» значение с выхода АЛУ (слово В + слово А) загружается в регистр.
• Выходные данные — сумма слов В и А.
Рис. 2.20. 8-битный блок обработки (АЛУ/рабочий регистр)
Последовательность кодов операций (000–100–100) и составляет программу. На практике каждая команда будет также содержать (при необходимости) адрес обрабатываемых данных; в данном случае — местонахождение слов А и В.
Результат любой операции характеризуется некоторым набором свойств. К примеру, результат может быть равен нулю или же при его вычислении может произойти переполнение. Эти свойства могут потребоваться при дальнейшем выполнении программы. В рассматриваемой схеме для сбора такой информации используются два D-триггера, тактируемые сигналом «Исполнение». В данном контексте состояния этих триггеров называются флагами (реже — семафорами). Таким образом, у нас имеются флаг нуля Z и флаг переноса из 7-го бита С, образующие регистр состояния (STATUS).
Как мы увидим далее, связка АЛУ/рабочий регистр является «сердцем» любого цифрового вычислительного устройства. Причем при использовании сложных систем, таких как компьютер или микроконтроллер, нам совершенно не нужно досконально знать их внутреннее устройство, а процессы, протекающие в системе, скрыты от пользователя. К примеру, на Рис. 2.21 изображен тот же самый блок, но на более высоком уровне абстракции. В частности, группы линий данных (шины) изображены в виде толстых линий, действительная их реализация не имеет никакого значения. Количество линий в шине не показано, но при необходимости оно указывается рядом с коротким штрихом, пересекающим изображение шины по диагонали, например так .
Рис. 2.21. 8-битный блок обработки (АЛУ/рабочий регистр) на системном уровне
Центральным элементом нашей системы является АЛУ, изображение которого имеет сложную форму. Значения на его входах данных (операнды) обрабатываются согласно сигналам на входах режима. Первый операнд поступает извне, тогда как 2-й операнд считывается из рабочего регистра. В компьютерах коды, подаваемые на вход режима, обычно считываются из памяти программ, а 1-й операнд — из памяти данных.
Значение с выхода АЛУ может быть загружено обратно в рабочий регистр W по сигналу «Исполнение» либо передано вовне по шине данных. Такая структура показана на Рис. 3.2 (стр. 60).
Существуют также и другие разновидности регистров. Четырехбитный сдвиговый регистр, показанный на Рис. 2.22, а, является примером структуры с последовательным вводом и последовательным выводом (SISO). В данном случае бит данных, хранящийся в n-м D-триггере, поступает на вход следующего ((n + 1) — го) каскада. При подаче тактового импульса (или, в данном контексте, импульса сдвига) этот бит перегружается в (n + 1) — й триггер, т. е. сдвигается с n-й позиции в позицию n + 1. Поскольку все триггеры тактируются одним сигналом, по каждому импульсу сдвига все слово данных сдвигается вправо.
Рис. 2.22. Сдвиговый регистре последовательным вводом и выводом
В примере, приведенном на Рис. 2.22, б, по тактовому сигналу в левую позицию побитно вдвигается 4-битное число. После 4-го импульса новое слово полностью окажется в регистре. Для его считывания потребуется еще четыре импульса, во время которых произойдет побитная выдача содержимого сдвигового регистра. Если обеспечить доступ к выходу каждого триггера, чтобы данные можно было считать за один раз, получим структуру с последовательным входом и параллельным выходом (SIPO).