Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2836

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел VII.

Аппаратный умножитель

7.2. Функционирование аппаратного умножителя

Аппаратный умножитель поддерживает операции умножения без знака, умножения со знаком, умножения без знака с накоплением и умножение со знаком и накоплением. Тип операции выбирается адресом, в который записан первый операнд.

Аппаратный умножитель имеет два 16-разрядных регистра OP1 и OP2 и три регистра результата RESLO, RESHI и SUMEXT. В регистре RESLO содержится младшее слово результата, в RESHI – старшее слово результата, а в регистре SUMEXT находится информация о результате. Для появления результата необходимо 3 такта MCLK. Результат может быть прочитан следующей командой после записи в OP2. Исключение составляет случай,когда используется косвенный режим адресации к регистру результата. В этом случае необходимо вставить команду NOP перед чтением результата.

7.2.1. Операнд регистров

Регистр OP1 первого операнда имеет четыре адреса, показанные в таблице 7.1, используемые при выборе режима умножения. Запись первого операнда по желаемому адресу позволит выбрать тип операции умножения, но не приведет к началу выполнения какой-либо операции. Запись второго операнда в регистр OP2 второго операнда инициирует операцию умножения. Запись в OP2 стартует выбранную операцию над значениями, сохраненными в OP1 и OP2. Результат записывается в три регистра результата RESLO, RESHI и SUMEXT.

Повторение операций умножения может выполняться без перезагрузки OP1, если значение в OP1 используется для последовательных операций. Нет необходимости перезаписывать значение в OP1 для выполнения операций.

Таблица 7-1. Адреса OP1

Адрес OP1

Имя регистра

Операция

0130h

MPY

Умножение без знака

0132h

MPYS

Умножение со знаком

0134h

MAC

Умножение без знака с накоплением

0136h

MACS

Умножение со знаком и накоплением

7.2.2. Регистры результата

Младший регистр результата RESLO содержит младшие 16 разрядов вычисленного результата. Содержимое старшего регистра результата RESHI зависит от операции умножения. Различные варианты содержимого RESHI приведены в таблице 7.2.

Библиотека Компэла

141


MSP430x1xxFamily

Таблица 7-2. Возможные варианты содержимого регистра RESHI

Режим

Содержимое RESHI

MPY

Старшие 16

разрядов результата

В старшем бите MSB регистра находится знак результата. Оставшиеся

MPYS

биты содержат старшие 15 разрядов результата. Используется пред-

ставление результата с дополнением до двух.

MAC

Старшие 16

разрядов результата

MACS

Старшие 16

разрядов результата. Используется представление резуль-

тата с дополнением до двух.

Содержимое регистра расширенного суммирования SUMEXT зависит от выполненной операции умножения. Различные варианты содержимого SUMEXT приведены в таблице 7.3.

Таблица 7-3. Возможные варианты содержимого регистра SUMEXT

Режим

SUMEXT

MPY

SUMEXT всегда содержит 0000h

SUMEXT содержит расширенный знак результата

MPYS

00000h результат был положительный

0FFFFh результат был отрицательный

SUMEXT содержит перенос результата

MAC

0000h результат не содержит переноса

0001h результат имеет перенос

SUMEXT содержит расширенный знак результата

MACS

00000h результат был положительный

0FFFFh результат был отрицательный

Потеря значащих разрядов и переполнение в режиме MACS

Умножитель не может автоматически определить потерю значащих разрядов или переполнение в режиме MACS. Диапазон аккумулятора для положительных чисел равен 0 – 7FFF FFFFh, а для отрицательных чисел 0FFF FFFh – 8000 0000h. Переполнение происходит, когда результат суммирования двух отрицательных чисел выходит за диапазон для положительного числа. Потеря значащих разрядов происходит, когда результат сложения двух положительных чисел выходит за диапазон для отрицательного числа. В обоих случаях регистр SUMEXT содержит правильный знак результата: 0FFFFh при переполнении и 0000h при потере значащих разрядов. Программное обеспечение пользователя должно определить и соответствующим образом обработать эти состояния.

142

Библиотека Компэла


Раздел VII.

Аппаратный умножитель

7.2.3. Примеры программного обеспечения

Ниже приведены примеры для всех режимов умножителя. Все режимы 8×8 используют абсолютные адреса для регистров, поскольку ассемблер не позволит обеспечить доступ типа .B к регистрам-словам, когда используются метки из стандартного файла определений.

; 16x16 умножение без знака

MOV #01234h,&MPY

;Загрузка первого операнда

MOV #05678h,&OP2

;Загрузка второго операнда

;...

;Обработка результатов

;8x8 умножение без знака. Абсолютная адресация.

MOV.B #012h,&0130h

;Загрузка первого операнда

MOV.B #034h,&0138h

;Загрузка второго операнда

;...

;Обработка результатов

;16x16 умножение со знаком

MOV #01234h,&MPYS

;Загрузка первого операнда

MOV #05678h,&OP2

;Загрузка второго операнда

;...

;Обработка результатов

;8x8 умножение со знаком. Абсолютная адресация.

MOV.B #012h,&0132h

;Загрузка первого операнда

SXT &MPYS

;Знаковое расширение первого операнда

MOV.B #034h,&0138h

;Загрузка второго операнда

SXT &OP2

;Знаковое расширение второго операнда

;...

;(запуск второго умножения)

;Обработка результатов

;16x16 умножение без знака с накоплением

MOV #01234h,&MAC

;Загрузка первого операнда

MOV #05678h,&OP2

;Загрузка второго операнда

;...

;Обработка результатов

;8x8 умножение без знака с накоплением. Абсолютная адресация.

MOV.B #012h,&0134h

;Загрузка первого операнда

MOV.B #034h,&0138h

;Загрузка второго операнда

;...

;Обработка результатов

;16x16 умножение со знаком и накоплением

MOV #01234h,&MACS

;Загрузка первого операнда

MOV #05678h,&OP2

;Загрузка второго операнда

;...

;Обработка результатов

;8x8 умножение со знаком и накоплением. Абсолютная адресация

MOV.B #012h,&0136h

;Загрузка первого операнда

SXT &MACS

;Знаковое расширение первого операнда

MOV.B #034h,R5

;Временное расположение второго операнда

SXT R5

;Знаковое расширение второго операнда

MOV R5,&OP2

;Загрузка второго операнда

;...

;Обработка результатов

7.2.4. Косвенная адресация RESLO

Когда используется косвенный или косвенный автоинкрементный режим адресации для доступа к регистрам результата, нужна, по крайней мере, одна команда между загрузкой второго операнда и доступа к одному из регистров результата:

Библиотека Компэла

143


MSP430x1xxFamily

;Доступ к результатам умножителя с косвенной адресацией

MOV #RESLO,R5

;Загрузка адреса RESLO в R5 для косвенной

MOV &OPER1,&MPY

;адресации

;Загрузка первого операнда

MOV &OPER2,&OP2

;Загрузка второго операнда

NOP

;Необходим один цикл

MOV @R5+,&xxx

;Пересылка RESLO

MOV @R5,&xxx

;Пересылка RESHI

7.2.5. Использование прерываний

Если прерывание произошло после записи OP1, но до записи OP2, а умножитель используется в процедуре обработки прерывания, исходный выбранный режим умножителя будет потерян и результат станет непредсказуемым. Чтобы этого избежать, нужно отключать прерывания перед использованием аппаратного умножителя и не использовать его в процедурах обработки прерывания.

;Отключение прерываний перед использованием аппаратного умножителя

DINT

;Запрещение прерываний

NOP

;Требуется для DINT

MOV #xxh,&MPY

;Загрузка первого операнда

MOV #xxh,&OP2

;Загрузка второго операнда

EINT

;Разрешение прерываний

;Обработка результатов

7.3. Регистры аппаратного умножителя

Перечень регистров аппаратного умножителя приведен в таблице 7.4.

Таблица 7-4. Регистры аппаратного умножителя

Регистр

Краткое

Тип

Адрес

Исходное

обозначение

регистра

состояние

Операнд один – умножение

MPY

Чтение/запись

0130h

Неизменное

Операнд один – умножение со

MPYS

Чтение/запись

0132h

Неизменное

знаком

Операнд один – умножение с накоп-

MAC

Чтение/запись

0134h

Неизменное

лением

Операнд один – умножение со зна-

MACS

Чтение/запись

0136h

Неизменное

ком и накоплением

Операнд два

OP2

Чтение/запись

0138h

Неизменное

Младшее слово результата

RESLO

Чтение/запись

013Ah

Неопределенное

Старшее слово результата

RESHI

Чтение/запись

013Ch

Неопределенное

Регистр знакового дополнения

SUMEXT

Чтение

013Eh

Неопределенное

Библиотека Компэла

144