FR 2915641 A1 20081031 FR 0754793 A 20070430 B07-0427FR - ODE/EVH Société Anonyme dite : STMicroelectronics SA CNRS Procédé et dispositif d'entrelacement de données Invention de : Cyrille CHAVET Pascal URARD Philippe COUSSY Eric MARTIN Procédé et dispositif d'entrelacement de données L'invention concerne le brassage de données numériques pour la mise en oeuvre d'un code de correction d'erreurs. Plus particulièrement, l'invention se rapporte au codage de correction d'erreurs pour des applications de transmission de données à haut débit, par exemple dans le domaine du multimédia ou des télécommunications, afin de minimiser l'influence des erreurs par mélange des données incidentes. Une application particulièrement intéressante de l'invention concerne ainsi l'entrelacement de données pour codes de correction d'erreur, notamment de type LDPC ( Low Density Parity-Check Code , en anglais) ou Turbo-codes , afin de réduire l'influence d'erreurs sur un canal de transmission bruité. Les codes de correction d'erreur de type LDPC ou Turbo- codes sont bien connus dans l'état de la technique. On pourra ainsi, par exemple, se référer au brevet français antérieur FR-91 05 280 qui décrit le principe général des turbo-codes . Ces techniques de codage et de décodage sont basées sur un traitement itératif des données qui sont mélangées, à chaque étape de traitement, jusqu'à aboutir à une décorrélation des erreurs susceptibles d'être véhiculées. Ces techniques de codage de correction d'erreurs mettent en oeuvre un entrelaceur qui réalise une permutation itérative de symboles d'un code d'entrée et des bancs mémoire dans lesquels les données sont mémorisées. On a représenté sur la figure 1 un exemple d'architecture destinée à la mise en oeuvre d'un tel entrelacement de données. Comme on le voit sur cette figure, l'architecture représentée est une architecture parallèle. Elle comporte un ensemble de blocs ou de modules de traitement de données B1, B2, ...Bä disposés en parallèle assurant, en parallèle, la génération et les délivrance d'un ensemble de symboles binaires, un ensemble de bancs mémoire Ml, M2, ..., Mn disposés en parallèle et raccordés aux blocs B1, B2, ...Bä avec interposition de modules d'interconnexion Il et I2 destinés à assurer le traitement en parallèle des symboles issus des blocs B1, B2, ...B,,, pour assurer leur aiguillage vers les bancs mémoire Ml, M2, ...Mä en réalisant une permutation itérative des données des symboles en parallèle. L'un des problèmes majeurs liés à la mise en oeuvre de ce type d'architecture d'entrelacement concerne les conflits d'accès en mémoire. En effet, comme visible sur la figure 2, avec ce type d'architecture, il est possible que deux ou plusieurs blocs B1, B2, ..., Bä producteurs ou utilisateurs de données tentent d'écrire ou, au contraire, de lire en même temps des données différentes dans ou à partir d'un même banc mémoire. Diverses techniques ont été développées pour tenter de pallier cet inconvénient. L'une de ces techniques, décrite en détail dans le document FR 02 04 764, appelée turbo-code à roulettes , est basée sur la définition d'une règle d'entrelacement circulaire permettant d'implémenter un entrelaceur ayant un haut degré de parallélisme avec des performances équivalentes ou meilleures que celles des turbo- codes connus, tout en permettant de réduire la complexité de l'architecture d'interconnexion, en particulier pour des applications à très haut débit. Le principe des turbo-codes à roulettes est basé sur un découpage en P blocs de M symboles d'une trame d'information de N symboles. L'opération de codage est d'abord effectuée dans un ordre naturel afin de générer une redondance dans une première dimension. Chaque bloc est alors codé de manière indépendante par un code convolutif récursif systématique circulaire (CRSC). La trame d'information est ensuite permutée par un entrelaceur de taille N symboles. La trame entrelacée est également découpée en P blocs de longueurs N et chaque bloc est codé indépendamment par un code CRSC pour produire la redondance dans une deuxième dimension. L'entrelaceur est construit conjointement à l'organisation de la mémoire de façon à permettre le décodage en parallèle des P blocs. En d'autres termes, la structure de l'entrelaceur est choisie de manière à permettre de lire et écrire à chaque cycle les P données nécessaires au P décodeurs des P bancs mémoire, et ce, sans conflit. En effet, une seule lecture peut être effectuée au même instant dans une mémoire. Toutefois, cette technique est basée sur la mise en oeuvre d'une règle d'entrelacement spécifique et n'est donc pas conforme à un standard. Une autre technique, décrite dans le document SoC-Network for Interleaving in Wireless Communications de N. Wehn, MPSoC, 2004 est basée sur un ajout de mémoires dans le réseau afin d'assurer une temporisation des données en cas de situation de conflit. Toutefois, cette technique augmente la latence du circuit et engendre des réseaux d'interconnexion complexes. En outre, il est nécessaire de procéder par simulation au dimensionnement des mémoires ajoutées. Enfin, une autre approche, proposée par Benedetto et décrite dans l'article Mapping Interleaving Laws to Parallel Turbo-decoder Architectures publié dans IEEE volume 8, mars 2004, consiste à ranger les données dans les bancs mémoire de manière à éviter les conflits. Particulièrement, cette approche propose d'identifier les données qui sont destinées à être consommées en même temps sur une matrice de pavage. On procède à une première affectation naïve dans les bancs mémoire, sans générer de conflit et à attribuer un banc aux données non affectées en corrigeant les conflits à l'aide d'une méthode dite de recuit-simulé ou de raffinement itératif . Bien que cette technique permette de trouver un agencement mémoire quelle que soit la règle d'entrelacement, elle présente toutefois un certain nombre d'inconvénients majeurs, notamment en raison du fait qu'elle ne permet pas de générer un agencement mémoire permettant ensuite de réaliser une architecture matérielle utilisant des composants simples, de sorte que le réseau d'interconnexions est susceptible de présenter une architecture compliquée. En outre, l'algorithme de recuit-simulé est relativement complexe à mettre en oeuvre et ne permet pas de déterminer, a priori, son achèvement. Cette technique nécessite enfin l'utilisation de deux mémoires de type ROM par format de trame pour mémoriser les ordres d'accès naturel et entrelacés. Au vu de ce qui précède, il est proposé un procédé d'entrelacement de données comprenant l'aiguillage des données vers des moyens de mémorisation au moyen d'une matrice d'affectation des données en mémoire, dans lequel on élabore la matrice de manière à aiguiller les données en mémoire en utilisant des moyens de traitement systématiques adaptés pour agir de manière identique sur l'ensemble des données aiguillées simultanément. En d'autres termes, il est proposé, dans le cadre de la présente description, un procédé d'entrelacement permettant de simplifier le réseau d'interconnexions et mettant en oeuvre une règle d'entrelacement conforme à des standards. Dans un mode de mise en oeuvre, la matrice d'affectation des données est élaborée par étapes successives au cours desquelles on affecte des données à des emplacements mémoire de manière à éviter les conflits d'accès en mémoire. Selon encore une autre caractéristique du procédé d'entrelacement, on détermine l'affectation en mémoire à partir d'un ordre de données en entrée et d'une règle d'entrelacement, en utilisant deux matrices intermédiaires dans chacune desquelles on affecte successivement des emplacement mémoire de telle sorte que l'aiguillage des données à des instants successifs s'effectue à l'aide desdits moyens de traitement systématiques, et en recopiant les affectations des mémoire de l'une des matrices intermédiaire vers l'autre. Par exemple, l'ordre des données en entrées et la règle d'entrelacement sont représentés par une matrice d'entrée et une matrice d'entrelacement, respectivement, dont les colonnes correspondent chacune à des accès simultanés à des données en parallèle. Dans un mode de mise en oeuvre, on affecte des emplacements mémoire à une première matrice intermédiaire sous la forme d'une première colonne d'emplacement mémoire, on reporte les emplacements mémoire dans la deuxième matrice intermédiaire à partir de l'emplacement des données correspondant dans la matrice d'entrelacement. En outre, on peut affecter des emplacements mémoire à une première colonne de la deuxième matrice intermédiaire et l'on reporte les emplacements mémoire dans la première matrice intermédiaire à partir de l'emplacement des données correspondantes dans la matrice d'entrée. On procède ensuite, par exemple, successivement à une affectation des emplacements mémoire à l'une des matrices intermédiaires et à un report des emplacements mémoire dans d'autres matrices intermédiaires jusqu'au remplissage de l'ensemble des première et deuxième matrice intermédiaires. Avantageusement, l'étape d'affectation des emplacements mémoire est réalisée de manière à éviter les conflits d'accès. I1 est également proposé, selon un deuxième aspect, un dispositif d'entrelacement de données d'un premier ensemble d'un module de traitement de données disposé en parallèle vers un deuxième ensemble de modules de traitement disposé en parallèle, comprenant un ensemble de bancs mémoire en parallèle et des moyens d'aiguillage interposés entre les bancs mémoire et les premier et deuxième ensembles de modules de traitement de données. Selon ce dispositif, les moyens d'aiguillage sont réalisés à partir de moyens de traitements de données systématiques adaptés pour agir de manière identique sur l'ensemble des données aiguillées simultanément en parallèle. Par exemple, les moyens de traitement de données comprennent des moyens de permutation de données. D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif, et faite en référence aux dessins annexés, sur lesquels : -la figure 1, dont il a déjà été fait mention, illustre l'architecture générale d'un dispositif d'entrelacement conventionnel ; - la figure 2, précédemment évoquée, illustre les inconvénients liés à l'utilisation de l'architecture de la figure 1 ; - la figure 3 illustre l'ordre des données tel que délivré au module d'aiguillage, avant entrelacement et l'ordre des données, après entrelacement ; - la figure 4 est un schéma illustrant une première phase d'un mode de mise en oeuvre d'un procédé d'entrelacement conforme à l'invention ; - la figure 5 illustre la phase de recopie des emplacements mémoires de la première matrice intermédiaire vers la deuxième matrice intermédiaire ; - la figure 6 illustre la phase d'affectation des emplacements mémoires dans la deuxième matrice intermédiaire ; - la figure 7 illustre une phase de recopie des emplacements mémoires de la deuxième matrice intermédiaire vers la première matrice intermédiaire ; - la figure 8 illustre une étape ultérieure de recopie des 25 emplacements mémoires dans la première matrice intermédiaire ; - la figure 9 montre une phase ultérieure au cours de laquelle on reporte les emplacements mémoires de la première matrice intermédiaire vers la deuxième matrice intermédiaire ; 30 - la figure 10 montre une phase ultérieure de remplissage de la deuxième matrice intermédiaire ; - la figure 11 montre une étape finale au cours de laquelle on reporte les emplacements mémoire de la deuxième matrice intermédiaire vers la première matrice intermédiaire ; 20 - la figure 12 est un schéma illustrant l'utilisation d'un moyen de permutation de données pour accéder successivement à l'ensemble des emplacements mémoires ; - la figure 13 est un exemple d'architecture permettant la mise en oeuvre d'un procédé d'entrelacement conforme à l'invention ; et - les figures 14 à 17 illustrent divers modes de réalisation d'une architecture conforme à l'invention. On va tout d'abord décrire en référence aux figures 3 à 12, un exemple de mise en oeuvre d'un procédé d'entrelacement de données selon un aspect de l'invention. Dans l'exemple de réalisation illustré, les données issues des modules de traitement se présentent selon l'ordre naturel suivant : {1, 2, 3, ...,12} Après entrelacement, la règle d'entrelacement prévoit que les données entrelacées se présentent selon l'ordre suivant : {10, 1, 4, 7, 8, 11, 3, 6, 2, 5, 9, 12}. L'ordre naturel des données et l'ordre des données entrelacées sont respectivement illustrés par les matrices Ml et M2 visibles sur la figure 3. Par ailleurs, dans l'exemple de mise en oeuvre envisagée, les données sont délivrées par quatre modules de traitement producteurs ou consommateurs de données. En outre, l'architecture d'entrelacement comporte quatre bancs mémoire, désignés par la suite par les références B1, B2, B3 et B4. L'architecture d'entrelacement ainsi que le procédé d'entrelacement correspondant sont destinés à permettre de ranger les données en mémoire à partir de l'ordre naturel, en considérant l'ordre entrelacé tout en évitant les conflits. Pour ce faire, à partir de la matrice illustrant l'ordre naturel des données, tel que délivré par les modules de traitement, on procède tout d'abord à une affectation des quatre bancs mémoires B1, B2, B3 et B4 à un ensemble d'emplacements de la matrice d'entrée matrice IN . I1 s'agit par exemple, dans l'exemple illustré, d'affecter les quatre bancs mémoires B1, B2, B3 et B4 aux quatre emplacements de la première colonne de la matrice d'entrée (figure 4). Lors de l'étape suivante, visible sur la figure 5, on reporte les contraintes ainsi élaborées sur la matrice de sortie matrice OUT . Comme illustré, il s'agit, en d'autres termes, d'identifier, dans la matrice d'entrelacement M2, les emplacements mémoires correspondant aux données entrelacées. En d'autres termes, le procédé d'entrelacement consiste à utiliser deux matrices intermédiaires, à savoir la matrice d'entrée et la matrice de sortie, d'affecter des bancs mémoires dans l'une des matrices, et de reporter, dans l'autre matrice, les bancs mémoires correspondant à l'ordre entrelacé. Ces étapes sont répétées jusqu'au remplissage complet des deux matrices intermédiaires. Ainsi, comme visible sur la figure 6, après avoir reporté, dans la matrice de sortie, les bancs mémoires affectés à la première colonne de la matrice d'entrée, en tenant compte de l'ordre des données entrelacées, on affecte, dans la matrice de sortie, les bancs mémoires aux colonnes suivantes de cette matrice. On reporte ainsi, de la même manière, les bancs mémoires affectés à la matrice de sortie en identifiant la valeur des données correspondantes dans la matrice d'entrelacement et en recopiant les bancs mémoire dans la matrice d'entrée, en tenant compte de l'ordre naturel de données identifié par la matrice Ml(figure 7). Lors de l'étape suivante, illustrée à la figure 8, on effectue une nouvelle étape d'affectation de bancs mémoires, à partir de l'ordre naturel. Toutefois, dans ce cas, on prend soin d'affecter les bancs mémoires B3 et B4 dans un ordre particulier afin d'éviter les conflits d'accès mais également de permettre l'utilisation de moyens de permutation pour le passage de données d'une colonne précédente à une colonne en cours. En effet, à ce stade, il convient d'affecter le banc mémoire B3 à la cellule (l, 2) de la matrice d'entrée afin de permettre l'utilisation de moyens de permutation entre la première colonne et la deuxième colonne. Après avoir effectué cette affectation, on reporte, de la même manière, en se référant à la figure 9, les bancs mémoires dans la matrice de sortie, en tenant compte de l'ordre entrelacé. Comme visible sur les figures 10 et 11, il convient alors simplement de remplir les deux dernières cases libres de la matrice de sortie et de reporter, dans la matrice d'entrée, les bancs mémoires en tenant compte de l'ordre naturel. Ainsi, comme on le voit sur la figure 12, à partir de l'ordre naturel, les données peuvent être rangées dans la matrice d'entrée, successivement, en procédant, d'une part, à un décalage double et, d'autre part, à un décalage neutre. On comprendra ainsi que l'on peut minimiser la complexité de la commande des moyens de permutation qui, en ce qui concerne le deuxième décalage, peuvent être alors inactivés. En ce qui concerne l'ordre entrelacé, les données sont successivement rangées en mémoire en mettant en oeuvre une permutation de -1 et une permutation double de +2 . On conçoit ainsi que l'entrelacement peut être mis en oeuvre au moyen d'un agencement des données en mémoire utilisant uniquement des moyens de décalage de type Barrel-shifter , en anglais. Les données rangées en mémoire sont alors rangées selon les séquences suivantes, en ce qui concerne les bancs B1, B2, B3 et B4 : Banc B1 : {1, 8, 9,} Banc B2 : {4, 11, 12} Banc B3 : {2, 3, 7} Banc B4 : {5, 6, 10} Ainsi, comme on le voit sur la figure 13, l'architecture permettant de mettre en oeuvre le procédé d'entrelacement qui vient d'être décrit utilise uniquement des moyens de permutation régulière des données, par exemple de type Barrel-shifter ou registre à barillet , 1, 2 pilotés chacun par un moyen de commande 3, 4 prévoyant la mémorisation des données issues des blocs de traitement B1, B2, ..., Bä dans des bancs de mémoire M1, M2, ... Mn eux-mêmes pilotés par un moyen de commande 5 servant à l'adressage des bancs mémoires. Ce schéma général peut être obtenu au moyen de divers types d'architectures. Ainsi, en se référant à la figure 14, qui illustre un premier mode d'implantation, on prévoit d'accéder en parallèle à différents bancs mémoires Ml, M2, M3, M4 et M5 placés entre deux étages de permutation. Comme on le voit, les étages de permutation BS ainsi que les bancs mémoires sont chacun pilotés par un étage de contrôle CTRL1, CTRL2 et CTRL3 sous le contrôle d'un compteur CPT. Comme visible sur la figure 15, on peut également, en variante, utiliser un unique étage de permutation BS permettant d'accéder à l'ensemble des bancs mémoires Ml, M2, M3, M4 et M5. Selon encore une autre variante, visible sur la figure 16, on utilise un unique étage de permutation BS permettant d'accéder, en parallèle, à des bancs mémoires Ml, M2, M3 et M4 sous la commande d'étages de contrôle CTRL1 et CTRL2 respectifs, eux-mêmes sous le contrôle d'un compteur CPT. Les bancs mémoires Ml, M2, M3 et M4 sont eux-mêmes raccordés à des multiplexeurs MUX pilotés par un étage de contrôle CTRL3. Enfin, selon encore un autre mode de mise en oeuvre, l'étage de permutation BS est placé en aval des bancs mémoires Ml, M2, M3, M4, M5 et M'l, M'2, M'3, M'4 et M'S pour, par exemple, recevoir en parallèle, des données issues de dits étages de traitement (figure 17). REVENDICATIONS 1. Procédé d'entrelacement de données, comprenant l'aiguillage des données en parallèle vers des moyens de mémorisation (Ml, M2,..., Mn) au moyen d'une matrice d'affectation des données en mémoire, caractérisé en ce que l'on élabore la matrice de manière à aiguiller les données en mémoire en utilisant des moyens de traitement (Il, I2) systématiques adaptés pour agir de manière identique sur l'ensemble des données aiguillées simultanément en parallèle. 2. Procédé selon la revendication 1, caractérisé en ce que la matrice d'affectation des données est élaborée par étapes successives au cours desquelles on affecte des données à des emplacements mémoire de manière à éviter les conflits d'accès en mémoire. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que l'on détermine l'affectation en mémoire à partir d'un ordre de données en entrée et d'une règle d'entrelacement, en utilisant deux matrices intermédiaires (Matrice IN, Matrice OUT) dans chacune desquelles on affecte successivement des emplacement mémoire de telle sorte que l'aiguillage des données à des instants successifs s'effectue à l'aide desdits moyens de traitement systématiques, et en recopiant les affectations des mémoire de l'une des matrices intermédiaire vers l'autre. 4. Procédé selon la revendication 3, caractérisé en ce que l'ordre des données en entrée et la règle d'entrelacement sont représentés par une matrice d'entrée (Ml) et une matrice d'entrelacement (M2), respectivement, dont les colonnes correspondent chacune à des accès simultanés à des données en parallèle. 5. Procédé selon la revendication 4, caractérisé en ce que l'on affecte des emplacements mémoire à une première matrice intermédiaire sous la forme d'une première colonne d'emplacement mémoire, on reporte les emplacements mémoire dans la deuxième matrice intermédiaire à partir de l'emplacement des données correspondant dans la matrice d'entrelacement. 6. Procédé selon la revendication 5, caractérisé en ce que l'on affecte en outre des emplacements mémoire à une première colonne de la deuxième matrice intermédiaire et l'on reporte les emplacements mémoire dans la première matrice intermédiaire à partir de l'emplacement des données correspondantes dans la matrice d'entrée. 7. Procédé selon la revendication 6, caractérisé en ce que l'on procède successivement à une affectation des emplacements mémoire à l'une des matrices intermédiaires et à un report des emplacements mémoire dans l'autre matrice intermédiaire jusqu'au remplissage de l'ensemble des première et deuxième matrices intermédiaires. 8. Procédé selon la revendication 7, caractérisé en ce que l'étape d'affectation des emplacements mémoire est réalisée de manière à éviter les conflits d'accès. 9. Dispositif d'entrelacement de données d'un premier ensemble de module de traitement de données disposées en parallèle vers un deuxième ensemble de module de traitement disposées en parallèle, comprenant un ensemble de bancs mémoire (Ml, M2, M3) en parallèle et des moyens d'aiguillage (Il, I2) interposés entre les bancs mémoire et les premier et deuxième ensembles de modules de traitement de données, caractérisé en ce que les moyens d'aiguillage sont réalisés à partir de moyens de traitement de données systématiques adaptés pour agir de manière identique sur l'ensemble des données aiguillées simultanément en parallèle. 10. Dispositif selon la revendication 9, caractérisé en ce que les moyens de traitement de données comprennent des moyens de permutation de données.