А. В. Комаров цифровые сигнальные процессоры

Вид материалаДокументы
1.17.3. Условные обозначения
1.17.4. Команды пересылки данных
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   26

Таблица 1.19


Условия, проверяемые оператором IF команды

Условие

Описание

Выполняется, когда

EQ

Равно нулю

AZ = 1

NE

Не равно нулю

AZ = 0

LT

Меньше чем ноль

AN.XOR.AV = 1

GE

Больше чем или равно нулю

AN.XOR.AV = 0

LE

Меньше чем или равно нулю

(AN.XOR.AV).OR.AZ = 1

GT

Больше чем ноль

(AN.XOR.AV).OR.AZ = 0

AC

Перенос ALU

AC = 1

NOT AC

Нет переноса ALU

AC = 0

AV

Переполнение ALU

AV = 1

NOT AV

Нет переполнения ALU

AV = 0

MV

Переполнение МАС

MV = 1

NOT MV

Нет переполнения МАС

MV = 0

NEG

Отрицательный знак Х входа

AS = 1

POS

Положительный знак Х входа

AS = 0

NOT CE

Счетчик не исчерпан




FLAG_IN*

Сигнал FI установлен

На входе FI высокий

уровень сигнала

NOT FLAG_IN*

Сигнал FI сброшен

На входе FI низкий уровень сигнала

Примечание: * - только для команд JUMP и CALL.


Примеры команд:

{Сложение содержимых AX0 и AF, если есть перенос ALU}

IF AC AR = AX0 + AF;

{Пересылка содержимого ячейки ПД с адресом 0х1234 в AX0}

AX0 = DM(0x1234);

{Многофункциональная команда МАС. Содержимое MX0 и MY0 перемножаются со знаком, результат суммируется с содержимым MR, после чего регистры MX0 и MY0 загружаются новыми значениями из ПД и ПП соответственно. И все это происходит за один машинный цикл. Запятые разделяют отдельные части многофункциональной команды.}

MR = MR + MX0 * MY0 (SS), MX0 = DM(I0, M0), MY0 = PM(I4, M5);


Процессор ADSP–2181 содержит следующие группы команд:
  • Пересылочные;
  • Вычислительные: ALU, MAC, SHIFTER;
  • Управления потоком команд;
  • Многофункциональные;
  • Прочие.


1.17.2. Методы адресации


При описании методов адресации и команд приходится ссылаться на различные регистры процессора, причем, удобно использовать обобщенные обозначения этих регистров reg и dreg, см. табл. 1.20.

Таблица 1.20

Регистры процессора reg и dreg

Регистры reg

SB

PX

I0-I7, M0-M7, L0-L7

CNTR

ASTAT, MSTAT, SSTAT

IMASK, ICNTL, IFC

TX0, TX1, RX0, RX1

Регистры данных dreg

AX0, AX1, AY0, AY1, AR

MX0, MX1, MY0, MY1, MR0, MR1, MR2

SI, SE, SR0, SR1


Табл. 1.20 показывает, что к регистрам типа reg относятся почти все регистры процессора, которые не располагаются в ПД. К отсутствующим регистрам, в частности, относятся AF и MF. Регистры данных dreg являются подмножеством регистров reg. К ним относятся регистры данных вычислительных устройств, за одним исключением - SB.

Процессор поддерживает четыре метода адресации данных:
  • Регистровый, когда месторасположения операнда определяется именем регистра. Пример: AX0 = SI;, где имя SI указывает на местоположение операнда-источника, а АХ0 – операнда-приемника;
  • Непосредственный, когда операнд является частью команды. Пример: I0 = 0х1234;, где константа 0х1234 присваивается индексному регистру I0;
  • Прямой, когда в команде указан адрес операнда. Например: AX0 = DM(0x1234);, где константа 0х1234 является адресом в ПД операнда-источника;
  • Косвенный, когда адрес операнда находится в одном из индексных регистров. Пример: AX0 = DM(I1, M1);, где адрес операнда-источника содержится в индексном регистре I1. После пересылки этот регистр инкрементируется на величину содержимого М1.

Процессор также поддерживает два метода адресации переходов:
  • Прямой, когда в команде явно указан адрес перехода. Например:

IF EQ JUMP zero;, где zero является меткой и при компиляции заменяется соответствующим адресом в ПП;
  • Косвенный, когда адрес операнда находится в одном из индексных регистров, предназначенных для адресации ПП (I4-I7). Пример: IF FLAG_IN JUMP (I4);, где адрес перехода содержится в индексном регистре I4.


1.17.3. Условные обозначения


При описании команд будут использоваться следующие соглашения о их записи:

Квадратные скобки [ ] Отмечают необязательную часть команды

Параллельные линии | | Содержат список операндов, из которого может быть выбран только один операнд

ПРОПИСНЫЕ БУКВЫ Прописные буквы обозначают литерал. К литералам относятся имена команд (например, ADD), имена регистров (например, АХ0) или служебная информация (например, (SS) в командах умножения, см. п. 1.17.1). Литералы должны писаться так, как они приведены в описании команды

Операнды Обобщенные операнды некоторых команд могут писаться строчными буквами. В ассемблерной программе могут иметь различное значение. Например, в качестве yop могут выступать имена следующих регистров AY0, AY1 или AF

Обозначает экспоненту (число и направление сдвигов) в командах непосредственных сдвигов (см. п. 1.17.7.е, ж). Экспонента является 8-бит­ным целым со знаком

Обозначает значение непосредственного данного. Может быть не только числом, но и именем адресной метки или именем переменной/буфера, перед которой должны стоять символы ‘%’ или ‘’

Обозначает значение прямого адреса. Может быть либо непосредственным значением (константой), либо программной меткой

Имя любого доступного регистра процессора, см. табл. 1.20

Имя любого доступного регистра данных процессора, см. табл. 1.20

Непосредственные значения , или могут быть константами в десятичной, шестнадцатеричной, восьмеричной или двоичной системах счисления. По умолчанию в десятичной.

Для отражения состояния флагов ASTAT используются следующие обозначения:

* показывает, что бит изменен выполненной командой;

- показывает, что бит не зависит от выполненной командой;

0, 1 показывает, что бит безусловно сбрасывается или устанавливается выполненной командой.


1.17.4. Команды пересылки данных


А) ПЕРЕСЫЛКА РЕГИСТР – РЕГИСТР


Синтаксис: reg = reg;


Допустимые регистры: