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

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

Содержание


Допустимые регистры xop и условия cond см. п. 1.17.7.А.
Флаги состояния
Допустимые регистры xop и условия cond см. п. 1.17.7.А.
Флаги состояния
Допустимые регистры xop см. п. 1.17.7.А.
Флаги состояния
Подобный материал:
1   ...   14   15   16   17   18   19   20   21   ...   26
Допустимые регистры xop и условия cond см. п. 1.17.7.А.


Пример: IF GT SE = EXP MR1 (HI);


Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит извлечение экспоненты входного операнда. Обычно это делается перед командой нормализации NORM (см.­ ­п. 1.17.7.В).

Значение экспоненты (счетной величины для команды NORM) формирует детектор экспоненты, который подсчитывает число ведущих знаковых битов. Выходной код детектора экспоненты запоминается в регистре SE. Это значение зависит от режима работы детектора экспоненты: HI, HIX или LO.

В режиме HI входной операнд интерпретируется как число со знаком одинарной точности или как старшая половина числа со знаком двойной точности. Значение экспоненты определяется по следующему правилу: сначала подсчитывается число избыточных ведущих знаковых битов (число всех знаковых битов минус один) и затем у получившегося числа меняется знак на отрицательный. Именно это значение запоминается в регистре SE (см. табл. 1.4).

В режиме HIX входной операнд интерпретируется как результат операции ALU с возможным переполнением. В этом режиме проверяется бит AV регистра ASTAT. Если AV установлен (переполнение есть), то в регистр SE записывается значение +1, в противном случае (AV = 0), результат режима HIX не отличается от результата режима HI (см. табл. 1.5).

В режиме LO входной операнд интерпретируется как младшая половина числа с двойной точностью. Извлечение экспоненты чисел с двойной точностью достигается выполнением двух команд EXP. Первая команда применяется к старшей половине числа и используется с модификаторами HI или HIX. Вторая – применяется к младшей половине числа и используется с модификатором LO. Если старшая половина числа содержит не знаковый бит, то экспонента всего числа становится известной уже после выполнения первой команды EXP. Если все биты старшей половины числа знаковые, то формирование значения экспоненты довершит вторая команда EXP (см. табл. 1.6).


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

ASTAT:

7

6

5

4

3

2

1

0




SS

MV

AQ

AS

AC

AV

AN

AZ




*

-

-

-

-

-

-

-

SS – устанавливается командой EXP в режимах HI или HIX равным СЗР входного операнда, если AV = 0, в противном случае устанавливается равным инвертированному значению СЗР входного операнда. Команда EXP в режиме LO не влияет на этот флаг.


Д) КОРРЕКЦИЯ БЛОЧНОЙ ЭКСПОНЕНТЫ


Синтаксис: [IF cond] SB = EXPADJ xop;


Допустимые регистры xop и условия cond см. п. 1.17.7.А.


Пример: IF GT SB = EXPADJ SI;


Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит извлечение блочной экспоненты массива (блока) входных операндов, под которой понимается максимальная экспонента (с учетом знака) из всех экспонент блока. Это значение находится в регистре SB.

Перед первым использованием команды EXPADJ в регистр SB должно быть записано значение –16 (минимальная величина). Далее при каждом вызове команды она извлекает экспоненту и сравнивает ее значение с содержимым регистра SB. Если текущая экспонента больше содержимого регистра SB, то ее значение записывается в регистр SB. В противном случае, содержимое регистра SB не изменяется. Очевидно, что после обработки всего блока чисел в регистре SB будет находиться максимальная экспонента всего блока.

Команда EXPADJ является инспекционной (проверочной) командой, поскольку не выполняет никаких сдвигов.

Эта команда не может применяться к переполненным числам и к младшим половинам чисел с двойной точностью.


Флаги состояния: не изменяются.


Е) НЕПОСРЕДСТВЕННЫЙ АРИФМЕТИЧЕСКИЙ СДВИГ


SR = [SR OR] ASHIFT xop BY

(HI)

;




(LO)









Синтаксис:


Допустимые регистры xop см. п. 1.17.7.А.

Допустимое значение – любая константа от –128 до 127.


Пример: SR = SR OR ASHIFT SR0 BY 3 (LO); {нельзя “+3”}


Описание: Процессор производит арифметический сдвиг битов операнда. Направление и число сдвигов зависит от значения экспоненты, введенной непосредственным числом .

Положительное значение (перед ним нельзя ставить знак “+”) вызывает левый сдвиг, отрицательное – правый сдвиг. Сдвинутый операнд может быть размещен в старшей половине выходного поля SHIFTER (опция HI) или в младшей половине (опция LO). Сдвинутый операнд может быть также подвергнут операции логического ИЛИ с текущим содержимым регистра SR (опция SR OR).

При размещении сдвинутого операнда в 32-битном выходном поле слева от СЗР распространяется знак операнда, а справа от МЗР распространяется ноль. Биты сдвинутого операнда, выходящие за SR31 (при левом сдвиге) или за SR0 (при правом сдвиге) опускаются.

При сдвиге с двойной точностью константа используется для обеих половин операнда. В первом цикле сдвигается старшая половина операнда с двойной точностью (команда ASHIFT используется с опцией HI). Младшая половина операнда с двойной точностью сдвигается с помощью команды LSHIFT, которая использует с опции LO и SR OR. Это препятствует распространению знака младшей половины операнда, что может исказить результат сдвига.


Флаги состояния: не изменяются.


Ж) НЕПОСРЕДСТВЕННЫЙ ЛОГИЧЕСКИЙ СДВИГ


SR = [SR OR] LSHIFT xop BY

(HI)

;




(LO)









Синтаксис: