DESCRIPTION Titre : Procédé de codage de données source, procédé de décodage de mots de code, dispositifs et programme d’ordinateur correspondants. 1. Domaine de l’invention Le domaine de l’invention est celui des communications numériques. Plus précisément, l’invention concerne les codes correcteurs d’erreurs, et notamment, mais non exclusivement, les codes correcteurs d’erreurs de type LDPC (en anglais « Low Density Parity Check »). L’invention trouve notamment des applications dans le domaine du stockage ou de la transmission de données, par exemple via des communications sans fil (par exemple par ondes radio ou ondes optiques non guidées) ou filaire (par exemple par fibre optique ou câble électrique). En particulier, l’invention trouve des applications dans tous les domaines où l’on cherche à offrir une bonne fiabilité de transmission, par exemple pour les transmissions radio (Wifi®, 5G, 6G …). 2. Art antérieur La figure 1 illustre un émetteur d’une chaine de transmission numérique. Un tel émetteur utilise des modules classiques de traitement du signal. Ainsi, les données source 11, par exemple des données binaires provenant d’une source génératrice de données de type vidéo (par exemple une source d’images animées, d’images de réalité virtuelle ou augmentée, une source de séquence d’images), de type audio (par exemple la voix), de type de contrôle des flux qu’ils soient de type vidéo ou audio ou autre, ou provenant d’un capteur, d’un actionneur, etc., sont codées dans un bloc de codage canal 12 (appliquant un code correcteur d’erreurs) pour introduire de la redondance. Les données codées sont ensuite entrelacées dans un bloc d’entrelacement 13 (dit « externe ») pour mélanger les données codées. Un bloc de mapping 14 (aussi appelé « codage binaire signal ») permet de convertir les données codées en point de constellation (BPSK, QPSK, 16QAM, etc). Les symboles associés sont mis en trame 15 et modulés dans un bloc de modulation 16 monoporteuse ou multiporteuse, par exemple de type OFDM (« Orthogonal Frequency-Division Multiplexing »). Afin d’améliorer la robustesse des communications via un canal de communication, il est connu d’utiliser des codes correcteurs d’erreurs dans le bloc de codage canal 12. Par exemple, les codes LDPC, les turbo-codes, les codes polaires, ou encore les codes Reed-Salomon offrent de bonnes performances en termes de correction d’erreurs. Les turbo-codes ont notamment été retenus pour la norme de téléphonie mobile 4G, et les LDPC pour la norme de téléphonie mobile 5G. On s’attache ci-après à rappeler les principales caractéristiques des codes LDPC, telles que définies
dans la norme 5G notamment. Classiquement, les codes LDPC sont définis par trois paramètres ^^^^, ^^^^ et ^^^^ : - ^^^^ correspond à la taille des données source fournies en entrée du codeur LDPC, par exemple en nombre de bits utiles (ou bits d’information) si l’on considère des données binaires, - ^^^^ correspond à la taille des données de redondance ajoutés par le codeur LDPC, par exemple en nombre de bits de redondance si l’on considère des données binaires, et - ^^^^ correspond à la taille des données issues du codeur LDPC, par exemple en nombre de bits codés, ces bits codés incluant les bits utiles et les bits de redondance. Le rendement de codage est classiquement donné par ^^^^ = ^^^^/^^^^, avec la relation ^^^^ = ^^^^ + ^^^^. Un code LDPC peut notamment être défini par une matrice de parité ^^^^, qui donne les relations de parité entre les données source et les données de redondance. Un exemple de matrice de parité ^^^^ binaire est donné en figure 2. La matrice de parité H comprend M lignes (définissant M équations de parité) et N colonnes. Les valeurs égales à « 1 » dans la matrice de parité ^^^^ correspondent aux connexions (définissant les équations de parité) entre les données utiles et les données de redondance. Plus le nombre de connexions (i.e. de « 1 » dans la matrice de parité ^^^^) est important, plus la complexité du décodeur sera importante. A titre illustratif, suivant l’exemple de la matrice de parité ^^^^ de la figure 2, l’équation de parité définie à la première ligne donne la première donnée de redondance ^^^^(0) : ^^^^(0) = ^^^^(0)^^^^^(1)^^^^^(2)^^^^^(3)^^^^^(4)^^^^^(6)^^^^^(7)^^^^^(9)^^^^^(10)^^^^^(11)^^^^^(12)^^^^^(13) avec : ^^^^(^^^^) = 0 ou 1, et ^ l’opération « ou exclusif ». Dans le document ETSI TS 138 212 V15.2.0, le consortium de normalisation 3GPP a défini deux structures ou matrices de base BG1 et BG2 (« Base Graph » en anglais) permettant de construire 104 matrices de parité ^^^^ de codes LDPC (52 matrices construites à partir de la matrice de base BG1 et 52 matrices construites à partir de la matrice de base BG2). Par exemple, pour la 5G, les dimensions des matrices de base BG1 et BG2 sont : - BG1 : ^^^^ = 22, ^^^^ = 46, ^^^^ = 68 - BG2 : soit ^^^^^^^^ = 6, ^^^^ = 26, ^^^^ = 32, soit ^^^^^^^^ = 8, ^^^^ = 34, ^^^^ = 42, soit ^^^^^^^^ = 9, ^^^^ = 38, ^^^^ = 47, soit ^^^^^^^^ = 10, ^^^^ = 42, ^^^^ = 52. On utilise classiquement la notation ^^^^^^^^ , au lieu de ^^^^, pour la matrice BG2, avec ^^^^^^^^ = {6,8,9,10}. Les matrices de parité ^^^^ sont obtenues à partir des matrices de base BG1 ou BG2, à partir d’un facteur
d’expansion ^^^^^^^^ et d’une rotation circulaire ^^^^^^^^ d’une matrice diagonale. Une telle construction est connue sous le nom « Protograph » en anglais et permet d’avoir une description compacte de l’ensemble des matrices. Selon cette technique, une matrice de parité ^^^^ de taille ^^^^.^^^^^^^^ × ^^^^.^^^^^^^^ est obtenue en remplaçant chaque élément non nul de la matrice de base BG1 ou BG2 par une matrice diagonale de taille ^^^^^^^^ × ^^^^^^^^ à laquelle on a appliqué une rotation circulaire ^^^^^^^^ (qui n’est pas nécessairement la même pour tous les éléments non nuls de la matrice de base). Un avantage de cette famille de codeurs LDPC est d’obtenir facilement l’ensemble des matrices de parité ^^^^ tout en limitant l’utilisation de la mémoire. Par exemple, pour un facteur d’expansion ^^^^^^^^ = 8 et une rotation circulaire ^^^^^^^^ = 2, un élément non nul de la matrice de base BG1 ou BG2 est remplacé par la matrice suivante : 0 0 1 0 0 0 0 0 é0 0 0 ù ê 1 0 0 0 0 0 0 0 0 1 0 ú ê 0 0 0 0 0 ú ê 0 0 1 0 0ú ê 0 0 0 0 0 0 1 0ú ê0 0 0 0 0 0 0 1ú ê 1 0 0 0 0 0 0 0ú ë0 1 0 0 0 0 0 0 û Selon le document ETSI TS 138212 V15.2.0, pour chaque matrice de base BG1 ou BG2, il est ainsi possible de construire 52 matrices, classées en huit sous-familles selon la valeur du facteur d’expansion ^^^^^^^^ (compris entre 2 et 384), selon l’index « ils » : Index ils Facteur d’expansion ^^^^^^^^ 0 2,4,8,16,32,128,256 1 3,6,12,24,48,96,192,384 2 5,10,20,40,80,160,320 3 7,14,28,56,112,224 4 9,18,36,72,144,288 5 11,22,44,88,176,352 6 13,26,52,104,208 7 15,30,60,120,240 Ainsi, il est possible de coder des blocs de données source de taille ^^^^.^^^^^^^^ , allant de 12 bits (à partir de la matrice de base BG2 avec ^^^^ = ^^^^^^^^ = 6 et le facteur d’expansion minimal ^^^^^^^^ = 2) à 8448 bits (à partir de la matrice de base BG1 avec ^^^^ = 22 et le facteur d’expansion maximal ^^^^^^^^ = 384). Le choix entre l’utilisation de la matrice de base BG1 ou BG2 s’effectue en fonction de la taille des données source à coder ^^^^.^^^^^^^^ et du rendement de codage ^^^^ souhaité. Ainsi, comme illustré en figure
3, la matrice de base BG1 est principalement utilisée pour les rendements de codage élevés et les tailles importantes des données source à coder, par exemple pour des applications de type eMBB (« enhanced Mobile BroadBand »). La matrice de base BG2 est plutôt utilisée pour coder des blocs de données source de petite taille (par exemple ^^^^.^^^^^^^^ < 292 bits, ou ^^^^.^^^^^^^^ < 3824 bits et ^^^^ < 2/3, ou ^^^^ < 0,25), notamment pour des applications de type URRLC (« Ultra Reliable Low Latency Communications »). Ces deux matrices de base sont notamment conçues pour couvrir les différents usages de la 5G qui peuvent nécessiter un haut débit et/ou une grande fiabilité (robustesse). Par ailleurs, selon la norme 5G, les deux premières colonnes de la matrice de base BG1 ou BG2 sont supprimées avant transmission, ce qui induit que les rendements de base sont respectivement ^^^^^^^^^^^^1 = ^^^^/(^^^^ − 2) = 22/66 = 1/3 et ^^^^^^^^^^^^2 = 10/50 = 1/5. On note par ailleurs que les matrices de base BG1 ou BG2 utilisées pour construire la matrice de parité ^^^^ d’un code LDPC selon la norme 5G peuvent être représentées sous la forme de six sous-matrices ^^^^, ^^^^, 0, ^^^^, ^^^^ et ^^^^, comme décrit dans le document « High Area-Efficient Parallel Encoder with compatible architecture for 5G LDPC codes », Y. Zhu et al., et illustré en figure 4 : �^^^^ ^^^^ 0 ^^^^ ^^^^ ^^^^� avec : ^^^^ une matrice noyau ou Kernel de taille 4 × ^^^^ ^^^^ une matrice présentant au moins une double diagonale de taille 4 × 4 ^^^^ une matrice d’extension de taille (^^^^ − 4) × ^^^^ ^^^^ une matrice de prolongement, également appelée matrice étendue, de taille (^^^^ − 4) × 4 0 une matrice nulle de taille (^^^^ − ^^^^ − 4) × 4 ^^^^ une matrice identité de taille (^^^^ − 4) × (^^^^ − ^^^^ − 4). Bien que les codes LDPC soient reconnus pour leur capacité à garantir des transmissions à haut débit, notamment grâce à la possibilité de paralléliser les opérations au niveau du décodeur, un inconvénient de ces codes est la complexité liée au décodage. En effet, plus le nombre d’itérations de décodage est important, plus le nombre d’opérations à effectuer en réception est important et consommateur en termes de ressources. Le bloc de décodage peut ainsi utiliser jusqu’à 90% des ressources du récepteur. Il peut être considéré comme la partie la plus énergivore de la couche physique, en particulier pour la 5G. Il existe donc un besoin pour une nouvelle technique de codage cherchant à réduire la consommation en énergie du décodeur. 3. Exposé de l’invention
L’invention propose une solution nouvelle sous la forme d’un procédé de codage d’au moins un bloc de ^^^^.^^^^^^^^ données source, délivrant au moins un mot de code de taille ^^^^.^^^^^^^^ formé desdites ^^^^.^^^^^^^^ données source et de ^^^^.^^^^^^^^ données de redondance, ^^^^ = ^^^^ + ^^^^, avec ^^^^^^^^ un facteur d’expansion entier, ^^^^^^^^ ≥ 1, ledit procédé mettant en œuvre une étape de codage desdites ^^^^.^^^^^^^^ données source en utilisant une matrice de parité ^^^^ de taille (^^^^.^^^^^^^^ × ^^^^.^^^^^^^^). Selon l’invention, la matrice de parité ^^^^ est obtenue à partir d’une matrice de base ^^^^^^^^’ de taille ^^^^ × ^^^^, en remplaçant chaque élément de ladite matrice de base ^^^^^^^^’ par une matrice d’expansion de taille ^^^^^^^^ × ^^^^^^^^ , de base ^^^^^^^^’ s’exprimant sous la forme : ^^^^^^^^’ ^^^^ 0 avec :
^^^^ une matrice noyau de taille ^^^^ × ^^^^ ^^^^ une matrice présentant au moins une diagonale de taille ^^^^ × ^^^^ ^^^^ une matrice d’extension de taille (^^^^ − ^^^^) × ^^^^ ^^^^ une matrice de prolongement de taille (^^^^ − ^^^^) × ^^^^ 0 une matrice nulle de taille (^^^^ − ^^^^ − ^^^^) × ^^^^ ^^^^ une matrice identité de taille (^^^^ − ^^^^) × (^^^^ − ^^^^ − ^^^^) De plus, la matrice d’extension ^^^^ comprend au moins deux blocs de ^^^^ lignes et au moins un bloc de ^^^^ colonnes, avec ^^^^ un entier compris entre 1 et ^^^^ − 1, chaque bloc de ^^^^ lignes comprenant au moins une matrice ^^^^^ ^ ^^^ ^^ ^ obtenue en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^, avec ^^^^ un compris entre 0 et ^^^^ − 1,
ledit au moins un bloc de ^^^^ colonnes comprenant au moins deux ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à ladite matrice diagonale de taille ^^^^ × ^^^^. En d’autres termes, la matrice d’extension ^^^^ comprend, dans un même bloc de ^^^^ colonnes, au moins deux matrices obtenues en appliquant une rotation circulaire distincte à une matrice diagonale de taille ^^^^ × ^^^^. Avantageusement, la matrice formée de la matrice d’extension ^^^^ et de la matrice de prolongement ^^^^ comprend, dans un même bloc de ^^^^ lignes, au moins deux matrices obtenues en appliquant une rotation circulaire à une matrice diagonale de taille ^^^^ × ^^^^. On cherche ainsi à éviter la répétition d’un même motif sur les différents blocs de lignes et/ou blocs de colonnes de la matrice d’extension ^^^^, de façon à obtenir une indépendance entre les lignes de la matrice d’extension ^^^^ et éviter, ou à tout le moins limiter, les cycles courts. On cherche aussi à répartir
les éléments non nuls de la matrice d’extension ^^^^ sur ses différentes lignes et/ou colonnes, de façon sensiblement homogène. En particulier, il est possible de faire varier le nombre de connexions par ligne en choisissant la taille ^^^^ des blocs de lignes ou de colonnes. On rappelle à cet effet que plus le nombre de connexions (i.e. d’éléments non nuls dans la matrice de base BG’, et par suite dans la matrice de parité ^^^^) est important, plus la complexité du décodeur est importante. On cherche donc selon un mode de réalisation à réaliser un compromis entre le nombre de connexions et les performances de décodage. La solution proposée cherche ainsi à améliorer la structure d’un codeur LDPC, dans le but d’accélérer la convergence du décodeur et donc de diminuer la consommation d’énergie en réception associée l’utilisation en émission de ce module de codage. Dans un mode de réalisation particulier, les matrices de base proposées correspondent aux exigences définies par le 3GPP dans le document TS 138212 V15.2.0 cité précédemment en termes de taille de blocs à coder ^^^^.^^^^^^^^ et de rendement de codage ^^^^. En particulier, les données codées (mot de code formé des ^^^^.^^^^^^^^ données source et ^^^^.^^^^^^^^ données de redondance) peuvent être stockées dans une mémoire et/ou transmises d’un émetteur vers un récepteur, via un canal de transmission. Selon un mode de réalisation particulier, au moins un desdits blocs de lignes comprend une succession d’au moins deux matrices ^^^^^ ^ ^^ ^^ ^^
en appliquant un coefficient de rotation circulaire ^^^^ distinct à ladite matrice diagonale de taille ^^^^ × ^^^^. A nouveau, on cherche à éviter la répétition d’un même motif au sein d’un même bloc de lignes de la matrice d’extension ^^^^. Notamment, l’utilisation de rotations circulaires distinctes dans un même bloc de lignes permet d’éviter, ou à tout le moins de limiter, les cycles courts de taille 4 ou 6. Il est en effet souhaitable de limiter le nombre de cycles courts, car ils limitent les performances de décodage. En particulier, de tels cycles courts introduisent des planchers d’erreurs ne permettant pas d’atteindre, au décodage, des taux d’erreur bloc (BLER) très faibles en fonction du rapport signal à bruit, par exemple de l’ordre de 10-5 ou 10-6. Selon un mode de réalisation
au moins un desdits blocs de lignes comprend une succession d’au moins deux matrices ^^^^^ ^ ^^ ^^ ^^ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à ladite matrice diagonale de taille ^^^^ × ^^^^. De cette façon, on cherche à éviter la répétition d’un même motif au sein d’un même bloc de colonnes de la matrice d’extension ^^^^. Selon un mode de réalisation particulier, ^^^^ ≥ 5.
En particulier, l’utilisation de blocs de ^^^^ ≥ 5 lignes permet notamment d’éviter, ou à tout le moins de limiter, les cycles courts de taille 4. Selon un mode de réalisation particulier, lesdits au moins deux blocs de ^^^^ lignes sont consécutifs, i.e. aucune ligne d’éléments nuls ou non nuls n’est intercalée entre deux blocs de lignes. De cette façon, les éléments non nuls de la matrice d’extension ^^^^ peuvent être répartis de façon homogène sur les différents blocs de lignes. Selon un premier mode de réalisation, la matrice d’extension ^^^^ comprend également au moins un bloc de ^^^^′ lignes, ^^^^′ ≠ ^^^^, avec ^^^^′ un entier compris entre 1 et ^^^^ − 1, comprenant une succession de matrices ^^^^^ ^ ^^^ ^^ ^′ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^′ × ^^^^′. Par exemple, le choix d’un nombre de lignes ^^^^′ = 6 pour un premier bloc de lignes, et ^^^^ = 7 pour au moins deux blocs de lignes de la matrice d’extension ^^^^ permet d’éviter les cycles courts de taille 4 ou 6. En particulier, pour au moins un desdits blocs de lignes, ladite matrice d’extension ^^^^ comprend une portion d’une desdites matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^, et ladite matrice de prolongement ^^^^ comprend le prolongement de ladite portion. En d’autres termes, la matrice formée de ladite matrice d’extension C et de ladite matrice de prolongement ^^^^ comprend au moins un motif complet représentant la matrice ^^^^^ ^ ^^ ^^ ^^, ainsi qu’éventuellement un motif partiel. Par exemple, ladite matrice d’extension ^^^^ est égale à : V2 V1 V3 V4 V1 V1 V2 V3 V2 V2 V0 V3 V3 V1 V3 V3 V0 V2 V2 V2 V2 V3 V0 V1 V4 V1 V0 V2 V4 V2 V0 V2 V1 V1 V0 V3 V2 V2 V3 V3 V4 V3 V3 V2 V0 V0 V2 V3 V1 V4 V4 V1 V0 V1
V0 V2 V3 V3 V2 V2 V4 V3 V3 V3 V4 V1 V2 V3 V1 V2 V3 V0 V4 V1 V1 V3 V4 V3 V3 V1 V3 V3 V3 V1 V3 V4 V1 V1 V1 V2 V1 V1 V1 V2 V1 V4 V3 V1 V4 V2 V1 V1 V4 V0 V4 V1 V1 V1 V2 V0 V3 V1 V3 V3 V2 V2 V2 V1 V1 V2 V2 V0 V3 V1 V2 V1 V0 V2 V4 ladite matrice de prolongement ^^^^ est égale à : V2 V1 V1 V3 V4 V3 V1 V1 V1 V3 V1
V3 V1 V3 V4 V2 V2 V1 V4 V1 V4 V1 V2 De plus : - chaque élément vide ou nul de ladite matrice de base ^^^^^^^^’ est remplacé par une matrice nulle de taille ^^^^^^^^ × ^^^^^^^^ , - chaque élément non nul de ladite matrice de base ^^^^^^^^’ est remplacé par une matrice d’expansion obtenue en appliquant une rotation circulaire ^^^^^^^^ à une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ , telle que : Rotation circulaire ^^^^^^^^ si ^^^^^^^^ appartient à ^^^^0 = 0 + 4^^^^,^^^^ ∈ [0: 63] {2,4,8,16,32,128,256 } : ^^^^1 = 1 + 4^^^^,^^^^ ∈ [0: 63] ^^^^2 = 2 + 4^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 4^^^^,^^^^ ∈ [0: 63] ^^^^4 = 0 + 4^^^^,^^^^ ∈ [0: 63] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^ + 6^^^^, ^^^^ ∈ [0: 1] et ^^^^ ∈ [0: 63] {3,6,12,24,48,96,192,384} : ^^^^1 = 1 + 6^^^^,^^^^ ∈ [0: 63] ^^^^2 = 2 + 6^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 6^^^^,^^^^ ∈ [0: 63] ^^^^4 = 4 + 6^^^^,^^^^ ∈ [0: 63] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^,^^^^ ∈ [0: 63] {5,10,20,40,80,160,320} : ^^^^1 = 1 + 5^^^^,^^^^ ∈ [0: 63] ^^^^2 = 2 + 5^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 5^^^^,^^^^ ∈ [0: 63] ^^^^4 = 4 + 5^^^^,^^^^ ∈ [0: 63] ^^^^0 = 0 + 5^^^^ + 7^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^1 = 1 + 5^^^^ + 7^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31]
si ^^^^ appartient à ^^^^2 = 2 + 7^^^^,^^^^ ∈ [0: 31] {7,14,28,56,112,224 } : ^^^^3 = 3 + 7^^^^,^^^^ ∈ [0: 31] ^^^^4 = 4 + 7^^^^,^^^^ ∈ [0: 31] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] {9,18,36,72,144,288 } : ^^^^1 = 1 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1]^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^2 = 2 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^3 = 3 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^4 = 4 + 9^^^^,^^^^ ∈ [0: 31] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 31] {11,22,44,88,176,352 } : ^^^^1 = 1 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^2 = 2 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^3 = 3 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^4 = 4 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] {13,26,52,104,208 } : ^^^^1 = 1 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^2 = 2 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^3 = 3 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^4 = 4 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 15] si ^^^^^^^^ appartient à ^^^^0 = 0 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] {15,30,60,120,240 } : ^^^^1 = 1 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^2 = 2 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^3 = 3 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^4 = 4 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] avec ^^^^ et ^^^^ des variables aléatoires. Par exemple, ^^^^ = 4, ^^^^ = 22 et ^^^^ = 44. On constate que la matrice de base BG’ proposée selon ce premier mode de réalisation présente ainsi un format similaire à la matrice BG1 définie par le 3GPP avec une décomposition en six sous-matrices (^^^^, ^^^^, ^^^^, ^^^^, 0 et ^^^^). Toutefois, sa taille est légèrement différente de celle de la matrice de base BG1. En effet, pour la matrice BG1 définie par le 3GPP, le nombre ^^^^ de données de redondance est égal à 46, alors qu’il est égal à 44 dans la solution proposée. Ceci s’explique par le fait que les deux premières colonnes de la matrice BG1 définie par le 3GPP sont poinçonnées pour améliorer les performances dans la zone « waterfall », i.e. dans la zone où le taux d’erreur bloc du décodeur en fonction du rapport signal à bruit chute rapidement. Du fait de ce poinçonnage des deux premières colonnes, des données source peuvent ne pas être transmises. Deux lignes sont donc ajoutées à la matrice de base BG1 pour ajouter des équations de parité et permettre de reconstruire ces données source. Cette solution permet d’améliorer la robustesse du codec, notamment pour des rendements élevés. En particulier, les deux premières colonnes de la matrice BG1, qui peuvent être poinçonnées, possèdent beaucoup d’éléments non nuls, afin de pouvoir reconstruire les données source. Toutefois, cela revient à augmenter le nombre de connexions et donc le risque de cycle court.
Selon l’invention, les deux premières colonnes de la matrice de base BG’ ne sont pas poinçonnées. Il n’est donc pas nécessaire d’ajouter des équations de parité ou de prévoir un grand nombre d’éléments non nuls dans les deux premières colonnes de la matrice de base BG’. De cette façon, il est possible selon l’invention de diminuer le nombre de connexions et donc d’accélérer la convergence du décodeur et de réduire sa consommation énergétique. Selon un deuxième mode de réalisation, la matrice de prolongement ^^^^ comprend au moins deux blocs de ^^^^ lignes, chaque bloc de lignes comprenant une matrice ^^^^ ^^^^ ^^^^ obtenue en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^. L’utilisation de matrices diagonales permet ainsi de répartir les éléments non nuls de la matrice de prolongement ^^^^ sur les différentes lignes et/ou colonnes de la matrice de prolongement ^^^^. Par exemple, ^^^^ = 4 quelle que soit la valeur de ^^^^. Par exemple, lesdites matrice d’extension ^^^^ et de prolongement D sont égales à : pour K=6 : C D V2 V2 V1 V3 V2 V3 V0 V2 V3 V2 V2 V1 V2 V1 V1 V2 V2 V3 V3 V2 V1 V2 V1 V0 V2 V2 V2 V3 V1 V1 V2 V0 V0 V3 V2 V1 V0 V1 V2 V3 V0 V1 pour K=8 : C D V2 V2 V1 V3 V3 V2 V3 V2 V0
V2 V3 V2 V2 V1 V2 V1 V1 V2 V2 V3 V3 V1 V2 V1 V3 V2 V1 V3 V0 V2 V1 V2 V2 V3 V1 V1 V2 V0 V0 V3 V2 V1 V0 V3 V1 V2 V2 V3 V0 V1 V2 V0 V3 V3 V0 V3 V2 V2 V0 V2 V1 V1 V0 V0 V0 V3 V0 V3 V2 V2 V2 V2 pour K=9 : C D V2 V2 V1 V3 V3 V2 V3 V2 V0 V2 V1 V3 V2 V2 V1 V1 V2
V1 V1 V2 V2 V3 V3 V1 V2 V1 V3 V2 V1 V3 V0 V2 V1 V2 V2 V1 V3 V1 V1 V2 V0 V0 V3 V2 V1 V0 V3 V1 V2 V2 V3 V0 V0 V1 V2 V0 V3 V2 V3 V0 V3 V2 V2 V0 V2 V1 V1 V0 V0 V0 V3 V0 V3 V2 V3 V2 V2 V2 V0 V2 V0 V3 V0 V1 V2 V0 Pour K=10 : C D V2 V2 V1 V3 V3 V2 V3 V2 V0 V2 V1 V3 V2 V2 V2 V1 V1 V2 V1 V2 V1
V2 V2 V3 V3 V1 V2 V1 V3 V2 V1 V3 V0 V2 V1 V2 V2 V1 V3 V1 V3 V1 V2 V0 V0 V3 V2 V1 V0 V3 V1 V2 V2 V3 V0 V0 V1 V2 V1 V0 V3 V2 V3 V0 V0 V3 V2 V2 V0 V2 V1 V1 V0 V0 V0 V3 V0 V3 V2 V3 V2 V2 V2 V2 V0 V2 V0 V3 V0 V1 V2 V0 V2 V1 V0 V2 V0 V1 V2 V3 V1 V2 De plus : - chaque élément vide ou nul de ladite matrice de base ^^^^^^^^’ est remplacé par une matrice nulle de taille ^^^^^^^^ × ^^^^^^^^ , - chaque élément non nul de ladite matrice de base ^^^^^^^^’ est remplacé par une matrice de permutation circulaire obtenue en appliquant une rotation circulaire ^^^^^^^^ à une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ , telle que définie précédemment. Par exemple ^^^^ = 4 et : ^^^^ = 6 et ^^^^ = 24, ou ^^^^ = 8 et ^^^^ = 32, ou ^^^^ = 9 et ^^^^ = 36 ou ^^^^ = 10 et ^^^^ = 40.
On constate que la matrice de base BG’ proposée selon ce deuxième mode de réalisation présente un format similaire à la matrice BG2 définie par le 3GPP avec une décomposition en six sous-matrices (^^^^, ^^^^, ^^^^, ^^^^, 0 et ^^^^). Toutefois, sa taille est légèrement différente de celle de la matrice de base BG2. En effet, pour la matrice BG2 définie par le 3GPP, le nombre ^^^^ de données de redondance est égal à 26, 34, 38 ou 42 selon la valeur de K, alors qu’il est respectivement égal à 24, 32, 36 ou 40 dans la solution proposée. Ceci s’explique par le fait que les deux premières colonnes de la matrice BG2 définie par le 3GPP sont poinçonnées pour améliorer les performances dans la zone « waterfall ». Du fait de ce poinçonnage des deux premières colonnes, des données source peuvent ne pas être transmises. Deux lignes sont donc ajoutées à la matrice de base BG2 pour ajouter des équations de parité et permettre de reconstruire ces données source. Cette solution permet d’améliorer la robustesse du codec, notamment pour des rendements élevés. En particulier, les deux premières colonnes de la matrice BG1, qui peuvent être poinçonnées, possèdent beaucoup d’éléments non nuls, afin de pouvoir reconstruire les données source. Toutefois, cela revient à augmenter le nombre de connexions et donc le risque de cycle court. Selon l’invention, les deux premières colonnes de la matrice de base BG’ ne sont pas poinçonnées. Il n’est donc pas nécessaire d’ajouter des équations de parité ou de prévoir un grand nombre d’éléments non nuls dans les deux premières colonnes de la matrice de base BG’. De cette façon, il est possible selon l’invention de diminuer le nombre de connexions et donc d’accélérer la convergence du décodeur et de réduire sa consommation énergétique. De même, la suppression de la double diagonale de la matrice B dans un mode de réalisation proposé, par rapport à la matrice de base BG2 définie par le 3GPP, permet de simplifier le codeur. Dans un autre mode de réalisation, l’invention concerne un dispositif de codage correspondant. Un tel dispositif de codage, également appelé codeur, est notamment adaptée à mettre en œuvre le procédé de codage décrit précédemment. Il pourra bien sûr comporter les différentes caractéristiques relatives au procédé selon l’invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages du codeur sont les mêmes que ceux du procédé décrit précédemment. Par conséquent, ils ne sont pas détaillés plus amplement. L’invention concerne par ailleurs un procédé et un dispositif de décodage correspondant. Un tel procédé de décodage et notamment adapté à décoder au moins un mot de code construit en utilisant le procédé de codage décrit ci-dessus. Il pourra bien sûr comporter les différentes caractéristiques relatives au procédé de codage selon l’invention, qui peuvent être combinées ou prises isolément. Ainsi, les caractéristiques et avantages du procédé de décodage et du décodeur sont
les mêmes que ceux du procédé de codage et du codeur décrits précédemment. Par conséquent, ils ne sont pas détaillés plus amplement. En particulier, le procédé de décodage peut mettre en œuvre un décodage d’une équation de parité obtenue à partir de la dernière ligne de la matrice de parité ^^^^, puis d’une équation de parité obtenue à partir de la ligne précédente de ladite matrice de parité ^^^^, en remontant ligne par ligne jusqu’à la première ligne de la matrice de parité ^^^^. Un tel décodage en mode « reverse » offre de bonnes performances, notamment pour décoder des données source de petites tailles, par exemple pour ^^^^.^^^^^^^^ < 256. L’invention concerne encore un ou plusieurs programmes d’ordinateur comportant des instructions pour la mise en œuvre d’un procédé tel que décrit ci-dessus lorsque ce ou ces programmes sont exécutés par au moins un processeur. L’invention concerne aussi un support d’informations lisible par un ordinateur, et comportant des instructions d’un programme d’ordinateur tel que mentionné ci-dessus. 4. Liste des figures D’autres caractéristiques et avantages de l’invention apparaîtront plus clairement à la lecture de la description suivante d’un mode de réalisation particulier, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 illustre un émetteur d’une chaine de transmission numérique classique ; - la figure 2 présente un exemple de matrice de parité ^^^^ pour un code LDPC ; - la figure 3 illustre des critères de sélection de la matrice de base BG1 ou BG2 ; - la figure 4 illustre la décomposition de la matrice de base BG1 ou BG2 en sous-matrices ; - les figures 5A et 5B présentent les principales étapes mises en œuvre par un procédé de codage, respectivement de décodage, selon un mode de réalisation de l’invention ; - la figure 6A et la figure 6B illustrent la structure de la matrice BG1 ; - la figure 7A et la figure 7B illustrent la notion de cycle ; - les figures 8 à 16 présentent différentes structures des matrices de base selon différents modes de réalisation de l’invention ; - les figures 17 à 19 illustrent des courbes de performances d’un décodeur LDPC mettant en œuvre un décodage d’un mot de code obtenu selon un mode de réalisation de l’invention ; - les figures 20A et 20B présentent la structure simplifiée d’un codeur, respectivement d’un décodeur, selon un mode de réalisation de l’invention. 5. Description d’un mode de réalisation de l’invention 5.1 Principe général
Le principe général de l’invention repose sur une répartition astucieuse des connexions (i.e. des éléments non nuls) dans une matrice de base ^^^^^^^^’, cherchant à répartir les connexions de façon sensiblement homogène et/ou à limiter le nombre de cycles courts. Par suite, une matrice de parité ^^^^ obtenue à partir de la matrice de base modifiée ^^^^^^^^’ présente une structure particulière. Une telle structure permet d’améliorer les performances des codes correcteurs d’erreurs, notamment en diminuant la complexité du décodage. La figure 5A illustre les principales étapes d’un procédé de codage selon un mode de réalisation de l’invention. Au cours d’une première étape 51, on obtient une matrice de base ^^^^^^^^’ de taille ^^^^ × ^^^^. Une telle matrice de base ^^^^^^^^’ peut être décomposée en six sous-matrices ^^^^, ^^^^, 0, ^^^^, ^^^^, ^^^^, et s’exprimer sous la forme : ^^^^^^^^’ ^^^^ 0
avec : ^^^^ une matrice noyau de taille ^^^^ × ^^^^ ^^^^ une matrice présentant au moins une diagonale de taille ^^^^ × ^^^^ ^^^^ une matrice d’extension de taille (^^^^ − ^^^^) × ^^^^ ^^^^ une matrice de prolongement de taille (^^^^ − ^^^^) × ^^^^ 0 une matrice nulle de taille (^^^^ − ^^^^ − ^^^^) × ^^^^ ^^^^ une matrice identité de taille (^^^^ − ^^^^) × (^^^^ − ^^^^ − ^^^^) En particulier, la matrice d’extension ^^^^ présente une structure particulière et comprend au moins deux blocs de ^^^^ lignes et au moins un bloc de ^^^^ colonnes, avec ^^^^ un entier compris entre 1 et ^^^^ − 1, chaque bloc de ^^^^ lignes comprenant au moins une matrice ^^^^^ ^ ^^^ ^^ ^ obtenue en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^, avec ^^^^ un entier compris entre 0 et ^^^^ − 1, ledit au moins un bloc de ^^^^ colonnes comprenant au moins deux matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à ladite matrice diagonale de taille ^^^^ × ^^^^. Au cours d’une deuxième étape 52, on obtient une matrice de parité ^^^^ à partir de la matrice de base ^^^^^^^^’. Pour ce faire, on remplace chaque élément de la matrice de base ^^^^^^^^’ par une matrice d’expansion de taille ^^^^^^^^ × ^^^^^^^^ , avec ^^^^^^^^ un facteur d’expansion entier, ^^^^^^^^ ≥ 1. Plus précisément, chaque élément nul ou vide de la matrice de base ^^^^^^^^’ est remplacé par une matrice nulle de taille ^^^^^^^^ × ^^^^^^^^, et chaque élément non nul ou non vide de la matrice de base ^^^^^^^^’ est remplacé par une matrice de permutation circulaire, obtenue en appliquant une rotation circulaire ^^^^^^^^ à une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ . Au cours d’une troisième étape 53, au moins un bloc de ^^^^.^^^^^^^^ données source est codé en utilisant la matrice de parité ^^^^ de taille (^^^^.^^^^^^^^ × ^^^^.^^^^^^^^), de façon à obtenir au moins un mot de code de taille
^^^^.^^^^^^^^ formé des ^^^^.^^^^^^^^ données source et de ^^^^.^^^^^^^^ données de redondance, ^^^^ = ^^^^ + ^^^^. Un tel mot de code peut notamment être stocké dans une mémoire du codeur ou transmis par un émetteur à destination d’un récepteur. La figure 5B illustre les principales étapes d’un procédé de décodage selon un mode de réalisation de l’invention. Au cours d’une première étape 54, on obtient une matrice de base ^^^^^^^^’ de taille ^^^^ × ^^^^. Cette étape est similaire à la première étape 51 mise en œuvre par le procédé de codage. Au cours d’une deuxième étape 55, on obtient une matrice de parité ^^^^ à partir de la matrice de base ^^^^^^^^’. Cette étape est similaire à la deuxième étape 52 mise en œuvre par le procédé de codage. Au cours d’une troisième étape 56, au moins un mot de code de taille ^^^^.^^^^^^^^ formé de ^^^^.^^^^^^^^ données source et de ^^^^.^^^^^^^^ données de redondance, ^^^^ = ^^^^ + ^^^^ est décodé en utilisant la matrice de parité ^^^^ de taille (^^^^.^^^^^^^^ × ^^^^.^^^^^^^^), de façon à reconstruire au moins un bloc de ^^^^.^^^^^^^^ données source. 5.2 Matrice de base BG1 Afin de mieux comprendre l’invention, on rappelle en figure 6A la structure de la matrice de base BG1 telle que définie dans le document ETSI TS 138212 V15.2.0, formée des matrices ^^^^, ^^^^, ^^^^ et ^^^^. Les sous-matrices ^^^^ et ^^^^ sont omises par souci de simplification. Les éléments « 1 » de la matrice de base BG1 représentent les connexions des différentes équations de parité. Le nombre de connexions par colonne et par ligne a été ajouté sur la figure 6A. Ainsi, la première colonne des matrices ^^^^ et ^^^^ comprend 30 connexions, la deuxième colonne comprend 28 connexions, la troisième colonne comprend 7 connexions, etc. La première colonne des matrices ^^^^ et ^^^^ comprend 12 connexions, la deuxième colonne comprend 5 connexions, etc. Les quatre premières lignes des matrices ^^^^ et ^^^^ comprennent chacune 19 connexions. La première ligne des matrices ^^^^ et ^^^^ comprend 2 connexions, la deuxième ligne comprend 7 connexions, etc. Si l’on ne tient pas compte des matrices nulle ^^^^ et identité ^^^^, le nombre minimum de connexions par ligne est 2 et le nombre maximum de connexions par ligne est 19. Le nombre minimum de connexions par colonne est 4 et le nombre maximum de connexions par colonne est 30. Il existe donc une forte disparité dans le nombre de connexions par ligne et/ou par colonne dans la matrice BG1. La matrice noyau ^^^^ a, en proportion, beaucoup de connexions, i.e. beaucoup d’éléments non nuls, car c’est le noyau (kernel) de la matrice BG1. Cela permet au décodeur, en réception, de retrouver les données source. On note par ailleurs que les deux premières colonnes de la matrice BG1, qui correspondent aux données non transmises, possèdent également beaucoup de connexions (« 1 »).
A titre d’exemple, la figure 6B illustre les facteurs de rotation circulaire ^^^^ pour la matrice BG1 de la figure 6A, pour un facteur d’expansion ^^^^^^^^ = 256. La matrice de parité ^^^^ est construite en remplaçant chaque élément non nul de la matrice BG1 par une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ , et en appliquant une rotation circulaire ^^^^ selon les facteurs illustrés en figure 6B. Ainsi, l’élément « 1 » de la première ligne/première colonne de la matrice BG1 de la figure 6A est remplacé par une matrice identité de taille 256 × 256 à laquelle on applique une rotation circulaire ^^^^ = 250. L’élément « 1 » de la première ligne/deuxième colonne de la matrice BG1 de la figure 6A est remplacé par une matrice identité de taille 256 × 256 à laquelle on applique une rotation circulaire ^^^^ = 69, et ainsi de suite. 5.3 Matrice de base BG2 De la même façon, le document ETSI TS 138212 V15.2.0 décrit la structure de la matrice de base BG2, qui peut être décomposée en sous-matrices ^^^^, ^^^^, ^^^^, ^^^^, ^^^^ et ^^^^. Les sous-matrices ^^^^ et ^^^^ sont omises par la suite par souci de simplification. En particulier, le 3GPP a proposé de décomposer la matrice de base BG2 en quatre sous-matrices dont la dimension dépend du paramètre K. Ce paramètre dépend de la taille des données source à coder (K=6, 8, 9 ou 10). Les sous-matrices C et D de la matrice de base BG2 peuvent être représentées sous une forme imbriquée. 5.4 Matrices de base proposées La position des connexions dans les matrices de base BG1 ou BG2, ainsi que les facteurs de rotation à utiliser, sont précisés dans la norme 5G 3GPP. Toutefois, comme indiqué préalablement, il reste souhaitable d’améliorer les performances des codes correcteurs d’erreurs, notamment en diminuant la complexité du décodage. On propose donc ci-après de nouvelles matrices de base adaptées notamment aux exigences de la 5G (en termes de taille de blocs à coder ^^^^.^^^^^^^^ et de rendement de codage ^^^^) et de futures évolutions, offrant de bonnes performances tout en diminuant la complexité de décodage, par exemple en réduisant le nombre d’itérations de décodage. La solution proposée permet ainsi de réduire la consommation en énergie du codec LDPC. Bien entendu, l’invention, bien que présentant une application privilégiée dans le contexte des standards 3GPP, ne se limite pas à cette utilisation et peut être envisagée dans d’autres contextes, par exemple pour d’autres réseaux ou plus généralement pour d’autres systèmes de communication utilisant des codes LDPC. Selon un mode de réalisation particulier, la structure des matrices de base proposées est définie de sorte à avoir une faible disparité dans le nombre de connexions par ligne et/ou par colonne. En effet,
si l’on considère un codeur LDPC par exemple, on rappelle que le décodage LDPC s’appuie sur les bases des probabilités d’avoir transmis une valeur égale à « 1 » ou « 0 ». Il est donc souhaitable de distribuer le nombre de connexions de façon homogène, afin que le nombre de connexions en ligne, et surtout en colonne, soit sensiblement constant ou équiréparti, de façon à obtenir de meilleures performances pour un nombre d’itérations réduit. La structure des matrices de base proposées est également définie de sorte à limiter le nombre de cycles courts, et si possible à éviter les cycles courts (« Girth » en anglais). En effet, de tels cycles courts limitent les performances des codes correcteurs d’erreurs, notamment des codes LDPC, surtout pour des données source de petite taille, par exemple de l’ordre de ^^^^.^^^^^^^^ = 256 bits ou moins. Pour mieux comprendre ce principe, les figures 7A et 7B illustrent les phénomènes de boucles avec un facteur d’expansion ^^^^^^^^ = 4. Selon la figure 7A, on applique un facteur d’expansion ^^^^^^^^ = 4 avec un même facteur de rotation ^^^^1 = ^^^^2 = ^^^^3 = ^^^^4 = 0 aux éléments « 1 » localisés en (^^^^, ^^^^), (^^^^ + 7, ^^^^), (^^^^, ^^^^ + 7) et (^^^^ + 7, ^^^^ + 7). On obtient une boucle, illustrée par les flèches. Selon
7B, on applique un facteur d’expansion ^^^^^^^^ = 4 avec un même facteur de rotation ^^^^1 = ^^^^2 = ^^^^4 = 0 aux éléments « 1 » localisés en position (^^^^, ^^^^), (^^^^ + 7, ^^^^) et (^^^^ + 7, ^^^^ + 7), et un facteur de rotation ^^^^3 = 1 à l’élément localisé en position (^^^^, ^^^^ + 7). Dans ce cas, il n’y a pas de boucle. Le changement de facteur de rotation d’un des éléments de la matrice permet donc d’éliminer les boucles. L’inventeur a ainsi pu définir une règle particulière pour les matrices « Protograph » concernant les cycles courts de longueur de 4 : si (^^^^0 − ^^^^3 + ^^^^4 − ^^^^2) ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ = 0, alors cette configuration provoque un cycle court de longueur de 4 (ou l’alternance de signes correspond au passage d’un bloc élémentaire (grisé en figures 7A et 7B) à un autre bloc élémentaire sur une même ligne (signe « + ») ou sur une même colonne (signe « - ») dans la boucle). Cette équation permet, selon un mode de réalisation de l’invention, de choisir la valeur des coefficients de rotation circulaire permettant de garantir que la matrice de base BG’ n’a pas de cycle de longueur 4, la limite ou le degré de liberté étant donné par la valeur de ^^^^^^^^. Par ailleurs, on présente ci-après différentes solutions permettant d’obtenir une faible disparité dans le nombre de connexions par ligne et/ou par colonne de la matrice de base modifiée et/ou de limiter (voire éviter) les cycles courts. Afin de limiter le nombre de cycles courts, on propose dans un premier temps de ne plus poinçonner les deux premières colonnes des nouvelles matrices noyau ^^^^ et d’extension ^^^^ à l’émission, alors que les deux premières colonnes des matrices noyau ^^^^ et d’extension ^^^^ sont classiquement poinçonnées dans les matrices de base BG1 et BG2 selon le 3GPP. En effet, une telle technique de poinçonnage nécessite un nombre important de connexions dans les deux premières colonnes et peut donc
conduire à un nombre important de cycles courts. De plus, elle diminue la vitesse de convergence du décodeur. On cherche donc à s’en affranchir. On cherche par ailleurs à améliorer la répartition des connexions dans la matrice d’extension ^^^^. En effet, la matrice d’extension ^^^^ est généralement la plus importante par sa dimension. Pour la matrice de base BG1 selon le 3GPP par exemple, la matrice d’extension ^^^^, hors ses deux première colonnes destinées à être poinçonnées, présente une taille 40 × 22. Pour la matrice de base BG2 selon le 3GPP, la matrice d’extension ^^^^, hors ses deux première colonnes, présente une taille : 22 × 4 pour ^^^^^^^^ = 6 30 × 6 pour ^^^^^^^^ = 8 34 × 7 pour ^^^^^^^^ = 9 et 38 × 8 pour ^^^^^^^^ = 10. Pour garantir une bonne répartition des connexions selon un mode de réalisation de l’invention, les connexions peuvent être réparties sur des diagonales dans la matrice d’extension ^^^^. Ainsi, toutes les équations de parités sont distinctes entre elles. A titre d’exemple, si l’on considère un bloc de 10 lignes et de 20 colonnes, comme illustré en figure 8, il est possible d’avoir deux occurrences d’une matrice diagonale 10 × 10 sur le bloc de 10 lignes, soient deux connexions en ligne et une en colonne. Selon un autre exemple, si l’on considère deux blocs de 5 lignes et de 20 colonnes comme illustré en figure 9, il est possible d’avoir quatre occurrences d’une matrice diagonale 5 × 5 sur chaque bloc de 5 lignes, soient quatre connexions en ligne et une en colonne par bloc. Il est ainsi possible de faire varier le nombre de connexions par ligne selon la taille des diagonales ou des blocs de lignes. On note toutefois que la configuration illustrée en figure 9 peut introduire des cycles courts de taille 4. Pour pallier ce problème, il est possible d’effectuer une rotation circulaire par « bloc élémentaire », comme illustré en figure 10, en
technique décrite en relation avec les figures 7A et 7B. En introduisant une nouvelle variable ^^^^^^ ^^^ ^^ ^ qui définit une matrice identité de taille ^^^^ × ^^^^ et ^^^^ un coefficient de rotation circulaire, les deux blocs de 5 lignes et de 20 colonnes illustrés en figure 10 peuvent être représentés de manière plus compacte sous la forme suivante : ^^^^0 5 ^^^^0 5 ^^^^0 5 ^^^^0 5 ^^^^0 5 ^^^^1 5 ^^^^2 5 ^^^^3 5 Avec cette nouvelle représentation, il est possible de déterminer les différents coefficients de rotation circulaire ^^^^ qui assurent le minimum de cycles de longueur 4, 6 … pour l’ensemble des matrices d’extension C et de prolongement D.
5.4.1 Optimisation des matrices d’extension C et de prolongement D selon un premier exemple On présente un premier exemple de structure pour les matrices d’extension ^^^^ et de prolongement ^^^^, qui peut être utilisé notamment en 5G avec ^^^^ = 4. Selon cet exemple, illustré en figure 11, la matrice d’extension ^^^^ présente une taille (^^^^ − ^^^^) × ^^^^ = 40 × 22 et la matrice de prolongement ^^^^ une taille (^^^^ − ^^^^) × ^^^^ = 40 × 4. Une telle structure permet de limiter le nombre de cycles courts de taille 4 et d’obtenir un nombre homogène de connexions pour la matrice de base proposée, notée BG1’, sensiblement équivalente à la matrice de base BG1 proposée par le 3GPP. Comme illustré en figure 11, la matrice d’extension ^^^^ proposée comprend ainsi au moins deux blocs de ^^^^ lignes, par exemple quatre blocs de ^^^^ = 7 lignes, référencés 111, 112, 113 et 114, et au moins un bloc de ^^^^ colonnes, par exemple trois blocs de ^^^^ = 7 colonnes, référencés 121, 122 et 123. Chaque bloc de ^^^^ lignes comprend au moins une matrice ^^^^^ ^ ^^^ ^^ ^ obtenue en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ ×
avec ^^^^ un entier compris entre 0 et ^^^^ − 1 (i.e. au moins un motif complet). Par exemple, le premier bloc 111 comprend trois occurrences d’une matrice ^^^^0 7, correspondant à la matrice identité de taille 7. Le premier bloc de lignes 111 comprend ainsi une succession d’au moins deux matrices ^^^^^ ^ ^^ ^^ ^^ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à ladite matrice diagonale de taille ^^^^ × ^^^^. Le deuxième bloc 112 comprend une occurrence d’une matrice ^^^^6 7, une occurrence d’une matrice ^^^^1 7 et une occurrence d’une matrice ^^^^3 7. Le troisième bloc 113 comprend une occurrence d’une matrice ^^^^2 7, une occurrence d’une matrice ^^^^3 7 et une occurrence d’une matrice ^^^^4 7. Le quatrième bloc 114 comprend une occurrence d’une matrice ^^^^1 7, une occurrence d’une matrice ^^^^0 7 et une occurrence d’une matrice ^^^^6 7. Les blocs de lignes 112, 113 et 114 comprennent ainsi chacun une succession d’au moins deux matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à la matrice diagonale de taille ^^^^ × ^^^^. Selon l’exemple illustré, les blocs de ^^^^ lignes sont consécutifs, i.e. aucune ligne d’éléments nuls ou non nuls n’est intercalée entre deux blocs de lignes.
Par ailleurs, au moins un bloc de ^^^^ colonnes comprend au moins deux matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à ladite matrice diagonale de taille ^^^^ × ^^^^. Par exemple, le premier bloc 121 comprend une occurrence d’une matrice ^^^^0 7, une occurrence d’une matrice ^^^^6 7, une occurrence d’une matrice ^^^^2 7 et une occurrence d’une matrice ^^^^1 7. Le deuxième bloc 122 comprend une occurrence d’une matrice ^^^^0 7, une occurrence d’une matrice ^^^^1 7, une occurrence d’une matrice ^^^^3 7 et une occurrence d’une matrice ^^^^0 7. Le troisième bloc 123 comprend une occurrence
d’une matrice ^^^^0 7, une occurrence d’une matrice ^^^^3 7, une occurrence d’une matrice ^^^^4 7 et une occurrence d’une matrice ^^^^6 7. L’intersection d'un bloc de lignes et d’un bloc de colonnes correspond à un bloc élémentaire formé par une matrice ^^^^^ ^ ^^ ^^ ^^. On note par ailleurs que ladite matrice d’extension ^^^^ comprend également au moins un bloc de ^^^^′ lignes, ^^^^′ ≠ ^^^^, avec ^^^^′ un entier compris entre 1 et ^^^^ − 1 comprenant une succession de matrices ^^^^^^ ^^ ^^ ^^′ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à une matrice diagonale
taille ^^^^′ × ^^^^′. Par exemple, un tel bloc de ^^^^′ = 6 lignes est référencé 110 sur la figure 11. Un tel bloc de lignes comprend une succession de matrices ^^^^0 6. La structure de la matrice d’extension ^^^^ peut notamment se prolonger sur la matrice de prolongement ^^^^. Ainsi, pour au moins un bloc de lignes, la matrice d’extension ^^^^ comprend une portion d’une matrice ^^^^^ ^ ^^^ ^^ ^ et la matrice de prolongement ^^^^ comprend le prolongement de la portion de la matrice ^^^^^ ^ ^^^ ^^ ^. Par exemple, en revenant à la figure 11, si l’on considère le premier bloc de 7 lignes 111, avec les 22 premières colonnes appartenant à la matrice d’extension ^^^^ et les 4 dernières colonnes appartenant à la matrice de prolongement ^^^^, la matrice d’extension ^^^^ comprend trois motifs « complets » correspondant chacun à la matrice ^^^^0 7. Le quatrième motif est partiel et se prolonge dans la matrice de prolongement ^^^^. La matrice de prolongement ^^^^ permet ainsi permet « d’étendre les diagonales » et par conséquent d’augmenter les performances globales des LDPC. Les matrices ^^^^^ ^ ^^^ ^^ ^
ainsi être utilisées pour décomposer les matrices d’extension ^^^^ et de prolongement ^^^^. Comme déjà indiqué, l’exposant ^^^^ donne la dimension de la matrice identité (^^^^ lignes, ^^^^ colonnes), et l’indice ^^^^ donne le coefficient de rotation circulaire appliquée à la matrice identité pour obtenir cette matrice ^^^^^ ^ ^^^ ^^ ^. En particulier, si les dernières matrices ^^^^^ ^ ^^ ^^ ^^ d’une ligne ou d’une colonne dépassent les dimensions des matrices d’extension ^^^^ et de prolongement ^^^^, alors elles peuvent être tronquées. Les rotations circulaires permettent notamment de minimiser le nombre de cycles courts de taille 4 et 6 pour les matrices de même dimension, par exemple les matrices de dimension (6,6) et (7,7) selon l’exemple de la figure 11. En reprenant la notation compacte proposée ci-dessus, les matrices d’extension et de prolongement de la figure 11 peuvent s’exprimer sous la forme suivante : ^^^^0 6 ^^^^0 6 ^^^^0 6 ^^^^0 6 ^^^^0 6 ^^^^0 7 ^^^^0 7 ^^^^0 7 ^^^^0 7
^^^^6 7 ^^^^1 7 ^^^^3 7 ^^^^6 7 ^^^^2 7 ^^^^3 7 ^^^^4 7 ^^^^6 7 ^^^^1 7 ^^^^0 7 ^^^^6 7 ^^^^6 7 ^^^^3 7 ^^^^1 7 ^^^^6 7 ^^^^4 7 En revenant à la figure 11, le nombre de connexions par ligne et par colonne est indiqué à droite et en bas de la figure. Grâce à l’utilisation de matrices diagonales auxquelles on applique une rotation circulaire, on constate que le nombre de connexions par ligne et/ou par colonne dans les matrices d’extension ^^^^ et de prolongement ^^^^ proposées est sensiblement homogène (par exemple compris entre 3 et 5 pour le nombre de connexions par ligne et compris entre 5 et 6 pour le nombre de connexions par colonne). Une telle homogénéité permet d’optimiser les performances des codecs LDPC pour un nombre limité d’itérations du décodeur (inférieur à 10 itérations par exemple). Dans les exemples ci-dessus, les matrices d’extension ^^^^ et de prolongement ^^^^ sont optimisées pour diminuer les cycles courts. Toutefois, si nous prenons en compte la matrice de base BG1’ formée des matrices noyau ^^^^, ^^^^, d’étalement ^^^^ et de prolongement ^^^^, il peut rester des cycles courts. La matrice noyau A peut être identique à ou différente de celle proposée pour la matrice de base BG1 selon le 3GPP. Avantageusement, la matrice noyau A comprend environ 75% de connexions (i.e. d’éléments non nuls) par ligne. Par exemple, la matrice noyau ^^^^ est égale à : V0 V0 V1 V3 V4 V3 V2 V1 V1 V1 V1 V4 V0 V4 V2 V2 V3 V2 V2 V2 V2 V3 V0 V0 V3 V4 V3 V0 V1 V2 V1 V0 V3 V4 V0 V1 V4 V0 V4 V0 V2 V2 V0 V0 V3 V4 V3 V1 V0 V4 V1 V2 V1 V3 V4 V0 V4 V2 V2 V2 V0 V0 V0 De même, la matrice B, qui comprend le début de la partie redondance associée à la matrice noyau A, peut être identique à ou différente de celle proposée pour la matrice de base BG1 selon le 3GPP. Par exemple, la matrice ^^^^ présentant au moins une diagonale est égale à : V1 V0 V0 V0 V0 V0 V0 V1 V0
Comme illustré en figure 7B, la prise en compte des facteurs de rotation permet notamment de diminuer, voire éviter, les cycles courts. Il est donc possible d’augmenter la diversité de la matrice de base proposée et donc de diminuer le nombre de cycles courts en tenant compte des facteurs de rotation. En d’autres termes, pour chaque connexion identifiée par une valeur « 1 » dans les matrices ^^^^, ^^^^, ^^^^ et ^^^^, une autre opération de rotation circulaire ^^^^^^^^ est mise en œuvre, permettant de minimiser le nombre de cycles court de taille 4 et de taille 6 pour l’ensemble de la matrice de base BG1’ proposée. Il est possible d’augmenter le nombre de facteurs de rotation pour augmenter la diversité de la matrice de base ^^^^^^^^1’. On choisit par exemple cinq facteurs de rotation notés V0 à V4. Bien entendu un nombre différent de facteurs de rotation peut être choisi, ce qui conduit à une structure différente pour les matrices ^^^^, ^^^^, ^^^^ et ^^^^. Il est notamment possible de définir les équations qui définissent les facteurs de rotation V0 à V4 en fonction de l’indice « ils » selon la norme 5G 3GPP. Index « ils » Rotation Circulaire ^^^^^^^^ ^^^^0 = 0 + 4^^^^,^^^^ ∈ [0: 63] ^^^^1 = 1 + 4^^^^,^^^^ ∈ [0: 63] 0 ^^^^2 = 2 + 4^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 4^^^^,^^^^ ∈ [0: 63] ^^^^4 = 0 + 4^^^^,^^^^ ∈ [0: 63] ^^^^0 = 0 + 5^^^^ + 6^^^^, ^^^^ ∈ [0: 1] et ^^^^ ∈ [0: 63] ^^^^1 = 1 + 6^^^^,^^^^ ∈ [0: 63] 1 ^^^^2 = 2 + 6^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 6^^^^,^^^^ ∈ [0: 63] ^^^^4 = 4 + 6^^^^,^^^^ ∈ [0: 63] ^^^^0 = 0 + 5^^^^,^^^^ ∈ [0: 63] ^^^^1 = 1 + 5^^^^,^^^^ ∈ [0: 63] 2 ^^^^2 = 2 + 5^^^^,^^^^ ∈ [0: 63] ^^^^3 = 3 + 5^^^^,^^^^ ∈ [0: 63] ^^^^4 = 4 + 5^^^^,^^^^ ∈ [0: 63] ^^^^0 = 0 + 5^^^^ + 7^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^1 = 1 + 5^^^^ + 7^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] 3 ^^^^2 = 2 + 7^^^^,^^^^ ∈ [0: 31] ^^^^3 = 3 + 7^^^^,^^^^ ∈ [0: 31] ^^^^4 = 4 + 7^^^^,^^^^ ∈ [0: 31] ^^^^0 = 0 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^1 = 1 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1]^^^^^^^^ ^^^^ ∈ [0: 31] 4 ^^^^2 = 2 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^3 = 3 + 5^^^^ + 9^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^4 = 4 + 9^^^^,^^^^ ∈ [0: 31] ^^^^0 = 0 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^1 = 1 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] 5 ^^^^2 = 2 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^3 = 3 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31] ^^^^4 = 4 + 5^^^^ + 11^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 31]
^^^^0 = 0 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^1 = 1 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] 6 ^^^^2 = 2 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^3 = 3 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^4 = 4 + 5^^^^ + 13^^^^, ^^^^ ∈ [0: 1] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^0 = 0 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^1 = 1 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] 7 ^^^^2 = 2 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^3 = 3 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] ^^^^4 = 4 + 5^^^^ + 15^^^^, ^^^^ ∈ [0: 2] ^^^^^^^^ ^^^^ ∈ [0: 15] avec ^^^^ et ^^^^ des variables aléatoires dont l’intervalle est donné dans le tableau ci-dessus. La figure 12 donne un exemple de matrice de base BG1’ proposée selon l’invention, pour un facteur d’expansion ^^^^^^^^ = 256, dans laquelle les matrices ^^^^ et ^^^^ sont construites à partir de matrices identités de longueur 6 ou 7 auxquelles on a appliqué des rotations circulaires (^^^^^ 6 ^^^ ou ^^^^^ 7 ^^^). On rappelle que les matrices 0 et I ne sont pas illustrées par soucis de simplification. A partir de la matrice de base BG1’ ainsi obtenue, il est possible d’obtenir une matrice de parité ^^^^, en remplaçant chaque élément vide ou nul de la matrice de base ^^^^^^^^1’ par une matrice nulle de taille ^^^^^^^^ × ^^^^^^^^ et chaque élément non nul de la matrice de base ^^^^^^^^1’ par une matrice d’expansion obtenue en appliquant une rotation circulaire ^^^^^^^^ à une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ . La matrice de parité ^^^^ ainsi obtenue peut être utilisée par un codeur pour coder au moins un bloc de ^^^^.^^^^^^^^ données source. La structure illustrée en figure 12 permet notamment de diminuer les cycles courts pour des données source de petites tailles, par exemple pour ^^^^.^^^^^^^^ < 256. La figure 13 donne un autre exemple de matrice de base BG1’ proposée selon l’invention, pour un facteur d’expansion ^^^^^^^^ = 256, un indice ^^^^^^^^^^^^ = 0, et ^^^^ = 50, avec une nouvelle structure pour la matrice ^^^^. 5.4.2 Optimisation des matrices d’extension C et de prolongement D selon un deuxième exemple On présente ci-après un deuxième exemple de structure pour les matrices d’extension ^^^^ et de prolongement ^^^^, qui peut également être utilisé en 5G avec ^^^^ = 4. Selon cet exemple, illustré en figure 14, les matrices d’extension ^^^^ et de prolongement ^^^^ présentent une taille qui dépend de ^^^^ = ^^^^^^^^ = {6, 8, 9, 10}. Notamment, les matrices ^^^^,^^^^ et ^^^^ présentent une structure imbriquée selon la valeur de ^^^^. Si ^^^^ = 6, la matrice d’extension ^^^^ présente une taille (^^^^ − ^^^^) × ^^^^ = 20 × 6 et la matrice de prolongement ^^^^ une taille (^^^^ − ^^^^) × ^^^^ = 20 × 4. Si ^^^^ = 8, la matrice d’extension ^^^^ présente une taille (^^^^ − ^^^^) × ^^^^ = 28 × 8 et la matrice de prolongement ^^^^ une taille (^^^^ − ^^^^) × ^^^^ = 28 × 4.
Si ^^^^ = 9, la matrice d’extension ^^^^ présente une taille (^^^^ − ^^^^) × ^^^^ = 32 × 9 et la matrice de prolongement ^^^^ une taille (^^^^ − ^^^^) × ^^^^ = 32 × 4. Si ^^^^ = 10, la matrice d’extension ^^^^ présente une taille (^^^^ − ^^^^) × ^^^^ = 34 × 10 et la matrice de prolongement ^^^^ une taille (^^^^ − ^^^^) × ^^^^ = 34 × 4. Une telle structure permet de limiter le nombre de cycles courts de taille 4 et d’obtenir un nombre homogène de connexions pour la matrice de base proposée, notée BG2’, sensiblement équivalente à la matrice de base BG2 proposée par le 3GPP. On décrit ci-après le cas où ^^^^ = 10. Une description similaire pourrait être faite pour les autres valeurs de ^^^^. Comme illustré en figure 14, la matrice d’extension ^^^^ proposée comprend au moins deux blocs de ^^^^ lignes, par exemple cinq blocs de ^^^^ = 5 lignes, référencés 141, 142, 143, 144 et 145, et au moins un bloc de ^^^^ colonnes, par exemple deux blocs de ^^^^ = 5 colonnes. Chaque bloc de ^^^^ lignes comprend au moins une matrice ^^^^^ ^ ^^^ ^^ ^ obtenue en appliquant un coefficient de
rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^, avec ^^^^ un entier compris entre 0 et ^^^^ − 1 (i.e. au moins un motif complet). Par exemple, le premier bloc 141 comprend deux occurrences d’une matrice ^^^^0 5, correspondant à la matrice identité de taille 7. Le premier bloc de lignes 141 comprend ainsi une succession d’au moins deux matrices ^^^^^ ^ ^^ ^^ ^^ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à la matrice diagonale de taille ^^^^ × ^^^^. Le deuxième bloc 142 comprend une occurrence d’une matrice ^^^^4 5 et une occurrence d’une
^^^^3 5. Le troisième bloc 143 comprend une occurrence d’une matrice ^^^^0 5 et une occurrence d’une matrice ^^^^1 5. Le quatrième bloc 144 comprend une occurrence d’une matrice ^^^^2 5 et une occurrence d’une matrice ^^^^0 5. Le cinquième bloc 145 comprend une occurrence d’une matrice ^^^^1 5 et une occurrence d’une matrice ^^^^3 5. Les blocs de lignes 141 à 145 comprennent ainsi chacun une succession d’au moins deux matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à la matrice diagonale de taille ^^^^ × ^^^^. Selon l’exemple illustré, les blocs de ^^^^ lignes sont consécutifs, i.e. aucune ligne d’éléments nuls ou non nuls n’est intercalée entre deux blocs de lignes. Par ailleurs, au moins un bloc de ^^^^ colonnes comprend au moins deux matrices ^^^^^ ^ ^^^ ^^ ^ obtenues en appliquant un coefficient de rotation circulaire ^^^^ distinct à ladite matrice diagonale de taille ^^^^ × ^^^^. Par exemple, le premier bloc de ^^^^ = 5 colonnes comprend une occurrence d’une matrice ^^^^5 0, une occurrence d’une matrice ^^^^4 5, une occurrence d’une matrice ^^^^0 5, et une occurrence d’une matrice ^^^^2 5 et une occurrence d’une matrice ^^^^5 1. Le deuxième bloc de ^^^^ = 5 colonnes comprend une occurrence
d’une matrice ^^^^0 5, une occurrence d’une matrice ^^^^3 5, une occurrence d’une matrice ^^^^1 5, une occurrence d’une matrice ^^^^0 5 et une occurrence d’une matrice ^^^^3 5. L’intersection d'un bloc de lignes et d’un bloc de colonnes correspond à un « bloc élémentaire » formé par une matrice ^^^^^ ^ ^^ ^^ ^^. On note par ailleurs que ladite matrice d’extension ^^^^ comprend également au moins un bloc de ^^^^′ lignes, ^^^^′ ≠ ^^^^, avec ^^^^′ un entier compris entre 1 et ^^^^ − 1 comprenant une succession de matrices ^^^^^^ ^^ ^^ ^^′ obtenues en appliquant un même coefficient de rotation circulaire ^^^^ à une matrice diagonale
taille ^^^^′ × ^^^^′. Par exemple, un tel bloc de ^^^^′ = 7 lignes est référencé 146 sur la figure 14. Un tel bloc de lignes comprend une succession de matrices ^^^^0 7. Selon le mode de réalisation illustré en figure 14, la matrice de prolongement ^^^^ comprend au moins deux blocs de ^^^^ lignes, chaque bloc de lignes comprenant une matrice ^^^^ ^^^^ ^^^^ obtenue en appliquant un coefficient de rotation circulaire ^^^^ à une matrice diagonale de taille ^^^^ × ^^^^. Par exemple, la matrice de prolongement ^^^^ comprend neuf blocs de 4 lignes comprenant chacun la matrice ^^^^2 4. La structure de la matrice ^^^^ peut notamment se prolonger sur la matrice de prolongement ^^^^. Par exemple, en revenant à la figure 14, le bloc formé des deux dernières lignes de la matrice ^^^^ et des deux premières lignes de la matrice de prolongement D forme un motif « complet » correspondant à une matrice identité. La matrice de prolongement ^^^^ permet ainsi permet « d’étendre les diagonales » et par conséquent d’augmenter les performances globales des LDPC. Les matrices ^^^^^ ^ ^^^ ^^ ^ peuvent ainsi être utilisées pour décomposer les matrices d’extension ^^^^ et de prolongement ^^^^. En particulier, si les dernières matrices ^^^^^ ^ ^^ ^^ ^^ d’une ligne ou d’une colonne dépassent les dimensions des matrices d’extension ^^^^ et de prolongement ^^^^, alors elles peuvent être tronquées. Les rotations circulaires permettent notamment de minimiser le nombre de cycles courts de taille 4 et 6 pour les matrices de même dimension, par exemple les matrices de dimension (5,5) et (7,7) selon l’exemple de la figure 14. En reprenant la notation compacte proposée ci-dessus, la matrice d’extension C de la figure 14 peut s’exprimer sous la forme suivante : ^^^^0 5 ^^^^0 5 ^^^^4 5 ^^^^3 5 ^^^^0 5 ^^^^1 5 ^^^^2 5 ^^^^0 5
^^^^1 5 ^^^^3 5 ^^^^0 7 ^^^^0 7 ^^^^6 7 ^^^^5 7 Et la matrice de prolongement ^^^^ de la figure 14 sous la forme suivante : ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 ^^^^2 4 Un autre exemple de matrice de prolongement ^^^^ est donné ci-après : ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 ^^^^0 4 D’autres rotations circulaires peuvent être appliquée à la matrice de prolongement ^^^^. En revenant à la figure 14, le nombre de connexions par ligne et par colonne est indiqué à droite et en bas de la figure. Grâce à l’utilisation de matrices diagonales auxquelles on applique une rotation circulaire, on constate que le nombre de connexions par ligne et/ou par colonne dans les matrices d’extension ^^^^ et de prolongement ^^^^ proposées est sensiblement homogène (par exemple compris entre 2 et 3 pour le nombre de connexions par ligne, et compris entre 9 et 10 pour le nombre de connexions par colonne pour la matrice d’extension ^^^^, et entre 10 et 12 pour le nombre de connexions par colonne pour la matrice de prolongement ^^^^). Comme déjà indiqué, une telle homogénéité permet
d’optimiser les performances des codecs LDPC pour un nombre limité d’itérations du décodeur (inférieur à 10 itérations par exemple). Dans les exemples ci-dessus, les matrices d’extension ^^^^ et de prolongement ^^^^ sont également optimisées pour diminuer les cycles courts. Toutefois, comme indiqué précédemment, si nous prenons en compte la matrice de base BG2’ formée des matrices noyau ^^^^, ^^^^, d’étalement ^^^^ et de prolongement ^^^^, il peut rester des cycles courts. La matrice noyau A peut être identique à ou différente de celle proposée pour la matrice de base BG2 selon le 3GPP. Par exemple, selon la valeur de ^^^^, ladite matrice noyau ^^^^ est égale à : pour K=10 pour K=9 pour K=8 pour K=6 V1 V0 V3 V2 V1 V4 V3 V2 V4 V0 V3 V2 V4 V2 V3 V0 V2 V0 V3 V4 V2 V3 V1 V1 V3 V4 V4 La matrice B, qui comprend le début de la partie redondance associée à la matrice noyau A, peut également être identique à ou différente de celle proposée pour la matrice de base BG2 selon le 3GPP. Par exemple, ladite matrice ^^^^ est égale à : V0 V0 V0 V0 V1 V0 V0 V0 V0 Comme illustré en figure 7B, la prise en compte des facteurs de rotation permet notamment de diminuer, voire éviter, les cycles courts. Il est donc possible d’augmenter la diversité de la matrice de base proposée et donc de diminuer le nombre de cycles courts en tenant compte des facteurs de rotation. En d’autres termes, pour chaque connexion identifiée par une valeur « 1 » dans les matrices ^^^^, ^^^^, ^^^^ et ^^^^, une autre opération de rotation circulaire ^^^^^^^^ est mise en œuvre, permettant de minimiser le nombre de cycles court de taille 4 et de taille 6 pour l’ensemble de la matrice de base BG2’ proposée. Il est possible d’augmenter le nombre de facteurs de rotation pour augmenter la diversité de la matrice de base ^^^^^^^^2’. On choisit par exemple cinq facteurs de rotation notés V0 à V4, comme défini ci-dessus pour la matrice de base proposée BG1’. Bien entendu, un nombre différent de facteurs de rotation peut être choisi, ce qui conduit à une structure différente pour les matrices ^^^^, ^^^^, ^^^^ et ^^^^. Il est notamment possible de définir les équations qui définissent les facteurs de rotation V0 à V4 en fonction de l’indice « ils » selon la norme 5G 3GPP définis précédemment.
La figure 15 donne un exemple de matrice de base BG2’ proposée selon l’invention, pour un facteur d’expansion ^^^^^^^^ = 256, dans laquelle la matrice d’extension ^^^^ est construite à partir de cinq matrices identité de longueur 5 et de deux matrices identité de longueur 7 auxquelles on a appliqué des rotations circulaires (^^^^^ 5 ^^^ ou ^^^^^ 7 ^^^) et la matrice de prolongement ^^^^ est construite à partir de matrices identité de longueur rappelle que les matrices 0 et I ne sont pas illustrées par soucis de
simplification. Selon l’exemple illustré en figure 15, les matrices ^^^^,^^^^ et ^^^^ présentent une structure imbriquée selon la valeur de ^^^^. A partir de la matrice de base BG2’ ainsi obtenue, il est possible d’obtenir une matrice de parité ^^^^, en remplaçant chaque élément vide ou nul de la matrice de base ^^^^^^^^2’ par une matrice nulle de taille ^^^^^^^^ × ^^^^^^^^ et chaque élément non nul de la matrice de base ^^^^^^^^2’ par une matrice d’expansion obtenue en appliquant une rotation circulaire ^^^^^^^^ à une matrice identité de taille ^^^^^^^^ × ^^^^^^^^ . La matrice de parité ^^^^ ainsi obtenue peut être utilisée par un codeur pour coder au moins un bloc de ^^^^.^^^^^^^^ données source. La structure illustrée en figure 15 permet notamment de diminuer les cycles courts pour des données source de petites tailles, par exemple pour ^^^^.^^^^^^^^ < 256. La figure 16 donne un autre exemple de matrice de base BG2’ proposée selon l’invention, pour un facteur d’expansion ^^^^^^^^ = 256, un indice ^^^^^^^^^^^^ = 0, et ^^^^ = 50, avec une nouvelle structure pour la matrice ^^^^. 5.5 Décodage L’utilisation de matrices de base selon les différents modes de réalisation décrits ci-dessus permet notamment d’améliorer les performances de décodage des codes LDPC. Dans le mode de réalisation décrit ici, on considère en outre la mise en œuvre d’un décodage en mode « reverse », selon lequel on décode du bas vers le haut la matrice de parité (i.e. on cherche d’abord à résoudre les équations de parité obtenues à partir des dernières lignes de la matrice de parité avant celles obtenues à partir des premières lignes de la matrice de parité). Un tel décodage en mode « reverse » offre de bonnes performances, notamment pour décoder des données source de petites tailles, par exemple pour ^^^^.^^^^^^^^ < 256. Plus généralement, le fait de commencer le décodage par les lignes de la matrice de parité présentant le moins de connexions (bas de la matrice de parité, correspondant aux dernières lignes des matrices d’extension ^^^^ et de prolongement ^^^^) pour finir par les lignes de la matrice de parité présentant le plus de connexions (haut de la matrice de parité, correspondant à la matrice noyau ^^^^ et à la matrice ^^^^) en mode « reverse » permet au décodeur de converger plus rapidement. Un tel décodeur demande donc
moins d’itérations de décodage pour atteindre des performances similaires à celle obtenues pour un décodeur classique avec l’utilisation des matrices de base BG1 et BG2 selon le 3GPP. Notamment, les décodeurs de type MinSum, tel que décrits dans le document « A fully parallel LDPC decoder architecture using probabilistic minsum algorithm for high-throughput applications », C.-C. Cheng et al., IEEE Trans. Circuits Syst. I, Reg. Papers, vol. 61, no. 9, pp. 2738–2746, Sep. 2014, classiquement utilisés pour décoder les codes LDPC, présentent de meilleures performances si le décodage débute par la fin de la matrice de parité. Il est donc particulièrement avantageux de mettre en œuvre un décodage de type « reverse » pour décoder des codes LDPC construits à partir des matrices de base selon l’invention ou des matrices de base selon le 3GPP. Toutefois, l’utilisation d’un décodage « standard » du haut vers le bas de la matrice de parité, ou dans un autre ordre encore, est également possible. 5.6 Courbes de performances On présente désormais, en relation avec la figure 17, les performances de décodage obtenues en termes de taux d’erreur bloc (BLER) en fonction du rapport signal à bruit (SNR en dB), pour des décodeurs LDPC, après encodage de données source en utilisant une matrice de parité obtenue soit à partir de la matrice de base BG1 telle que définie par le 3GPP pour la norme 5G, soit à partir d’une matrice de base BG1’ selon un mode de réalisation de l’invention. Ces performances sont obtenues pour des longueurs de codes de 330 bits (^^^^ = 22, ^^^^^^^^ = 15) et un rendement de 1/3. L’algorithme du décodeur est par exemple le MinSum, avec un paramètre alpha égal à 0,7, en mode « reverse » pour le décodage des données obtenues en utilisant une matrice de parité construite à partir d’une matrice de base BG1’ selon un mode de réalisation de l’invention, et en mode « classique » pour le décodage des données obtenues en utilisant une matrice de parité construite à partir d’une matrice de base BG1 selon le 3GPP. La courbe 171 illustre les performances de décodage en utilisant la matrice de base BG1’ selon un mode de réalisation de l’invention après 20 itérations du décodeur. La courbe 172 illustre les performances de décodage en utilisant la matrice de base BG1 après 20 itérations du décodeur. La courbe 173 illustre les performances de décodage en utilisant la matrice de base BG1’ selon un mode de réalisation de l’invention après 10 itérations du décodeur. La courbe 174 illustre les performances de décodage en utilisant la matrice de base BG1 après 10 itérations du décodeur. La courbe 175 illustre les performances de décodage en utilisant la matrice de base BG1’ selon un mode de réalisation de l’invention après 5 itérations du décodeur. La courbe 176 illustre les performances de décodage en utilisant la matrice de base BG1 après 5 itérations du décodeur.
On note que la structure proposée selon au moins un mode de réalisation de l’invention permet d’améliorer les performances du décodeur LDPC selon la norme 5G. L’écart est d’autant plus important avec un nombre plus faible d’itérations du décodeur. On présente enfin, en relation avec les figures 18 et 19, les performances de décodage obtenues en termes de taux d’erreur bloc (BLER) en fonction du rapport signal à bruit (SNR en dB), pour des décodeurs LDPC, après encodage de données source en utilisant une matrice de parité obtenue soit à partir de la matrice de base BG2 telle que définie par le 3GPP pour la norme 5G, soit à partir d’une matrice de base BG2’ selon un mode de réalisation de l’invention. Les performances illustrées en figure 18 sont obtenues pour des longueurs de codes de 720 bits (^^^^ = 10, ^^^^^^^^ = 72) et un rendement de 1/5. L’algorithme du décodeur est par exemple le MinSum, avec un paramètre alpha égal à 0,7, en mode « reverse » pour le décodage des données obtenues en utilisant une matrice de parité construite à partir d’une matrice de base BG2’ selon un mode de réalisation de l’invention, et en mode « classique » pour le décodage des données obtenues en utilisant une matrice de parité construite à partir d’une matrice de base BG2 selon le 3GPP. La courbe 181 illustre les performances de décodage en utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention après 20 itérations du décodeur. La courbe 182 illustre les performances de décodage en utilisant la matrice de base BG2 après 20 itérations du décodeur. La courbe 183 illustre les performances de décodage en utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention après 10 itérations du décodeur. La courbe 184 illustre les performances de décodage en utilisant la matrice de base BG2 après 10 itérations du décodeur. La courbe 185 illustre les performances de décodage en utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention après 5 itérations du décodeur. La courbe 186 illustre les performances de décodage en utilisant la matrice de base BG2 après 5 itérations du décodeur. Les performances illustrées en figure 19 sont obtenues pour des codes de petites tailles, un rendement de 1/5 et cinq itérations de décodage. L’algorithme du décodeur est le MinSum en mode « classique » avec un paramètre alpha égal à 0,7. Les performances de décodage d’un code de longueur 12 bits (K= 6,^^^^^^^^ = 2) sont illustrées par la courbe 191 pour un codec utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention et par la courbe 192 pour un codec utilisant la matrice de base BG2. Les performances de décodage d’un code de longueur 18 bits (K= 6,^^^^^^^^ = 3) sont illustrées par la courbe 193 pour un codec utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention et par la courbe 194 pour un codec utilisant la matrice de base BG2.
Les performances de décodage d’un code de longueur 30 bits (K= 6,^^^^^^^^ = 5) sont illustrées par la courbe 195 pour un codec utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention et par la courbe 196 pour un codec utilisant la matrice de base BG2. Les performances de décodage d’un code de longueur 42 bits (K= 6,^^^^^^^^ = 7) sont illustrées par la courbe 197 pour un codec utilisant la matrice de base BG2’ selon un mode de réalisation de l’invention et par la courbe 198 pour un codec utilisant la matrice de base BG2. 5.7 Variantes On a décrit ci-dessus des exemples avec des valeurs particulières pour ^^^^, ^^^^ et ^^^^. Il s’agit toutefois de simples exemples, et d’autres valeurs pour ^^^^, ^^^^ et ^^^^ peuvent être envisagées, notamment pour d’autres normes de transmission (Wifi®, 6G, etc.). De même, on a proposé des matrices de base avec cinq facteurs de rotation V0 à V4. Toutefois, un nombre différent de facteurs de rotation peut être choisi. D’autres formes de la matrice ^^^^ peuvent par ailleurs être utilisées. Dans ce cas, la position des connexions et/ou les valeurs des facteurs de rotation peuvent être mis à jour pour tenir compte de la structure de la matrice ^^^^. On a également pris pour exemple un code LDPC. L’invention peut également être étendue à d’autres codes correcteurs d’erreurs utilisant une matrice de parité. 5.8 Dispositifs de codage et de décodage On présente finalement, en relation avec les figures 20A et 20B, les structures simplifiées d’un codeur et d’un décodeur selon au moins un mode de réalisation décrit ci-dessus. Comme illustré en figure 20A, un codeur comprend au moins une mémoire 201, au moins une unité de traitement 202, équipée par exemple d’une machine de calcul programmable ou d’une machine de calcul dédiée, par exemple un processeur P, et pilotée par le programme d’ordinateur 203, mettant en œuvre des étapes du procédé de codage selon au moins un mode de réalisation de l’invention. A l’initialisation, les instructions de code du programme d’ordinateur 203 sont par exemple chargées dans une mémoire RAM avant d’être exécutées par le processeur de l’unité de traitement 202. Le processeur de l’unité de traitement 202 met en œuvre des étapes du procédé de codage décrit précédemment, selon les instructions du programme d’ordinateur 203, pour coder les ^^^^.^^^^^^^^ données source en utilisant une matrice de parité ^^^^ de taille (^^^^.^^^^^^^^ × ^^^^.^^^^^^^^), et délivrer au moins un mot de code de taille ^^^^.^^^^^^^^ formé des ^^^^.^^^^^^^^ données source et de ^^^^.^^^^^^^^ données de redondance. Comme illustré en figure 20B, un décodeur comprend au moins une mémoire 204, au moins une unité de traitement 205, équipée par exemple d’une machine de calcul programmable ou d’une machine de calcul dédiée, par exemple un processeur P, et pilotée par le programme d’ordinateur 206, mettant en
œuvre des étapes du procédé de décodage selon au moins un mode de réalisation de l’invention. A l’initialisation, les instructions de code du programme d’ordinateur 206 sont par exemple chargées dans une mémoire RAM avant d’être exécutées par le processeur de l’unité de traitement 205. Le processeur de l’unité de traitement 205 met en œuvre des étapes du procédé de décodage décrit précédemment, selon les instructions du programme d’ordinateur 206, pour décoder au moins un mot de code de taille ^^^^.^^^^^^^^ formé de ^^^^.^^^^^^^^ données source et de ^^^^.^^^^^^^^ données de redondance, en utilisant une matrice de parité ^^^^ de taille (^^^^.^^^^^^^^ × ^^^^.^^^^^^^^), et reconstruire les ^^^^.^^^^^^^^ données source.