Шрифт:
x — произвольное значение (0 или 1).
В первом примере число не является срединным и производится его стандартное округление.
Во втором примере число имеет срединное значение, поэтому его 16-й разряд устанавливается в ноль. Алгоритм округления применяется для каждой операции округления, но становится очевидным лишь при таком наборе младших бит, который показан в примере 2.
В процессорах ADSP-2181 возможен режим смещенного округления. Этот режим выбирается путем установки 12-го бита (BIARND) регистра управления SPORT0. Если BIARND=0, то используется операция несмещенного округления, если BIARND=1, то смещенного. Примеры таких операций приведены в табл. 15.5.
Таблица 15.5 Примеры операций округления
Значение регистра MR до округления | Результат округления со смещением | Результат округления без смещения |
---|---|---|
00-0000-8000 | 00-0001-8000 | 00-0000-8000 |
00-0001-8000 | 00-0002-8000 | 00-0002-8000 |
00-0000-8001 | 00-0001-8001 | 00-0001-8001 |
00-0001-8001 | 00-0002-8001 | 00-0002-8001 |
00-0000-7FFF | 00-0000-7FFF | 00-0000-7FFF |
00-0001-7FFF | 00-0001-7FFF | 00-0001-7FFF |
Этот режим действует только в том случае, когда значение регистра MR0 больше 0x8000. Во всех других случаях работают обычные операции округления. Этот режим позволяет более эффективно реализовывать алгоритмы, использующие смещенное округление, например подпрограммы речевого сжатия GSM.
Ниже приводится полный список команд устройства умножителя-накопителя MAC, также в соответствии с принятыми ранее условными сокращениями. Назначение команд приводится в тексте описания этих команд и комментариях для некоторых из команд.
Команды умножения:
Здесь присутствуют новые символы, которые имеют следующее назначение:
S — входной операнд xop или yop знаковый;
U — входной операнд xop или yop беззнаковый;
RND — выходное значение округляется.
Например, команда:
означает, что в регистр MR будет занесен результат умножения знакового значения из регистра MX0 на беззнаковое значение из регистра MY0.
Команда:
означает, что в регистр MR будет занесен результат умножения значения из регистра SR1 на значение из регистра MY0 и результат вычисления будет округлен.
Команды умножения с накоплением:
Пример:
Здесь в регистр MR будет занесен результат сложения предыдущего значения регистра MR с результатом умножения знакового значения из регистра MX0 на знаковое значение из регистра MY0.
Команды умножения с вычитанием:
Команды пересылки MR:
Фактически эти команды осуществляют пересылку содержимого регистра MR в регистр MR или в регистр MF с округлением значения.
Команды очистки:
Команда условного насыщения регистра MR:
Здесь MV — код условия переполнения умножителя.
Для всех команд MAC разрешено использовать следующие операнды:
xop: MX0, МХ1, AR, MR0, MR1, MR2, SR0, SR1;
yop: MY0, MY1, MF;
Коды условия IF соответствуют кодам, приведенным ранее в табличном виде.
Примеры записи команд: