В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве

текст еще



Раздел 12: Модуль аппаратного умножителя

Модуль аппаратного умножителя может использоваться микроконтроллером семейства MAXQ для высокоскоростного выполнения операций умножения. Модуль аппаратного умножителя содержит два 16- разрядных регистра операндов и 32-разрядный регистр результата, доступный только для чтения, а также аккумулятор, имеющий у различных микроконтроллеров этого семейства разрядность от 32 до 48 бит. Аппаратный умножитель может выполнить умножение и накопление/вычитание двух 16- разрядных операндов за один цикл. Модуль аппаратного умножителя, не задействуя вычислительное ядро, поддерживает следующие действия:

  • Умножение со знаком или без знака двух 16- битных операндов
  • Умножение со знаком или без знака с накоплением двух 16- битных операндов
  • Умножение со знаком или без знака с вычитанием двух 16- битных операндов
  • Умножение со знаком с инверсией двух 16- битных операндов

Архитектура аппаратного умножителя

Аппаратный умножитель состоит из двух 16- разрядных регистров операндов с параллельной загрузкой (MA, МВ); доступный только для чтения регистр результата, состоящий из двух параллельных 16- разрядных регистров (MC1R и MC0R); аккумулятора, который состоит из двух или трех 16-разрядных параллельных регистров (MC2, MC1 и MC0); и регистра состояние/команд (MCNT). Обратите внимание, что разрядность и наличие регистра MC2 зависит от конкретного типа микроконтроллера семейства MAXQ. На рисунке 44 показана структурная схема аппаратного умножителя.

Архитектура аппаратного умножителя
Рисунок 44. Архитектура аппаратного умножителя

Управление аппаратным умножителем

Выбор режима, в котором будет работать аппаратный умножитель, осуществляется четырьмя служебными битами регистра MCNT: SUS, MSUB, MMAC и SQU. Количество операндов, которые должны быть загружены для запуска определенного режима, определяется битом OPCS, за исключением работы в режиме возведения в квадрат (SQU = 1). В режиме возведения в квадрат операция начинается сразу после загрузки определенного операнда (MA или МВ), не зависимо от состояния бита OPCS. Биты регистра MCNT позволяют выбрать режим работы и количество операндов, которые необходимо загрузить для выполнения операции. Любая операция записи в регистр MCNT автоматически сбрасывает счетчик количества загруженных операндов, но не затрагивает содержимое регистров операндов, если это определено состоянием бита CLD. Как только при помощи битов регистра MCNT задается необходимый режим, то сразу после загрузки определенного этими битами количества операндов аппаратный умножитель выполняет операцию умножения, умножения с накоплением/вычитанием или умножение с инверсией.

Выбор выходного регистра

Аппаратный умножитель имеет контрольный бит MCW выбора регистра записи информации, который позволяет сохранить записанный в регистрах MC2:MC0 в МС регистре (аккумуляторе). Когда бит MCW установлен в 1, то результат данной операции не сохраняется в регистрах МС. Когда бит MCW сброшен в 0, то содержимое регистров МС обновляется после выполнения каждой операции. Пара регистров MC1R и MC0R доступна только для чтения и обновляется не зависимо от состояния бита MCW. В этой паре регистров всегда содержатся данные, которые были бы загружены в пару регистров MC1:MC0, при условии, что MCW = 1 или MMAC = 0. Когда MCW = 0 и MMAC = 1, то содержимое пары регистров MC1R:MC0R может не соответствовать содержимому пары регистров MC1:MC0, но это будет предсказуемо и может быть в некоторых случаях полезно. Более подробно это расписано в таблице 17.

Выбор режима работы с учетом знака или без учета знака операндов

Операнды могут содержать числа со знаком или без знака, но тип данных должен быть определен прикладным программным обеспечением путем установки бита SUS. Для работы в режиме без учета знака операндов бит SUS регистра MCNT должен быть установлен в 1; для работы в режиме с учетом знака операндов бит SUS должен быть сброшен в 0. Аппаратный умножитель обрабатывает с числами без знака как с абсолютными величинами. Для 16-разрядного двоичного числа операнды имеют значения от 0 до 216 - 1 (xFFFFh). При работе в режиме с учетом знака операнды должны быть представлены в двоично-дополнительном коде, при котором старший значащий бит определяет знак числа. Диапазон значений 16-разрядных двоично-дополнительных чисел лежит в пределах от -2(16-1) (x8000h) до +2(16-1) - 1 (x7FFF). Результат любой операции с учетом знака операндов перед записью или накоплением/вычитание в регистре МС предварительно проходит знаковое расширение. Для работы в режиме умножения с инверсией бит SUS должен всегда быть сброшен в 0 (то есть должен быть определен режим работы с учетом знака операндов). Попытка умножения с инверсией в режиме без учета знаков операндов приводит к некорректному результату и установке бита OF. Изменение типа выбираемых данных (операндов) путем установки бита SUS не изменяет содержимое регистров МС. Регистры МС доступны для записи/чтения и могут быть при необходимости изменены прикладным программным обеспечением.

Выбор количества операндов

Бит OPCS позволяет выбрать одно- или двухоперандный режим работы. Когда бит OPCS сброшен в 0, то умножитель начинает выполнять определенную битами SUS, MSUB и MMAC операцию только после загрузки обоих операндов (одного в регистр МА, а другого - в регистр МВ). Когда бит OPCS установлен в 1, то операция начинает выполняться сразу после загрузки каждого из операндов (MA и МВ). В режиме возведения в квадрат (SQU) состояние бита OPCS игнорируется, а преобразование начинается после загрузки одного из операндов (МА или МВ).

Работа аппаратного умножителя

Служебные биты, которые определяют тип данных (SUS), количество операндов (OPCS или SQU) и адресата (MCW), уже были описаны. Однако, есть два дополнительных бита регистра MCNT, которые используются для определения режима работы модуля аппаратного умножителя. Операции умножения с накоплением/вычитанием и умножения с инверсией активизируются битами MMAC и MSUB регистра MCNT. Когда бит MMAC установлен в 1, то аппаратный умножитель работает в режиме умножения с накоплением (если MSUB = 0) или умножения с вычитанием (если MSUB = 1). Если бит MMAC сброшен в 0, то результат умножения не накапливается и не вычитается, но может быть запомнен непосредственно (если MSUB = 0) или с инверсией (если MSUB = 1). Режим умножения с инверсией (MMAC = 0, MSUB = 1) допустим только для работы в режиме с учетом знаков операндов (SUS = 0). В режиме умножения с накоплением/вычитанием без учета знака операндов бита OF устанавливается при переносе/займе из старшего значащего бита регистра МС. При работе с двоично-дополнительными операндами в режиме умножения с накоплением/вычитанием бит OF устанавливается при переносе/займе из старшего бита регистра МС, не являющегося битом знака. Так как при выполнении операций умножения и умножения с инверсией переполнения/займа быть не может, то бит OF всегда равен 0, за исключением одного случая. Бита OF будет установлен в 1 при выполнении операции умножения с инверсией в режиме без учета знаков операндов. В таблице 17 приведены операции, поддерживаемые модулем аппаратного умножителя, в зависимости от состояния битов регистра MCNT.

Доступ к аппаратному умножителю

Нет никаких ограничений на то, как быстро введены данные в регистры операндов или на порядок их ввода. Единственное требование состоит в том, чтобы данные регистров МА и/или МВ соответствовали настройкам, установленным битами регистра MCNT. Аппаратный умножитель отслеживает запись в регистры МА и МВ и начинает вычисления сразу после того, как необходимое количество операндов будет записано. Если выбран режим преобразования после записи двух операндов, то преобразование будет выполнено после записи двух операндов. Если прикладной программе необходимо перезагрузить первый операнд, то необходимо перезагрузить этот же самый операнд или использовать бит CLD регистра MCNT для повторной инициализации аппаратного умножителя; иначе загрузка второго операнда приведет к запуску операции вычисления. Бит CLD является самоочищающимся и предназначен для повторной инициализации аппаратного умножителя. После установки этого бита осуществляется очистка регистров операндов и счетчика количества записанных операндов.

Определенный битами настройки режим умножения начинается сразу после записи операнда/операндов и выполняется за один цикл. Данные в доступных только для чтения регистрах результата MC1R и MC0R присутствуют уже в следующем цикле, а в режиме умножения с накоплением/вычитанием (MCW = 0 и MMAC = 1) данные в регистре MC2:0 установятся только еще через один цикл. Когда бит MCW = 0, то результат в регистрах MC2:0 также всегда будет доступен только после дополнительного цикла. Этот один цикл, необходимый для обновления регистров MC2:0 не препятствует инициализации другого вычисления. Работы с переприемом могут быть запущены (независимо от типа данных и количества операндов) без необходимости формирования задержек между загрузкой операндов.

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

MCW:MSUB:MMAC Режим MC2 MC1 MC0 MC1R:MC0R Статус OF
000 Умножение MA*MB MA*MB Нет
001 Умножение с накоплением MC+(MA*MB) 32 МЗБ от (MC+2*(MA*MB)) Да
010 Умножение с инверсией (только при SUS = 0) -(MA*MB) -(MA*MB) Нет
011 Умножение с вычитанием MC-(MA*MB) 32 МЗБ от (MC-2*(MA*MB)) Да
100 Умножение MC2 MC1 MC0 MA*MB Нет
101 Умножение с накоплением MC2 MC1 MC0 32 МЗБ от (MC+(MA*MB)) Нет
110 Умножение с инверсией (только при SUS = 0) MC2 MC1 MC0 -(MA*MB) Нет
111 Умножение с вычитанием MC2 MC1 MC0 32 МЗБ от (MC-(MA*MB)) Нет


<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники