Вход/Регистрация
Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
вернуться

Вальпа Олег Дмитриевич

Шрифт:

DL=2 бит DR=14 бит

Частное: XXXX.XXXXXXXXXXXX

(NL-DL+1)=4 бит (NR-DR-1)=12 бит

Иногда необходимо некоторое изменение формата делимого и делителя. Например, если оба операнда знаковые и дробные (делимое в формате 1.31, а делитель в формате 1.15), то результат запишется в формате 1.15. Таким образом, для получения правильного результата операции деления необходимо, чтобы делимое было меньше делителя.

Чтобы разделить два целых числа (делимое в формате 32, а делитель в формате 16), необходимо перед делением привести делимое к формату 31, т.е. сдвинуть его влево на один разряд. Если результат не может быть представлен в формате частного, как сказано выше, или когда делитель равен нулю или меньше делимого по абсолютному значению, происходит переполнение.

При реализации алгоритма деления для знаковых операндов делитель должен храниться в AX0 и AX1 или в любом регистре с шины R. Старшее слово делимого может быть загружено в AY1 или AF, и младшее слово делимого загружается в AY0. Чтобы вычислить частное, сначала выполняется команда DIVS, которая вычисляет знак частного, за которой следуют 15 команд DIVQ, для вычисления 15 бит частного. Пример подпрограммы знакового деления с фиксированной точкой показан ниже. Эта подпрограмма берет делитель из регистра AX0, старшее слово делимого из AF и младшее слово делимого из AY0. Частное возвращается в AY0.

.MODULE Sig_Div_FP; {

 Входные данные:

AF = старшее слово делимого

AY0 = младшее слово делимого

AX0 = 16-битный делитель

 Выходные данные:

AY0 = 16-битный результат

 Изменяемые регистры:

AY0, AF

 Время вычисления=17 циклов

}

.ENTRY sdivfp;

sdivfp: DIVS AF, AX0; {Вычисление знакового бита}

DIVQ AX0; DIVQ AX0; DIVQ AX0; {Вычисление 15 бит частного}

DIVQ AX0; DIVQ AX0; DIVQ AX0;

DIVQ AX0; DIVQ AX0; DIVQ AX0;

DIVQ AX0; DIVQ AX0; DIVQ AX0;

DIVQ AX0; DIVQ AX0; DIVQ AX0;

RTS;

.ENDMOD;

Ниже приводится полный список команд ALU в соответствии с принятыми ранее условными сокращениями. Назначение команд очевидно из их записи и комментариев для некоторых из команд. Команды сложения и сложения с переносом:

[IF cond] |AR| = xop + |yop |;

|AF| |C |

|yop + C |

|constant|

Команды вычитания и вычитания с займом:

[IF cond] |AR| = xop - |yop |;

|AF| |yop+С-1 |

|constant|

[IF cond] |AR| = yop - |xop |;

|AF| |xop+C-1 |

|constant|

Команды логических операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ:

[IF cond] |AR| = xop |AND| yop;

|AF| |OR |

|XOR|

Команды передачи:

[IF cond] |AR| = PASS|xop |;

|AF| |yop |

|constant|

Команды смены знака:

[IF cond] |AR| = - |xop|;

|AF| |yop|

Команды логического отрицания HE:

[IF cond] |AR| = NOT |xop|;

|AF| |yop|

|0 |

Команды вычисления абсолютного значения:

[IF cond] |AR| = ABS |xop|;

|AF|

Команды инкремента:

[IF cond] |AR| = |yop+1|;

|AF|

Команды декремента:

[IF cond] |AR| = |yop-1|;

|AF|

Команды битовых операций:

[IF cond] |AR| = |TSTBIT n xop|; {операция логического «И» разряда n с 1}

|SETBIT n xop|; {операция установки разряда n в 1}

|CLBIT n xop|; {операция установки разряда n в 0}

|TGBIT n xop|; {операция «ИСКЛЮЧАЮЩЕЕ ИЛИ» бита n с 1}

Здесь n могут принимать значения от 0 до 15

Команды поразрядного деления:

  • Читать дальше
  • 1
  • ...
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: