Zertyui
Zertyui
Zertyui
Format (2.14)
0.7*2 1
04*20
0.8*21
0.6*21
0.2*20
04*20
0.8*21
0.6*21
0.2*20
04*20
0.8*21
0.6*21
0.2*20
04*20
Format (1.15)
0.5=0.10000..00 = 4000
0.7=599A
0.5+0.7
-0.3-0.7
#include "defBF533.h"
.global _main;
.section program;
.align 2;
_main:
R0.L= D99A;//-0.3
R0.H=4000;//0.5
R1.L= 599A;//0.7
R1.H=599A;//0.7
R2.L = 0000;//0
R2.H = 0000;//0
R2=R0+|-R1 (s);
_main.end:
Signal avec Fe1 = 48 kHz Sous-échantillonnage avec le facteur Q = 6 donc Fe2 = 48000/6 = 8 kHz
On utilise le Ré-echantillonnage par exemple pour : -acquérir un signal de parole en éliminant des
informations car l’intervalle d’ouïe est [20 Hz , 20 kHz] pour la parole Fe2 = 8 kHz c’est largement
suffisant. Fe2/Fe1 =1/Q 8/48= 1/68 kHz = 48kHz/6 (on a gardé 1 échantillon sur 6).
Par contre pour l’audio si on a effectué une acquisition de musique à Fe1= 8 kHz il faut sur-
échantillonner le signal audio pour arriver à Fe2 = 48 kHz. ==> Interpolation afin d’augmenter la
qualité. Fe2/Fe1 =P 48/8= 6 =P (on intercale 6 zéros entre l’échantillon original).
Pour le cas d’interpolation, on répète le signal original P fois donc on doit appliquer un filtre passe-
bas qui a comme fréquence de coupure Fe1/2 afin d’éliminer la répétition.
Aussi il faut faire de Ré-echantillonnage pour additionner deux signaux de Fe différente afin
d’analyser le signal composite.
#include <cdefBF533.h>
#include <filter.h>
#include <fract.h>
fract16 inp_arr[INPUTSIZE] =
{#include "sine1k.dat" };
// c’est le signal d’entrée de taille 480 qui se trouve dans un tableau intitulé inp_arr
fir_state_fr16 filter_state_dec;
fract16 delay_dec[128];
fir_state_fr16 filter_state_interp_8to16;
fract16 delay_interp_8to16[64];
fract16 coeff_interp_8to16[64] = {
#include "interp_8kto16k_64taps.dat"
};
- Les coefficients du filtre intitulé coeff_interp_8to16 (64 coefficients) RIF de type fract 16
- Etat de filtre intitulé « filter_state_interp_8to16” de type fir_state_fr16
- Retard de décimation intitulé « delay_interp_8to16 ” de type fract 16 avec format (1.15)
- Nbre de coeff 128 coeffs (64taps) c’est un fichier à appeler interp_8kto16k_64taps.dat
- Interpolation index c’est l’indice d’ Interpolation 2
*/
fir_state_fr16 filter_state_interp_16to32;
fract16 delay_interp_16to32[64];
- Les coefficients du filtre intitulé coeff_interp_16to32 (64 coefficients) RIF de type fract 16
- Etat de filtre intitulé « filter_state_interp_16to32” de type fir_state_fr16
- Retard de décimation intitulé « delay_interp_16to32 ” de type fract 16 avec format (1.15)
- Nbre de coeff 64 coeffs (64taps) c’est un fichier à appeler interp_16kto32k_64taps.dat
- Interpolation index c’est l’indice d’ Interpolation 2
*/
fir_state_fr16 filter_state_interp_16to48;
fract16 delay_interp_16to48[96];
fract16 coeff_interp_16to48[96] = {
#include "interp_16kto48k_96taps.dat"
};
*/
fract16 out8k[INPUTSIZE/6];
fract16 out16k[2*INPUTSIZE/6];
fract16 out32k[2*2*INPUTSIZE/6];
fract16 out48k[3*2*INPUTSIZE/6];
/on obtient quatre sortie out8k de taille 480/6, out16k de taille2*[480/6], out32k 2*2*[480/6] et
out48k 3*2*[480/6] et toutes les sorties sont de type fract16 */
int main()
fir_init(filter_state_interp_8to16, coeff_interp_8to16,
delay_interp_8to16,64/2,2);
fir_init(filter_state_interp_16to32, coeff_interp_16to32,
delay_interp_16to32,64/2,2);
fir_init(filter_state_interp_16to48, coeff_interp_16to48,
delay_interp_16to48,96/3,3);