Руководство пользователя MSP430 (1041606), страница 14
Текст из файла (страница 14)
Умножитель не может автоматически определить потерю значащих разрядов или переполнение в режиме MACS. Диапазон аккумулятора для положительных чисел равен 0 – 7FFF FFFFh, а для отрицательных чисел 0FFF FFFh – 8000 0000h. Переполнение происходит, когда результат суммирования двух отрицательных чисел выходит за диапазон для положительного числа. Потеря значащих разрядов происходит, когда результат сложения двух положительных чисел выходит за диапазон для отрицательного числа. В обоих случаях регистр SUMEXT содержит правильный знак результата: 0FFFFh при переполнении и 0000h при потере значащих разрядов. Программное обеспечение пользователя должно определить и соответствующим образом обработать эти состояния.
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
Когда используется косвенный или косвенный автоинкрементный режим адресации для доступа к регистрам результата, нужна, по крайней мере, одна команда между загрузкой второго операнда и доступа к одному из регистров результата:
; Доступ к результатам умножителя с косвенной адресацией 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 | Неопределенное |
Раздел 8 Контроллер DMA
Модуль контроллера DMA переносит данные из одного адреса в другой без участия ЦПУ. Этот раздел описывает работу контроллера DMA. Контроллер DMA реализован в устройствах MSP430x15x и MSP430x16x.
8.1 Введение в контроллер DMA
Контроллер прямого доступа к памяти (DMA) переносит данные из одного адреса в другой во всем адресном диапазоне без вмешательства ЦПУ. К примеру, контроллер DMA может переместить данные из памяти преобразования ADC12 в ОЗУ.
Использование контроллера DMA может увеличить пропускную способность периферийных модулей. Также в результате его использования можно достигнуть снижения потребляемой системой мощности, позволяя ЦПУ оставаться в режиме пониженного энергопотребления без пробуждения для пересылки данных в/из периферии.
Контроллер DMA обладает следующими возможностями:
-
Три независимых канала переноса;
-
Конфигурируемые приоритеты каналов DMA;
-
Необходимо только два тактовых цикла MCLK;
-
Возможен перенос байтов, слов или смешанно байтов/слов;
-
Размер блока до 65535 байт или слов;
-
Выбор конфигурируемых триггеров (условий запуска) переноса;
-
Возможность выбора условия запуска переноса: по фронту/спаду или по уровню;
-
Четыре режима адресации переноса;
-
Одиночный, блочный или пакетно-блочный режимы переноса.
8.2 Функционирование DMA
Модуль контроллера DMA конфигурируется программным обеспечением пользователя. В этом разделе описывается инициализация и функционирование DMA.
8.2.1 Режимы адресации DMA
Контроллер DMA имеет четыре режима адресации переноса, показанные на рис.8.2:
-
Фиксированный адрес к фиксированному адресу;
-
Фиксированный адрес к блоку адресов;
-
Блок адресов к фиксированному адресу;
-
Блок адресов к блоку адресов.
Режим адресации переноса конфигурируется отдельно для каждого канала DMA. Например, канал 0 может выполнять пересылку между двумя фиксированными адресами, в то время как канал 1 осуществляет перемещение между двумя блоками адресов.
Режимы адресации DMA конфигурируются с помощью управляющих битов DMASRCINCR и DMADSTINCR. Бит DMASRCINCR выбирается, если адрес источника DMA (DMAxSA) инкрементируется, декрементируется или не изменяется после каждого DMA-переноса. Бит DMADSTINCR выбирается, если адрес источника DMA (DMAxDA) инкрементируется, декрементируется или не изменяется после каждого DMA-переноса.
DMA-перенос может быть таким: байт-байт, слово-слово, байт-слово или слово-байт. Когда выполняется перенос слово-байт, перемещается только младший байт слова-источника. Когда выполняется перенос байт-слово, старший байт слова-получателя очищается, когда происходит перемещение.
Блок-схема контроллера DMA показана на рис.8.1.
Рис.8-1. Блок-схема контроллера DMA
8.2.2 Режимы переноса DMA
Контроллер DMA имеет шесть режимов переноса:
-
Одиночный перенос;
-
Блочный перенос;
-
Пакетно-блочный перенос;
-
Повторяющийся одиночный перенос;
-
Повторяющийся блочный перенос;
-
Повторяющийся пакетно-блочный перенос.
Режим переноса в каждом канале DMA может индивидуально конфигурироваться с помощью битов DMADTx. Например, канал 0 может быть сконфигурирован в режиме одиночного переноса, в то время как канал 1 сконфигурирован в режиме пакетно-блочного переноса, а канал 2 работает в повторяющемся блочном режиме. Режим DMA-переноса конфигурируется независимо от режима адресации DMA. Любой режим адресации DMA может использоваться с любым режимом DMA-переноса.
Диаграмма состояний DMA показана на рис.8.3.
* Биты DMASRCINCR и DMADSTCINCR определяют, будут ли временные регистры инкрементированны или декрементированны
Биты DMADSTBYTE и DMASRCBYTE определяют, инкрементируются/декркментируются ли они одним байтом или словом
** Однажды стартовав, пакетно-блочный режим работает непрерывно до сброса бита DMAEN. Дополнительных событий запуска не требуется
Рис.8-3. Диаграмма состояний DMA
Одиночный перенос