FR 2718865 A1 19951020 FR 9404548 A 19940415 La présente invention est relative aux mémoires entrant dans la construction de processeurs de signaux numériques ou DSP et se rapporte plus particulièrement aux mémoires RAM de Viterbi. Généralement, la fonction d'un DSP est d'ef- fectuer des opérations avec une précision de calcul élevée, par exemple supérieure ou égale à 32 bits. Les trois obstacles qui limitent les perfor- mances d'un processeur dans son fonctionnement d'addition, de comparaison et de sélection dans l'algorithme de Viterbi, sont: - le calcul arithmétique - le transfert de données - le retard pour exécuter des instructions conditionnelles. L'algorithme de Viterbi peut être divisé en trois processus: le processus I transforme et charge les données échantillons à partir d'une interface vers une mémoire de données RAM, le processus II calcule, les "métriques", ou tables de valeurs qui représentent chacune la différence entre une valeur observée et différentes valeurs possibles pour chaque échantillon et engendre la trace ou détermination de la suite de données ayant le maximum de vraisemblance et le processus III engendre les données à partir de la mémoire de trace. Le processus II nécessite un ensemble d'opéra- tions simples telles que: addition, soustraction, com- paraison et transfert de données pour chaque échantillon d'entrée. Un nombre important de cycles du DSP est néces- saire pour exécuter cet algorithme en raison du fait que la structure du DSP n'est pas adaptée. L'invention vise à remédier à cet inconvénient en créant une mémoire qui soit particulièrement conçue pour être associée à un processeur de signaux numériques dans le cadre de l'exécution de l'algorithme de Viterbi. Elle a donc pour objet un procédé de mise en oeuvre d'un algorithme de Viterbi, d'addition, comparai- son, sélection permettant de réduire la largeur de bande d'une mémoire RAM, caractérisé en ce qu'il consiste au cours d'un cycle n, à réaliser à partir d'une métrique ancienne Me(2j) ou table de valeurs représentant la différence entre une valeur observée et différentes valeurs possibles des calculs d'expressions Me(2j)+do et Me(2j)-do, à stocker les résultats partiels dans deux registres temporaires et au cours d'un cycle n+l suivant, à calculer à partir d'une autre métrique ancienne Me(2j+l), les expressions Me(2J+l)+dl et Me(2j+l)-dl, do et dl étant les écarts entre les valeurs théoriques de coefficients et les valeurs réelles d'échantillons, et à comparer les résultats obtenus avec le contenu des regis- tres temporaires pour définir deux nouvelles tables de valeurs Ms(J), Ms(j+8) et la décision de transition pour le trajet vers des états Ts(j), Ts(j+8) représentant le résultat de la comparaison. L'invention a également pour objet un dispositif à processeur de signaux numériques pour la mise en oeuvre du procédé défini ci-dessus, comprenant un processeur de signaux numériques proprement dit, une mémoire ROM de programme et une mémoire RAM de données reliées respecti- vement au processeur, caractérisé en ce qu'à la mémoire RAM de données est associée une mémoire RAM de Viterbi comportant des moyens d'exécution des opérations d'addi- tion, de comparaison et de sélection de l'algorithme de Viterbi, et une logique de commande de la mémoire RAM de Viterbi. L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés, sur lesquels: - la Fig.1 est un schéma synoptique d'un proces- seur de signaux numériques classique exécutant un proces- sus d'addition, de comparaison et de sélection; - la Fig.2 est un schéma représentant un égali- seur de Viterbi à seize états ACS; - la Fig.3 montre deux cycles de calculs de métriques du schéma de la Fig.2; - la Fig.4 est un schéma synoptique d'un proces- seur de signaux numériques pourvu d'une mémoire RAM de Viterbi suivant l'invention; - la Fig.5 montre deux cycles de calcul de métriques à l'aide du processeur de la Fig.4; et - la Fig.6 est un schéma synoptique montrant l'architecture de la RAM de Viterbi suivant l'invention. Le processeur de signaux numériques classique représenté à la Fig.1 comporte un processeur proprement dit ou coeur du processeur de signaux numériques 1 auquel sont connectés une mémoire ROM de programme 2, une mémoire RAM de données 3 et un circuit d'interface. Comme indiqué par les rectangles en pointillés contenus dans le coeur 1 du processeur et les flèches, celui-ci lorsqu'il exécute un algorithme de Viterbi réalise l'opération en trois processus: - au cours du processus I, il y a acquisition de données provenant du circuit d'interface 4, transformation et transfert de ces données vers la mémoire RAM de données 3; - au cours du processus II, il y a transfert des données de la RAM 3 vers le coeur i du processeur, calcul des métriques ou tables de valeurs, qui représentent la différence entre une valeur observée et les différentes valeurs possibles, de chaque échantillon de données, élaboration de traces ou suites de données ayant le maximum de vraisemblance et nouveau stockage des résultats dans la RAM 3; - au cours du processus III, il y a production de données à partir des données de traces stockées dans la mémoire RAM 3. Les opérations précitées sont illustrées par le schéma de la Fig.2 sur lequel on a représenté un table 5 de valeurs anciennes stockée dans la mémoire RAM 3 du circuit de la Fig.1 et une table 6 de valeurs nouvelles résultant du traitement d'addition, comparaison, sélection des valeurs anciennes par le coeur du processeur 1. Les métriques anciennes et nouvelles sont désignées par les indices Me et Ms respectivement. Les opérations réalisées sur les métriques anciennes et les résultats obtenus placés dans la table des métriques nouvelles 6 sont matérialisées par des lignes reliant chaque case de la table 5 de métriques anciennes à deux cases de la table 6 de métriques nouvel- les. Ces lignes sont représentées en tireté à l'ex- ception des lignes reliant la métrique Me(2j) de la table 5 aux métriques Ms(J) et Ms(j+8) de la table 6 et la métrique Me(2j+l) de la table 5 aux métriques Ms(j) et M1(j+8) de la table 6. Au cours des opérations sur Me(2J) soit on ajoute et on retranche do=C'2j)-P(s). Au cours des opérations sur Me(2j+l) on ajoute et on retranche dl=C(2j+l)-P(s). Dans ces relations C(2j), C2(j+1) sont des coefficients et P(s) sont des échantillons contenus dans la mémoire RAM 3. La partie addition, comparaison, sélection, de l'algorithme égaliseur à seize états de Viterbi appliqué par exemple à un système de radiotéléphonie cellulaire GSM (figures 3 et 4) illustre l'architecture de la RAM de Viterbi. Des coefficients "C" et des échantillons d'entrée "P" sont engendrés par le processus I. Pour chaque échantillon P(s), le processus II calcule seize nouvelles métriques "Ms" à partir de la métrique précédente "Me". Pour réduire la largeur de bande de la mémoire en général deux métriques Ms(J) et Ms(j+8) sont calculées en parallèle. Les paramètres suivants interviennent dans ces calculs. C = coefficients de distorsion entre symboles DO, D1 = écart entre la valeur théorique d'un coefficient et la valeur réelle d'un échantillon P = probabilités de bits transmis Me = métrique ancienne Ms = nouvelle métrique T = décision de transition pour le trajet vers l'état j boucle s=1,120 boucle j=0,7 DO = C2j-Pj Dl=C2j+l-Pj Si Me 2j + DO > Me2j+l+D1 alors MsJ = Me2J+DO Ts,j=O autrement Msj=Me2j+1+D1 Ts,j=l fin de si Si Me2j-DO > Me2j+1-Dl alors Msj+8 = Me2j-DO, Ts,j+8=0 autrement Msj+8 = Me2J+l-Dl, Ts,j+8=1 fin de si fin de boucle La valeur d'une nouvelle métrique Ms est le maximum de deux expressions: Me2j+/-DO > Me2J+1+/-Dl. Le résultat de la comparaison engendre le trajet de décision vers l'état T(s)(j) ou T(s)(j+8) qui est stocké à l'inté- rieur de la mémoire T pour une utilisation ultérieure par le processus III. De tels trajets sont représentés sur la Fig.2 sur laquelle on voit que pour un échantillon, on effectue seize calculs avec des coefficients différents. L'évolution du signal d'addition, comparaison, sélection en cours est représentée à la Fig.3. Au cours du cycle n, la nouvelle métrique Ms(j) et le trajet de transition T(j) sont calculés à partir des métriques anciennes Me(2j) et Me(2j+1). L'opération consiste à sélectionner le maximum de deux opérations & seize bits entre Me(2j), C(2j), P(s) et Me(2j+1), C(2j+1), P(s). Le calcul de Ms(j+8) et T(s)(J+8), au cycle n+l, est symétrique. Deux opérations "+" à seize bits, sont rempla- cées par des opérations "-". Les cycles n et n+l nécessitent quatre accès à la mémoire de métriques anciennes. En général, deux mémoi- res séparées Me(2j) and Me(2j+l) sont utilisées pour améliorer la largeur de bande de la mémoire et pour réduire le nombre de cycles de l'exécution de l'algorithme d'addition, comparaison, sélection A.C.S. Le déroulement en cours d'un calcul de métrique est illustré à la Fig.3 sur laquelle sont reportés tous les facteurs intervenant dans le calcul. Un processeur de signaux numérique pourvu d'une mémoire RAM de Viterbi suivant l'invention est représenté à la Fig.4. Il comporte comme le processeur de la Fig.l, un processeur 1 proprement dit auquel sont connectés une mémoire ROM 2 de programme, une mémoire RAM de données 3 et un circuit d'interface 4. Le processeur suivant l'invention comporte en outre une mémoire RAM de Viterbi 7 séparée de la mémoire RAM 3, connectée au processeur 1 et à laquelle est asso- ciée une logique 8 de commande d'exécution du processus II d'addition, comparaison, sélection qui est maintenant attribué à la mémoire RAM de Viterbi. Les processus I et III sont toujours attribués au coeur du processeur 1 auquel est en outre attribué un processus n concernant un autre programme. La mémoire RAM de Viterbi 7 est vue comme une mémoire à la fois à partir du processeur de signaux numériques et pour le processus II d'addition, comparai- son, sélection. Le processeur 1 utilise la RAM de Viterbi 7 comme mémoire de travail. A la fin de l'exécution du processus I, les échantillons sont disponibles pour le traitement d'addition, comparaison, sélection sans trans- fert de données en mémoire. Le processeur de signaux numériques 1 n'est pas affecté par le processus II d'exécution et le processeur 1 et la mémoire RAM de Viterbi 7 sous la commande de sa logique 8 peuvent fonctionner en parallèle. Le graphique de l'évolution du nouveau signal d'addition, comparaison, sélection est représenté sur le graphique de la Fig.5. On voit sur cette figure sur laquelle toutes les phases du processus de calcul sont désignées par des références, que la mise en oeuvre de l'algorithme ACS, d'addition, comparaison, sélection, nécessite seulement un cycle de mémoire pour lire la métrique ancienne à chaque cycle. L'écart entre les valeurs théoriques et la valeur réelle "dO" et "dl" peut être calculé une fois sur deux. Pendant le cycle n, le résultat de Me(2j)+dO et Me(2j)-dO sont stockés à l'intérieur d'un registre tempo- raire. Au cours du cycle n+l, Me(2j+l)+dl et Me(2j+l)-dl sont calculés et comparés aux contenus des registres temporaires. Le maximum Ms(J) est stocké dans une nouvelle mémoire de métrique et un trajet de transition T(s)(j) est stocké dans une mémoire "T". Un état pipeline est intro- duit avant de stocker le résultat de Ms(j+8) et T(s)(j+8) dans les mémoires correspondantes. L'architecture de la RAM de Viterbi suivant l'invention va maintenant être décrite en référence à la Fig.6. La RAM de Viterbi 7 comporte la logique 8 de commande d'exécution du processus II précité reliée à un circuit générateur 9 d'adresses d'écriture et d'écriture mémoire lui- même relié à un compteur (s) 10 et à un compteur (j) 11. La logique 8 comporte une entrée d'initialisa- tion INIT. Le circuit générateur d'adresses 9 est connecté à une mémoire RAM 12 de 16x16. La mémoire RAM de Viterbi comporte en outre des multiplexeurs 13 à 16 groupés par paires, les sorties des multiplexeurs 13 et 14 d'une part, et 15 et 16 d'autre part, étant connectées respectivement aux entrées A et B de deux unités arithmétiques et logiques 17,18 dont les sorties sont à leur tour connectées à des registres RO et R1, 19,20. Des registres R2 et R3, 21,22 auxquels sont associés des comparateurs 23, 24 d'établissement de valeurs maximales sont également connectés à la logique de com- mande 6. Les sorties des unités arithmétiques et logiques 17 et 18 sont également connectées à des entrées des comparateurs 23 et 24. Ils délivrent des signaux vers la mémoire RAM 12. En outre, au registre R3 22 est associé à un registre pipeline 25. Aux registres 21,22,25 sont associés des cir- cuits 26,27,28 de commande et de mémorisation du résultat de comparaison connectés, les circuits 26 et 27 sont connectés à la logique 8 et respectivement aux compara- teurs 23,24. Selon l'exemple de mise en oeuvre de l'algo- rithme représenté à la figure 6, la RAM de Viterbi con- tient deux trajets de données pour calculer en parallèle Ms(j) et Ms(j+ 8). Au cours de la phase 1, les écarts dO et dl sont calculés et le résultat stocké respectivement à l'intérieur des registres RO et R1, 19 et 20. Au cours de la phase 2, on calcule le résultat partiel à partir de Me(2j) et on place les résultats dans des registres R2 et R3, 21 et 22. Au cours de la phase 3, on calcule le maximum devant être stocké dans la nouvelle mémoire de métrique 12. Ms(j) et T(s)(j) sont stockés dans les nouvelles mémoires de métriques et T à la fin de la phase 3 dans la RAM 3. Ms(j+8) et T(s)(j+8) sont retardés d'une phase à travers des registres de pipeline 25 avant le stockage en mémoire. L'exécution ACS démarre au signal INIT sous le contrôle du processeur 1. Elle est commandée par les compteurs (s), (j), 10 et 11 et le bloc logique de com- mande 8. L'exécution de l'algorithme est détaillé ci- après; Phase 1: il y a calcul des écarts do=C2J-Ps et stockage du résultat dans le registre Ro 19. Phase 2: il y a calcul des écarts dl=C2J+1-Ps et stockage du résultat dans le registre R1 20. Phase 3: il y a calcul en parallèle des expres- sions Me(2j)+do et Me(2j)-do et transfert des résultats dans les registres R2 et R3 21 et 22. Ms((J-1)+8) et Ts(j-1)+8) de libération de la boucle précédente sont stockés à partir du registre pipeline 25 dans leurs mémoires respectives. Phase 4: il y a calcul en parallèle des expres- sions Me(2j)-do et Me(2j+l)-dl. Les résultats sont respec- tivement comparés avec les contenus des registres R2 et R3, 21 et 22. Le maximum de Me(2j)-do et du contenu du regis- tre R2 21 est stocké dans Ms(j) et l'état des comparaisons dans Ts(j). Le maximum de Me(2j+l1)-dl et du contenu du registre Rs 22 et l'état de la comparaison T(s)(J+8) est stocké dans le registre pipeline 25. Les phases 1 à 4 sont répétées 8 x 120 fois. Les opérations qui viennent d'être décrites sont présentées ci-après. Boucle s= 1,120 Nbre de cycles internes 120x(3x8)=2880 Boucle j= 0,7 1 RO=C(2j)-Ps Rl=C(2j+1)-P(s) 2 R2=(Me(2j)+RO) R3-(Me(2j)-RO) 3 R2=max[(R2),(Me(2j+1)+R1)] R3=max[(R3),(Me(2j+l)- R1)] T(s,j),Ms(j)=R2 {@l}1T(s,j+8),Ms(j+8)=R3 Fin de boucle Fin de boucle REVENDICATIONS 1. Procédé de mise en oeuvre d'un algorithme de Viterbi, d'addition, comparaison, sélection permettant de réduire la largeur de bande d'une mémoire RAM, caractérisé en ce qu'il consiste au cours d'un cycle n. à réaliser à partir d'une métrique ancienne Me(2J) ou table de valeurs représentant la différence entre une valeur observée et différentes valeurs possibles des calculs d'expressions Me(2J)+do et Me(2j)-do, à stocker les résultats partiels dans deux registres temporaires (21, 22) et au cours d'un cycle n+l suivant, à calculer à partir d'une autre métri- que ancienne Me(2J+l), les expressions Me(2j+l)+dl et Me(2j+l)-dl, do et dl étant les écarts entre les valeurs théoriques de coefficients et les valeurs réelles d'échan- tillons, et à comparer les résultats obtenus avec le contenu des registres temporaires (21,22) pour définir deux nouvelles tables de valeurs Ms(j), Ms(j+8) et la décision de transition pour le trajet vers des états Ts(j), Ts(J+8) représentant le résultat de la comparaison. 2. Procédé suivant la revendication 1, caracté- risé en ce qu'il consiste à calculer les écarts do=C(2j)- Ps, dl=C(2j+1)-Ps entre les valeurs théoriques de coeffi- cients et les valeurs réelles d'échantillons une seule fois. 3. Procédé suivant l'une quelconque des revendi- cations 1 et 2, caractérisé en ce que les valeurs Ms(J) et Ts(j) sont stockés au cours du cycle n+l. 4. Procédé suivant l'une des revendications 1 à 3, caractérisé en ce que le stockage des valeurs Ms(J+8) et Ts(j+8) est retardé d'un cycle à l'aide d'un registre pipeline (25). 5. Procédé suivant l'une des revendications 1 à 4, caractérisé en ce que les deux tables de valeurs Ms(J), Ms(j+8) sont calculées en parallèle. 6. Dispositif à processeur de signaux numériques pour la mise en oeuvre du procédé suivant l'une quelconque des revendications 1 à 5, comprenant un processeur de signaux numériques (1) proprement dit, une mémoire ROM (2) de programme et une mémoire RAM (3) de données reliées respectivement au processeur, caractérisé en ce qu'à la mémoire RAM de données est associée une mémoire RAM de Viterbi (7) comportant des moyens (15,16,17,18,19,20,25) d'exécution des opérations d'addition, de comparaison et de sélection de l'algorithme de Viterbi, et une logique (8) de commande de la mémoire RAM de Viterbi (7). 7. Dispositif suivant la revendication 6, caractérisé en ce que la mémoire RAM de Viterbi (7) constitue une mémoire de travail pour le processeur (1). 8. Dispositif suivant l'une des revendications 6 et 7, caractérisé en ce que la RAM de Viterbi (7) contient deux trajets de données (17,19,20 et 18,20,22,25) pour calculer en parallèle les tables de valeurs Ms(j) et Ms(j+8). 9. Dispositif suivant la revendication 8, caractérisé en ce que chacun des deux trajets de données comporte une unité arithmétique et logique (17,18), un registre (19,20) de stockage des écarts (do,dl) entre les valeurs théoriques des coefficients et les valeurs réelles des échantillons calculés à partir de deux tables de valeurs anciennes Me(2j), Me(2j+1) et un registre (21,22) de stockage de résultats partiels de calculs effectués à partir de la table de valeurs anciennes Me(2j). 10. Dispositif suivant la revendication 9, caractérisé en ce que l'un des trajets (18,20,22,25) comporte un registre pipeline (25) connecté à la sortie du registre (22) de stockage de résultats de calculs par- tiels, et destiné à retarder d'un cycle, le stockage des valeurs Ms(j+8) et Ts(j+8) relatives à l'une des deux nouvelles tables de valeurs dans une mémoire RAM (12) de la mémoire RAM de Viterbi (7).