1.Особенности архитектуры сигнальных процессоров (1086957), страница 7
Текст из файла (страница 7)
При прямой адресации командное слово содержит 7 младших разрядов адреса памяти данных (dma). Это поле соединяется с 9 битами указателя страницы памяти данных (DP) для образования полного 16-разрядного адреса памяти данных. Таким образом DP регистр указывает на одну из 512 возможных страниц памяти размером 128 слов, а 7-разрядный адрес в команде указывает на конкретное место на этой странице памяти данных. DP регистр загружается с помощью команд LDP (загрузить указатель страницы памяти данных), LDPK (загрузить непосредственно указатель страницы памяти данных) или LST (загрузить регистр состояния ST0).
Прямая адресация может использоваться со всеми командами кроме CALL, команд ветвления, команд с непосредственным операндом и команд без операндов. Формат прямой адресации имеет следующий вид:
15 8 | 7 | 6 0 |
Код операции | 0 | dma |
Косвенная адресация осуществляется через вспомогательные регистры AR (пять – AR0-AR4 – на TMS32020 или восемь – AR0-AR7 – на TMS320C25). Для выбора конкретного вспомогательного регистра указатель вспомогательного регистра (ARP) загружается одним значением от 0 до 4 или до 7.
При косвенной адресации любая ячейка области памяти данных на 64Кслов может быть доступна благодаря 16-разрядным адресам, находящимся во вспомогательных регистрах. Они могут загружаться командами LAR (загрузка вспомогательного регистра), LARK (загрузка вспомогательного регистра непосредственная) и LRLK (загрузка вспомогательного регистра непосредственная длинная). Вспомогательные регистры могут изменяться с использованием команды MAR (изменить вспомогательный регистр), а также полем косвенной адресации любой команды, использующей косвенную адресацию.
Наряду с использованием вспомогательного регистра в качестве источника адреса памяти данных, его содержимое может различным образом модифицироваться в рамках той команды, которая использует этот регистр для адресации.
Особую роль выполняет вспомогательный регистр AR0: его содержимое можно добавить или вычесть к/из используемого в команде регистра.
Вспомогательные регистры обслуживаются арифметическим устройством вспомогательных регистров (ARAU), который реализует 16-разрядную арифметику без знака. ARAU выполняет арифметические операции со вспомогательным регистром в том же самом цикле, что и выполняемую команду.
Косвенная адресация может использоваться со всеми командами кроме команд с непосредственным операндом и команд без операндов. Команды с косвенной адресацией имеют следующий формат:
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Код операции | 1 | IDV | INC | DEC | NAR | Y |
Биты от 15 до 8 содержат код операции, а бит 7=1 определяет метод адресации как косвенный. Биты от 6 до 0 содержат биты управления косвенной адресации.
Бит 6 управляет выбором второго операнда в операции над регистром, а биты 5 и 4 – типом операции. При IDV = 0 добавляется или вычитается 1, иначе – содержимое AR0. Бит INC = 1 определяет сложение, а DEC = 1 – вычитание. При IDV = INC = DEC = 0 операция над текущим вспомогательным регистром не производится (табл. 10.2)
Таблица 10.2. Установка режимов косвенной адресации.
Биты (6:4) | Арифметические операции |
0 0 0 | Нет операции |
0 0 1 | AR(ARP) - 1 ---> AR(ARP) |
0 1 0 | AR(ARP) + 1 ---> AR(ARP) |
0 1 1 | Зарезервирована |
1 0 0 | AR(ARP) - AR0 ---> AR(ARP) #с распространением инверсии переноса1 |
1 0 1 | AR(ARP) - AR0 ---> AR(ARP) |
1 1 0 | AR(ARP) + AR0 ---> AR(ARP) |
1 1 1 | AR(ARP) + AR0 ---> AR(ARP) #с распространением инверсии переноса |
# - только для TMS320C25 и TMS320E25 |
Бит 3 .. 0 управляют указателем вспомогательного регистра (ARP). NAR определяет, загружается ли новая величина в ARP. При NAR = 1, содержимое поля Y загружается в ARP, иначе содержимое ARP не изменяется.
Вспомогательные регистры могут также использоваться и для хранения данных при использовании команд загрузки и сохранения вспомогательного регистра LAR и SAR, соответственно.
При непосредственной адресации командное слово содержит величину непосредственного операнда; последний может располагаться в самом командном слове (короткая константа 3, 8, 9 или 13 бит) или в слове, следующем после кода операции (длинная константа 16 бит). Непосредственная адресация используется в арифметико/логических командах и командах загрузки
Все команды сигнального процессора разработчики разбивают на следующие группы:
-
Команды, выполняющие операции с аккумулятором;
-
Команды, выполняющие операции со вспомогательными регистрами
и указателем страниц; -
Команды, выполняющие операции с портами ввода-вывода и памятью данных;
-
Команды условного и безусловного ветвления;
-
Команды, выполняющие операции с Т- и Р- регистрами и команды умножения;
-
Команды управления.
Для нас привычней рассматривать команды традиционных классов:
-
Команды пересылки и загрузки
-
загрузка аккумулятора: длинной и короткой константой, отдельно старшего и младшего слова из памяти данных (прямо или косвенно адресуемой), в том числе – со сдвигом, определяемым в команде или содержимым Т-регистра; сброс аккумулятора.
-
загрузка и сохранение вспомогательных регистров и указателя вспомогательных регистров из памяти или константой;
-
загрузка/сохранение из/в памяти регистров состояния ST0, ST1 и Т-регистра;
-
блоковые пересылки, позволяющие (1) переместить блок в памяти данных на одну позицию в сторону старших адресов; (2) переместить блок из памяти данных или памяти программ в память данных, причем начальные адреса блоков источника и приемника задаются в команде; (3) читать/записать таблицу – перемещение блока между памятью программ и данных, причем память программ адресуется АСС(15:0), а память данных – в команде.
Пересылка блока размером более одного слова с помощью этих команд осуществляется с префиксной командой (RPT или RPTK), которая загружает размер блока в счетчик повторений (RPT – из ячейки памяти, а RPTK – константой); -
ввода/вывода (IN, OUT) – двухадресные команды, содержащие 4-битовое поле адреса порта и адрес ячейки памяти (прямой или косвенный);
-
к этому же классу можно отнести (?) и команды тестирования (BIT и BITT), которые копируют в триггер TC (тест/контроль) значение бита адресуемой прямо/косвенно ячейки памяти, причем номер бита задается в команде или полем регистра Т(3:0).
-
Арифметико-логические и специальные команды
-
аккумуляторные команды (1) двухоперандные – сложение, вычитание, в том числе с переносом/заемом), конъюнкция, дизъюнкция, неравнозначность, второй операнд которых – константа, прямо или косвенно адресуемая ячейка памяти, причем второй операнд может быть предварительно сдвинут на заданное число разрядов; (2) однооперандные – сброс, инверсия, дополнение, сдвиги (правый, левый, циклические, арифметические и логические), абсолютная величина, нормализация знакового числа2. Некоторые операции могут выполняться только со старшей или младшей половиной Асс. В системе команд TMS320C2x отсутствует команда деления, но есть команда условного вычитания SUBC3, позволяющая организовать эффективную подпрограмму деления.
-
команды над Т- и Р- регистрами. (1) группа команд загружает Т содержимым прямо/косвенно адресуемой ячейки памяти данных (dma) с одновременной операцией над Асс и сдвинутым регистром Р:[P2k Acc, Acc + P2k Acc, Acc - P2k Acc, (dma) dma + 1]
РМ | k |
00 | 0 |
01 | +1 |
10 | +4 |
11 | –6 |

-
команды модификации вспомогательных регистров. К текущему вспомогательному регистру AR(ARP) можно добавить/вычесть короткий непосредственный операнд (8 бит, целое без знака). Команда MAR изменяет содержимое вспомогательного регистра и указателя, как при косвенной адресации, но не выполняет никаких других действий;
-
команды сравнения, формирующие значение бита ТС по результатам сравнения регистров AR0 и текущего AR(ARP). Проверяется отношение AR0 * AR(ARP); * {=, >, <, }
-
команды возведения в квадрат и сложения/вычитания: Acc P2k Acc, (dma)2 P.
-
Команды передачи управления
-
переходы: безусловный, условные – по значению Асс 0, >0, <0, 0, =0, 0; по флагам C, *C, OV, *OV,TC, *TC, *BIO; по AR(ARP)0;
-
вызов и возврат безусловные;
-
косвенные безусловные переход и вызов.
-
Команды групп а) и b) длиной два слова, во втором слове – 16-разрядный адрес перехода; в первом слове поле косвенного адреса позволяет вместе с переходом модифицировать текущий вспомогательный регистр и указатель вспомогательных регистров. Однословные команды группы с) содержат адрес перехода в младшей половине аккумулятора Асс(15:0).
-
Команды управления
-
Команды управления структурой памяти объявляют блок RAM0 памятью программ (GNFP) или памятью данных (GNFD).
-
Команды управления прерываниями разрешают (EINT) или запрещают (DINT) прерывания. Команда IDLE «Ждать прерывания» останавливает программу (таймер работает) в ожидании запроса прерывания. TRAP – программное прерывание с вектором 30.
-
Команды загрузки/сохранения регистров состояния ST0, ST1 из/в ячеек памяти (dma).
-
Префиксные команды повторения, загружающие счетчик повторений константой (1 байт) или младшими разрядами (dma).
-
Управление битами: сброс/установка бита С переноса, бита ТС, копирование бита ячейки памяти в бит ТС (см. , f), внешнего флага XF/
-
Управление битами режимов: сброс/установка режима ПДП, переполнения, режима расширения знака.
-
Перенос верхушки стека в (dma) и наоборот (POPВ, PSHВ), то же для младшего слова аккумулятора (POP, PUSH).
-
Управление режимами последовательного обмена: выбор формата кадра (8 или 16 бит), сброс/установка режима передачи, сброс/установка режима кадровой синхронизации.
-
NOP.
-
1 Режим адресации с инверсией разрядов позволяет повысить производительность алгоритмов быстрого преобразования Фурье по основанию 2. Если выбран этот режим, направление распространения переноса инвертируется в ARAU и содержимое AR0 прибавляется или вычитается из содержимого текущего вспомогательного регистра. Обычно использование этого режима предполагает, чтобы первоначально в AR0 было загружено значение, равное половине длины обрабатываемой последовательности, а AR(ARP) был установлен на базовый (первый) элемент последовательности.
2 сдвиг влево с одновременным инкрементом AR(ARP) до несовпадения 31 и 30 разрядов.
3 Acc – [(dma)25] выход АЛУ; если АЛУ0, то (выход АЛУ)2 + 1 Асс,
иначе (Асс)2 Асс