Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
143
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

Справочник B вычислительных операций

Fn = FLOAT Rx BY Ry

Fn = FLOAT Rx

Синтаксис:

Fn = FLOAT Rx BY Ry

Fn = FLOAT Rx

Функция:

Преобразование операнда с фиксированной точкой из Rx в результат с плавающей точкой. Если задан коэффициент масштабирования (Ry), то число из Ry (целое с фиксированной точкой в виде двоичного дополнения) прибавляется к порядку результата с плавающей точкой. Окончательный результат помещается в регистр Fn.

Выполняется округление к ближайшему или усечение (в зависимости от заданного режима округления); граница округления всегда 40 бит, независимо от установки бита границы округления в MODE1. Масштабное смещение порядка может вызывать переполнение и потерю значащих разрядов числа с плавающей точкой. При переполнении возвращается ±(округление к ближайшему) или NORM.MAX (округление к нулю); при потере значащих разрядов возвращается ±0.

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

AZ

Установлен, если результат ненормализован (несмещенный порядок < –

 

126) или нулевой, иначе — сброшен

AU

Установлен, если результат после округления ненормализован, иначе —

 

сброшен

AN

Установлен, если результат с плавающей точкой отрицательный, иначе —

 

сброшен

AV

Установлен, если результат переполнен (несмещенный порядок >127)

AC

Сброшен

AS

Сброшен

AI

Сброшен

531

В Справочник вычислительных операций

Fn = RECIPS Fx

Синтаксис:

Fn = RECIPS Fx

Функция:

Создание 8 разрядного точного начального числа для 1/Fx. Мантисса начального числа определяется из таблицы ROM, используя 7 старших бит (исключая «скрытый» бит) мантиссы Fx как индекс. Несмещенный порядок начального числа вычисляется как двоичное дополнение несмещенного порядка Fx, уменьшенное на единицу; т. е. если е – несмещенный порядок Fx, то несмещенный порядок Fn равен –e – 1. Знак начального числа является знаком входного операнда. Если результат равен ±0, то возвращается ±и устанавливается флаг переполнения. Если несмещенный порядок Fx больше +125, то результат равен ±0. При вводе NAN возвращается NAN (1 во всех разрядах).

В приведенном ниже коде реализуется деление числа с плавающей точкой с использованием итеративного сходящегося алгоритма.* Результат определяется с точностью до одного младшего бита в любом формате, т.е. 32 разрядном или 40 разрядном (32 разрядный только для ADSP 21010). Требуются следующие входные данные: F0=числитель, F12=знаменатель, F11=2.0. Частное возвращается в F0. (Две выделенные жирным шрифтом команды могут быть удалены только в том случае, если необходим результат с точностью до младшего разряда.)

F0=RECIPS F12, F7 = F0;

{Получение 8-разрядного начального

 

 

числа R0=1/D}

F12=F0*F12;

{D’ = D*R0}

F7=F0*F7,

F0=F11-F12;

{F0=R1=2-D’, F7=N*R0}

F12=F0*F12;

{F12=D’-D’*R1}

F7=F0*F7,

F0=F11-F12;

{F7=N*R0*R1, F0=R2=2-D’}

F12=F0*F12;

{F12=D’=D’*R2}

F7=F0*F7,

F0=F11-F12;

{F7=N*R0*R1*R2, F0=R3=2-D’}

F0=F0*F7;

 

{F7=N*R0*R1*R2*R3}

* Заметим, что этот сегмент кода можно преобразовать в подпрограмму, добавив фразу RTS(DB) в третью от конца команду.

532

Справочник B вычислительных операций

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

AZ

Установлен, если результат с плавающей точкой равен ±0 (несмещенный

 

порядок >+125), иначе — сброшен

AU

Сброшен

AN

Установлен, если входной операнд отрицательный, иначе — сброшен

AV

Установлен, если входной операнд ±0, иначе — сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если входной операнд NAN, иначе — сброшен

533

В Справочник вычислительных операций

Fn = RSQRTS Fx

Синтаксис:

Fn = RSQRTS Fx

Функция:

Создание 4 разрядного точного начального числа для 1/Fx. Мантисса начального числа определяется из таблицы ROM, используя в качестве индекса младшие биты смещенного порядка Fx, объединенные с 6 ю старшими битами (за исключением «скрытого» бита) мантиссы Fx. Несмещенный порядок начального числа вычисляется как двоичное дополнение несмещенного порядка Fx, сдвинутое вправо на один бит и уменьшенное на единицу; т. е. если е – несмещенный порядок Fx, то несмещенный порядок Fn=INT[e/2]–1. Знак числа является знаком входного операнда. Если результат равен ±0, то возвращается

±и устанавливается флаг переполнения. Если результат равен +, то возвращается +0. При вводе NAN возвращается NAN (1 во всех разрядах).

В приведенном ниже коде реализуется вычисление 1/х числа с плавающей точкой с использованием итерационного алгоритма Ньютона Рафсона.* Результат определяется с точностью до одного младшего бита в любом формате, т. е. 32 разрядном или 40 разрядном (32 разрядный формат только для ADSP 21010). Для вычисления квадратного корня надо просто перемножить результат и первоначальный входной операнд. Требуются следующие входные данные: F0=входной операнд; F8=3.0, F1=0.5. Результат возвращается в F4. (Четыре выделенные жирным шрифтом команды могут быть удалены только в том случае, если необходим результат с точностью до младшего бита.)

F4=RSQRTS F0;

{Выборка 4-разрядного начального числа}

F12=F4*F4;

{F12=X0^2}

F12=F12*F0;

{F12=C*X0^2}

F4=F1*F4, F12=F8-F12; {F4=.5*X0, F12=3-C*X0^2}

F4=F4*F12;

{F4=X1=.5*X0(3-C*X0 ^ 2)}

F12=F4*F4;

{F12=X1^2}

F12=F12*F0;

{F12=C*X1^2}

F4=F1*F4, F12=F8-F12; {F4=.5*X1, F12=3-C*X1^2}

F4=F4*F12; {F4=X2=.5*X1(3-C*X1^2)}

F12=F4*F4; {F12=X2^2}

F12=F12*F0; {F12=C*X2^2}

F4=F1*F4, F12=F8-F12; {F4=.5*X2, F12=3-C*X2^2}

F4=F4*F12; {F4=X3=.5*X2(3-C*X2^2)}

534

Справочник B вычислительных операций

*Заметим, что этот сегмент кода можно преобразовать в подпрограмму добавив фразу RTS(DB) в третью от конца команду.

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

AZ

Установлен, если результат с плавающей точкой равен +0 (Fx=+), иначе —

 

сброшен

AU

Сброшен

AN

Установлен, если входной операнд –0, иначе — сброшен

AV

Установлен, если входной операнд ±0, иначе — сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если входной операнд отрицательный и ненулевой или NAN,

 

иначе — сброшен

535

В Справочник вычислительных операций

Fn = Fx COPYSIGN Fy

Синтаксис:

Fn = Fx COPYSIGN Fy

Функция:

Копирование знака операнда с плавающей точкой из Fy в операнд с плавающей точкой в Fx без изменения порядка или мантиссы. Результат помещается в регистр Fn. Ненормализованные входные операнды обнуляются. При вводе NAN возвращается NAN (1 во всех разрядах).

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

AZ

Установлен, если результат с плавающей точкой равен ±0, иначе —

 

сброшен

AU

Сброшен

AN

Установлен, если результат с плавающей точкой отрицательный, иначе —

 

сброшен

AV

Сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если любой из входных операндов NAN, иначе — сброшен

536

Справочник B вычислительных операций

Fn = MIN (Fx, Fy)

Синтаксис:

Fn = MIN (Fx, Fy)

Функция:

Возвращение меньшего из операндов с плавающей точкой в регистрах Fx и Fy. При вводе NAN возвращается NAN (1 во всех разрядах). Минимальным значением из +0 и –0 является –0. Ненормализованные входные операнды обнуляются.

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

AZ

Установлен, если результат с плавающей точкой ±0, иначе — сброшен

AU

Сброшен

AN

Установлен, если результат с плавающей точкой отрицательный, иначе —

 

сброшен

AV

Сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если любой из входных операндов NAN, иначе — сброшен

537

В Справочник вычислительных операций

Fn = MAX (Fx, Fy)

Синтаксис:

Fn = MAX (Fx, Fy)

Функция:

Возвращение большего из операндов с плавающей точкой в регистрах Fx и Fy. При вводе NAN возвращается NAN (1 во всех разрядах). Максимальным значением из +0 и –0 является +0. Ненормализованные входные операнды обнуляются.

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

AZ

Установлен, если результат с плавающей точкой ±0, иначе — сброшен

AU

Сброшен

AN

Установлен, если результат с плавающей точкой отрицательный, иначе —

 

сброшен

AV

Сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если любой из входных операндов NAN, иначе — сброшен

538

Справочник B вычислительных операций

Fn = CLIP Fx BY Fy

Синтаксис:

Fn = CLIP Fx BY Fy

Функция:

Возвращение операнда с плавающей точкой из Fx, если абсолютное значение операнда в Fx меньше абсолютного значения операнда с плавающей точкой в Fy. Иначе, возвращается |Fy|, если значение Fx положительное, и –|Fy|, если значение Fx отрицательное. При вводе NAN возвращается NAN (1 во всех разрядах). Ненормализованные входные операнды обнуляются.

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

AZ

Установлен, если результат с плавающей точкой равен ±0, иначе —

 

сброшен

AU

Сброшен

AN

Установлен, если результат с плавающей точкой отрицательный, иначе —

 

сброшен

AV

Сброшен

AC

Сброшен

AS

Сброшен

AI

Установлен, если любой из входных операндов NAN, иначе — сброшен

539

В Справочник вычислительных операций

В.2.2. Операции умножителя

В этом разделе описываются операции умножителя. В табл. В.3 приведены синтаксис и код операции для операций умножителя с фиксированной и плавающей точкой. Подробное описание каждой операции приведено ниже в этом разделе.

С фиксированной точкой:

Синтаксис

 

 

Rn

= Rx * Ry

mod2*

MRF = Rx * Ry

mod2*

MRB = Rx * Ry

mod2*

Rn

= MRF + Rx * Ry

mod2*

Rn

= MRB + Rx * Ry

mod2*

MRF = MRF + Rx * Ry

mod2*

MRB = MRB + Rx * Ry

mod2*

Rn

= MRF – Rx * Ry

mod2*

Rn

= MRB – Rx * Ry

mod2*

MRF

= MRF – Rx * Ry

mod2*

MRB

= MRB – Rx * Ry

mod2*

Rn

= SAT MRF

mod1**

Rn

= SAT MRB

mod1**

MRF

= SAT MRF

mod1**

MRB

= SAT MRB

mod1**

Rn

= RND MRF

mod1**

Rn

= RND MRB

mod1**

HRF

= RND MRF

mod1**

MRB = RND MRB

mod1**

MRF

= 0

 

 

MRB

= 0

 

 

MR

= Rn

 

 

Rn

= MR

 

 

С плавающей точкой:

Синтаксис

Fn = Fx * Fy * См. табл. В.4

**См. табл. В.5 у у вход; 1=знаковый, 0=беззнаковый

х х вход; 1=знаковый, 0=беззнаковый f формат; 1=дробный, 0=целый

rокругление; 1=есть, 0=нет

Код операции

01yx f00r 01yx f10r 01yx f11r

10yx f00r 10yx f01r 10yx f10r 10yx f11r

11yx f00r 11yx f01r 11yx f10r 11yx f11r

0000 f00x

0000 f01x

0000 f10x

0000 f11x

0001 100x

0001 101x

0001 110x

0001 111x

0001 0100

0001 0110

Код операции

0011 0000

Таблица В.3. Операции умножителя

540