Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 49

Параллельный умножитель 16-разрядных чисел состоит из трех узлов: входного регистра Т, регистра произведения Р и матричного умножителя. Чтобы использовать умножитель, сначала необходимо загрузить множимое в регистр Т из памяти данных, а затем выполнить команду умножения, при этом в качестве множителя может быть число из ОЗУ данных или константа, извлекаемая из команды непосредственного умножения.

Процессор содержит два устройства сдвига: быстродействующее устройство последовательного сдвига для пересылки слов из ОЗУ данных в АЛУ, позволяющее получить сдвиг влево на 0…15 разрядов, и параллельное сдвигающее устройство для пересылки данных из аккумулятора в ОЗУ данных со сдвигом влево на 0, 1, 4 разряда.

Используются два способа адресации памяти данных: прямой и косвенный. Для формирования адреса ячейки памяти при прямой адресации семь младших разрядов слова команды объединяются с содержимым указателя страницы (DP) памяти данных, т.е. реализуется следующая схема разделения памяти на страницы:

DP          Номера ячеек памяти

0             0…127

1  128…144

В режиме косвенной адресации в качестве адреса памяти данных используются восемь младших разрядов одного из вспомогательных регистров (AR0 или AR1), при этом нет необходимости разделения памяти данных на страницы. Текущий вспомогательный регистр выбирается с помощью указателя вспомогательного регистра ARP. При выполнении любой команды с косвенной адресацией вспомогательный регистры можно установить в режим автоинкремента/автодекремента (увеличить/уменьшить значение вспомогательного регистра на 1), а также изменить содержимое указателя вспомогательного регистра (ARP). Содержимое вспомогательного регистра и ARP изменяются после окончания выполнения текущей команды.

Вспомогательные регистры могут быть использованы для выполнения трех функций: временного хранения данных, косвенной адресации памяти данных и для управления циклами, для чего существует команда перехода по ненулевому состоянию вспомогательного регистра.

Программный счетчик (РС) и стек предоставляют возможность пользователю организовать переходы, вызовы подпрограмм, прерывания. Программный счетчик представляет собой 12-разрядный регистр, содержащий текущий адрес ячейки программной памяти, в которой записана команда, выполняемая следующей. После подачи сигнала «Сброс» на вход  программный счетчик обнуляется. Стек представляет собой четыре 12-разрядных регистра, что определяет глубину вложений подпрограмм не более четырех. Система команд позволяет при необходимости расширить емкость стека за счет ОЗУ данных.

Система команд

Основные команды TMS 32010 приведены в приложении 4.

Формат команд с прямой адресацией:

15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0

Код операции                    0  Прямой адрес памяти

Седьмой разряд (Р7=0) определяет режим прямой адресации

Формат команд с косвенной адресацией:

15  14  13  12  11 10  9  8  7  6  5        4         3        2  1  0

Код операции                    1  0  INC   DEC   APR  0  0  APR

Седьмой разряд (Р7 = 1) определяет режим косвенной адресации. В разрядах 6 –0 содержатся биты управления косвенной адресацией.

Если третий разряд нулевой (Р3=0), то содержимое нулевого разряда (Р0) загружается в АКЗ. Если в третьем разряде содержится единица (Р3=1), то содержимое ARP остается прежним. Если в пятом разряде содержится единица (Р5=1), то содержимое текущего вспомогательного регистра увеличивается на единицу после выполнения текущей команды. Если Р4=1, то содержимое текущего вспомогательного регистра уменьшится на единицу. Если в четвертом и пятом разрядах нули. То операции инкремента/декремента не выполняются. Разряды 6, 2, 1 являются резервными и должны всегда содержать нули. Прямая и косвенная адресации могут быть использованы со всеми командами, использующими операнды данных, за исключением команд, обрабатывающих непосредственные операнды. Существуют четыре команды, использующие непосредственные операнды (LDPK, LARK, MPYK и LACK). Эти команды извлекают операнд непосредственно из кода команды.