filtry know how

background image

Filtracja za pomocą TMS320c6713

Know-how

Krzysztof Grabiński

background image

Zasada działania

Filtr

Filtr

z-1

+

z-1

z-1

+

+

z-1

y(n)

x(n)

x

x

x

x

b

0

b

1

b

2

b

N-1

Mnożymy aktualną próbkę i
127 ją poprzedzających przez
odpowiednie współczynniki
filtra

background image

Realizacja

Tworzymy tablice do przetrzymywania np.

128 próbek:

short L_in[128];

Tworzymy tablice wcześniej wyliczonych

współczynników filtra o tym samym

wymiarze

Tworzymy funkcję filtracji

Konfigurujemy kodek Audio

Odpalamy aplikacje i podziwiamy efekt

naszej pracy 

background image

Współczynniki filtra

Wyliczamy za pomocą Matlaba wykorzystując skrypt od TI.
Podajemy następujące parametry:

A w efekcie otrzymamy tablice współczynników filtra
o zadanych parametrach:

background image

Tłumienie filtra 8kHz

background image

Funkcja filtracji

short FILTR_L (short input, short *h)
{

int i;
short output;
int acc=0;
int prod;
L_in[0] = input; /* ODŚWIEŻA NAJNOWSZA PRÓBKĘ */

acc = 0; /* ZERUJE AKUMULATOR */
for (i=0; i<128; i++)

/* PETLA WYKONA SIE 128 RAZY */

{

prod = (h[i]*L_in[i]); /* MNOŻENIE Q.15 */
acc = acc + prod; /* ODŚWIEŻANIE 32-bit AKUMULATORA */

}
output = (short) (acc>>15);

/* PRZERABIANIE WYJSCIA DO WARTOSCI

16-bits. */

for (i=127; i>0; i--)

/* PRZESUNIĘCIE PRÓBEK */

L_in[i]=L_in[i-1];

return output;

/* ZWRACA PRZEFILTROWANA

PRÓBKĘ */
}

background image

Konfiguracja kodeka Audio

DSK6713_AIC23_Config config = {

0x0017, // 0 DSK6713_AIC23_LEFTINVOL

Glosnosc wejscia lewego kanalu

0x0017, // 1 DSK6713_AIC23_RIGHTINVOL

Glosnosc wejscia prawego kanalu

0x01f9, // 2 DSK6713_AIC23_LEFTHPVOL

Glosnosc lewego kanalu sluchawekF

0x01f9, // 3 DSK6713_AIC23_RIGHTHPVOL

Glosnosc prawego kanalu sluchawek

0x0011, // 4 DSK6713_AIC23_ANAPATH

kontrola analogowej sciezki audio

0x0000, // 5 DSK6713_AIC23_DIGPATH

kontrola cyfrowej sciezki audio

0x0000, // 6 DSK6713_AIC23_POWERDOWN

kontrola włączonych urządzeń

0x0043, // 7 DSK6713_AIC23_DIGIF

format interfejsu cyfrowego dzwieku

0x0081, // 8 DSK6713_AIC23_SAMPLERATE

kontrola czestotliwosci probkowania

0x0001 // 9 DSK6713_AIC23_DIGACT

aktywacja cyfrowego interfejsu

};

background image

Biblioteki

#include "C6713_DSK_FIRcfg.h"

#define CHIP_6713 1

/* Biblioteki płytki DSK6713 i kodeka audio*/

#include "dsk6713.h"

#include "dsk6713_aic23.h"

background image

VOID MAIN

void main()
{

DSK6713_AIC23_CodecHandle hCodec;
Int16 OUT_L,OUT_R;
Uint32 IN_L,IN_R;

/* INICJALIZACJA BIBLIOTEK */
DSK6713_init();
DSK6713_LED_init();
DSK6713_DIP_init();

/* WŁĄCZENIE KODEKA Z USTAWIENIAMI config */
hCodec = DSK6713_AIC23_openCodec(0, &config);

// USTAWIA CZĘSTOTLIWOŚĆ KODEKA NA 48KHz
DSK6713_AIC23_setFreq(hCodec, DSK6713_AIC23_FREQ_48KHZ );

background image

Pętla główna

while (1) //PĘTLA NIESKOŃCZONA
{

// CZYTAJ PRÓBKĘ Z LEWEGO KANAŁU

while (!DSK6713_AIC23_read(hCodec, &IN_L));

// CZYTAJ PRÓBKĘ Z PRAWEGO KANAŁU

while (!DSK6713_AIC23_read(hCodec, &IN_R));

OUT_L = FILTR_L(IN_L, h2); //FILTRÓJ LEWĄ PRÓBKĘ FILTREM h2
OUT_R = IN_R;

//PRZEKAŻ PRÓBKĘ PRAWĄ BEZ FILTROWANIA

/* WYŚLIJ PRÓBKĘ DO LEWEGO KANAŁU */

while (!DSK6713_AIC23_write(hCodec, OUT_L));

/* WYŚLIJ PRÓBKĘ DO PRAWEGO KANAŁU */

while (!DSK6713_AIC23_write(hCodec, OUT_R));

}

background image

HaPPy EnD

/* WYŁĄCZ KODEK */

DSK6713_AIC23_closeCodec(hCodec);

}


Wyszukiwarka

Podobne podstrony:
Ochrona Know how
Smoke If you think you know how to love me
NBox know how v5 2 FINAL
Do you know how?ngerous?st
Podstawy miks i master (Know How)
Do we really know how to promote?mocracy
e lerning know how 5 proj
Drill Know How
Ochrona Know how
biznes i ekonomia know how w dzialaniu jak zdobyc przewage konkurencyjna dzieki zarzadzaniu wiedza j
NBox know how v6 FINAL
Netzwerk know how
Drill Know How

więcej podobnych podstron