Мущщина (28.05.2014 13:56, просмотров: 136) ответил fk0 на В твоём ADSP-2181, как и во всех прочих DSP, разрядность MAC сильно шире (40 бит), чем шина данных (16 бит). Не очевидно почему? И усекается оно, откидыванием младших битов, только по завершению операции, а никак не насыщается в процессе.
Вот даже при 40 разрядном аккумуляторе в этом DSP, а также и прочих, народ использует режим насыщения :-)) Хватит тебе фантазировать-то. Не знаешь ведь ты никуя. :-))
Что касается ADSP218x конкретно, то "насыщаться" там могут даже 2 регистра. Один 40-битный , его зовут MR
(cостоит из 16-ти разрядных MR0,MR1 и 8-ми разрядного MR2). И второй - 16-ти разрядный. Его зовут AR.
Так вот MR можно "насытить" только специальной инструкцией. Если мне не изменяет память, то выглядит она так:
IF MV SAT MR. MV, юноша, это флаг переполнения аккумулятора. Формируется он при выполнении операций умножителя-накопителя, приемником результата к-х и является MR, т.е. аккумулятор. А действие инструкции заключается в замене содержимого младших 32 разрядов регистра MR максимальным по модулю положительным или отрицательным числом. В зависимости от знака. Старшие 8 разрядов, после такой операции, как ты можешь догадаться, становятся просто никому не нужными. А потом, после применения этой операции ты можешь и усекать эти младшие 32 разряда MR, откидывая у них младшие разряды :-)
Насыщение MR используют достаточно часто. Обычно это инструкцию, если есть необходимость использования насыщения, ставят в конце цепочки операций умножения-накопления.
А второй регистр, юноша, который в ADSP218x может насыщаться (но это редко, даже очень редко, используют)- это 16-ти разрядный регистр AR. У него, юноша, другая механика. Его насыщение разрешается установкой некоего бита в некоем статусном регистре. Статусный регистр зовут вроде MSTAT. А бит - ARSAT. Так вот, када этот бит установлен, то AR насыщается при возникновении переполнения, случившегося во время выполнения операции АЛУ, приемником результата которой является AR.