• Aucun résultat trouvé

5. Optimisation du BBFB

5.7. F ILTRAGE DES DONNEES SCIENTIFIQUES

5.7.2. Conception du filtre CIC pour le BBFB de test

Afin d’adapter le débit de données du BBFB de test à celui des autres BBFB optimisés, nous souhaitons créer un filtre passe-bas décimateur permettant de réduire la fréquence d’échantillonnage de 10 MHz à 312,5 kHz, soit un rapport de décimation égal à 32. Pour cela, la bande passante du filtre est fixée à 20 kHz avec un ripple dans la bande utile inférieure à 0,5 dB et l'atténuation du repliement dans la bande passante doit être d'au-moins 70 dB. Le gabarit du filtre est présenté en Figure 5.20. Selon les tables d’Hogenauer [94], un filtre CIC à 3 étages (ordre 3) permet une atténuation du repliement de 70,7 dB et un ripple max de 0,17 dB ce qui est en accord avec nos spécifications.

Fig. 5-20 : Gabarit du filtre décimateur des données scientifiques du pixel de test

Figure 5.20. Gabarit du filtre décimateur des données scientifiques du pixel de test

Il existe deux principaux types d’architecture CIC, série et parallèle. Dans une structure série, aussi appelée « pipeline », les divers blocs sont interconnectés en cascade. L’avantage de cette technique réside dans sa légèreté architecturale. Toutefois, elle reste limitée en termes de rapidité à cause de la propagation de groupe du signal. La structure parallèle [95] a quant à elle pour objectif d’augmenter la rapidité d’exécution au détriment de la simplicité architecturale. Le filtrage des données scientifiques de SAFARI intervient en dehors de la boucle d’asservissement et n’influe donc pas sur le comportement du BBFB (stabilité, performances). Nous utiliserons donc une structure série (cf. Figure 5.21) car le temps d’exécution n’est pas un critère primordial.

Fig. 5-21 : Structure série de filtre CIC

138 CHAPITRE 5. Optimisation du BBFB

L’implémentation d’un filtre CIC nécessite de prendre des précautions pour définir la taille des registres. En effet, les intégrateurs sont naturellement instables, leurs registres peuvent donc présenter des dépassements (overflow). Cependant, dans un filtre CIC les overflows n’ont aucun effet sur les données filtrées à condition que l’algorithme soit codé avec une arithmétique en complément à 2 et que les tailles des registres d’accumulation soient supérieures ou égales à la taille du signal de sortie. Prenons pour exemple d’application, le filtre CIC illustré en Figure 5.16 (a), composé d’un intégrateur suivi d’un différentiateur. Considérons 𝑅 = 2 et 𝑀 = 1 et étudions sa réponse à un échelon avec un signal 𝑥[𝑛] d’entiers signés sous 4 bits. La sortie est elle aussi codée sous 4 bits donc nous fixons le registre d’accumulation à un minimum de 4 bits pour visualiser le problème (nous pourrions le coder sous d’avantage de bits). L’évolution des registres au cours du temps est illustré en Table 5-4.

Table 5-4. Exemple d’application pour un filtre CIC d’ordre 1

On peut voir que l’accumulateur en 𝑢[𝑛] dépasse à partir du 8ème coup d’horloge et que ce dépassement de registre n’influe pas sur le résultat de sortie 𝑣[𝑛] grâce au complément à 2.

Dans le cas du filtrage des données scientifiques du pixel de test, l’entrée et la sortie du filtre sont codées sous 16 bits (𝐵𝑖𝑛 = 𝐵𝑜𝑢𝑡 = 16). La sortie de chaque étage intégrateur

accumule un nombre croissant de bits de l’étage précédent. Le nombre maximal de bits à mémoriser 𝐵𝑚𝑎𝑥 pour tout le filtre CIC est donné par [94] :

𝐵𝑚𝑎𝑥 = 𝑁 log2𝑅𝑀 + 𝐵𝑖𝑛− 1 (5.29)

où N est le nombre d’étages, R le facteur de décimation et 𝐵𝑖𝑛 le nombre de bits à l’entrée.

L’augmentation du nombre de bits 𝐵𝑔𝑟𝑜𝑤𝑡ℎ= 𝑁 log2𝑅𝑀 est directement liée au gain total

du filtre 𝐺 = (𝑅𝑀)𝑁. Pour ramener ce filtre à un gain unitaire, il est possible de diviser la sortie par un facteur G (par troncation par exemple) mais cela signifie que tout le filtre doit fonctionner sous 𝐵𝑚𝑎𝑥 bits. Plutôt que de compenser ce gain en une seule fois, nous allons le

corriger de manière progressive tout au long du filtre en tronquant les sorties de chaque étage. Pour cela on considère chaque étape de troncation comme une source de bruit blanc (erreur) caractérisée par sa moyenne et sa variance. La moyenne et la variance de l'erreur totale correspondent à la somme statistique de chaque source d'erreur. Le but est de supprimer progressivement des bits de poids faible (LSB) de sorte que le bruit généré par cette troncation puis amplifié par les gains des étages suivants ne dépasse pas la valeur d’un LSB en sortie de filtre. C’est l’opération de « Bits pruning » élaborée par Hogenauer [94].

CHAPITRE 5. Optimisation du BBFB 139

D’après son étude, pour les 𝑗 étages compris entre 1 et 2𝑁, le nombre de LSB à éliminer à chaque étage est :

𝐵𝑗 = ⌊− log2𝐹𝑗+ log2𝜎𝑇2𝑁+1 +1 2log2

6

𝑁⌋ (5.30)

où 𝐹𝑗 est la variance du bruit généré par chaque étage, 𝜎𝑇2𝑁+1 est la variance totale du bruit en sortie de filtre généré par tous les étages, 𝑁 représente l’ordre du filtre (i.e. le nombre d’étages) et ⌊𝑥⌋ est l’opérateur d’arrondi à l’entier inférieur. Grâce à cette expression, nous pouvons définir le nombre de LSB à éliminer en sortie de chaque étage de notre filtre CIC. Pour rappel, notre filtre présente les caractéristiques suivantes :

o nombre d’étages : N = 3 o facteur de décimation : R = 32 o délai différentiel : M = 1

o signal d’entrée codé sous Bin = 16 bits o signal de sortie codé sous Bout = 16 bits

J’ai développé sous Matlab une procédure permettant de calculer les 𝐵𝑗 bits à éliminer en

sortie de chaque étage et de définir la taille de chaque accumulateur du filtre CIC. Le résultat de cette procédure pour les caractéristiques listées ci-dessus est illustré en Table 5-5 ainsi qu’en Figure 5.22.

Fig. 5-22 : Évolution de la taille des registres du filtre CIC

140 CHAPITRE 5. Optimisation du BBFB

Table 5-5. Résultat du « bits pruning » appliqué à notre filtre

𝑩𝒋 (bits) Taille accumulateur (bits)

Intégrateur 1 1 30 Intégrateur 2 6 25 Intégrateur 3 9 22 Différenciateur 1 11 20 Différenciateur 2 12 19 Différenciateur 3 13 18 Sortie à 2N+1 15 16

Ce filtre CIC requiert donc 6 registres dont les tailles varient entre 30 et 16 bits, 6 additionneurs dont 3 cadencés à 10MHz et 3 autres à 312,5 kHz. Sa réponse en fréquence est tracée en Figure 5.23.

Fig. 5-23 : Module du diagramme de Bode du filtre CIC

Figure 5.23. Module du diagramme de Bode du filtre CIC en concordance avec le gabarit

L’avantage d’une structure de filtre CIC est qu’elle permet de générer à moindre coût des filtres-décimateur à haut facteur de décimation. C’est pour cela que j’ai développé le code VHDL de ce filtre afin de l’implémenter en sortie du pixel de test. Cependant il est impossible avec cette technologie de définir la forme du filtre (largeur de la bande de transition…) et le ripple dans la bande augmente considérablement avec le nombre d’étages.

CHAPITRE 5. Optimisation du BBFB 141

5.7.3. Design du filtre de données scientifiques générique pour

Documents relatifs