Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.51 Mб
Скачать

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

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

Встроенный аппаратный умножитель позволяет производить умножение и умножение с накоплением знаковых и беззнаковых 8-ми и 16-ти битных операндов с получением 32-ти разрядного результата.

Для того чтобы выполнить операцию умножения необходимо первый операнд записать в определенный регистр умножителя, в зависимости от того, какая именно требуется операция, после чего записать второй операнд в специальный регистр. Практически сразу после этого из регистра результата можно вычитывать продукт умножения. Операция умножения с накоплением производит перемножение содержимого регистров первого и второго операндов и сложение полученного произведения с текущим содержимым регистра результата. Результат умножения сохраняется в трех 16-ти разрядных регистрах – младшего и старшего слова произведения, и регистре расширения, где фиксируется переполнение при сложении или знак результата.

Регистры аппаратного умножителя приведены в таблице 9

Таблица 9

Наименование

Назначение

Адрес

MPY

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

130h

MPYS

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

132р

MAC

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

134р

MACS

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

136h

OP2

Регистр второго операнда

138h

RESLO

Регистр младшего слова результата

13Ah

RESHI

Регистр старшего слова результата

13Ch

SUMEX

Регистр расширения суммы

13Eh

Содержимое регистра SUMEXT зависит от типа операции. Его возможные состояния показаны в таблице 10.

Таблица 10

Операция

Содержимое SUMEXT

MPY

Всегда 0

MPYS

0 – если результат положителен;

FFFFh – если результат отрицателен

MAC

0 – если нет переноса из 15-го бита RESHI;

FFFFh – если есть перенос из 15-го бита RESHI

MACS

0 – если результат положителен;

FFFFh – если результат отрицателен

ПРИМЕР.

Вычислить результат выражения R13:R12 = 1234 * R4 + 5678 * R5 ,

где

R13 - старшее слово результата;

R12 - младшее слово результата;

R4, R5 – беззнаковые 16-ти разрядные переменные.

mov #1234, &MPY

mov R4, &OP2

mov #5678, &MAC

mov R5, &OP2

mov &RESLO, R12

mov &RESHI, R13

ПРИМЕЧАНИЕ. Если умножитель используется как в основной программе, так и в подпрограмме обработки прерывания, может возникнуть ситуация, когда прерывание происходит во время загрузки и чтения результата основной программой. В этом случае режим операции и сами операнды могут быть потеряны, и результат окажется непредсказуем. Для того чтобы избежать подобной ситуации рекомендуется в основной программе запрещать все прерывания перед загрузкой данных в умножитель и разрешать прерывания после вычитывания результата.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]