Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1
GEL 4200 & GEL 7014 Communications numériques
Devoir 2 : Session d’hiver 2018
BERTool & Modulation M-QAM, M-PSK EVM vs. BER
Filtre RRCΣ Données
Bruit AWGMATLAB
Oscilloscopeà temps
réel (RTO)
Analyseur de spectre (ESA)
VSA agilent
Filtre RRC
Il y a trois parties au devoir.
I. Cette partie utilise BERTool pour facilement afficher les courbes de BER pour plusieurs modulations. Vous allez calculer la perte par rapport au QPSK pour ces modulations et valider que les graphiques donnent la même perte que la perte fournie par les calculs.
II. Cette partie utilise le logiciel VSA d’Agilent pour estimer le SNR, et à partir de l’estimé du SNR, en suite estimer le BER. Le signal est généré en Matlab par le fichier devoir2.m fourni. Matlab fournit aussi des calculs sur l’estimation du SNR, pour vous aider à vérifier vos résultats en utilisant le logiciel VSA.
III. Cette partie utilise Matlab et BERTool pour faire rouler une simulation Monte Carlo en Matlab.
2
I. BERTool dans Matlab
1. Ouvrir l’outil « BERTool ». Quels sont les paramètres suivants par défaut : a. Quel est le type du canal? b. Quels sont le type et l’ordre de la modulation? c. Quel est le niveau de Eb/N0 considéré? d. Y a-t-il un codage canal?
2. Comparaison de BER pour plusieurs types de modulation.
a. En utilisant BERTool, tracer les courbes théoriques pour les modulations suivantes : QPSK, 4FSK, BFSK (non cohérente), 8FSK (cohérente) et 16QAM.
b. Vérifier les équations analytiques de pertes par rapport à QPSK avec les courbes affichées.
Tableau 1 : Perte de différentes modulations comparées à QPSK
Mod perte p/r QPSK (équation théorique)
perte p/r QPSK (en dB, en théorie)
perte p/r QPSK (en dB, graphique
BERTool)
QPSK
BFSK (noncoh)
8FSK (cohérente)
8PSK
16QAM
3
II. VSA par Agilent
3. Investigation des constellations et EVM et SNR a) En utilisant devoir2.m en MATLAB, générer des séquences de signaux 8PSK et
16QAM avec des impulsions RRC r = 0.35. Utiliser un «seed» unique (par étudiant), mais répéter ce « seed » pour chaque simulation MATLAB pour devoir 2!
b) Complétez les tableaux 2 à 5 en prenant les mesures appropriées pour 8PSK et 16QAM.
c) Remettre un seul fichier PDF avec : a. les tableaux b. les graphiques (pour SNR = 10 et SNR = 20 dB)
i. La constellation normalisée et celle de référence. ii. Le spectre avec une identification de la largeur de bande contenant
90% de la puissance. c. Une discussion des résultats
i. Une analyse des constellations (référence & mesuré) en fonction du SNR. Que notez-vous de particulier en comparant le symbole le plus bruité de chacun des cas? Pourquoi est-ce ainsi?
ii. Comment les paramètres EVM et BER sont-ils une indication de la performance d’un système?
iii. Comment les paramètres EVM et BER se distinguent-ils les uns par rapport aux autres dans l’estimation de la performance d’un système?
iv. Une comparaison de BER théorique et de BER estimé avec EVM. v. Dans quel cas l’EVM est une mauvaise estimation pour prédire le
BER. Pourquoi est-ce ainsi? (Indice : Vous devez savoir comment VSA calcule l’EVM.)
vi. Comparer la largeur de bande théorique et celle que vous obtenez. Faites une également une comparaison de l’efficacité. Vous devez aussi commenter et expliquer ce que vous obtenez.
PROCÉDURE : À l’aide du logiciel VSA, charger le fichier SetupDev2.setx dans file => recall
=> recall setup. Ouvrez la fenêtre MeasSetup => Digital Demod Properties. Choisissez l’onglet Format et sélectionnez la modulation appropriée (8PSK ou
16QAM). Dans l’onglet Filter, utilisez un filtre de mesure RRC et un filtre de référence
RC. À l’aide du fichier Devoir2.m, générez les signaux demandés en modifiant le
SNR. Pour cet exercice, prenez toujours un codage de gray ; le programme sort un fichier texte contenant le signal.
À l’aide de VSA, aller dans file => recall => recall recording et sélectionnez le fichier texte contenant le signal généré en Matlab.
Afin d’avoir une trace stable, retourner dans la fenêtre MeasSetup => Digital Demod Properties. Dans l’onglet format, utiliser une valeur maximale dans l’option Result length.
Vous aurez également à changer le nombre de points par symbole à 20.
4
Tableau 2 : Qualité du signal 8PSK en fonction SNR SNR (dB)
Matlab
Eb/N0 (dB)
Matlab
EVMVSA
%rms SNRVSA
(MER) (dB) BEREVM BERThéo
30 20 10
Tableau 3 : BW et efficacité spectrale 8PSK
8PSK SNR (dB)
Matlab BWThéo
BWVSA
(90%) ηVSA ηthéo
30 20 10
Tableau 4 : Qualité du signal 16QAM en fonction SNR
SNR (dB)
Matlab
Eb/N0 (dB)
Matlab
EVM %rms VSA
SNR(MER) (dB) VSA
BERVSA
BERThéo
30 20 10
Tableau 5 : BW et efficacité spectrale 16QAM
16QAM SNR (dB)
Matlab BWThéo
BWVSA
(90%) ηVSA ηthéo
30 20 10
( )theo MATLABBER BER SNR ; 0
bMATLAB theo
ESNR
N
( )VSABER BER SNR MER ; 0
( ) btheo
ESNR MER
N vs.
0
( ) bVSA
ESNR MER
N
/VSA VSAR BW
5
III. Matlab pour simulation Monte Carlo 4. Voici le code Matlab pour la simulation de 16QAM et 8PSK EbNo=15;n = 10000; M = 16;
hMod = comm.RectangularQAMModulator(M); hDemod = comm.RectangularQAMDemodulator(M); hChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)'); hErrorCalc = comm.ErrorRate; snr = EbNo+10*log10(log2(M)); % Because of nonbinary modulation hChan.SNR = snr; %Assign Channel SNR msg = randi([0,M-1], n, 1); % Generate message sequence. txsig = step(hMod, msg); % Modulate. hChan.SignalPower = (txsig'*txsig)/length(txsig); rxsig = step(hChan,txsig); % Add noise. decodmsg = step(hDemod, rxsig); % Demodulate. serVec = step(hErrorCalc, msg, decodmsg); % Symbol error rate ber=serVec(1)/log2(M); numErrors=serVec(2)
a. Pour 16QAM, EbNo=14 dB, affichez un « scatterplot » du signal reçu (rxsig)
pour 10000 symboles. b. Pour 16QAM, EbNo=14 dB, générez n symboles et compter les erreurs à la
réception (simulation Monte Carlo). Compléter la table suivante et discuter l’impact du nombre d’erreurs sur la qualité de l’estimation de BER.
n # erreurs BER Monte Carlo BER exact
1,000 10,000 100,000
1,000,000
c. Utiliser BERTool pour générer et tracer une courbe de simulation Monte Carlo de 16QAM pour EbNo de 0 à 14 dB par saut de 0.5 dB. Afficher la courbe théorique avec la simulation Monte Carlo. Est-ce que les courbes de la simulation et de la théorie sont pareilles ?
d. Utiliser BERTool pour générer et tracer une courbe de simulation Monte Carlo de 8PSK pour EbNo de 0 à 14 dB par saut de 0.5 dB. Afficher la courbe théorique avec la simulation Monte Carlo. Est-ce que les courbes de la simulation et de la théorie sont pareilles ?
e. Ajouter le SER dans les graphiques de partie c. et de partie d. Discuter la différence entre le SER et le BER. Est-ce que la simulation a vraiment calculé le BER?
Pour rendre une fonction utilisable par BERtool, il faut exploiter le gabarit fourni avec Matlab. Modifier le gabarit pour simuler l’impulsion rectangulaire. Faire attention à la différence entre SNR et Eb/N0 et faire attention de tenir compte de la normalisation en fonction du nombre d’échantillons par symbole. Pour la simulation MC, on va considérer les paramètres suivants : un nombre maximal d’erreur=100 et nombre de bits=107.
function [ber, numBits] = BERTooltemplate(EbNo, maxNumErrs, maxNumBits) % Import Java class for BERTool. import com.mathworks.toolbox.comm.BERTool; % Initialize variables related to exit criteria. serVec = zeros(3,1); % Updated BER values
6
% --- Set up parameters. --- % --- INSERT YOUR CODE HERE. % Simulate until number of errors exceeds maxNumErrs % or number of bits processed exceeds maxNumBits. while((serVec(2) < maxNumErrs) && (serVec(3) < maxNumBits)) % Check if the user clicked the Stop button of BERTool. if (BERTool.getSimulationStop) break; end % --- Proceed with simulation. % --- Be sure to update totErr and numBits. % --- INSERT YOUR CODE HERE. end % End of loop % Assign values to the output variables. ber = serVec(1)/log2(M); numBits = serVec(3);