Cette page s'applique à la version précédente. La page correspondante en anglais a été supprimée de la version actuelle.
Workflow de design itératif pour les systèmes de communications
Cet exemple illustre un workflow de design qui représente les étapes itératives pour créer un système de télécommunications avec Communications Toolbox™. Comme Communications Toolbox supporte à la fois MATLAB® et Simulink®, cet exemple présente des démarches de design utilisant le code MATLAB et les blocs Simulink. À mesure qu’on avance dans le workflow, on peut suivre la démarche du design pour MATLAB, pour Simulink, ou pour les deux produits.
Le workflow commence avec un système de communications simple et effectue des simulations de taux d’erreur bit (BER) pour mesurer la performance du système. Les simulations BER reposent sur la simulation de système de communications avec un rapport signal à bruit donné (Eb/No), puis sur le calcul de la mesure du taux d’erreur bit correspondant, afin de déterminer le nombre d’erreurs dans le signal émis. Plus la mesure du BER est basse sur un rapport signal à bruit donné, plus la performance du système est bonne.
Ce workflow commence par un système de communications simple, et ajoute de façon itérative les composants algorithmiques nécessaires pour construire un système plus complexe. Ces composants additionnels comportent :
Le codage convolutif et le décodage de Viterbi
Le Turbo-Coding
Les canaux à évanouissement multi-trajets
L'émission OFDM
Les techniques à antennes multiples
À mesure que vous ajoutez des composants au système, le workflow comporte des calculs d’erreur bit, qui vous permettent progressivement d'examiner les performances du système. Pour certains composants, des indicateurs théoriques ou de performance sont disponibles. Dans ces cas, le workflow affiche à la fois la mesure de performance théorique et mesurée.
Simuler un système de communications basique
Ce workflow commence avec un système simple de modulateur QPSK qui émet un signal par un canal AWGN et calcule le taux d’erreur bit pour évaluer la performance du système.
Dans MATLAB
Changez les répertoires vers ce dossier MATLAB :
matlab\help\toolbox\comm\examples
Saisissez edit doc_design_iteration_basic_m
en ligne de commande MATLAB.
MATLAB ouvre un fichier à utiliser dans cet exemple. À noter que ce code emploie quatre System objects provenant de Communications Toolbox : comm.PSKModulator
, comm.AWGN
, comm.PSKDemodulator
, et comm.ErrorRate
. Pour chaque valeur EbNo, le code tourne dans une boucle « while » jusqu’à ce que le nombre d’erreurs spécifié soit observé, ou que le nombre maximum de bits soit traité. À noter que le code exécute chaque System object™ en appelant la méthode step
. Le code donne en sortie le BER, défini comme le rapport du nombre d’erreurs observées par le nombre de bits traité. Les fonctions MATLAB utilisées dans cet exemple ont une structure similaire.
Saisissez bertool
en ligne de commande MATLAB pour ouvrir l’application Bit Error Rate Analysis.
Une fois l’application ouverte, cliquez sur l'onglet Theoretical.
Le premier tracé que vous allez générer est une courbe théorique.
Saisissez 0:9
pour EbNo range.
EbNo est le rapport d’énergie de puissance de bruit par bit. Plus la valeur est haute, plus la performance du système est bonne. La simulation va tourner en utilisant différentes valeurs pour le rapport, entre 0
et 9
.
Sélectionnez 4
pour Modulation order.
L’ordre de modulation définit le nombre de symboles à émettre. Ici, chaque symbole est composé de deux bits.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur l'onglet Monte Carlo.
Les techniques Monte Carlo utilisent des échantillonnages aléatoires pour calculer les données. Ainsi, le tracé pour la seconde simulation utilise un échantillon aléatoire.
Saisissez 0:9
pour EbNo range.
Saisissez 200
pour le Number of errors.
Le Number of errors est un des critères d’arrêt pour la simulation.
Saisissez 1e7
pour le Number of bits.
Le Number of bits est également un critère d’arrêt pour la simulation. La simulation s’arrête lorsqu'elle émet le nombre de bits spécifié pour ce paramètre. Dans cet exemple, la simulation s’arrête soit quand elle atteint 10 millions de bits, soit quand elle détecte 200 erreurs.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, et sélectionnez doc_design_iteration_basic_m.m
.
Cliquez sur Run.
L’application exécute la simulation et génère des points de simulation le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Chaque fonction ayant deux variables de sortie et ces trois variables d’entrée peuvent être appelées en utilisant l’application Bit Error Rate Analysis.
La première variable est un nombre scalaire qui correspond à EbNo.
La deuxième variable est le critère d’arrêt, basé sur le nombre maximum d’erreurs observées avant d’arrêter la simulation.
La troisième variable est le critère d’arrêt basé sur le nombre maximum de bits traités pouvant être observés avant la fin de la simulation.
Dans Simulink
Saisissez bertool
en ligne de commande MATLAB pour ouvrir l’application Bit Error Rate Analysis.
Une fois l’application ouverte, cliquez sur l'onglet Theoretical.
Saisissez 0:9
pour EbNo range.
EbNo est le rapport d’énergie de puissance de bruit par bit. Plus la valeur est haute, plus la performance du système est bonne. La simulation va tourner en utilisant différentes valeurs pour le rapport, entre 0
et 9
.
Sélectionnez 4
pour Modulation order.
L’ordre de modulation définit le nombre de symboles à émettre. Ici, chaque symbole est composé de deux bits.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour le EbNo range.
Saisissez ber
pour le BER variable name.
Saisissez 200
pour Number of errors.
Le Number of errors est un des critères d’arrêt pour la simulation. La simulation s’arrête quand elle atteint soit le Number of errors, soit le Number of bits.
Saisissez 1e7
pour Number of bits.
Le Number of bits est également un critère d’arrêt pour la simulation. La simulation s’arrête lorsqu’elle émet le nombre de bits spécifié pour ce paramètre ou lorsqu’elle atteint le Number of errors. Dans cet exemple, la simulation s’arrête soit quand elle atteint 10 millions de bits, soit quand elle détecte 200 erreurs.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_basic.slx
et cliquez sur Run.
L’application Bit Error Rate Analysis exécute la simulation et génère des points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Introduire le codage convolutif et le décodage Viterbi à décision dure
Modifiez le modèle de communications de base pour y inclure la correction d’erreur sans voie de retour. Ajoutez la correction d’erreur sans voie de retour au système de communications de base améliore la performance du système. Dans la correction d’erreur sans voie de retour, l'émetteur envoie des bits redondants parallèlement aux bits messages, via un canal wireless. Quand le récepteur accepte le signal émis, il utilise les bits redondants pour détecter et corriger les erreurs potentiellement introduites par le canal.
Cette section du workflow de design ajoute un encodeur convolutif et un décodeur Viterbi au système de communications. Ce système de communications utilise un décodage Viterbi à décision dure. Dans le décodage Viterbi à décision dure, le démodulateur traduit le signal en bits, puis fait passer les bits au décodeur Viterbi pour la correction d’erreurs.
Dans MATLAB
Dans cette itération du workflow de design, le fichier MATLAB que vous utilisez commence là où celui de la section précédente s’est arrêté. Ce fichier ajoute deux System objects additionnels au système de communications, comm.ConvolutionalEncoder
et comm.ViterbiDecoder
. La structure générale du code ne change pas ; elle contient simplement des fonctionnalités additionnelles.
Accédez à l’application Bit Error Rate Analysis.
Décochez les cases pour les deux tracés générés à l'étape précédente.
Cliquez sur Theoretical.
Saisissez 0:7
pour EbNo range.
Sélectionnez pour Channel Coding.
Sélectionnez pour Decision method.
Cet exemple utilise un décodage Viterbi à décision dure. Le démodulateur traduit le signal reçu en bits, puis passe les bits au décodeur Viterbi pour la correction d’erreurs.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur Monte Carlo.
Saisissez 0:7
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_m.m
et cliquez sur Open.
Cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Cliquez sur l'onglet Theoretical.
Saisissez 0:7
pour EbNo range.
Sélectionnez pour Channel Coding.
Sélectionnez pour Decision method.
Cet exemple utilise un décodage Viterbi à décision dure. Le démodulateur traduit le signal reçu en bits, puis passe les bits au décodeur Viterbi pour la correction d’erreurs.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:7
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi.slx
et cliquez sur Open.
Cliquez sur Run. L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Améliorer les résultats en utilisant un décodage à décision douce
Utilisez le décodage à décision douce pour améliorer les performances BER. La section précédente de ce workflow utilise la démodulation à décision dure, et les procédés de décodage Viterbi à décision dure qui traduit les symboles en bits. Cette section du workflow utilise une démodulation à décision douce et un décodage Viterbi à décision douce. Dans cette démodulation à décision douce, les symboles reçus ne sont pas traduits en bits. Au lieu de cela, ils sont traduits en rapports de vraisemblance logarithmique (LLR). Quand le décodeur Viterbi traite les LLR la performance du BER pour le système s’améliore.
Dans MATLAB
Accédez à l’application Bit Error Rate Analysis.
Décochez les cases pour les deux tracés générés à l'étape précédente.
Cliquez sur Theoretical.
Saisissez 0:5
pour EbNo range.
Sélectionnez pour Decision method.
Cet exemple utilise un décodage Viterbi à décision douce. Le démodulateur traduit le signal reçu en rapports de vraisemblance logarithmique, ce qui améliore les résultats de performance du BER.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur Monte Carlo.
Saisissez 0:5
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_soft_m.m
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Décochez les cases pour les deux tracés générés à l'étape précédente.
Cliquez sur Theoretical.
Saisissez 0:5
pour EbNo range.
Sélectionnez pour Decision method.
Cet exemple utilise un décodage Viterbi à décision douce. Le démodulateur traduit le signal reçu en rapports de vraisemblance logarithmique, ce qui améliore les résultats de performance du BER.
Cliquez sur Plot.
L’application génère la courbe BER théorique.
Cliquez sur Monte Carlo.
Saisissez 0:5
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_soft.slx
et cliquez sur Run.
En traçant la courbe théorique à décision douce, on observera des améliorations de la courbe BER d’environ 2 bB par rapport au décodage à décision dure. À noter que les résultats de la simulation reflètent également une amélioration BER similaire.
Utilisez le Turbo-Coding pour améliorer les performances BER
Les codes Turbo améliorent substantiellement la performance BER sur le décodage à décision douce Viterbi. Le Turbo-Coding utilise deux codeurs convolutifs en parallèle pour l’émetteur, et deux décodeurs de probabilité a posteriori (APP) en séries pour le récepteur. Cet exemple utilise un codeur turbo de rendement 1/3. Pour chaque bit entrant, la sortie a un bit systématique et deux bits de parité, pour un total de trois bits. Les codeurs turbo atteignent des performances BER avec des valeurs SNR beaucoup plus basses que les encodeurs convolutifs. De ce fait, cette itération utilise une plage de valeurs pour EbNo plus basse que dans la section précédente.
Dans MATLAB
Accédez à l’application Bit Error Rate Analysis.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:0.2:1.2
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_zTurbo_soft_m.m
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Décochez les cases pour le dernier tracé généré à la section précédente.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:0.2:1.2
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_turbo.slx
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER.
Appliquer un modèle de canal Rayleigh
Les itérations de design précédentes modélisent les systèmes de communications à bande étroite qui peuvent être représentés correctement en utilisant un canal AWGN. Cependant, les systèmes de communications à haut débit nécessitent un canal à large bande. Les canaux de communications à bande large sont hautement sensibles aux effets de la propagation à trajets multiples, ce qui ajoute des interférences inter-symboles (ISI). Ainsi, il faut modéliser les canaux à large bande comme des canaux à évanouissements multi-trajets. Cette itération du workflow de design utilise un canal Rayleigh à évanouissement multi-trajets, ce qui suppose de ne pas avoir de visibilité (LOS, line-of-sight) directe entre l’émetteur et le récepteur.
Dans MATLAB
Accédez à l’application Bit Error Rate Analysis.
Décochez la case pour le tracé généré par l’application à l’étape précédente.
Cliquez sur Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_rayleigh_m.m
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
En présence d’évanouissements multi-trajets, la performance BER est réduite à celle d’un canal binaire avec une valeur constante d’un demi. Pour corriger l’effet de l’évanouissement multi-trajets, vous devez ajouter une égalisation au système de communications.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Décochez la case pour effacer le tracé généré par l’application à l’étape précédente.
Cliquez sur Monte Carlo.
Saisissez 0:7
pour EbNo range.
Saisissez 200
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_rayleigh.slx
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
En présence d’évanouissements multi-trajets, la performance BER est réduite à celle d’un canal binaire avec une valeur constante d’un demi. Pour corriger l’effet de l’évanouissement multi-trajets, vous devez ajouter une égalisation au système de communications.
Utiliser l’égalisation basée sur OFDM pour corriger l’évanouissement multi-trajets
Utilisez l’OFDM (Orthogonal Frequency-Division Multiplexing) pour compenser l’effet d’évanouissement multi-trajets introduit par le canal d’évanouissement de Rayleigh. Le schéma d’émission OFDM constitue une manière efficace d’effectuer l’égalisation en domaine fréquentiel. Cette itération de design intègre un émetteur OFDM, un récepteur OFDM, et un égaliseur en domaine fréquentiel au système de communication.
Dans MATLAB
Accédez à l’application Bit Error Rate Analysis.
Décochez la case pour le tracé de simulation généré à l’étape précédente.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 6000
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_Rayleigh_OFDM_m.m
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Décochez les cases pour les tracés générés par l’application à l’étape précédente.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 6000
pour Number of errors.
Saisissez 5e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_rayleigh_OFDM.slx
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés. Comparez la courbe BER simulée et la courbe BER théorique.
Utiliser plusieurs antennes pour améliorer davantage la performance système
Émettre en simultané des copies d’un signal en utilisant plusieurs antennes peut augmenter considérablement la probabilité que le récepteur récupère correctement le signal émis. Ce phénomène est appelé diversité à l’émission. Cependant, cette amélioration de la performance est obtenue au prix de l’ajout d'une complexité de calculs dans le récepteur.
Dans MATLAB
Accédez à l’application Bit Error Rate Analysis.
Décochez la case pour effacer le tracé de simulation généré à l’étape précédente.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 1000
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_rayleigh_OFDM_MIMO_m.m
et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER simulée et la courbe BER théorique.
Dans Simulink
Accédez à l’application Bit Error Rate Analysis.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 700
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, sélectionnez All Files pour le champ Files of type.
Accédez à matlab/help/toolbox/comm/examples
, sélectionnez doc_design_iteration_viterbi_rayleigh_OFDM_MIMO.slx
et cliquez sur Run.
Accélérer la simulation en utilisant MATLAB Coder
Toutes les fonctions et les System objects utilisés par ce workflow de design itératif supporte la génération de code C. Avec une licence MATLAB Coder™, il est possible d’accélérer la vitesse de simulation en générant un ficher .mex grâce à la commande codegen
.
Dans MATLAB
Copiez le fichier doc_design_iteration_viterbi_rayleigh_OFDM_MIMO_m.m file dans un dossier qui n’est pas sur le chemin MATLAB. Par exemple, C:\Temp.
Changez le répertoire de travail vers le dossier que vous venez de créer.
Exécutez les commandes suivantes pour donner une valeur numérique à chaque paramètre d’entrée dans la fonction doc_design_iteration_viterbi_rayleigh_OFDM_MIMO_m. Par exemple :
EbNo=1;
MaxNumErrs=200;
MaxNumBits=1e7;
Exécutez la commande codegen pour générer le fichier exécutable MATLAB.
codegen -args {EbNo,MaxNumErrs,MaxNumBits} doc_design_iteration_viterbi_rayleigh_OFDM_MIMO_m
L'extension fichier du fichier exécutable MATLAB, qui est généré, dépend de votre système d’exploitation. Par exemple, sur Windows® 64-bit, le fichier d’extension sera .mexw64, et le nom complet du fichier sera doc_design_iteration_viterbi_rayleigh_OFDM_MIMO_m_mex.mexw64.
En exécutant le fichier mex qui vient d’être généré dans l’application, les résultats de la simulation seront obtenus plus rapidement.
Accédez à l’application Bit Error Rate Analysis.
Cliquez sur l'onglet Monte Carlo.
Saisissez 0:9
pour EbNo range.
Saisissez 700
pour Number of errors.
Saisissez 1e7
pour Number of bits.
Cliquez sur le bouton Browse, et sélectionnez All Files
.
Accédez au dossier créé à l’étape 1 et cliquez sur Run.
L’application exécute la simulation et génère les points simulés le long de la courbe BER. Comparez la courbe BER de la simulation et la courbe précédente. Toute variation de la courbe BER sur le fichier mex et le fichier MATLAB depuis lequel elle a été générée est liée à la valeur de départ du générateur de nombre aléatoire et est statistiquement insignifiante. Dans cet exemple, l’application génère la courbe beaucoup plus rapidement quand MATLAB Coder est utilisé pour générer le code. À noter que l’application n'utilise qu'un 1/4 du temps nécessaire pour compléter la simulation originale pour générer des résultats BER similaires.