FR 2937485 A1 20100423 FR 0805831 A 20081021 Procédé de démodulation et de décodage d'un signal GMSK protégé par codage convolutionnel poinçonné et dispositif de réception mettant en oeuvre le procédé L'invention concerne un procédé de démodulation et de décodage d'un signal GMSK protégé par codage convolutionnel poinçonné et un récepteur mettant en oeuvre le procédé. Elle s'applique notamment aux ~o domaines des communications numériques et de l'électronique. Dans un système de communications numériques, un signal est émis par un émetteur vers un récepteur via un canal de transmission. Le signal est modulé, c'est-à-dire que l'on fait varier les caractéristiques d'une onde 15 porteuse de manière à transporter de l'information (typiquement représentée à l'aide de symboles binaires '0' et '1'). Dans le cas d'une modulation de phase, l'information utile est transmise en faisant varier la phase du signal à transmettre. Le récepteur aura pour but de démoduler le signal, c'est-à-dire de détecter les variations de la phase du signal en réception. Les 20 modulations à phase continue (CPM pour � Continuous Phase Modulation � en langue anglaise) forment une famille particulière des modulations de phase pour lesquelles les variations de la phase du signal se font de manière continues d'un symbole à l'autre. Pour d'autres types de modulations de phase comme les M-PSK (modulation à m états de phase, PSK signifiant 25 � Phase Shift Keying � en langue anglaise), on peut observer entre deux symboles des variations importantes de la phase du signal. Celles-ci ont pour conséquences un élargissement du spectre, c'est-à-dire de la bande occupée par le signal. Pour ce qui est des modulations à phase continues, de par le fait qu'elles induisent une variation continue de la phase du signal, 30 celles-ci permettent d'obtenir de bonnes performances en terme d'efficacité spectrale. La modulation GMSK, pour � Gaussian Minimum Shift Keying � en langue anglaise, est une modulation appartenant à la famille des modulations à phase continue. Celle-ci a pour propriété d'utiliser un filtre gaussien utilisé 35 pour filtrer les données avant de moduler l'onde porteuse. Ce filtre a pour effet de rendre les transitions de phase d'un symbole à l'autre plus progressives que, par exemple, pour une modulation MSK (� Minimum Shift Keying �). Les caractéristiques de cette modulation permettent d'utiliser efficacement l'amplificateur de puissance côté émetteur car celui-ci peut travailler en zone de saturation. Ces propriétés rendent la modulation GMSK particulièrement adaptée aux transmissions par satellites. A titre d'exemple, un futur système de navigation et de collecte de données par satellite utilisera cette modulation. Dans un système de communications numériques, les données sont rarement transmises sans protection contre les erreurs introduites par le canal de propagation. Cette protection consiste habituellement en l'utilisation de codes correcteurs d'erreurs. Des symboles de redondance sont ajoutés aux données numériques à transmettre afin de détecter et de corriger les erreurs introduites, ainsi l'émetteur intégrera un codeur de canal ajoutant ladite redondance. Le récepteur devra par conséquent effectuer l'opération de décodage, c'est-à-dire une détection et une correction des erreurs. Plusieurs familles de codes de canal existent et sont utilisées fréquemment dans les systèmes de télécommunication numériques, comme par exemples les codes de Hamming, les codes de Reed-Salomon et, découverts plus récemment, les turbo codes et les codes LDPC, sigle se référant à l'expression anglo-saxonne � Low-Density Parity-Check Codes �. Une autre famille très couramment utilisée est celle des codes convolutifs, également appelés codes convolutionnels. Dans la suite de la description, c'est cette seconde dénomination qui sera utilisée. Les codes convolutionnels sont utilisés dans les systèmes de télécommunications fixes et mobiles. Ils s'appliquent à des séquences infinies de symboles d'information et génèrent des séquences infinies de symboles codés. Ces codes permettent d'obtenir de bonnes performances en terme de protection contre les erreurs. L'évolution des états du codeur pendant le codage peut être décrite à l'aide d'un treillis. C'est cette particularité qui est exploitée lors du décodage. En effet, le décodeur de canal pourra utiliser l'algorithme de Viterbi, bien connu de l'homme du métier, et permettant de conduire l'étape de décodage de manière optimale, c'est-à-dire selon le maximum de vraisemblance, et ce avec une complexité raisonnable de réalisation. Ainsi, il est usuel d'utiliser d'une part un code convolutionnel et d'autre part un modulateur GMSK pour transmettre un signal numérique protégé. Le rendement du codeur convolutionnel est défini par le rapport entre le nombre de ses entrées et le nombre de ses sorties. Ainsi, un codeur ayant une entrée et deux sorties aura un rendement de 1/2. II y a dans ce cas deux fois plus de symboles à la sortie du codeur qu'à son entrée. Le rendement du code influence donc le débit de transmission du système de télécommunication numérique. Il est usuel d'adapter le débit en sortie du codeur de canal en utilisant la technique dite de poinçonnage. Un certain nombre de symboles sont supprimés en sortie du codeur dans le but de réduire le débit. Le résultat de cette opération de poinçonnage est ensuite modulé pour l'envoi sur le médium de transmission. La modulation GMSK se comporte comme un codage à treillis récursif, ainsi le modulateur sera qualifié de codeur GMSK dans la suite de la description. Dans un système de transmission composé notamment d'un code convolutionnel poinçonné et d'un modulateur GMSK, les propriétés du code convolutionnel poinçonné sont perturbées par la présence du codage récursif de la modulation GMSK. La conséquence est qu'un récepteur utilisant un démodulateur suivi d'un décodeur classique présentera des performances dégradées en terme de taux d'erreur binaire (TEB). Une solution classique pour pallier ce problème est de placer au niveau de l'émetteur un pré-encodeur en amont du modulateur GMSK de manière à casser la récursivité du modulateur. Un exemple est donné dans l'article de N. Al-Dhahir, G. Saulnier intitulé A high performance reducedcomplexity GMSK demodulator, IEEE transactions on telecommunications, Vol. 46, N°11, Novembre 1998. Cette solution peut être mise en oeuvre lors de la conception du système. Pour des systèmes de télécommunications ayant des émetteurs déjà en place et pour lesquels seul le récepteur peut être modifié, cette solution de pré-encodage n'est pas applicable. Un but de l'invention est notamment de pallier les inconvénients précités. A cet effet l'invention a pour objet un procédé de démodulation et de décodage d'au moins un signal portant un flux de données numériques D(n), ledit flux étant protégé par un code convolutionnel poinçonné de rendement R puis modulé par une modulation à phase continue. Le signal transmis est traité en réception comme résultant d'une seule et même opération de codage récursif équivalente aux opérations de codage convolutionnel, de poinçonnage et de modulation. Selon un aspect de l'invention, la démodulation, le dé-poinçonnage et le décodage du signal sont réalisés conjointement en utilisant une transposition en un codeur récursif global des opérations de codage de canal, de poinçonnage et de modulation effectuées à l'émission de manière à représenter sur un seul treillis l'évolution des états du récepteur. La modulation à phase continue est, par exemple, de type GMSK. Selon un autre aspect de l'invention, le schéma de poinçonnage utilisé en émission retire périodiquement, par exemple, un symbole du flux de symboles résultant du codage convolutionnel tous les K symboles. Le codeur récursif global résultant de la transposition peut prendre en entrée K flux extraits du flux de données numériques à transmettre D(n) et KIR flux de sortie. Le codeur récursif global est composé, par exemple, d'au moins K codeurs récursifs élémentaires. L'invention a aussi pour objet un dispositif de réception d'au moins un signal numérique portant un flux de données numériques D(n), ledit flux étant protégé par un code convolutionnel poinçonné de rendement R et modulé par une modulation à phase continue. Ledit dispositif met en oeuvre le procédé décrit précédemment et est caractérisé en ce qu'il comporte au moins un décodeur GMSK � état � fournissant des valeurs réelles correspondant à une probabilité d'état pour chaque symbole de la modulation et un décodeur du code récursif global résultant de la transposition du codeur convolutionnel, du poinçonnage et de la modulation utilisée par l'émetteur. Le décodeur calcule les métriques associées à chaque transition du treillis du code récursif global et applique l'algorithme de Viterbi sur le treillis.35 D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit donnée à titre illustratif et non limitatif, faite en regard des dessins annexés parmi lesquels : la figure 1 présente un exemple de codeur convolutionnel poinçonné couplé avec un codeur GMSK ; la figure 2 donne un exemple de schéma de poinçonnage ; la figure 3 donne un exemple de chaîne de réception classique pouvant être utilisé pour recevoir un signal GMSK protégé par un code convolutionnel poinçonné ; la figure 4 présente la première étape d'une méthode de transposition en un codeur récursif global d'une chaine de transmission numérique utilisant un modulateur GMSK couplé avec un codeur convolutionnel poinçonné ; la figure 5 illustre la seconde étape d'une méthode de transposition en un codeur récursif global d'une chaine de transmission numérique utilisant un modulateur GMSK couplé avec un codeur convolutionnel poinçonné ; la figure 6 donne un schéma représentant le codeur récursif global obtenu suite aux deux étapes de transposition ; la figure 7 présente un exemple de dispositif de réception permettant de démoduler et décoder un signal issus d'un émetteur utilisant un modulateur GMSK couplé avec un codeur convolutionnel poinçonné, en considérant la chaine d'émission comme un codeur récursif global. L'invention a notamment comme avantage d'améliorer les performances de détection en ne modifiant que le processus de démodulation/décodage du signal tout en restant compatible avec la forme 30 d'onde produite par l'émetteur. Ceci est particulièrement utile dans le cadre de systèmes déjà réalisés ou en cours d'exploitation, comme par exemple un système satellitaire comportant un ou plusieurs satellites traitant des signaux en provenance d'un grand nombre d'émetteurs terrestres. Il est alors plus aisé d'améliorer le récepteur d'un satellite en cours de conception tout en 10 15 20 25 gardant la compatibilité de la forme d'onde. Les émetteurs terrestres et les récepteurs sur satellite en orbite restant inchangés. La figure 1 présente un exemple de codeur convolutionnel poinçonné couplé avec un codeur GMSK. Le codeur convolutionnel de l'exemple 105 n'est pas systématique et a pour caractéristique une longueur de contrainte valant L = 7. La séquence de données à protéger D(n) est mise en entrée du codeur et les valeurs que fournissent les sorties X(n) et Y(n) sont calculées à partir des deux polynômes générateurs suivants : Pour X(n) : Px =1+Z+Z2+Z3 +Z6 (1) Pour Y(n) : Py =1+ z2 +Z 3+ z5 + Z 6 (2) Ces polynômes définissent dans la pratique les connexions à effectuer aux sorties des L-1 registres à décalages 100 du codeur. Un sortie donnée est ainsi générée en additionnant 101, 102 les sortie des registres sélectionnées de par le polynôme générateur correspondant. Le codeur convolutionnel de l'exemple génère deux flots de sortie X(n) et Y(n) pour un flot de données d'entrée D(n). Le code convolutionnel peut être notamment désigné en utilisant la notation CC(171, 133). Cette notation désigne un code convolutionnel dont les polynômes générateurs sont indiqués en octal par les nombres 171 et 133, équivalents respectifs de Px et Py. Le codeur est également caractérisé par son rendement défini comme étant le rapport entre le nombre de symboles présentés en entrée et le nombre de symboles présentés en sortie. Dans la description, un symbole correspond, par exemple, à un bit pouvant prendre l'une des deux valeurs '0' ou `1'. Le codeur pris en exemple a donc pour rendement R = %2. Cela signifie que le débit binaire est deux fois plus important en sortie qu'en entrée du codeur. Les sorties X(n) et Y(n) sont ensuite traitées par une fonction de poinçonnage 103 permettant d'adapter le débit en sortie du codeur convolutionnel. Dans l'exemple choisi pour illustrer le procédé selon l'invention, 1 symbole sur 3 n'est pas transmis. Dans ce cas, le rendement R du codeur ne vaut plus R ='/2, mais R = 3/. Finalement, la sortie de la fonction 103 réalisant le poinçonnage est dirigée en entrée d'un codeur GMSK 104 réalisant la modulation afin de produire un signal radiofréquence désigné dans la suite de la description par l'expression � signal RF � et destiné à être transmis. La figure 2 donne un exemple de schéma de poinçonnage. 6 symboles 200 produits par le codeur convolutionnel X(1), Y(1), X(2), Y(2), X(3), Y(3) résultants du codage de 3 symboles de données D(1), D(2) et D(3) sont traités par la fonction de poinçonnage sélectionnant en sortie 201 quatre symboles X(1), Y(1), Y(2) et X(3). En effet, seuls deux symboles sur trois sont sélectionnés pour la transmission. L'exemple donné présente un schéma de poinçonnage périodique, sa période de poinçonnage étant égale à 3. Cela signifie qu'un symbole sur trois est retiré du flot de transmission. Dans l'exemple de la figure, X(2) et Y(3) ne seront donc par transmis en sortie de la fonction réalisant le poinçonnage. La figure 3 donne un exemple de chaine de réception classique pouvant être utilisé pour recevoir un signal GMSK protégé par un code convolutionnel poinçonné. Le signal RF à traiter par le récepteur est tout d'abord démodulé par un décodeur GMSK � état � 300 fournissant en sortie des valeurs réelles correspondants à des probabilités d'état de modulation pour chaque symbole. Un module d'estimation � transition � 301 délivre une estimation des symboles binaires reçus. L'ensemble de ces deux modules 305 correspond à un démodulateur GMSK classique. Puis les métriques associées à chaque transitions du treillis du code convolutionnel sont calculées 302. Un module de dé-poinçonnage 303 attribue ensuite une valeur neutre aux symboles poinçonnés à l'émission. Cette valeur neutre correspond par exemple à une probabilité transition de 1/2. Enfin, un décodeur de Viterbi 304 permet de retrouver la séquence de données ayant la probabilité la plus haute d'avoir été transmise par l'émetteur. La séquence de données décodée est ensuite disponible en sortie du décodeur de Viterbi. Ce traitement de réception n'est pas optimal car la perturbation apportée par le codeur récursif que constitue la modulation GMSK n'est pas prise en compte. Un écart estimé à environ 2 dB peut être observé par rapport à un décodage du même code convolutionnel (L=7, CC(171, 133)) poinçonné (R=0,75) et appliqué sur une modulation antipodale sans mémoire. La figure 4 présente la première étape d'une méthode de transposition en un codeur récursif global d'une chaine de transmission numérique utilisant un modulateur GMSK couplé avec un codeur convolutionnel poinçonné. Le procédé de décodage selon l'invention prend en compte l'interaction du modulateur GMSK avec le code convolutionnel poinçonné. Pour cela, la forme d'onde est traitée globalement, c'est-à-dire que la modulation GMSK, le codage convolutionnel et le poinçonnage sont perçus par le récepteur comme une seule opération de codage. Il faut donc être capable de transposer les différentes opérations de modulation et de codage en un seul et même codeur pour pouvoir ensuite effectuer le décodage approprié. C'est la première étape de cette transposition qu'illustre la figure 4. Le principe de fonctionnement du nouveau traitement se base sur l'intégration dans un codeur récursif global de l'effet du poinçonnage et de l'effet de mémoire du modulateur GMSK. Pour cela le codeur traite le flux d'entrée par blocs de 3 bits, la taille des blocs correspondant à la période du motif de poinçonnage. Ainsi, pour un motif de poinçonnage de K bits, le traitement se ferait donc par blocs de K bits. Une autre caractéristique du codeur global est sa récursivité pour prendre en compte l'effet de mémoire du modulateur GMSK. Les données D(n) à transmettre peuvent être vues comme trois flux de données distincts D1(n), D2(n) et D3(n). Cela revient à paralléliser les données d'entrée du codeur par blocs de 3. Ces trois flux peuvent être définis par les expressions suivantes : D1(n)= D(3 x n) (3) D2(n) = D(3 x n + 1) (4) D3(n)=D(3xn+2) (5) Le codeur récursif global prend en entrées les trois flux D1(n), D2(n) et D3(n), chacun des flux étant traité par un codeur élémentaire 400, 401, 402 ayant les mêmes caractéristiques que le codeur convolutionnel à modéliser, soit le code CC(171, 133) pour cet exemple. Si le flux D(n) a pour rythme symbole 1/Te, chacun des flux D1(n), D2(n) et D3(n) aura pour rythme symbole 1/(3xTe). Les retards internes des registres à décalage 406 de chacun des codeurs convolutionnels vaudront donc 3xTe. En sorties des trois codeurs convolutionnels sont générés 6 flux X'1(n), Y'1(n), X'2(n), Y'2(n), X'3(n) et Y'3(n), le rendement de chaque codeur élémentaire étant de Y2. L'opération de poinçonnage est ensuite modélisée par une sélection 403 de 4 flux parmi ces 6 flux en tenant compte du motif de poinçonnage. Les 4 flux sélectionnés sont : C 1(n) = X'1(n) (6) C 2 (n) = Y'1(n) (7) C3(n) = Y'2(n) (8) C4(n) = X'3(n) (9) Enfin, de manière à tenir compte de la récursivité de la modulation GMSK, la sortie S(t) du codeur récursif global est produite par une boucle de sortie 407 qui balaie successivement 404 en entrée les symboles des flux C1(n), C2(n), C3(n) et C4(n). La boucle de sortie 407 est composée d'un additionneur 408 et d'un registre à décalage 405 introduisant un retard de Te' = 3x(Te/4). La sortie S(n) est alors définie par : S(n)= {S1(n),S2(n),S3(n),S4(n)} (10) avec : S1(n)= [C1(n)+ e(n)]mod 2 (11) S2(n)= [C2(n)+C1(n)+e(n)]mod 2 (12) S3(n)= [C3(n)+ C2(n)+ C1(n)+ e(n)]mod 2 (13) S4(n)= [C4(n)+ C3(n)+ C2(n)+ C1(n)+ e(n)]mod 2 (14) 0(n) étant le retour de boucle défini par 0(n+1) = S4(n) et décrivant la récursivité du codeur. Le rendement du code original R = 3/4 est bien vérifié : il y a 4 symboles de sortie pour 3 symboles de données en entrée du codeur récursif global. La figure 5 illustre la seconde étape de la méthode de transposition en un codeur récursif global d'une chaine de transmission numérique utilisant un modulateur GMSK couplé avec un codeur convolutionnel poinçonné. Cette seconde étape a pour but de déplacer la récursivité de la boucle de sortie du codeur récursif global issu de la première étape de transposition au niveau de chaque codeur élémentaire, et ce de manière à simplifier la procédure de décodage. Le codeur récursif global est donc composé de trois codeurs élémentaires 500, 501, 502 traitant respectivement les flux D1(n), D2(n) et D3(n) définis précédemment. Ces codeurs élémentaires comprennent trois registres à décalage introduisant successivement un retard temporel de 3xTe. La récursivité est introduite par une voie de retour 506, 514, 515, rebouclant la sortie du premier registre à décalage vers l'entrée de chaque codeur élémentaire, ladite valeur rebouclée étant sommée à l'entrée du codeur élémentaire à l'aide d'un additionneur 507, 516, 517. Chacun des trois codeurs élémentaires génère quatre signaux de sortie. Ces signaux sont E1(n), E1(n-1), E1(n-2) et E1(n-3) pour le premier codeur, E2(n), E2(n-1), E2(n-2) et E2(n-3) pour le second codeur élémentaire et E3(n), E3(n-1), E3(n-2) et E3(n-3) pour le troisième codeur élémentaire. Ces signaux correspondent pour chacun des codeurs 500, 501, 502 aux signaux extraits avant le premier registre à décalage 503, 508, 511 du codeur élémentaire et aux signaux extraits après le premier 503, 508, 511, le second 504, 509, 512 et le troisième 505, 510 , 513 registre à décalage. La sortie S (n) = {S 1(n ), S 2(n ), S 3(n ), S 4(n� peut ensuite être retrouvée en utilisant les expressions suivantes : S1(n)=[E1(n)+E1(n-1)+E1(n-3)+E2(n-1)]mod 2 (15) S2(n)= [E1(n -1)+ E2(n -3)]mod 2 (16) S3(n)= [E1(n -1)+ E2(n)+ E3(n -1)+ E3(n - 3)]mod 2 (17) S4(n)= [E1(n)+ E3(n)+ E3(n -1)]mod 2 (18) Il est alors possible de décoder le code global prenant en entrée des blocs de 3 bits {D1(n), D2(n), D3(n)} et générant en sa sortie des blocs de 4 bits {S1(n), S2(n), S3(n), S4(n)} en utilisant l'algorithme de Viterbi. La figure 6 donne un schéma représentant le codeur récursif global 600 obtenu suite aux deux étapes de transposition. Celui-ci prend en entrées les trois flux D1(n), D2(n) et D3(n), chacun des flux étant respectivement traité par un codeur élémentaire 601, 602, 603 de manière à produire les signaux intermédiaires E1(n), E2(n) et E3(n). Finalement, les sorties S1(n), S2(n), S3(n) et S4(n) du codeur récursif global sont déduites 604 de E1(n), E2(n) et E3(n) en utilisant les équations (15), (16), (17) et (18). La figure 7 présente un exemple de chaine de réception permettant de démoduler et de décoder un signal issus d'un émetteur utilisant un codeur GMSK couplé avec un codeur convolutionnel poinçonné, en considérant la chaine d'émission comme étant un codeur récursif global. Pour cela, le signal RF à traiter par le récepteur est tout d'abord traité par un décodeur GMSK � état � 700 fournissant en sortie des valeurs réelles correspondant à une probabilité d'état pour chaque symbole de la modulation. Comme expliqué précédemment, un ensemble composé d'un modulateur GMSK et d'un code convolutionnel poinçonné peut être vu comme un codeur récursif global. Ainsi, au niveau du récepteur, il est possible d'optimiser la procédure de démodulation/décodage en appliquant un décodage 701 du code récursif global. Pour cela, avec l'exemple de code convolutionnel utilisé dans les figures précédentes, le code global est équivalent à trois codes récursifs élémentaires. Les métriques correspondants à chaque transition du treillis associé au codeur récursif global sont calculées 702, puis l'algorithme de Viterbi est appliqué 703 sur le triple treillis. Ainsi, l'interaction entre la modulation GMSK et le code convolutionnel est prise en compte et les performances de détection sont améliorées, c'est-à-dire que le taux d'erreurs binaire est réduit. REVENDICATIONS1- Procédé de démodulation et de décodage d'au moins un signal portant un flux de données numériques D(n), ledit flux étant protégé par un code convolutionnel poinçonné (105, 103) de rendement R et modulé (104) par une modulation à phase continue, le procédé étant caractérisé en ce que le signal transmis est traité en réception comme résultant d'une seule et même opération de codage récursif équivalente aux opérations de codage convolutionnel, de poinçonnage et de modulation. 2- Procédé selon la revendication 1 caractérisé en ce que la démodulation, le dé-poinçonnage et le décodage du signal sont réalisés conjointement en utilisant une transposition en un codeur récursif global (600) des opérations de codage de canal, de poinçonnage et de modulation effectuées à l'émission de manière à représenter sur un seul treillis l'évolution des états du récepteur. 3- Procédé selon l'une quelconque des revendications 1 ou 2 caractérisé en ce que la modulation à phase continue est de type GMSK. 4- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que le schéma de poinçonnage (103) utilisé en émission retire périodiquement un symbole du flux de symboles résultant du codage convolutionnel (105) tous les K symboles. 5- Procédé selon la revendication 4 caractérisé en ce que le codeur récursif global (600) résultant de la transposition prend en entrée K flux (D1(n), D2(n), D3(n)) extraits du flux de données numériques à transmettre D(n) et K/R flux de sortie (S1(n), S2(n), S3(n), S4(n)), ledit codeur récursif global étant composé d'au moins K codeurs récursifs élémentaires (601, 602, 603). 6- Dispositif de réception d'au moins un signal numérique portant un flux de données numériques D(n), ledit flux étant protégé par un codeconvolutionnel poinçonné de rendement R puis modulé par une modulation à phase continue, ledit dispositif mettant en oeuvre le procédé selon l'une des revendications 1 à 5 et étant caractérisé en ce qu'il comporte au moins : - un décodeur GMSK � état � (700) fournissant des valeurs réelles correspondant à une probabilité d'état pour chaque symbole de la modulation ; - un décodeur (701) du code récursif global résultant de la transposition du codeur convolutionnel, du poinçonnage et de la modulation utilisée par l'émetteur, ledit décodeur calculant les métriques (702) associées à chaque transition du treillis du code récursif global et appliquant l'algorithme de Viterbi (703) sur le treillis.