\documentclass[a4paper,french,12pt]{article} \title{Communications Numériques --- TP} \author{Adam BELGHITH --- Tunui FRANKEN} \date{Dernière compilation~: \today{} à \currenttime} \usepackage{styles} \usepackage{float} \begin{document} \maketitle \clearpage \tableofcontents \clearpage \setcounter{section}{2} \section{Transmission en bande de base, codage de voix} \setcounter{subsection}{1} \subsection{Signal codé à identifier} \begin{center} \includegraphics[width=0.6\linewidth]{./img/chronogramme_nrz.png} \end{center} \emph{Étudier le chronogramme et déterminer~:} \begin{enumerate} \item \emph{Le type de codage} Le codage utilisé est un codage NRZ\@. À chaque valeur que prend le chronogramme correspond une valeur issue du tableau de codage. \item \emph{La valence} Pour cette partie, nous avons défini la valence à 8. Il y a donc 8 valeurs binaires possibles. \item \emph{Le débit symbole (débit brut)} Le diagramme affiche 12 symboles sur une période de 1 ms, ce qui correspond à un débit symbole de 12000 symboles/s (12kbauds). \item \emph{Comparer le spectre obtenu et le spectre théorique.} \begin{center} \includegraphics[width=\linewidth]{./img/spectre_nrz_theorique.png} \includegraphics[width=0.49\linewidth]{./img/spectre_nrz.png} \includegraphics[width=0.49\linewidth]{./img/spectre_nrz_log.png} \end{center} Le spectre obtenu ressemble bien au spectre théorique~: c'est un sinus cardinal. L'échelle logarithmique montre plus clairement les retours à 0 tous les $nf=12000$. \end{enumerate} \subsection{Signal RZ} \emph{% Afin de créer un signal RZ il faut modifier le code du script \texttt{codage\_enligne.m}~: \begin{itemize} \item La variable \texttt{typecodage} doit être mise à RZ \item La valence M = 2 \item Le formant g0T doit être modifié en remplaçant valeur à modifier par la valeur adéquate. La tension +V est déterminée dans le script et vaut 1. \end{itemize} } \emph{% Exécuter \texttt{codage\_enligne.m} et observer le chronogramme et le spectre. Deux spectres sont tracés~: l’un avec une échelle linéaire et l’autre avec une échelle logarithmique. } \begin{center} \includegraphics[width=0.49\linewidth]{./img/spectre_rz.png} \includegraphics[width=0.49\linewidth]{./img/spectre_rz_log.png} \includegraphics[width=0.49\linewidth]{./img/chronogramme_rz.png} \end{center} \begin{enumerate} \item \emph{Lequel des deux est le plus adapté~?} L'échelle logarithmique est la plus adaptée, en effet l'échelle linéaire n'affiche aucune valeur exploitable. \item \emph{Quel avantage présente le code RZ~?} Le code RZ présente l'avantage de restituer son horloge, au détriment d'une bande passante 2 fois plus large que le NRZ\@. \end{enumerate} \subsection{Code bi-phasé} \emph{Il faut, ici encore, modifier le script \texttt{codage\_enligne.m} pour tracer le code bi-phasé.} \begin{enumerate} \item \emph{Effectuer les modifications nécessaires.} \item \emph{Observer et commenter le spectre du signal codé.} \begin{center} \includegraphics[width=0.49\linewidth]{./img/spectre_biphase.png} \includegraphics[width=0.49\linewidth]{./img/spectre_biphase_log.png} \end{center} L'occupation spectrale est plus élevée. Sur l'échelle logarithmique, nous voyons les retours à zéro deux foix moins fréquents que pour le code NRZ\@. \item \emph{En observant le chronogramme quel avantage possède le code bi-phasé~?} \begin{center} \includegraphics[width=0.8\linewidth]{./img/chronogramme_biphase.png} \end{center} Le chronogramme montre une tension moyenne à 0. Il y a autant de valeurs pour chaque pôle. On peut aussi noter que ce code restitue l'horloge. \end{enumerate} \subsection{Transmission sur un canal bruité et décodage} \emph{% Exécuter le script \texttt{FINAL} qui permet de générer le signal codé, le bruit, modélisation du canal et transmission et enfin le décodage. Le signal réceptionné et décodé est le vecteur \texttt{ae}. Attribuer les valeurs aux variables~: Nfreq = 1, typecode = Aidentifier du script \texttt{codage\_enligne.m}. Exécuter \texttt{FINAL} pour $M = 8$ puis $M = 2$ et~: } \begin{itemize} \item \emph{Relever la valeur pour chacun des deux cas de Peb et de Pes respectivement la probabilité d’erreur binaire et la probabilité d’erreur par symbole.} \item \emph{Comparer ces valeurs suivant la valeur de M.} \end{itemize} \emph{Vérifier que la suite de symboles reconstruite est la même que celle émise par la source.} $M=8$~: \includegraphics[width=0.3\linewidth]{./img/prob_err_m8.png} \hfill $M=2$~: \includegraphics[width=0.35\linewidth]{./img/prob_err_m2.png} La probabilité d'erreur est largement supérieure pour $M=8$. Étant donné que $\mathrm{Peb} = \frac{\mathrm{Pes}}{\log_2(M)}$, pour $M=8$ nous avons bien $\mathrm{Pes}=\mathrm{Peb}\times 3$. La différence entre $M=8$ et $M=2$ est cohérente car comme le montrent les deux figures qui suivent, les valeurs de seuil qui déterminent chaque valeur de symbole sont plus rapprochées avec $M=8$, donc plus sujettes à être franchies à cause du bruit. \begin{center} \includegraphics[width=0.49\linewidth]{./img/nrz_m2.png} \includegraphics[width=0.49\linewidth]{./img/nrz_m8.png} \end{center} \section{Transmission en bande transposée, modulation numérique} \subsection{Modulation QAM} \emph{L’expression d’un signal modulé QAM est~:} \begin{equation*} s(t) = I(t)\cdot\cos(\omega_0 t) - Q(t)\cdot\sin(\omega_0 t) = \mathrm{Re}((I(t) + \mathrm{jQ}(t))\cdot e^{j\omega_0 t}). \end{equation*} \emph{% $I(t)$ peut prendre $M_I$ valeurs et $Q(t)$ peut prendre $M_Q$ valeurs. La valence de la modulation QAM est $M = M_I M_Q$. } \subsubsection{Création du signal modulé sous MATLAB} \emph{% La fonction \texttt{qammodHF} permet de créer le vecteur \texttt{s\_0\_NT} représentant le signal modulé pour une séquence binaire à transmettre. } \emph{% La fonction \texttt{randi} permet de créer une séquence d’entiers aléatoires. Elle permettra de créer la séquence binaire à moduler. } \emph{% Dans cette partie les variables sont~: fréquence porteuse $f_0 = 20\mathrm{kHz}, R = 1\mathrm{kHz}, M = 32$ et la fréquence d’échantillonnage $f_{esimul} = 1\mathrm{MHz}$. } \begin{enumerate} \item \emph{Compléter le script \texttt{signal\_qam.m} permettant de calculer le modulé et de le tracer en fonction du temps.} \begin{center} \includegraphics[width=0.6\linewidth]{./img/signal_qam.png} \end{center} \item \emph{Combien de bits codent chaque symbole~?} Cinq bits sont nécessaires pour coder chaque symbole. En effet, $32=2^5$. Chaque symbole nécessite donc $\log_2(32) = 5$ bits. \item \emph{Combien de période $T_0$ de la porteuse il y a par durée de symbole~?} $\frac{f_0}{R} = \frac{20000}{1000} = 20$. Il y a donc 20 périodes $T_0$ de la porteuse par symbole. \item \emph{Quelle est la taille du vecteur temps de simulation~: \texttt{t\_0\_NT}~? Quelle est donc la durée de la transmission nT~?} En utilisant \texttt{length(t\_0\_NT)}, on trouve la taille du vecteur à 50000 éléments. Ces 50000 éléments se comptent en kHz, ce qui nous donne une durée de transmission de 50ms. \item \emph{Combien de symboles sont transmis pendant la dure de transmission nT~?} 50 symboles sont transmis~: $\frac{50000}{1000} = 50 = N$. \end{enumerate} \subsubsection{Constellation bruitée} \emph{% Le script constellation bruit permet d’observer la constellation bruitée d’une modulation QAM\@. Ici la valence sera $M = 4$. Ce script fait appel à différentes fonctions~: } \begin{itemize} \item \emph{\texttt{qcod} qui permet d’écrire un signal complexe $e^{j\theta}$ sous la forme $X + jY$ et de module unitaire} \item \emph{\texttt{canal\_awgn} qui modélise le canal} \item \emph{\texttt{demodHF} dont la sortie est l'amplitude du signal \texttt{s\_0\_NT} en complexe~: \texttt{y\_1\_N}.} \end{itemize} \emph{Exécuter le script \texttt{constellation\_bruit} et observer la constellation de la modulation QAM\@.} \begin{center} \includegraphics[width=0.6\linewidth]{./img/constellation_bruitee.png} \end{center} On observe le décalage de phase pour chaque symbole, ainsi que l'influence du bruit qui rend les tâches plus larges. Toutefois, le bruit est trop faible pour générer de l'erreur. \subsection{Modulation PSK} \subsubsection{Création du signal modulé sous MATLAB} \emph{% Dans cette partie les variables sont~: fréquence porteuse $f_0 = 20\mathrm{kHz}, R = 1\mathrm{kHz}, M = 4, 8$ et la fréquence d’échantillonnage $f_{esimul} = 1\mathrm{MHz}$. } \emph{% La fonction \texttt{pskmodHF} utilise la fonction \texttt{pcod} qui permet d’écrire un nombre complexe $e^{j\theta}$ sous la forme $X+jY$ de module unitaire. Ainsi $X+jY = e^{j\theta}$. Pour une modulation PSK le signal modulé est $s(t) = \cos(\omega_0 t + \phi) = e^{j\omega_0 t}\cdot e^{j\phi}$ où $\phi$ sont les valeurs de la modulation. } \begin{enumerate} \item \emph{Compléter le script \texttt{signal\_psk} qui permettra de créer et représenter le signal modulé PSK\@.} \item \emph{Observer le signal modulé en fonction du temps.} \end{enumerate} \begin{multicols}{2} Pour $M=4$~: \\\\ \includegraphics[width=\linewidth]{./img/psk_m4.png} Pour $M=8$~: \\\\ \includegraphics[width=\linewidth]{./img/psk_m8.png} \end{multicols} On observe bien le changement de phase du signal temporel lorsque le symbole change. \subsubsection{Constellation bruitée} \emph{% Afin d’observer la constellation de la modulation PSK, modifier le script \texttt{constellation\_bruit}. Observer la constellation pour quelques valeurs de M. } \begin{multicols}{3} Pour $M=4$~: \\\\ \includegraphics[width=\linewidth]{./img/constellation_bruitee_m4.png} Pour $M=8$~: \\\\ \includegraphics[width=\linewidth]{./img/constellation_bruitee_m8.png} Pour $M=16$~: \\\\ \includegraphics[width=\linewidth]{./img/constellation_bruitee_m16.png} \end{multicols} On remarque qu'avec $M=16$, le bruit est trop puissant et ne permet plus de distinguer clairement où sont les zones associées à chaque symbole. La probabilité d'erreur est très grande. Avec quelques points de $M=8$, la probabilité de d'erreur est faible. Avec $M=4$, la probabilité d'erreur est quasi nulle \end{document}