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

Вид материалаДокументы

Содержание


Ax0 mr2 ay1 ax1 mr1 af ar mr0 sr1
Флаги состояния
Н) формирование флагов alu
Подобный материал:
1   ...   11   12   13   14   15   16   17   18   ...   26
AX0 MR2 AY1
AX1 MR1 AF
AR MR0
SR1

SR0


Описание: Эти команды выполняют деление yop на xop. Команды DIVS, DIVQ являются примитивами, поскольку при их выполнении формируется только один разряд частного: знак – при выполнении команды DIVS и остальные разряды – при выполнении команды DIVQ. Поэтому деление с одинарной точностью (32-битное делимое, 16-битные делитель и частное) требует 16 циклов. Возможно деление с более высокой точностью.

Деление может быть знаковым и беззнаковым, в любом случае операнды должны быть одного типа: знаковые или беззнаковые. Для подготовки деления необходимо старшую часть делимого загрузить в любой допустимый yop регистр (AY1 или AF), младшую часть делимого загрузить в AY0, а делитель загрузить в любой хор.

Далее операция деления выполняется с помощью примитивов деления DIVS, DIVQ. Повторные выполнения DIVQ реализуют алгоритм деления с помощью условного сложения/вычитания без восстановления остатка. После окончания деления частное формируется в AY0.

Для выполнения знакового деления необходимо сначала однократно выполнить команду DIVS, чтобы сформировать знак частного. Далее необходимо выполнить команду DIVQ столько раз, сколько бит осталось в частном (для выполнения знакового деления с одинарной точностью команду DIVQ необходимо выполнить 15 раз).

Для выполнения беззнакового деления необходимо старшую часть делимого загрузить в AF, затем сбросить бит AQ регистра ASTAT (при этом сформируется положительный знак частного). Далее выполнить команду DIVQ столько раз, сколько битов содержит частное (для выполнения беззнакового деления необходимо 16 раз выполнить команду DIVQ).

В конце выполнения команд DIVS, DIVQ очередной бит частного запоминается в бите AQ регистра ASTAT. Остаток формируется в AF, но он нуждается в коррекции.

Флаги состояния:

ASTAT:

7

6

5

4

3

2

1

0




SS

MV

AQ

AS

AC

AV

AN

AZ




-

-

*

-

-

-

-

-

AQ – формируется командами DIVS и DIVQ.


Н) ФОРМИРОВАНИЕ ФЛАГОВ ALU


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

ALU – может быть любой безусловной командой кроме DIVS и DIVQ.


Примеры: NONE = AX0 – AY0;

NONE = PASS SR0;


Описание: Процессор выполняет команду ALU, формирует флаги состояния, а результат игнорирует. Команда позволяет тестировать содержимое регистров источников без изменения содержимого регистров AR и AF.

Примечание: кроме команд DIVS и DIVQ недопустимо использовать также следующие команды ALU:
  • сложение (xop + constant);
  • вычитание X – Y (xop – constant);
  • вычитание Y – X (- xop + constant);
  • AND, OR, XOR (xop  constant);
  • PASS constant (отличные от –1, 0, 1);
  • TSTBIT, SETBIT, CLRBIT, TGLBIT.


Флаги состояния: см. п. 1.17.5.А.


1.17.6. Команды МАС


А) УМНОЖЕНИЕ


[IF cond]

MR

= xop *

yop




(SS)

;




MF




xop



(SU)



















(US)



















(UU)



















(RND)









Синтаксис:


Допустимые:

регистры xop регистры yop условия cond