FR 2731854 A1 19960920 FR 9502946 A 19950314 DISPOSITIF DE FILTRAGE DIGITAL L'invention concemrne un dispositif de filtrage dans un système de traitement numérique du signal. L'invention peut notamment être utilisée pour la mise en oeuvre de plusieurs filtres digitaux en série. L'implémentation de filtres digitaux implique souvent l'utilisation de nombreux éléments de circuit identiques, ce qui a pour conséquence un coût élevé en surface de substrat. L'invention a pour objet un dispositif de filtrage digital d'échantillons caractérisé en ce qu'il comprend: un moyen de mémorisation de coefficients d'au moins deux filtres et de données indiquant l'appartenance d'un coefficient à un desdits filtres, des moyens de multiplication d'un desdits coefficient par un échantillon, des moyens d'accumulation des sommes partielles de résultats de multiplication pour chacun desdits filtres. Un tel multiplexage permet l'utilisation d'un seul multiplieur. De plus, la façon dont les données sont stockées dans la ROM permet d'ordonner l'ordre des calculs et de fixer le moment d'apparition des échantillons filtrés en sortie du dispositif. Selon un mode de réalisation particulier, ledit moyen de mémorisation est une mémoire morte comportant de manière entrelacée les coefficients desdits filtres ainsi que pour chaque coefficient une donnée identifiant le filtre auquel appartient ledit coefficient. Selon un mode de réalisation particulier, les moyens de multiplication comprennent un unique multiplicateur. Selon un mode de réalisation particulier, lesdits moyens d'accumulation comportent des registres tampon. Selon un mode de réalisation particulier, les moyens de mémorisation stockent les coefficients d'un premier et d'un second filtres en série. 2 2731854 Selon un mode de réalisation particulier, ledit dispositif comporte deux mémoires vives (2, 3) dont la première (2) stocke lesdits échantillons (Xi), tandis que la seconde (3) stocke les échantillons filtrés par le premier desdits filtres (FA). Selon un mode de réalisation particulier, au moins un des filtres réalise un suréchantillonnage. Selon un mode de réalisation particulier, les coefficients de filtres suivant un filtre réalisant un suréchantillonnage sont stockés de manière répétée dans lesdits moyens de mémorisation. Selon un mode de réalisation particulier, les coefficients nuls d'un filtre symétrique ne sont pas stockés. Selon un mode de réalisation particulier, le coefficient central non nul d'un filtre symétrique n'est pas stocké dans lesdits moyens de mémorisation, les calculs concernant ledit coefficient central étant effectués à part. Selon un mode de réalisation particulier, chaque coefficient stocké dans lesdits moyens de mémorisation est lu séquentiellement, ledit coefficient étant multiplié par un desdits échantillons, ledites données indiquant l'appartenance d'un coefficient à un desdits filtres déterminant par quels moyens d'accumulation le résultat de la multiplication sera accumulé. Selon un mode de réalisation particulier, après la fin des calculs relatifs à un filtre donné, tous les résultats accumulés dans les moyens d'accumulation sont évacués desdits moyens. D'autres caractéristiques de l'invention apparaîtront à travers la description d'un exemple de réalisation particulier et non limitatif illustré par les figures jointes parmi lesquelles: -la figure I représente symboliquement le suréchantillonnage effectué par les filtres du présent exemple, 3 2731854 -la figure 2 représente schématiquement un circuit conforme à l'invention, et -la figure 3 représente un organigramme décrivant le fonctionnement du circuit de la figure 2. Selon le présent exemple de réalisation, on soumet des échantillons à fréquence Fs successivement à deux filtres, FA et FB. Le premier filtre FA est un filtre demi-bande symétrique du 133e ordre, réalisant un suréchantillonnage de facteur 2. Grâce à ses propriétés inhérentes, ce filtre peut être implémenté à l'aide de 33 coefficients. Le second filtre FB est un filtre du 46e ordre, représenté à l'aide de 46 coefficients et réalisant un suréchantillonnage supplémentaire de facteur 4. Globalement, les deux filtres en série suréchantillonnent donc d'un facteur 8. Les principes du suréchantillonnage utilisés par les filtres sont en soi bien connus et ne seront pas détaillés davantage. La figure I illustre le suréchantillonnage en faisant figurer deux échantillons du signal d'entrée et les échantillons à la sortie des deux filtres FA et FB. Pendant une période de Fs, 33 multiplications doivent être réalisées pour la mise en oeuvre du filtre FA, et 2*46=92 pour la mise en oeuvre du filtre FB, ce qui fait un total de 125 multiplications. On peut donc faire fonctionner le circuit avec une horloge dont la fréquence est égale au minimum à 125*Fs. Pour des raisons évidentes de simplification, on choisit une horloge de 128*Fs. Il est à noter que si le circuit conforme au présent exemple est implémenté dans un circuit de traitement audio, on doublera la fréquence d'horloge suivant la nature mono ou stéréo des signaux à traiter. Le rapport entre le nombre de multiplications à effectuer pour FA et celui pour FB est d'environ 1/3. On effectue une multiplication pour FA, puis trois pour FB et ainsi de suite jusqu'à épuisement des 46 coefficients du filtre FB. La seconde série de 46 coefficients est traitée de manière similaire. Le tableau 1 donne l'arrangement des coefficients dans la ROM. 4 2731854 Adr. Filt. Coef. Adr. Filt. Coef. Adr. Filtr. Coef. Adr. Filt. Coef. O A A0 32 A A8 64 B B1 96 B B25 1I B BO 33 B B24 65 B B2 97 B B26 2 B B1 34 B B25 66 A A17 98 A A25 3 B B2 35 B B26 67 B B3 99 B B27 4 A A1 36 A A9 68 B B4 100 B B28 B B3 37 B B27 69 B B5 101 B B29 6 B B4 38 B B28 70 A A18 102A A26 7 B B5 39 B B29 71 B B6 103 B B30 8 A A2 40 A A10 72 B B7 104B B31 9 B B6 41 B B30 73 B B8 105 B B32 B B7 42 B B31 74 A A19 106 A A27 11 B B8 43 B B32 75 B B9 107 B B33 12 A A3 44 A All 76 B B10 108 B B34 13 B B9 45 B B33 77 B Bl1 109 B B35 14 B B10 46 B B34 78 A A20 110 A A28 B Bll 47 B B35 79 B B12 111 B B36 16 A A4 48 A A12 80 B B13 112 B B37 17 B B12 49 B B36 81 B B14 113 B B38 18 B B13 50 B B37 82 A A21 114 A A29 19 B B14 51 B B38 83 B B15 115 B B39 A A5 52 A A13 84 B B16 116 B B40 21 B B15 53 B B39 85 B B17 117 B B41 22 B B16 54 B B40 86 A A22 118 A A30 23 B B17 55 B B41 87 B B18 119 B B42 24 A A6 56 A A14 88 B B19 120 B B43 B B18 57 B B42 89 B B20 121 B B44 26 B B29 58 B B43 90 A A23 122A A31 27 B IB20 59 B B44 91 B B21 123 B B45 28 A A7 60 A A15 92 B B22 124 A A32 29 B B21 61 B B45 93 B B23 B B22 62 A A16 94 A A24 31 B B23 63 B B0 95 B B24 (Adr. = adresse; Filt. = Filtre; Coef. = Coefficient) Ai désigne les coefficients du premier filtre, tandis que Bi désigne les coefficients du second filtre. On remarquera que le tableau contient de manière répétitive les coefficients du filtre FB, ces coefficients étant utilisés à la fréquence 2*Fs étant donné que le filtre FA suréchantillonne d'un facteur 2. La figure 2 est un schéma fonctionnel du circuit conforme au présent exemple de réalisation. La mémoire morte I contient en substance les informations du tableau 1, chaque coefficient étant codé sur 17 bits. Un bit supplémentaire est alloué pour chaque coefficient pour indiquer le filtre auquel il appartient. La mémoire morte 1, qui a donc une taille de 125*18 bits, est lue séquentiellement. C'est le bit d'identification du filtre qui détermine les différents multiplexages réalisés dans le reste du circuit. En cela, le contenu de la mémoire morte forme un programme de séquencement des opérations à l'intérieur du circuit. Le circuit de la figure 2 comporte également une mémoire vive 2 qui stocke les échantillons en entrée de FA (échantillons Xi) et une mémoire vive 3 stockant les échantillons en entrée de FB (échantillons Xi). Les échantillons sont codés sur 19 bits. La mémoire vive 2 stocke 67 échantillons pour le filtre FA, tandis que la mémoire vive 3 stocke 12 pour le filtre FB, étant donné les suréchantillonnages effectués. Etant donné le caractère symétrique du filtre FA, un premier échantillon lu dans la mémoire 2 est mémorisé dans un registre tampon 4, un second échantillon étant lu pour être additionné au premier par l'intermédiaire d'un additionneur 5. Cette somme de coefficients est alors multiplexée par un multiplexeur avec un des échantillons lus dans la mémoire vive 3. Le multiplexeur est commandé par l'état du bit d'identification du filtre lu dans la ROM 1. La sortie du mutliplexeur 6 est mémorisée dans un registre tampon 7, tandis que le coefficient lu dans la ROM 1 est mémorisé dans un registre 8. Le contenu des registres 7 et 8 est multiplié par un multiplieur 9, le résultat étant stocké dans le registre tampon 10 pour être additionné par un additionneur 11 à la somme partielle déjà réalisée pour le filtre auquel il correspond. La somme partielle correspondant au filtre FA est stockée dans un registre tampon 14. Pour des raisons vues plus loin (les coefficients nul et le coefficient central du filtre n'étant pas stockés dans la ROM 1), le circuit de la figure 2 ne calcule qu'un résultat sur deux du filtre FA C'est pour cela qu'un seul registre tampon est utilisé ici. Le filtre FB fournit quatre résultats par demi-période de Fs, c'est à dire pour 46 multiplications. Ces quatre résultats sont stockés dans un registre à décalage 12 formé de quatre registres tampon en série. Ces quatre résultats correspondent aux sommes partielles s'accumulant lors des calculs effectués pour les quatre derniers coefficients (42 à 45) du filtre FA 6 2731854 Ces résultats sont évacués en série après le calcul effectué pour le dernier coefficient. Le registre à décalage 12 reboucle lui aussi sur le multiplexeur 13. Comme le multiplexeur 6, le multiplexeur 13 est commandé, lors des phases de multiplication, par l'état du bit d'identification du filtre. Les deux registres 12 et 14 reçoivent la sortie de l'additionneur 11. Tout résultat final de l'un des filtres est stocké dans un registre 15. Lorsque ce résultat appartient au filtre FA, il est stocké dans la RAM 3 pour être ultérieurement utilisé par le filtre FB. Les résultats en sortie du filtre FB sont disponibles en sortie du registre 15. La figure 3 est un organigramme illustrant le fonctionnement du circuit de la figure 2. Pour la clarté des explications, le traitement des deux filtres a été artificiellement séparé. L'indice i correspond à l'indice d'ordre des coefficients dans la mémoire morte 1, @(i) indiquant l'adresse du coefficient i. Selon le présent exemple, le contrôle du circuit est exercé par un microprocesseur non illustré. La première étape (21) consiste à lire la mémoire morte 1 à l'adresse @(i), l'indice i ayant été au préalable initialisé à la valeur appropriée. Le bit d'identification du filtre du coefficient i est testé lors d'une étape 22 (coefficients Ai pour le filtre FA et Bi pour le filtre FB). Les étapes 23 à 29 correspondent au premier filtre, tandis que les étapes 30 à 33 correspondent au second filtre. L'étape 23 correspond à la lecture de deux échantillons dans la mémoire vive 2. Il s'agit des deux échantillons "symétriques" correspondant au coefficient Ai, le filtre FA étant un filtre symétrique. Ces deux coefficients sont ensuite additionnés lors d'une étape 24, multipliés par Ai, le résultat étant ajouté à la somme partielle en cours. On teste alors si le dernier coefficient de FA a été traité (étape 26). Dans l'affirmative, le résultat d'accumulation final est stocké dans la RAM 3, le registre à décalage 12 est réinitialisé à zéro, l'indice i est également mis à zéro (respectivement étapes 27 à 29) et la lecture de la ROM 1 est reprise depuis le début. Dans la négative, on incrémente i (étape ) et on reprend la lecture de la ROM 1. L'étape 30 correspond à la lecture d'un échantillon de la RAM 3 pour le calcul correspondant au filtre FB. L'échantillon est multiplié par Bi et accumulé avec la somme partielle correspondante déjà calculée. On teste alors (étape 32) si Bi correspond à un dernier coefficient (45) de FB. Si c'est le cas, les quatre résultats des accumulations successives sont transmis à la sortie du circuit et le registre d'accumulation 14 est réinitialisé. Si ce n'est pas le cas, i est incrémenté et on reprend la lecture de la ROM 1. La double flèche hachurée du schéma de la figure 3 indique que les étapes 25 et 30 sont effectuées par le même élément de circuit. Le filtre FA est dans le présent cas un filtre dont le coefficient central est non nul. Il s'agit là du seul coefficient d'ordre impair non nul. Une conséquence du suréchantillonnage d'un facteur deux en entrée du filtre FA est que chaque second résultat en sortie du filtre résulte uniquement de la multiplication de ce coefficient central par un échantillon, toutes les autres multiplications ayant un résultat nul. En effet, si la séquence des échantillons est: xOxl,x2,.... alors le filtre FA traite: xO, xl,O,,x2,0... Or, les coefficients du filtre sont du type: C0,0,C2,0.. 'Ccentral-. central' central+l'.. 0, CPL Dans un premier temps, le résultat suivant est calculé: Cox0 +C2x1+... Lors de la seconde alternance, le calcul suivant devrait être effectué: CO*O+O*X1 +C2*0++Ccentra * xi+...+0*Xn Seul Ccentral* xi n'est pas nul. En conséquence, seule une altemance sur deux est calculée en utilisant l'entrelacement indiqué. Le cas du coefficient central est traité à part lors d'une étape 36, pour éviter un grand nombre de calculs inutiles par le multiplieur 9. C'est le microprocesseur (ou équivalent) qui effectue directement le calcul et stocke le résultat dans la RAM 3. Bien entendu, l'invention ne se limite pas à l'exemple de réalisation décrit ci-dessus. Elle s'applique aussi à un nombre de filtres plus importants et dans des cas o il n'y a pas de suréchantillonnage. De même, les filtres ne sont pas nécessairement en série, mais peuvent être disposés en parallèle. Selon un mode de réalisation particulier, on prévoit une seule RAM pour les deux filtres, ceci permettant de simplifier l'adressage. REVENDICATIONS 1. Dispositif de filtrage digital d'échantillons caractérisé en ce qu'il comprend: un moyen de mémorisation (1) de coefficients (Ai, Bi) d'au moins deux filtres (FA, FB) et de données indiquant l'appartenance d'un coefficient à un desdits filtres, des moyens de multiplication (9) d'un desdits coefficients (Ai, Bi) par un échantillon (Xi, Xi), des moyens d'accumulation (12, 14) des sommes partielles de résultats de multiplication pour chacun desdits filtres (FA, FB). 2. Dispositif selon la revendication 1, caractérisé en ce que ledit moyen de mémorisation est une mémoire morte (1) comportant de manière entrelacée les coefficients desdits filtres ainsi que pour chaque coefficient une donnée identifiant le filtre auquel appartient ledit coefficient 3. Dispositif selon la revendication I ou 2, caractérisé en ce que les moyens de multiplication (9) comprennent un unique multiplicateur. 4. Dispositif selon l'une des revendications précédentes, caractérisé en ce que lesdits moyens d'accumulation (12, 14) comportent des registres tampon. 5. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'au moins un des deux filtres réalise un suréchantillonnage. 6. Dispositif selon la revendication 5, caractérisé en ce que les coefficients de filtres (FB) suivant un filtre (FA) réalisant un suréchantillonnage sont stockés de manière répétée dans lesdits moyens de mémorisation (1). 7. Dispositif selon l'une des revendications précédentes, caractérisé en ce que les coefficients nuls d'un filtre symétrique (FA) ne sont pas stockés. 2731854 8. Dispositif selon la revendication 7, caractérisé en ce que le coefficient central non nul d'un filtre symétrique (FA) n'est pas stocké dans lesdits moyens de mémorisation (1), les calculs concemrnant ledit coefficient central étant effectués à part. 9. Dispositif selon l'une des revendications précédentes, caractérisé en ce que lesdits moyens de mémorisation stockent les coefficients d'un premier et d'un second filtres en série (FA, FB). 10. Dispositif selon la revendication 9, caractérisé en ce qu'il comporte deux mémoires vives (2, 3) dont la première (2) stocke lesdits échantillons (Xi), tandis que la seconde (3) stocke les échantillons filtrés par le premier desdits filtres (FA). 11. Dispositif selon l'une des revendications précédentes, caractérisé en ce que chaque coefficient stocké dans lesdits moyens de mémorisation est lu séquentiellement, ledit coefficient étant multiplié par un desdits échantillons, ledites données indiquant l'appartenance crd'un coefficient à un desdits filtres déterminant par quels moyens d'accumulation le résultat de la multiplication sera accumulé. 12. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'après la fin des calculs relatifs à un filtre donné, tous les résultats accumulés dans les moyens d'accumulation (14) sont évacués desdits moyens.