
- •Цель и содержание работы
- •Базовая архитектура семейства adsp-21xx
- •2.1. Особенности структуры
- •Вычислительные модули
- •Генераторы адресов данных. Программный автомат
- •Оперативная память
- •Внутренние периферийные устройства
- •Программно-логическая модель
- •Система команд
- •Команды алу
- •Команды умножителя-накопителя
- •Команды устройства сдвига
- •Команды пересылки данных
- •Команды передачи управления в программе
- •Многофункциональные команды
- •Другие команды
- •Форматы представления чисел
- •Запуск среды разработки программ
- •Создание проекта
- •Создание файлов кода программы
- •Компиляция и компоновка
- •Тестирование и отладка
- •Лабораторное задание
- •Контрольные вопросы
Команды умножителя-накопителя
R=X*Y(формат) − умножение операндов Х и Y.
R=MR + X*Y(формат) − умножение операндов Х и Y и сложение результата с содержимым регистра MR.
R=MR ‑ X*Y(формат) − умножение операндов Х и Y и вычитание полученного результата из содержимого регистра MR.
R = 0 − обнуление результата регистра MR.
R=MR[(RND)] − округление результата.
Источники ввода данных и направление вывода данных умножителя приведены в табл. 8.
Таблица 8
Источники ввода/вывода данных умножителя-накопителя
Источники ввода данных в порт X |
Источники ввода данных в порт Y |
Направление вывода данных через порт R |
МХ0, МХ1 |
MY0, MY1 |
MR(MR2, MR1, MR0) |
AR MR0, MR1, MR2 SR0, SR1 |
MF |
MF |
Форматы операндов при умножении:
SS − 2 знаковых операнда;
SU, US − 1 знаковый операнд;
UU – 2 беззнаковых операнда;
RND – округление результата.
Для каждой команды возможно выполнение её по условию в следующем виде:
IF [условие] R = Х * Y.
IF [условие] − является необязательным элементом команды.
Примеры команд умножителя накопителя:
MR = MX1 * МY0 (SS);
MF = AR * МY1 (SU);
MR = MR + AR * MY (SS);
MR = 0;
IF EQ MR = MX0 * МY0 (UU);
По умолчанию установлен режим умножителя дробных чисел. Установка режима умножения целых чисел осуществляется командой:
ENA M_MODE; − установка;
DIS M_MODE; − сброс.
Переполнение умножителя (в регистре ASTAT флаг MV = 1) происходит при изменении знакового бита во время накопления.
Команды устройства сдвига
Команды, содержащие величину сдвига:
SR = [SR OR] ASHIFT хор <данные> (выравнивание);
SR = [SR OR] LSHIFT хор <данные> (выравнивание);
Команды, для которых сдвиг задан в регистре SE:
[IF условие] SR = [SR OR] ASHIFT хор (выравнивание);
[IF условие] SR = [SR OR] LSHIFT хор (выравнивание);
где IF условие − арифметическое условие,
хор = [SR0, SR1, MR2, MR1, SI, MR0, AR],
выравнивание − [HI, LO] − по старшему или по младшему слову SR,
данные − -32...32 − величина сдвига (влево ‑ вправо).
Арифметический сдвиг (ASHIFT) отличается от логического (LSHIFT) тем, что при сдвиге вправо происходит расширение знака вместо записи нулей.
Рассмотренные выше команды АЛУ, умножителя и устройства сдвига составляют самую многочисленную группу команд − команды вычислений. Ниже будут рассмотрены другие группы команд сигнальных процессоров ADSP-21xx.
Команды пересылки данных
В группе команд пересылки данных можно выделить следующие разновидности:
Рг ←→ Рг (регистр-регистр);
Рг ←→ ПД (прямая/косвенная адресация);
Рг ←→ ПП (только косвенная адресация);
непосредственное значение → Рг;
непосредственное значение → ПД (только косвенная адресация).
Выделим отдельно команды работы с памятью данных (ПД) и памятью программ (ПП):
команды для ПД
dreg = DM (ix, mx);
DM (ix, mx) = dreg;
DM (ix, mx) = <данные>;
DM(<адрес>) = dreg;
dreg = DM(<адрес>);
команды для ПП
dreg = РM (iрx, mрx);
РM (iрx, mрx) = dreg;
где ix = [I0, I1, I2, I3],
mx = [M0, M1, M2, M3] − при использовании генератора адреса #1,
или ix = [I4, I5, I6, I7],
mx = [M4, M5, M6, M7] − при использовании генератора адреса #2,
dreg = [АХ0, АХ1, АY0, АY1, МХ0, МХ1, МY0, МY1,AR, MR0, MR1, MR2, SI, SE, SR0, SR1]
ipx = [I4, I5, I6, I7]
mpx = [М4, М5, М6, М7].
Примеры команд пересылки данных:
МХ0 = АY1;
АХ0 = DМ(0x3800);
АY0 = РМ(I4, М6);
SI = DM(0x2000);
DM(I3, M3) = 123;