FR 2790322 A1 20000901 FR 9902456 A 19990226 DESCRIPTION L'invention concerne un circuit co-processeur programmable destiné à être associé à un processeur principal pour constituer un filtre numérique à coefficients prédéterminés, circuit comprenant un organe de calcul commandé par un organe de contrôle et recevant des données d'entrée, pour fournir en sortie une suite de résultats de filtre. Elle concerne également un récepteur de télévision numérique comportant un bloc de démodulation muni d'un dispositif de filtrage. L'invention concerne enfin un procédé de calcul de filtres pour réaliser des filtres numériques multiplexés à coefficients prédéterminés, à l'aide d'un circuit co-processeur programmable. Elle a de nombreuses applications notamment dans des systèmes dits " multimédia " pour réaliser des filtres numériques en utilisant, par exemple, un processeur de signal, du genre dit DSP, avec des algorithmes spécialisés. L'article de T.C. Denk et ai. Intitulé " reconfigurable hardware for efficient implementation of programmable FIR filters " publié dans la revue ICASSP de mai 1998, décrit une architecture de filtre à réponse impulsionnelle finie permettant d'anticiper le calcul d'un résultat de filtre avant l'arrivée de la dernière donnée participant à ce résultat. Pour cela, les données déjà reçues sont mémorisées en vue d'être utilisées dans un calcul intermédiaire anticipé pour le calcul du résultat final courant. Cette méthode implique que la vitesse de calcul du processeur de filtre soit synchronisée avec la vitesse de réception des données. L'invention décrit un circuit co-processeur permettant plus de souplesse que le circuit connu pour calculer des filtres numériques. En particulier, il permet de multiplexer plusieurs types de filtres différents, le débit d'entrée des données et la vitesse de calcul du processeur n'étant pas liées. Pour cela, il est prévu un circuit du type mentionné dans le préambule, remarquable en ce que l'organe de calcul comprend un accumulateur destiné à accumuler dans un résultat intermédiaire des produits successifs entre des données d'entrée reçues et les coefficients de filtre, pour réaliser un calcul itératif anticipé du résultat de filtre courant, et en ce que l'organe de contrôle est prévu pour déclencher, à la réception d'une nouvelle donnée, la dernière itération dudit calcul anticipé du résultat courant. Selon une caractéristique de l'invention, il est prévu un circuit tel que décrit ci-dessus pour constituer un filtre de longueur L, la suite de résultats de filtre, notée [Yn], pouvant s'écrire L -1 =n 2)k X,Xfl (1) O yn est le résultat du filtre à l'instant n, cok le coefficient prédéterminé d'indice k et x.k, la donnée d'entrée reçue à l'instant n-k, remarquable en ce que, p étant un entier positif égal au nombre de produits susceptibles d'être effectués en parallèle par l'organe de calcul, les itérations dudit calcul anticipé sont effectuées avant l'arrivée de la dernière donnée participant au résultat de filtre Yn, chaque itération réalisant le calcul de p produits entre p données d'entrées successives ayant déjà été utilisées pour le calcul du résultat de filtre précédent, noté Yn-1, et les coefficients de filtre correspondant selon l'équation (1). Selon une autre caractéristique de l'invention, il est prévu un tel circuit, comportant une pluralité d'organes de contrôle coopérant avec ledit organe de calcul et commandés par un organe de gestion centralisée pour réaliser plusieurs filtres numériques multiplexés, remarquable en ce que ledit organe de gestion comporte une indication de priorité associée à chaque filtre pour déclencher le calcul anticipé d'un résultat de filtre en fonction de la priorité dudit filtre. Selon un mode de réalisation particulier de l'invention, chaque organe de contrôle réalise un automate à quatre états comprenant: * un état d'initialisation pour mémoriser les coefficients de chaque filtre, * un état d'inactivité pour attendre l'arrivée d'une nouvelle donnée d'entrée, * un état de calcul itératif anticipé destiné à accumuler dans un résultat intermédiaire, à l'aide d'un calcul itératif, des produits entre des données d'entrée successives déjà reçues et les coefficients de filtre correspondants, * un état de calcul de la dernière itération pour calculer la dernière itération dudit calcul itératif anticipé du résultat courant. Selon une caractéristique importante de ce mode de réalisation, I'organe de gestion centralisée est prévu pour activer, à la réception de chaque nouvelle donnée d'entrée, I'état de calcul de la dernière itération du filtre auquel ladite nouvelle donnée est destiné. L'invention prévoit également un procédé de calcul de filtres du genre mentionné dans le préambule comprenant les étapes suivantes: * une étape d'initialisation pour mémoriser les coefficients de chaque filtre, * une étape de calcul itératif anticipé destiné à accumuler dans un résultat intermédiaire, à l'aide d'un calcul itératif, des produits entre des données d'entrée successivement reçues et les coefficients de filtre correspondant, pour anticiper le calcul du résultat de filtre courant, * une étape de calcul de la dernière itération déclenchée à la réception de chaque nouvelle donnée d'entrée pour calculer la dernière itération du calcul itératif anticipé du résultat courant. La description suivante, faite en regard des dessins ci-annexés, le tout donné à titre d'exemple non limitatif fera bien comprendre comment l'invention peut être réalisée. La figure 1 représente le diagramme d'état d'un automate pour illustrer un procédé de calcul de filtres selon l'invention. La figure 2 est un diagramme pour illustrer le fonctionnement de l'organe de gestion centralisée selon l'invention. La figure 3 représente le schéma bloc d'un circuit co-processeur selon l'invention. La figure 4 représente un récepteur de télévision numérique selon l'invention. L'invention s'applique notamment au calcul de filtres numériques à réponse impulsionnelle finie et est très avantageuse dans le cas o plusieurs filtres sont multiplexés à l'aide d'un seul processeur principal. Elle est compatible avec les exigences d'intégration à grande échelle VLSI. Les algorithmes de démodulation utilisés dans les systèmes de télécommunications numériques, tels que la télévision numérique par câble ou par satellite, requièrent une grande puissance de calcul, d'o est venue l'idée d'utiliser un circuit co-processeur pour soulager le processeur principal des calculs de filtre. Ces circuits spécialisés programmables peuvent être constitués essentiellement d'un processeur de signal numérique ou DSP comprenant entre autres des registres à mémoire pour stocker les coefficients programmables des filtres. L'invention propose notamment un procédé de calcul de filtres numériques pour multiplexer efficacement plusieurs types de filtres différents. Le problème consiste à résoudre l'équation (1) ci-dessous pour chaque filtre avec un temps de latence minimum. L-1 y(n) = cok x x(n - k) (1) o y(n) est le résultat du filtre à l'instant n, L la longueur du filtre, ok le coefficient prédéterminé d'indice k et x(n-k), la donnée d'entrée reçue à l'instant n-k. Le calcul d'un seul résultat de filtre requière ainsi le calcul de L multiplications et une somme de L résultats. La méthode consistant à calculer exactement l'équation (1) implique de mémoriser toutes les données d'entrée jusqu'à l'arrivée de la dernière donnée participant au résultat de filtre courant. L'inconvénient majeur de cette méthode réside dans le temps de latence entre la réception de x(n) et l'émission de y(n) qui est proportionnel à la longueur du filtre. L'invention propose une autre méthode pour calculer l'équation (1) qui consiste à calculer de façon anticipée une partie du résultat de filtre y(n), avant l'arrivée de la dernière donnée, notée x(n), impliquée dans le calcul de y(n), mais après le calcul du résultat précédent, noté y(n-1). Pour cela, le procédé comprend une étape d'accumulation (appelée également étape itérative de calcul anticipé) pour accumuler dans un résultat intermédiaire des produits successifs entre les coefficients prédéterminés du filtre et les données d'entrée correspondantes selon l'équation (1) ayant déjà été utilisées pour le calcul de résultats de filtre précédents. Chaque résultat intermédiaire, noté y'(n), reçoit de façon itérative, la somme du résultat intermédiaire précédemment calculé et du produit de la donnée disponible la plus récente, soit x(n-k) avec k E {L-1,...,1}, ayant été utilisée pour le calcul du résultat de filtre précédent y(n- 1), avec le coefficient de filtre adéquat. Ce qui donne: y'(n) - y'(n) + cokxx(n - k) avec k c {L-1,...,1} o le signe - indique que le résultat placé à gauche du signe reçoit la valeur placée à droite. Si le processeur est prévu pour traiter plusieurs données en parallèle sous forme de mots de p données successives, avec p entier supérieur ou égal à 1 et L multiple de p, le calcul du résultat intermédiaire s'écrit alors: (i-1I)xp y'(n)*- y'(n)+ cokxx(n-k) aveciE[L/p,...,2} k-ixp-1 Un calcul itératif anticipé du résultat de filtre courant est ainsi effectué par étapes d'accumulation successives au fur et à mesure de l'arrivée des données, de sorte que lors de l'arrivée de la dernière donnée x(n) impliquée dans le calcul du résultat de filtre y(n), il ne reste plus qu'une dernière étape de calcul pour obtenir le résultat final y(n). Cette dernière étape consiste à calculer le produit de x(n) avec le coefficient prédéterminé correspondant, noté w0 selon l'équation (1), et à ajouter ce produit au dernier résultat intermédiaire accumulé. Cette dernière étape appelée étape de dernière itération est réalisable en un cycle d'horloge quelle que soit la longueur du filtre, ce qui améliore considérablement les performances du processeur. Dans le cas précédemment mentionné o le processeur est prévu pour traiter plusieurs données en parallèle, p étant le nombre de données comprises dans un mot, le calcul de la dernière itération s'écrit alors y(n) = y'(n) + Xckxx(n - k) Une étape d'initialisation est également prévue pour stocker les coefficients des filtres ainsi que les premières données reçues pour pouvoir démarrer le calcul du premier résultat de filtre. Selon ce procédé, la vitesse d'entrée des données et la vitesse de calcul du processeur peuvent être indépendantes, ce qui permet également de multiplexer plusieurs filtres différents. La figure 1 représente le diagramme d'état d'un automate pour réaliser le calcul d'un filtre selon le procédé ci-dessus décrit. Il comporte quatre états notés INIT, WAIT, ANTI et LATA, o: * INIT est un état d'initialisation pour mémoriser les coefficients du filtre, * ANTI est un état de calcul itératif anticipé destiné à accumuler dans un résultat intermédiaire, à l'aide d'un calcul itératif, des produits entre des données d'entrée successives déjà reçues et les coefficients de filtre correspondants, ce qui revient à anticiper un calcul partiel du résultat courant à l'aide des données reçues déjà disponibles, * WAIT est un état d'inactivité dans lequel le processeur se trouve lorsqu'il n'a plus rien à faire en attendant l'arrivée d'une nouvelle donnée d'entrée, par exemple lorsque tous les calculs itératifs anticipés du résultat courant ont été effectués dans l'état ANTI, * LATA correspond à l'état de calcul de la dernière itération du calcul anticipé du résultat courant, il est déclenché à la réception d'un nouvelle donnée d'entrée. Le calcul de la dernière itération du résultat intermédiaire en cours est donc synchronisé avec la réception de chaque nouvelle donnée d'entrée. Pour cela, l'automate est prévu pour passer à l'état LATA depuis n'importe lequel des quatre états possibles sur un seul événement particulier: la réception d'une nouvelle donnée d'entrée (newdata). Il reste dans cet état tant qu'il reçoit des données. Ainsi dans l'état LATA, le processeur calcule la dernière itération du calcul du résultat final y(n) pour envoyer ce résultat en sortie du filtre. La nouvelle donnée d'entrée étant notée x(n), le calcul de la dernière itération consiste à calculer le produit wo0 x x(n) puis à l'ajouter au résultat intermédiaire précédemment calculé, noté yl'(n). S'il ne reçoit pas de nouvelle donnée d'entrée à partir de l'état LATA, le processeur est automatiquement placé dans l'état ANTI pour anticiper le calcul du résultat de filtre suivant y(n+1) en itérant le calcul du résultat intermédiaire y'(n+1), à l'aide des données déjà disponibles. Pour i E {1,.., L} et k = L-i, la lème itération du résultat intermédiaire destiné au calcul du résultat y(n+l), notée yj'(n+ 1), s'écrit: y, '(n + 1) - y,- '(n + 1) +akxx(n - k) y'o (n + 1) = 0 o le signe - indique que le résultat placé à gauche du signe reçoit la valeur placée à droite. L'indice k est décrémenté après chaque itération du calcul anticipé (k-), tant que k reste strictement positif (k>0). Lorsque k devient nul et si aucune nouvelle donnée n'est reçue, le résultat intermédiaire précédemment calculé étant alors noté yL-1'(n+1), le processeur est automatiquement placé dans l'état WAIT pour attendre la prochaine donnée d'entrée x(n+1) qui permettra de terminer le calcul du résultat y(n+1). En résumé, quel que soit l'état courant du processeur, il est automatiquement placé dans l'état LATA à la réception d'une nouvelle donnée d'entrée. Entre-temps, une fois la phase d'initialisation INIT achevée, il peut être soit dans l'état ANTI tant que toutes les itérations du calcul anticipé du résultat suivant ne sont pas terminées, soit dans l'état WAIT, lorsque tous les calculs anticipés impliquant des données disponibles, ayant déjà servi aux calculs de résultats de filtre précédents, sont achevés. La figure 2 montre le diagramme d'états d'un organe de gestion centralisée ou encore organiseur pour organiser les calculs entre différents filtres numériques indépendants multiplexés. Chaque filtre est commandé par un organe de contrôle ou automate indépendant, fonctionnant par exemple selon la machine à quatre états décrite ci- dessus en référence à la figure 1. L'organiseur affecte un indice de priorité à chaque filtre pour optimiser l'organisation des calculs. Selon le mode de réalisation représenté à la figure 2, l'organiseur comporte deux états numérotés 21 et 22. La réception d'une donnée d'entrée destinée à un filtre déterminé, noté Fj, place l'organiseur dans l'état 21, qui déclenche l'état de calcul de la dernière itération LATA pour le filtre considéré. L'événement déclencheur est représenté sur la figure par les flèches portant la mention newdata Fj. Le reste du temps, i'organiseur se trouve dans l'état 22 pour déclencher l'état de calcul anticipé ANTI des différents filtres selon leur degré de priorité. Pour gérer efficacement ces calculs, l'organiseur et la machine d'état doivent connaître le contexte particulier de chaque filtre, c'est-à-dire le type de données traitées, le type de filtre, la position des pointeurs en lecture et en écriture, etc. L'organiseur interrompt le calcul anticipé d'un fltre, même ci celui-ci n'est pas terminé, pour déclencher le calcul de la dernière itération pour un autre filtre quelle que soit sa priorité si une nouvelle donnée pour cet autre filtre est reçue. Si aucune nouvelle donnée n'est reçue, l'organiseur déclenche le calcul anticipé du filtre le plus prioritaire en attendant la réception d'une nouvelle donnée d'entrée. Un processeur de filtre selon l'invention est représenté sous forme de schéma blocs à la figure 3. Il comporte les éléments suivants: * des registres à mémoire DATA RF et TAPS RF pour stocker respectivement les données d'entrée avant leur utilisation dans les calculs ainsi que les coefficients prédéterminés des différents filtres, * un organe de calcul 30 muni d'entrées pour recevoir les données et les coefficients stockés dans les registres DATA RF et TAPS RF, constitué essentiellement d'un multiplieur, d'un additionneur et de n registres d'accumulation IR RF pour n filtres multiplexés (pour des raisons de clarté, un seul registre est représenté sur la figure 3), chaque registre d'accumulation étant destiné à accumuler selon un calcul itératif, des produits successifs entre les données d'entrée et les coefficients mémorisés, dans un résultat intermédiaire, * un organe de contrôle ou machine d'états 31 associé à chaque filtre, pour commander les différents blocs cités ci-dessus, * un organe de gestion centralisée ou organiseur 32 pour contrôler les machines d'états des différents filtres. Pendant l'état d'initialisation INIT, les coefficients de chaque filtre sont mémorisés dans le registre TAPS RF tandis que les premières données reçues (leur nombre étant égal à la longueur du filtre, c'est-à- dire au nombre de coefficients) sont mémorisées dans le registre DATA RF. Chaque machine d'état 31 envoie un signal de contrôle aux registres de mémoire DATA RF et TAPS RF pour commander le stockage des données. Au fur et à mesure de leur réception, les données d'entrée DATA, sont ainsi stockées dans le registre DATA RF en vue d'être utilisées par l'organe de calcul 30. A la réception de chaque nouvelle donnée d'entrée DATA, la machine d'état du filtre destinataire de la donnée reçoit un signal de contrôle, NEW_DATA, pour activer l'état de calcul de la dernière itération LATA. La machine d'état génère alors un signal, NEW_RESULT, pour indiquer qu'un nouveau résultat de filtre y(n) est disponible en sortie et pour réinitialiser le registre d'accumulation IR RF ayant contenu les itérations successives des résultats intermédiaires anticipés au résultat y(n). Dans les états LATA et ANTI, des signaux de contrôle dessinés en traits interrompus sur la figure 3 sont envoyés aux registres DATA RF et TAPS RF pour qu'ils fournissent à l'organe de calcul les données nécessaires aux calculs mis en oeuvre dans ces deux états. La figure 4 montre, à titre d'exemple de réalisation, un schéma général d'un récepteur de télévision numérique ou set top box destiné à assurer le décodage des trames de données transmises sur un canal de transmission. Il comporte: * un bloc TUNER comprenant un tuner pour recevoir un signal d'entrée analogique et le convertir dans une fréquence intermédiaire plus basse, * un bloc de démodulation DEMOD pour numériser le signal analogique reçu et le démoduler afin d'assurer la synchronisation des données constituant le signal sous forme de trames de données numériques, * un bloc de correction d'erreur FEC (de l'anglais Forward Error Correction) pour corriger les erreurs de transmission dues au canal, * un bloc de décodage de source MPEG utilisant, par exemple, un décodeur selon la norme MPEG pour décoder le message reçu et un bloc de visualisation TV comprenant notamment un tube cathodique. Un filtrage numérique est nécessaire pour assurer la fonction du démodulateur 42. Celui-ci peut être réalisé de façon avantageuse, à l'aide d'un circuit du type de celui représenté àla figure 3. Ainsi ont été décrits et illustrés à l'aide d'exemples un récepteur, un circuit processeur de filtres et un procédé de calcul de filtres numériques permettant de multiplexer différents types de filtres destinés notamment à recevoir des données ayant des formats et des vitesses d'entrée variés. Bien entendu, de nombreuses variantes pourront être apportées aux modes de réalisation décrits sans sortir du cadre de l'invention. REVENDICATIONS 1. Circuit co-processeur programmable destiné à être associé à un processeur principal pour constituer un filtre numérique à coefficients prédéterminés, circuit comprenant un organe de calcul commandé par un organe de contrôle et recevant des données d'entrée, pour fournir en sortie une suite de résultats de filtre, caractérisé en ce que l'organe de calcul comprend un accumulateur destiné à accumuler dans un résultat intermédiaire des produits successifs entre des données d'entrée reçues et les coefficients de filtre, pour réaliser un calcul itératif anticipé du résultat de filtre courant, et en ce que l'organe de contrôle est prévu pour déclencher la dernière itération dudit calcul anticipé du résultat courant, à la réception d'une nouvelle donnée. 2. Circuit selon la revendication 1, pour constituer un filtre de longueur L, la suite de résultats de filtre, notée [Yn], pouvant s'écrire: L -1 y = Co XX_,k (1) o Yn est le résultat du filtre à l'instant n, (Ok le coefficient prédéterminé d'indice k et xn-k, la donnée d'entrée reçue à l'instant n-k, caractérisé en ce que, p étant un entier positif égal au nombre de produits susceptibles d'être effectués en parallèle par l'organe de calcul, toutes les itérations dudit calcul anticipé sont effectuées avant l'arrivée de la dernière donnée participant au résultat de filtre y., chaque itération réalisant la somme de p produits entre p données d'entrées successives ayant déjà été utilisées pour le calcul du résultat de filtre précédent, noté Yn-i, et les coefficients de filtre correspondant selon l'équation (1). 3. Circuit selon l'une des revendications 1 ou 2, comportant une pluralité d'organes de contrôle coopérant avec ledit organe de calcul, commandés par un organe de gestion centralisée pour réaliser plusieurs filtres numériques multiplexés, caractérisé en ce que ledit organe de gestion comporte une indication de priorité associée à chaque filtre pour déclencher le calcul anticipé d'un résultat de filtre en fonction de la priorité dudit filtre. 4. Circuit selon la revendication 3, caractérisé en ce que chaque organe de contrôle réalise un automate à quatre états comprenant * un état d'initialisation pour mémoriser les coefficients de chaque filtre, * un état d'inactivité pour attendre l'arrivée d'une nouvelle donnée d'entrée, * un état de calcul itératif anticipé destiné à accumuler dans ledit résultat intermédiaire, à I'aide d'un calcul itératif, des produits entre des données d'entrée successives déjà reçues et les coefficients de filtre correspondants, * un état de calcul de la dernière itération pour calculer la dernière itération dudit calcul itératif anticipé du résultat courant. 5. Circuit selon la revendication 4, caractérisé en ce que ledit organe de gestion centralisée est prévu pour activer, à la réception de chaque nouvelle donnée d'entrée, I'état de calcul de la dernière itération correspondant au filtre auquel ladite nouvelle donnée est destinée. 6. Récepteur de télévision numérique destiné à recevoir des données d'entrée numériques, comportant un bloc de démodulation muni d'un dispositif de filtrage, caractérisé en ce que ledit dispositif de filtrage comporte un circuit selon l'une des revendications 1 à 5 pour filtrer les données reçues. 7. Procédé de calcul pour réaliser des filtres numériques multiplexés à coefficients prédéterminés, à l'aide d'un circuit co-processeur programmable destiné à recevoir des données d'entrée et à fournir en sortie une suite de résultats de filtre, caractérisé en ce qu'il comprend les étapes suivantes * une étape d'initialisation pour mémoriser les coefficients de chaque filtre, * une étape itérative de calcul anticipé destinée à accumuler dans un résultat intermédiaire, à l'aide d'un calcul itératif, des produits entre des données d'entrée successivement reçues et les coefficients de filtre correspondant, pour anticiper le calcul du résultat de filtre courant. * une étape de calcul de la dernière itération déclenchée à la réception de chaque nouvelle donnée d'entrée pour calculer la dernière itération du calcul anticipé du résultat courant.