{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs24 \cf0 \ [i];Filtre IIR passe bande \ ;Frequence central : 1kHz\ ;Bande passante : 1kHz \ ;Equation RBJ : y(n) = b0*x(n) + b1*x(n-1) + b2*x(n-2) - a1*y(n-1) - a2*y(n-2) [/i]\ \ [i]coefb0: equ 0.16759\ coefb1: equ 0\ coefb2: equ -0.16759\ coefa1: equ -0.65913 \ coefa2: equ 0.16481\ ;Pour \'e9viter tout depassement de capacit\'e9 de l'ALU, tous les coeff ont \'e9t\'e9 divis\'e9 par deux.\ ;Ce qui n\'e9cessite un recalage \'e0 gauche du r\'e9sultat final en fin de loop. \ \ \ AudioLoop\ \ jclr #RightRx,x:LRFlag,*\ bclr #RightRx,x:LRFlag\ move x:RxBuffBase,x0 ; <- entr\'e9e ADC gauche\ \ move x0,r0 ; Sauve x(n)\'e0 \ move x:TxBuffBase,b ; sauve y(n-1)\ clr a ; initialise a \ mpy #coefb0,x0,a ; a = b0*x(n)\ move r1,x0 ; va chercher sample x(n-1)\ mac #coefb1,x0,a ; a = a + b1*x(n-1)\ nop ; Pipeline stall\ move r2,x0 ; va chercher sample x(n-2)\ mac #coefb2,x0,a ; a = a + b2*x(n-2)\ nop ; Pipeline stall\ move r3,x0 ; Cherche sample y(n-1)\ mac -#coefa1,x0,a ; a = a - a1*y(n-1) \ move r4,x0 ; cherche sample y(n-2) \ mac -#coefa2,x0,a ; a = a - a2*y(n-2) \ lsl a ; recalage. a = y(n) r\'e9sultat final \ move r1,r2 ;Glissement de x(n-1) vers x(n-2)\ move r0,r1 ;Glissement de x(n) vers x(n-1)\ move r3,r4 ;Glissement de y(n-1) vers y(n-2)\ move b,r3 ;Glissement de y(n) vers y(n-1) \ \ move a,x:TxBuffBase ; -> sortie DAC left\ \ jmp AudioLoop [/i]}