Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  


BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

AdministrationAnimauxArtComptabilitéDiversesDroitéducationélectronique
FilmsL'économieL'histoireL'informatiqueLa biologieLa géographieLa grammaireLa littérature
La médecineLa musiqueLa politiqueLa psychologieLa sociologieLe tourismeLes mathématiquesManagement
PersonnalitésPhysiqueRecettesSportTechnique

Application : filtrage numérique avec utilisation d’un CAN/CNA parallèle

technique

+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Trimite pe Messenger


Application : filtrage numérique avec utilisation d’un CAN/CNA parallèle

On désire réaliser un filtre numérique à partir d’un DSP TMS320C50 cadencé à 40 MHZ et d’un CAN/CNA parallèle l’AD7339 d’Analog Device.

Notion de filtres numériques :




Principe d’un filtre analogique :rappels

On définit un filtre analogique par sa réponse temporelle et par réponse fréquentielle. En général, c’est par rapport à sa réponse fréquentielle que l’on se base. On obtient ainsi des filtres passe-bas (atténuation des fréquences hautes, seules les fréquences basses passent) des filtres passe-haut (atténuation des fréquences basses) et des filtres passe-bande (seule une bande de fréquences passe).

Si l’on prend l’exemple du filtre passe-bas idéal, c’est à dire que ce filtre ne laisse passer que les fréquences inférieures à la fréquence de coupure du filtre notée fc. Les fréquences supérieures sont fortement atténuées. Ce filtre idéal n’est pas réalisable, mais la plupart des filtres analogiques s’en rapprochent.


|H(jf)| = S/E

 

fc

 

f

 

Réponse fréquentielle d’un filtre passe-bas idéal

 

Fig. 42 : Réponse impulsionnelle et réponse fréquentielle d’un filtre passe-bas idéal.

Rappel : pour obtenir la réponse fréquentielle d’un filtre il suffit d’envoyer un signal sinusoïdal de fréquence f et de faire le rapport des amplitudes |H(jf)|=S/E. Puis recommencer cette opération pour toutes les fréquences. On obtient alors la réponse fréquentielle donné à la figure 42.

Filtres numériques :filtres à réponse finie RIF

Le principe du filtre numérique est donné à la figure 43. Le problème consiste à trouver la relation entre les échantillons de sortie s(n) et les échantillons d’entrée e(n). Une solution consiste à chercher cette relation par rapport à la réponse impulsionnelle du filtre idéal (on prendra le cas du filtre passe-bas). Dans ce cas, on désire obtenir le filtre dont la réponse est donné à la figure 44.


Fig. 43 : Principe du filtre numérique.

e(t)

 

h(t)

 

Fig. 44 : Réponse impulsionnelle d’un filtre passe-bas numérique, cas où Fe = 6*fc

La réponse impulsionnelle du filtre passe-bas numérique FIR (filtre à réponse finie), dépend de la fréquence d’échantillonnage Fe. Plus la fréquence d’échantillonnage est grande et plus la réponse du filtre sera fidèle à la réponse analogique du filtre idéal. L’exemple de la figure 44 est pris pour Fe = 6*fc. Pour Fe = 12*fc, la réponse du filtre est donné à la figure 45.


Fig. 45 : Réponse impulsionnelle d’un filtre passe-bas numérique, cas où Fe = 12*fc

Calcul des échantillons h(k) :

Etant donné que l’on a pris comme hypothèse que l’on a une réponse finie, et c’est ce que l’on voit sur le graphique, la réponse d’un filtre numérique est de la forme :

Pour la réponse impulsionnelle, on a seulement l’échantillon e(0). Dans ce cas on trouve s(0) = h(0).e(0), puis s(1) = h(1).e(0), puis s(i) = h(i).e(0) etc jusqu'à s(N) = h(N).e(0). Donc les h(n) sont les valeurs de h(t) (réponse impulsionnelle du filtre) aux instants d’échantillonnage.

Il suffit donc de connaitre la réponse impulsionnelle du filtre passe-bas h(t) : soit

On en déduit donc la valeur des coefficients en fonction de la fréquence d’échantillonnage :

On en déduit donc que la réponse d’un filtre à l’instant n se calcule par rapport aux N échantillons précédents. La figure 46 nous donne le principe pour un signal quelconque.

 

Sens de déplacement de la fenêtre

 

s(n)

 

Taille de la fenêtre :N échantillons

 

Fig.46 : Principe du filtrage numérique, l’échantillon s(n) est fonction des N échantillons précédents e(n-k)

Problème du recouvrement de spectre ou Aliasing :

Fig. 47.1 : Signal e(t) de fréquence f = Fe + Df est échantillonné tous les Te.

(Te = 1/Fe).

 

Te

 



Fig 47.2 : signal e(t) de fréquence Df

 

Fig. 47 : Un signal e(t) de fréquence Fe + Df (Cf figure 47.1) est équivalent (après échantillonnage) au signal e(t) de fréquence Df (Cf figure 47.2).

Le signal e(t) de fréquence f > Fe/2 est vue par le processeur comme un signal de fréquence beaucoup plus faible. Ce qui implique que pour un filtre passe-bas un signal de fréquence très grande (f > Fe/2) pourra passer à travers le filtre passe-bas, alors qu’il aurait du être atténué.

Théorème de Shanon : La fréquence d’échantillonnage Fe doit être supérieure à deux fois la fréquence maximale du signal.

Fe = 2* Fmax

Donc pour éviter les problèmes de recouvrement de spectre, on prendra soin de placer à l’entrée du CAN un filtre passe-bas analogique de fréquence de coupure fc < Fe/2.

Filtre de lissage :

Le signal s(t) en sortie du filtre numérique est un signal en marche d’escalier, étant donné qu’entre 2 calculs d’échantillons, l’ancien échantillon est bloqué pendant Te. Afin de lisser le signal de sortie, on placera un filtre passe-bas en sortie du CNA de fréquence de coupure fc > Fe.

La figure 48 illustre ce principe : Un signal sinusoïdal de fréquence f = Fe*6 (répond au théorème de Shannon) est filtré par un filtre FIR. En sortie de ce filtre on obtient un signal en escalier.

 

Fig. 48 : Signal sinusoïdal de fréquence f

en sortie d’un CNA de fréquence Fe = f/6.

Chaine complète du traitement du signal :

La chaine complète du traitement du signal sera donc toujours constitué des mêmes éléments :

un filtre passe-bas anti-repliement qui élimine toutes les fréquences supérieures à Fe/2,

un CAN de fréquence d’échantillonnage Fe,

un processeur qui génère un signal s(n) en fonction des échantillons e(n-i) précédents et de l’échantillon courant (Filtre FIR) et des s(n-i) précédents (Filtre IIR),

un CNA qui génère un signal analogique en escalier,

un filtre passe-bas de lissage qui filtre le signal.


Fig. 48 :Chaine de traitement du signal.

Etude de la carte :

On désire implémenter ce filtre à l’aide d’un DSP TMS320C50 cadencé à 20 MHz et d’un CAN-CNA l’AD7339 convertisseur 8 bits d’Analog Device dont la documentation technique est donné en ANNEXE.

Pour cela nous avons besoin de connaitre les chronogrammes en lecture et en écriture du DSP (ces chronogrammes sont fournis en ANNEXE) et les chronogrammes de l’AD7339.

l’AD7339 possède :

un CAN (ADC) sortie parallèle :entrée signal AIN et sortie sur 8 bits (D7-D0),

2 CNA (DAC) parallèle : entrées DA7-DA0 et DB7-DB0, sorties DACA et DACB,

2 CNA (DAC) séries : entrées SDATA et SCLK, sorties SDAC0 et SDA1 (sorties différentielles),

référence de tension interne.

Nous allons utiliser le CAN et le CNA DACA à sortie parallèle.

Le CAN quantifie les signaux analogiques entre +1V et -1V. Son quantum q est donc égal à :

q = 2V/256 = 7,8mV.

Le CNA a sa tension de sortie Vout qui varie entre -1,4V et +1,4V et donc possède un quantum q égal à

q = 2,8V/256 = 10,93mV

Le CAN-CNA nous amène donc un gain de 1,4.

7,8mV

 

Fig. 49 : Caractéristiques d’entrée/sortie du CAN Fig. 50 : Relation entre entrée/sortie du CNA.

Schéma de principe de la carte:

Remarques sur le CAN : une lecture du chronogramme de l’AD7339 (figure 3 de la fiche technique sur l’AD7339) nous montre que l’échantillonnage se fait sur le front montant de ADCCLK et que cet échantillon est lisible après un temps t4 suivant le front descendant de ADCCLK. Il est de plus évident que cet échantillon reste présent sur les broches D7-D0 jusqu’au prochain échantillonnage. Ce qui implique, pour ne pas perturber le bus de données, de placer entre les broches D7-D0 et le bus de données un buffer 3 états.

Remarques sur le CNA : l’écriture des données dan le CNA se fait sur le front montant du signal DACCLK. Il faut (Cf figure 4 de la fiche technique sur l’AD7339) que la donnée soit présente pendant le temps t9 (130 ns) avant le front montant et reste pendant t10 (50 ns) après le front montant.

Remarques sur le DSP : une lecture du CAN se fait par le biais des broches de commandes DS et RD pour un accès en mémoire données et par les broches IS et RD pour un accès aux ports d’entrée/sortie. L’accès au CAN se fera par l’instruction IN (soit un accès aux ports).

Une écriture vers le CNA de la même façon se fait par les boches de commandes DS et WR en mémoire données et par les broches IS et WR pour un accès aux ports d’entrée/sortie. L’accès au CNA se fera par l’instruction OUT (soit un accès aux ports).

Pour simplifier, nous ne ferons pas de décodage d’adresses, et donc une écriture à n’importe quelle adresse de l’espace des ports viendra écrire dans le CNA et de même, une lecture viendra lire le CAN, et ceci quel que soit l’adresse.

On obtient donc le schéma de principe suivant : Cf figure 51

Il nous reste à déterminer les 2 logiques de décodage qui permettront de répondre aux contraintes posées par les 2 chronogrammes du DSP et de l’AD7339.

Pour cela, il nous faut faire la synthèse des 2 chronogrammes en lecture et en écriture. Ceci est fait à la figure 52 et 53.

Fig. 51 : Schéma de principe de la carte à base d’AD7339.



Etude de la logique de décodage 1 :lecture du CAN

Pour le DSP la lecture sur le bus de données s’effectue sur le front montant de la broche RD, alors que le CAN est plutôt fait pour être lu sur le front descendant de la broche ADCCLK. Lorsque RD est à 0 (demande de lecture) il faudra rendre passant le buffer 74HC540 (soit G mis à 0). Ceci est résumé par le timing de la figure 52.


Fig. 52 : synthèse des chronogrammes pour la lecture du CAN

La contrainte la plus forte est donnée par le temps t3 qui doit être au moins de 210 ns. En fonction de la figure 52, on déduit les tableaux de KARNAUD des signaux ADCCLK et G en fonction de RD et IS.

G ADCCLK

RD/IS

RD/IS

Donc G = RD OU IS et ADCCLK = RD OU IS

De plus les signaux RD et IS doivent avoir un niveau bas pendant au moins 210 ns. Ors TCLKOUT1 = 100 ns

( 2/20 MHz) et sur le timing fourni en ANNEXE le RD dure une demi période soit TRD = 50 ns pour un 0 Wait State. Il faudra donc rajouter des temps d’attente logiciels. On prendra 2 temps de cycle d’attente (TRD =250 ns).

Etude de la logique de décodage 2 : écriture vers le CNA

Lors d’un accès en écriture sur les ports, les broches WE et IS passe à 0 et la valeur est placée sur le bus de données. Pour le CNA, c’est un front montant sur la broche DACCLK qui génère la conversion numérique analogique (Cf figure 53).

Les contraintes de timing sont imposées par le CNA. Il faut que la données soit présente pendant le temps t9 (130 ns) avant le front montant et reste pendant t10 (50 ns) après le front montant. Etant donné que l’on a inséré un temps d’attente de 2 cycles (soit 250 ns) la condition sur t9 est vrai. Le timing donné par TEXAS nous donne un temps de 40 ns entre le front montant de WE et la disparition des données ce qui n’est pas suffisant.

Solution :on prendra un 74HC273 (octuple bascule D) qui permettra de garder sur AD7-AD0 la valeur écrite sur le bus de données et cela jusqu’au prochain échantillon.


Fig. 53 : synthèse des chronogrammes pour l’écriture sur le CNA

La logique de décodage est évidente : DACCLK = WE OU IS

Le schéma de la carte est donné en ANNEXE.

Programmation de la carte :

Le programme réside en mémoire EEPROM. A l’initialisation, la mémoire SARAM est placée en mémoire données interne et le bloc B0 en mémoire programme. L’espace des entrée/sortie sera lu avec 2 temps d’attente. la fréquence d’échantillonnage est fixée à 50 KHz, pour Fclk = 20 MHz.



Pour programmer un filtre FIR, on a 2 solutions :

utilisation des buffers circulaires :Cf programme donné en ANNEXE

utilisation de l’instruction MADD : vu au chapitre 2.1.7.

Nous utilisons la deuxième méthode. AR7 est initialisé sur la fin du tableau et AR6 pointe sur le début du tableau. AR7 est le pointeur courant sur le tableau. A chaque fois que l’on part en routine d’interruption timer pour le calcul du filtre, les échantillons sont déplacés vers le bas, ce qui laisse la place pour le nouvel échantillon à l’échantillonnage suivant. Le filtre implémenté aura 9 échantillons. La figure ci-dessous nous donne l’état de la mémoire au moment du calcul du filtre et juste après le calcul (instruction APAC)


.title ‘Filtre FIR’

.mmregs

.ds 0310h

TEMP  .word

.ps 030h ; coefficient du filtre

COEFF  .word ;placer les 9 coefficients

.ps  0808h ; adresse du vecteur d’interruption de timer

timer :  B rout_timer ; Branchement vers la routine d’interruption ITINT

.ps 0840h

.entry ; point d’entrée du programme

SETC INTM ; désactivation des interruptions

LDP #0 : page 0

SPLK #0820h, PMST ; RAM = 0 et OVLY = 1

; SRAM en mémoire données et vecteurs d’it à l’adresse 0800h

SETC CNF ; bloc B0 en mémoire programme

SETC OVM ; prise en compte de la saturation

; init wait state

LACL #0

SAMM CWSR ; Big = 0, choix d’attente pour toutes les mémoires égal à 0,1,2,3

SAMM PDWSR ; pas d’attente pour les accès en mémoire externe

SPLK #AAAAh, IOWSR : attente de 2 cycles pour l’espace des entrée/sortie

LAR AR6, #300h ; initialisation de AR6

MAR *, AR6 ; AR6 est le pointeur courant

;initialisation du timer

SPLK #199, PRD ; Tint = 200 * Tclkout = 20 us

SPLK #20h, TCR ; Charge PRD TIM et 0 PSC et TSS = 0 : départ compteur

SPLK #1000b, IFR ; efface toutes les interruptions

LACL #0 ; initialisation de ACC pour la routine d’interruption du TIMER

CLRC INTM ; activation des it

WAIT  B WAIT

.ps FE00h ; routine d’it placée dans le bloc B0 pour accélérer le traitement

rout_timer : LAR AR7, #309h ; initilaisation de AR7

SPLK #COEFF, BMAR ; récupération du début de l’adresse des coefficients

LAMM 50h, AR6 ; lecture du port dans ACC

SACL *, AR7 ; (AR6) ACC, pointeur courant AR7

RPTZ #9 ; ACC = PREG = 0. For i = 9 to 0 Do

MADD  *- ; Somme des ai * xi xi+1 = xi

APAC  ; dernière somme

LDP  #6

SACH TEMP

LACL TEMP

LDP  #0

SAMM  50h, AR6 ; envoie de la valeur sur le port

RETE






Politica de confidentialitate



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1661
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site