Розділ 12 модуль апаратного помножувача

Розділ 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 ігнорується, а перетворення починається після завантаження одного з операндів (МА або МВ).

Робота апаратного помножувача

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

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

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

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

Схожі статті