Brevet FR3061379A1 — publié le 20180629

PROCEDE DE TRANSMISSION DE DONNEES INCLUANT UNE CORRECTION D'ERREUR DIRECTE La présente invention concerne la transmission de données dans un canal de communication entre un dispositif émetteur et un dispositif récepteur, et en particulier, la mise en oeuvre d'un mécanisme de correction d'erreur ou de perte de données. De nombreux codes de correction d'erreur ont été proposés pour assurer la fiabilité de transmissions de fichiers ou de flux de données par des canaux de transmission introduisant des pertes ou des corruptions de données. Dans le domaine des réseaux mobiles, et en particulier dans les communications point à multipoint et en mode diffusion, la correction d'erreur directe de la couche applicative AL-FEC (Applicative Layer - Forward Error Correction) joue un rôle clé pour assurer une distribution fiable de contenus à grande échelle. AL-FEC a même été défini comme obligatoire par le projet 3GGP (3rd Generation Partnership Project) pour les services eMBMS (extended Multimedia Broadcast Services). Parmi les codes utilisés pour la correction d'erreur AL-FEC, le codage Reed-Solomon (RS) est couramment utilisé. Ce codage appartient à la catégorie des codes MDS (Maximum Distance Separable) qui permettent de reconstituer k symboles source parmi n symboles transmis incluant n-k symboles de réparation. Dans le cas d'un protocole de transmission à base de paquets de données, des fichiers, des flux de données, ou des blocs de données sont transmis sous la forme de paquets de données divisés en symboles qui peuvent être ou non de même taille. La taille d'un symbole peut s'exprimer en nombre de bits. Les symboles de réparation RS sont obtenus par des opérations réalisées sur un corps de Galois GF (Galois Field) tel que GF(2m). Ainsi, les symboles de réparation sont calculés par une combinaison linéaire des symboles source en utilisant des coefficients appartenant au corps GF(2m). Généralement, les calculs de symbole de réparation sont effectués sur le corps GF(28), ce qui limite la taille n des blocs de données traités à moins de 256 symboles. Les codages AL-FEC par bloc présentent l'inconvénient de nécessiter d'attendre les symboles de réparation transmis à la fin d'un bloc de données 3061379 2 pour pouvoir restaurer un symbole perdu ou erroné dans le bloc de données. Le temps de latence de restauration d'un symbole source peut donc atteindre la durée de réception d'un bloc de donnée, si l'erreur se produit sur le premier symbole source du bloc de données. De même, le temps d'accès à 5 un flux de blocs de données peut atteindre la durée de réception d'un bloc si l'instant d'accès au flux se produit entre les instants de début de réception des premier et second symboles source. En revanche, tous les symboles source d'un bloc de donnée bénéficient d'un même niveau élevé de protection, puisque tous les symboles de réparation sont calculés à partir de 10 tous les symboles source du bloc. Il existe d'autres codages tels que LDPC (Low Density Parity Check), Raptor/RaptorQ qui supportent des tailles de bloc plus grandes. Cependant, dans les applications temps réel, les contraintes de latence limitent la taille des blocs de données. Les codages AL-FEC à base de bloc sont largement 15 utilisés en raison de leurs multiples avantages relatifs à leurs performances notamment en termes de capacité de réparation, de complexité et de flexibilité. En revanche, les codages AL-FEC à base de bloc présentent une importante latence de réparation. Si l'un des premiers symboles d'un bloc de données est erroné ou perdu, il ne peut être restauré qu'à la réception des 20 symboles de réparation figurant à la fin du bloc. On a également proposé des codages convolutifs, appliquant un mécanisme de fenêtre glissante. Selon un tel codage, les symboles de réparation sont calculés à la volée, sur les symboles source appartenant à la fenêtre glissante, et envoyés à la suite des symboles source de la fenêtre. 25 Par exemple, un symbole de réparation est calculé sur au plus W symboles source et envoyé tous les k symboles source, k k. La figure 5 illustre le mode de calcul des symboles de réparation R1[n.k-w,n.k] (avec n = 1, 2, ...), pour un flux de données SST[3,15], c'est-à-dire, lorsque les symboles de réparation sont calculés à partir des symboles 30 source appartenant à une fenêtre glissante de w (= 15) symboles source S et où un symbole de réparation est émis après un groupe SB[n.k-2,n.k] de k (= 3) symboles source. Sur la figure 5, chaque symbole de réparation R[x-w,x] est représenté par une flèche s'étendant sur les w symboles source à partir desquels ils sont calculés. Ainsi, le symbole de réparation R[7,21] est 3061379 9 transmis après le groupe de symboles source SB[18,21] et est calculé à partir des 15 symboles source S[7] à S[21]. Le symbole de réparation R[10,24] suivant dans le flux SST[3,15] est transmis après le groupe de symboles source SB[21,24] et est calculé à partir des symboles source S[10] 5 à S[24]. Les symboles de réparation R[i,j] peuvent également être calculés par l'équation (1) ou (2). Dans l'exemple de la figure 5, il est possible de restaurer un symbole source perdu ou erroné à la réception du symbole de réparation suivant. La latence de restauration d'un symbole source est donc inférieure à la durée de 10 réception de k = 3 symboles source. Le temps d'accès à un premier symbole source d'un flux SST[3,15] est au minimum égal à la durée de réception de w = 15 symboles, s'il manque un symbole source dans le premier groupe de 3 symboles source reçus. Par ailleurs, le temps d'accès à un symbole source du flux peut être infini, si la transmission du flux produit au moins une erreur 15 dans chacun des groupes SB[n.k-2,n.k] successifs de 3 symboles source sur lesquels sont calculés les symboles de réparation. Selon un mode de réalisation, les latences de restauration et d'accès sont réduites en divisant le flux de données en bloc de données et en divisant chaque bloc de données transmis en sous-blocs et en attribuant à 20 chaque sous-bloc d'un bloc de données, un symbole de réparation qui est transmis immédiatement à la suite du dernier symbole source du sous-bloc. Les éventuels symboles de réparation restants sont transmis à la suite du dernier sous-bloc du bloc de données. La figure 6 représente des étapes Si à S4 d'une procédure P1 25 permettant de définir un format de bloc de données, selon un mode de réalisation. En particulier, la procédure P1 permet de déterminer un nombre de sous-blocs NB et un nombre de symboles source KB par sous-bloc. La procédure P1 peut être mise en oeuvre dans le module d'encodage ENC. La procédure P1 se base sur une division d'un bloc de données en un nombre 30 de sous-blocs égal au nombre de symboles de réparation attribué au bloc de données. La procédure P1 reçoit en entrée le nombre de symboles source k présents dans le bloc de données et le nombre total n de symboles figurant dans le bloc de données, incluant des symboles de réparation. A l'étape Si, le nombre de sous-blocs NB est fixé égal au nombre de symboles de 35 réparation attribué au bloc de données, soit n - k. A l'étape S2, le nombre KB 3061379 10 de symboles source par sous-bloc du bloc de données est calculé, par l'équation suivante : KB = FL(k/(n-k)) (3) dans laquelle la fonction FL(x) fournit le grand nombre entier inférieur ou égal 5 au nombre x. A l'étape S3, un écart A entre le nombre k de symboles source dans le bloc de données et le produit des nombres KB est NB est calculé. Le nombre A représente le nombre de symboles source restants, non affectés à l'un des sous-blocs du bloc de données, si tous les sous-blocs du bloc de données comprend KB symboles source. Le nombre A est utilisé pour 10 spécifier que la division du bloc de données en sous-blocs comprend A sous- blocs de (KB + 1) symboles sources et (NB - A) sous-blocs de KB symboles sources. Les A sous-blocs de (KB + 1) symboles sources peuvent être indifféremment positionnés au début ou à la fin du bloc de données. Alternativement, A symboles source peuvent être retirés de l'un des sous- 15 blocs, par exemple le premier ou le dernier sous-bloc du bloc de données. A l'étape S4, la procédure P1 se termine en fournissant les nombres KB, NB et A. La procédure P1 aboutit donc à une division de chaque bloc de données en A sous-blocs de (KB + 1) symboles sources et (NB -A) sous-blocs SB de KB symboles source. 20 Par exemple, le bloc de données comprend NB - A premiers sous- blocs SB rassemblant chacun KB symboles source de (b.KB+1) à ((b+1).KB), b variant de 0 à (NB-4-2), et A derniers sous-blocs SB rassemblant chacun (KB + 1) symboles source de (b.KB + b - NB + A - 1) à ((b+1).KB + b - NB + A), b variant de (NB-3,-1) à (NB-1). 25 Ainsi, la latence de réparation ou d'accès au flux de données, en cas de perte de p symboles source (p REVENDICATIONS1. Procédé de transmission de données, comprenant des étapes consistant à: encoder des données à transmettre sous la forme de symboles source (S) regroupés en un bloc de données (DB), répartir les symboles source du bloc de données dans des sous-blocs (SB), calculer pour chaque sous-bloc un symbole de réparation (R1-R9) respectif par une combinaison linéaire de symboles source du sous-bloc, et transmettre le bloc de données dans un flux de blocs de données, en 10 transmettant successivement chaque sous-bloc du bloc de données, chaque sous-bloc étant transmis en transmettant les symboles source du sous-bloc, suivis du symbole de réparation du sous-bloc. 2. Procédé selon la revendication 1, dans lequel chaque symbole de 15 réparation (R1-R9) du bloc de données est calculé par une combinaison linéaire d'au moins une partie des symboles source (S) du bloc de données, de manière à ce que chaque symbole source du bloc de données soit utilisé pour calculer un même nombre, à un près, de symboles de réparation du bloc de données. 20 3. Procédé selon la revendication 1, dans lequel chaque symbole de réparation (R1-R9) du bloc de données (DB) est calculé par une combinaison linéaire de tous les symboles source (S) transmis précédemment du bloc de données. 25 4. Procédé selon l'une des revendications 1 à 3, dans lequel plusieurs symboles de réparation (R) calculés à partir d'au moins une partie des symboles source (S) du dernier sous-bloc (SB[..,49]) du bloc de données, (DB) sont transmis à la fin du bloc de données. 30 5. Procédé selon l'une des revendications 1 à 4, dans lequel chaque sous-bloc (SB) du bloc de données (DB) comprend un même nombre, à un près, de symboles source (S). 3061379 25 6. Procédé selon l'une des revendications 1 à 5, dans lequel le bloc de données (DB) comprend autant de sous-blocs (SB) que de symboles de réparation (R) transmis à la fin du bloc de données. 5 7. Procédé selon l'une des revendications 1 à 6, comprenant des étapes de définition d'un format du bloc de données (DB), consistant à: définir un premier nombre (Q) de symboles de réparation (R) à transmettre à la fin du bloc de données, déterminer un nombre (NB) de sous-blocs (SB) du bloc de données en fonction du premier nombre et d'un nombre de symboles de réparation attribués au bloc de données, ou déterminer le nombre (n-k) de symboles de réparation (R) attribués au bloc de données en fonction du nombre de sous-blocs du bloc de données et du premier nombre, calculer un nombre minimum (KB) de symboles source (S) par sous- bloc en divisant le nombre (k) de symboles source dans le bloc de données par le nombre de sous-blocs, le nombre minimum de symboles source étant fixé égal au plus grand nombre entier inférieur ou égal au résultat obtenu de la division, et calculer un écart (A) entre le nombre de symboles source du bloc de données et le produit (NB.KB) du nombre de sous-blocs dans le bloc de données par le nombre minimum de symboles source par sous-bloc, l'écart définissant un nombre de symboles source à ajouter dans les sous-blocs du bloc de données. 8. Procédé selon la revendications 7, dans lequel, l'écart (A) définit un nombre de sous-blocs (SB) du bloc de données (DB) comportant un nombre de symboles source (S) égal au nombre minimum (KB) de symboles source par sous-bloc, augmenté de un. 9. Procédé selon l'une des revendications 1 à 8, comprenant des étapes consistant à : recevoir d'un terminal d'utilisateur (UE) en mode point à point, un message signalant de mauvaises conditions de réception, et 3061379 26 transmettre au terminal en mode point à point, en réponse au message, au moins un symbole de réparation (R) pour chaque bloc de données transmis après la réception du message. 5 10. Procédé de réception de données transmises conformément au procédé de transmission selon l'une des revendications 1 à 9, le procédé de réception comprenant des étapes successives de réception des sous-blocs (SB) de symboles source (S) d'un bloc de données (DB), la réception de chaque sous-bloc étant suivie de la réception d'un symbole de réparation (R) 10 associé au sous-bloc, chaque symbole de réparation correspondant à une combinaison linéaire des symboles source du sous-bloc associé au symbole de réparation. 11. Procédé selon la revendication 10, comprenant des étapes 15 consistant à : détecter un symbole source (S) manquant ou erroné dans le bloc de données, et à la réception d'un premier symbole de réparation (R) suivant le symbole source manquant ou erroné, calculer le symbole source manquant 20 ou erroné en résolvant une équation résultant de l'égalité entre le premier symbole de réparation et une combinaison linéaire correspondant au premier symbole de réparation. 12. Procédé selon la revendication 10 ou 11, comprenant des étapes 25 consistant à: détecter de mauvaises conditions de réception de blocs de données transmis dans un mode multi diffusion, transmettre en mode point à point, à un serveur (CNTP, MBMS), un message signalant de mauvaises conditions de réception, et 30 recevoir en mode point à point, pour des blocs de données (DB) reçus dans le mode multi diffusion, des symboles de réparation supplémentaires utilisables pour calculer des symboles source (S) manquants dans les blocs de données reçus. 3061379 27 13. Dispositif d'émission de données configuré pour mettre en oeuvre le procédé selon l'une des revendications 1 à 9. 14. Dispositif de réception de données configuré pour mettre en 5 oeuvre le procédé selon l'une des revendications 10 à 12.