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

^ 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:


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


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


А) УМНОЖЕНИЕ


[IF cond]

MR

= xop *

yop




(SS)

;




MF




xop



(SU)



















(US)



















(UU)



















(RND)









Синтаксис:


Допустимые:

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

6811905679727637.html
6812054843550642.html
6812176548081152.html
6812265060470514.html
6812329658630007.html