[an error occurred while processing this directive]
|
вычиляется FIR сигнал и коэфф в Q15
с помощью smlalbb
вертиться цикл 16х16 + 64 = 64
получаю результат в паре (Hi)r3:(Lo)r2
дальше хочу вытащить свой ожидаемый результат в Q15
вот что родилось
; --- complete result ---
adds r2, r2, r9 ; +round
adc r3, r3, #0 ; +overflow
mov r2, r2, lsr #15 ; r2 = r2>>15
orr r2, r2, r3, lsl #17 ; r2[31:0] = r3[14:0]:r2[31:15]; --- saturate ---
mov r6, #0x8000 ; r6 = -1.0 Q15
sub r7, r6, #0x1 ; r7 ~ +1.0 Q15movs r3, r2, asr#15 ; r3 = r2>>15
movgt r2, r7 ; if(r3>0) r2 ~ +1 saturate
addmis r3, r3, #1 ; if(r3<0) r3++
movmi r2, r6 ; if(r3<-1) r2 = -1 saturate
это меня так приплюснуло или есть ли что то другое? какой то еще способ?
заранее спасибо.
E-mail: info@telesys.ru