- •Цель и содержание работы
- •Базовая архитектура семейства adsp-21xx
- •2.1. Особенности структуры
- •Вычислительные модули
- •Генераторы адресов данных. Программный автомат
- •Оперативная память
- •Внутренние периферийные устройства
- •Программно-логическая модель
- •Команды алу
- •Система команд
- •Команды умножителя-накопителя
- •Команды устройства сдвига
- •Команды пересылки данных
- •Команды передачи управления в программе
- •Многофункциональные команды
- •Другие команды
- •Форматы представления чисел
- •Запуск среды разработки программ
- •Создание проекта
- •Создание файлов кода программы
- •Компиляция и компоновка
- •Тестирование и отладка
- •Лабораторное задание
- •Контрольные вопросы
Система команд
Язык ассемблера состоит из набора команд-инструкций, в которых можно использовать простые операторные выражения, и директив, используемых на этапе трансляции-ассемблирования. Команды процессоров семейства сгруппированы в следующие категории:
вычислительные команды АЛУ, умножителя и устройства сдвига;
команды пересылки данных;
команды управления последовательностью выполнения программы;
многофункциональные команды;
остальные.
Процессоры семейства ADSP-21xx могут выполнять за один цикл операции выборки данных и умножения с накоплением.
Базовый набор команд ADSP-21xx включает традиционные для микропроцессоров операции с блоками вычислителя, команды пересылки данных и инструкции управления.
Команды алу
В рассматриваемых сигнальных процессорах ADSP-21хх АЛУ имеет два входа Х и Y. В дальнейшем соответствующие операнды будут обозначены как Х-операнд и Y-операнд, а приемник результата – R.
Список стандартных функций АЛУ:
R = X + Y − сложить операнды Х и Y;
R = X + Y +CI − сложить операнды Х и Y и бит переноса;
R = X ‑ Y − вычесть операнд Y из X;
R = X ‑ Y + CI – 1 − вычесть операнд Y из X с «заёмом» (единицы старшего разряда при вычитании);
R = Y ‑ X − вычесть X из операнда Y;
R = Y ‑ X +CI – 1 − вычесть X из операнда Y с «заёмом»;
R = ‑ X − инвертирование операнда X (в дополнительном коде);
R = ‑ Y − инвертирование операнда Y (в дополнительном коде);
R = Y+ 1 − инкрементирование операнда Y;
R = Y ‑ 1 − декрементирование операнда Y;
R = PASS X − пропустить операнд X для сохранения результата неизменным;
R = PASS Y − пропустить операнд Y для сохранения результата неизменным;
R = 0 (PASS 0) − обнуление результата;
R = ABS X − найти абсолютное значение операнда X;
R =X AND Y − логическое И над операндами Х и Y;
R = X OR Y − операция логического ИЛИ над операндами Х и Y;
R = X XOR Y − операция исключающего ИЛИ над операндами Х и Y;
R = NOT X − операция логического НЕ над операндом X (в дополнительном коде);
R = NOT Y − операция логического НЕ над операндом Y (в дополнительном коде).
Источники ввода данных в порты X, Y и направление вывода данных через порт R для АЛУ приведены в табл. 7.
Таблица 7
Источники ввода/вывода данных АЛУ
Источники ввода данных в порт X |
Источники ввода данных в порт Y |
Направление вывода данных через порт R |
АХ0, АХ1 |
AY0, AY1 |
AR |
AR MR0, MR1, MR2 SR0, SR1 |
AF |
AF |
Для каждой команды возможно выполнение её по условию в следующем виде:
IF [условие] R = Х + Y;
IF [условие] является необязательным элементом команды и может использовать следующие флаги:
EQ − результат АЛУ = 0;
NE − результат АЛУ ≠ 0;
GT − результат АЛУ > 0;
GE − результат АЛУ ≥ 0;
LT − результат АЛУ < 0;
LE − результат АЛУ ≤ 0.
[Not] AV − (нет) переполнение АЛУ;
[Not] АС − (нет) перенос в АЛУ;
[Not] MV − (нет) переполнение умножителя;
[Not] CE − цикл не завершен;
NEG − отрицательный знак на входе Х АЛУ;
POS − положительный знак на входе Х АЛУ.
Кроме указанных команд, для реализации операции деления используются команды:
DIVS YОР, ХОР;
DIVQ ХОР.
Примеры команд АЛУ:
AR = AX0 + AY0;
AF = MR1 XOR AY1;
AR = AX0 ‑ AF;
IF GE AR = ‑ AR;
IF AV AR = АY1 + 1;
