Source Latex: TP de mathématiques, Codage en ligne d'un signal
Post-bac
Codage en ligne d'un signal
Représentation et codage des signaux binaires- Fichier
- Type: TP
- File type: Latex, tex (source)
- Télécharger le document pdf compilé
- Description
- Représentation et codage des signaux binaires
- Niveau
- Post-bac
- Table des matières
- Simulation d'un message binaire - Codage en ligne
- Codages polaires et unipolaires NRZ et RZ - Codes Manchester et AMI
- Densité spectrale de puissance (DSP) des codes en lignes
- Simulation d'un canal de transmission
- Diagramme de l'œil
- Mots clé
- codage en ligne, signal binaire, code polaire, code unipolaire, NRZ, RZ, Manchester, AMI, DSP, diagramme de l'œil
- Voir aussi:
Documentation sur LaTeX- Source Latex
-
Source Latex
\documentclass[12pt]{article} %\usepackage{french} \usepackage[french]{babel} \usepackage{amsmath} \usepackage[latin1]{inputenc} \usepackage{a4wide} \newcommand{\TITLE}{{\bf TP}: Repr�sentation des signaux binaires.} \title{TP n$^{\circ}$ : Repr�sentation des signaux binaires.} \author{Yoann Morel} \date{} %\pagestyle{headings} \usepackage{fancyhdr} \usepackage{lastpage} % Raccourcis diverses: \newcommand{\nwc}{\newcommand} \nwc{\dsp}{\displaystyle} \nwc{\bgar}{\begin{array}}\nwc{\enar}{\end{array}} \nwc{\la}{\left\{} \nwc{\bgsk}{\bigskip} \nwc{\vsp}{\vspace{0.1cm}} \nwc{\vspd}{\vspace{0.2cm}} \nwc{\vspt}{\vspace{0.3cm}} % Fin Raccourcis \begin{document} \pagestyle{fancyplain} \setlength{\headheight}{0cm} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0.1pt} \lhead{}\chead{}\rhead{} \lfoot{Morel Yoann} \cfoot{\TITLE \\ \thepage/\pageref{LastPage}} \rfoot{Master 2} \centerline{\Large\TITLE} %\bgsk\bgsk \vspace{1cm} \centerline{\rule[2ex]{7cm}{0.1mm}} \vspace{0.5cm} \paragraph{\large{\bf Objectifs}:} Ce TP est relatif aux diff�rentes m�thodes de codage d'une information binaire, et � la transmission en bande de base de cette information. Les grandes lignes de ce TP sont l'�tude des \begin{itemize} \item m�thodes de codage en ligne qui sont couramment utilis�es en communications num�\-riques; \item densit�s spectrales de puissance associ�es � ces divers codes en ligne; \item causes de distorsion du signal dues � un canal de communication num�rique; \item effets d'interf�rences entre symboles (IES) et de bruit de canal � partir du diagramme de l'oeil. \end{itemize} \section{Simulation d'un message binaire - Codage en ligne} On s'interessera tout au long de ce TP � des informations binaires. \bigskip a) Ecrire une fonction Matlab {\it binary} permettant de g�n�rer al�atoirement une s�quence binaire de $n$ bits. Compl�ter cette fonction par une autre fonction {\it waveplot} permettant la repr�sentation graphique de ce message binaire g�n�r� avec un d�bit binaire $R_b$ ( {\bf rand , plot}). (On pourra prendre comme valeur par d�faut pour la suite $Rb=1$k\,b/s). \bigskip On s'int�resse maintenant aux repr�sentations possibles de ce cette s�quence binaire. On parle pour cela de codage ligne. \bigskip b) Ecrire une fonction {\it wavegen} qui associe � une s�quence binaire {\it b} de d�bit $R_b$ le signal {\it sig} correspondant cod� en ligne avec la fr�quence d'�chantillonnage $f_s$ pour chacun des codes en ligne suivant: \begin{itemize} \item Code {\bf Unipolaire NRZ} (Non Return to Zero): \[ x(t) = \left\{ \bgar{lll} +V \ , &t\in [kT_b,(k+1)T_b]\ , &\mbox{ si } \alpha_k =1 \vspd\\ \ 0 \ , &t\in [kT_b,(k+1)T_b]\ , &\mbox{ si } \alpha_k=0 \enar\right.\] \item Code {\bf Polaire NRZ}: c'est la version antipolaire du code unipolaire NRZ: \[ x(t) = \left\{ \bgar{lll} +V \ , &t\in [kT_b,(k+1)T_b]\ , &\mbox{ si } \alpha_k =1 \vspd\\ -V \ , &t\in [kT_b,(k+1)T_b]\ , &\mbox{ si } \alpha_k=0 \enar\right.\] \item Code {\bf Unipolaire RZ}: \[ x(t) = \la \bgar{ll} \la\bgar{ll} +V \ , &t\in [kT_b,(k+1/2)T_b] \vsp\\ 0 \ , &t\in [(k+1/2)T_b,(k+1)T_b] \enar\right. \ , &\mbox{ si } \alpha_k =1 \vspt\\ \ \ 0 \ , &\mbox{ si } \alpha_k=0 \enar\right.\] \item Code {\bf Polaire RZ} (Return to Zero): ici, le signal ``revient'' � zero � chaque demi-p�riode: \[ x(t) = \la \bgar{ll} \la\bgar{ll} +V \ , &t\in [kT_b,(k+1/2)T_b] \vsp\\ 0 \ , &t\in [(k+1/2)T_b,(k+1)T_b] \enar\right. \ , &\mbox{ si } \alpha_k =1 \vspt\\ \la\bgar{ll} -V \ , &t\in [kT_b,(k+1/2)T_b] \vsp\\ 0 \ , &t\in [(k+1/2)T_b,(k+1)T_b] \enar\right. \ , &\mbox{ si } \alpha_k=0 \enar\right.\] \item Code {\bf Manchester}: c'est un code de transition antipolaire: \[ \bgar{ll} x(t)&=\la\bgar{ll} \mbox{ ``front descendant'' } \ , \mbox{ si } \alpha_k=1 \vspd\\ \mbox{ ``front ascendant'' } \ , \mbox{ si } \alpha_k=0 \enar\right. \vspt\\ &= \la\bgar{ll} \la\bgar{ll} +V \ , t\in [kT_b,(k+1/2)T_b] \vsp\\ -V \ , t\in [(k+1/2)T_b,(k+1)T_b] \enar\right. \ , \mbox{ si } \alpha_k =1 \vspt\\ \la\bgar{ll} -V \ , t\in [kT_b,(k+1/2)T_b] \vsp\\ +V \ , t\in [(k+1/2)T_b,(k+1)T_b] \enar\right. \ , \mbox{ si } \alpha_k=0 % \enar\right. \enar\right. \enar \] % \item Code {\bf Triangulaire}: \item Code {\bf AMI} (Alternate Mark Inversion): ce code est similaire au code Unipolaire NRZ, mais utilisant cette fois un alphabet ternaire $a_n\in \{-V,0,+V\}$: lorsque $\alpha_k=0$, $x(t)=0$ sur $[kT_b,(k+1)T_b]$, tandis que $\alpha_k=1$ est cod� alternativement par $x(t)=V$ et $x(t)=-V$. \vsp Pour g�n�rer l'aphabet ternaire $\beta_k$, on pourra utiliser la relation de r�currence: \[ \left\{\bgar{ll} \beta_n = \alpha_n \, s_{n-1} \\ s_n = (1-2\alpha_n) s_{n-1} \,, \enar\right.\] correctement initialis�e. \end{itemize} \bgsk \bigskip La fonction {\it wavegen} prendra comme arguments le signal binaire original ainsi qu'une cha�ne de caract�res ``linecode'' permettant le choix du codage en sortie. \section{Densit� spectrale de puissance (dsp) pour les codes en ligne} On rappelle que, si $a(t)$ est le signal � l'entr�e d'un codeur, $x(t)$ le signal en sorti du codeur (i.e. le signal cod� en ligne), et $h(t)$ la r�ponse impulsionnelle du codeur, alors la densit� spectrale de puissance s'exprime par la relation \[ \gamma_x(f) = \gamma_a(f) \left| H(f)\right|^2 \,, \] o� \[ \gamma_a(f) = \frac{\sigma_a^2}{T} + \frac{2}{T} \sum_{k=1}^\infty \Gamma_a(k)\,\cos(2\pi k f T) + \frac{m_a^2}{T^2} \sum_{k=1}^\infty \delta(f-\frac{k}{T}) \] avec, \begin{itemize} \item $m_a$ est la moyenne des $a_k$ \item $\sigma_a^2$ est la variance des $a_k$ \item $\Gamma_a(k)$ est la fonction d'auto-corr�lation centr�e des $a_k$. \end{itemize} Pour chaque code en ligne utilis� dans la partie pr�c�dente, exprimer la densit� spectrale de puissance th�orique, puis, avec Matlab, g�n�rer une s�quence binaire $b$, et calculer num�riquement cette densit� spectrale de puissance. On pourra utiliser les fonctions matlab {\it psd} et {\it pwelch}. \bgsk On note: \begin{itemize} \item $F_{pi}$ : le $i^{\mbox{�me}}$ maximum du spectre, \item $F_{ni}$ : le $i^{\mbox{�me}}$ z�ro du spectre, \item $B_T$ la bande passante du signal. \end{itemize} Remplir le tableau suivant: \begin{center} \begin{tabular}{|c|c|c|c|c|c|c|} \hline $R_b=\ $ kb.s$^{-1}$ & $F_{p1}$ & $F_{p2}$ & $F_{n1}$ & $F_{n2}$ & $B_T$ \\ \hline Unipolaire NRZ & & & & & \\ \hline Polaire NRZ & & & & & \\ \hline Unipolaire RZ & & & & & \\ \hline Bipolaire RZ & & & & & \\ \hline Manchester & & & & & \\ \hline \end{tabular} \end{center} \bgsk Faire les commentaires qui s'imposent pour les caract�ristiques spectrales de chaque code. En d�duire l'int�r�t, avantages et inconv�nients, de chaque code. \paragraph{Indication pour le code AMI.} L'expression de la densit� spectrale de puissance pour le code AMI est un peu plus complexe � obtenir que celle des autres codes. On pourra, pour effectuer le calcul, montrer (et utiliser) les relations ($E\{\dot\}$ d�signant l'esp�rance): \[ \bgar{ll} E\{\alpha_n\} = 1/2 \Longrightarrow E\{1-2\alpha_n\}=0 \\ E\{\alpha_n^2\}=1/2 \Longrightarrow E\{(1-2\alpha_n)^2\}=1 \\ E\{\alpha_n\alpha_k\}=1/4\ , \mbox{ si } n\not= k \,. \enar\] On obtient alors, en utilisant la relation de r�currence \[ \beta_n = \alpha_n (1-2\alpha_{n-1}) \cdots (1-2\alpha_{n-m}) \cdots \,, \] les corr�lations: \[ \Gamma_\alpha(k) = \left\{\bgar{ll} 1/2 \ , &\mbox{ si } k=0 \\ -1/4 \ , &\mbox{ si } k=\pm 1 \\ 0 \ , &\mbox{ si } |k|\geq 1 \enar\right.\] \section{Simulation d'un canal de transmission} La fonction matlab {\it Canal.m} donn�e � la fin de cet �nonc� permet de simuler un canal de transmission. Syntaxe de la fonction: $sig_{out}=$ Canal$(sig_{in}$, gain, noise, bandwidth$)$, o�, \begin{itemize} \item $sig_{in}$ est le signal � l'entr�e du canal, \item {\it gain} est le gain (att�nuation) du canal, \item {\it noise} repr�sente la puissance du bruit additif (bruit blanc Gaussien), \item {\it bandwidth} est la bande passante du canal, \item et bien s�r, $sig_{out}$ est le signal obtenu � la sortie du canal. \end{itemize} \bgsk Etudier pour chaque code en ligne vu pr�c�demment l'influence des caract�ristiques du canal de transmission sur le signal transmis. \bgsk Commenter les effets du bruit et de la bande passante du canal sur le signal. Expliquer ensuite ces ph�nom�nes. \section{Diagramme de l'oeil} Les cons�quences du bruit et du filtrage peuvent �tre mises en �vidence en observant le signal de sortie avec la repr�sentation dite du diagramme de ``l'oeil''. Ce diagramme est obtenu avec de multiples balayages et est synchronis� avec le signal d'horloge (le signal d'horloge provient soit d'une source exterieure, soit du signal de sortie du canal; il est envoy� � l'entr�e ``external trigger'' d'un oscilloscope � m�moire). La largeur de balayage est plus grande que la p�riode de la s�quence de donn�es binaires $T_b=1/R_b$. Dans la simulation, le diagramme de l'oeil est obtenu avec un balayage $d$ largeur �gale � $2 T_b$. \bgsk La fonction matlab {\it eyediagram} permet de tracer le diagramme de l'oeil d'un signal. \bgsk Pour chaque code en ligne utilis� jusqu'ici, repr�senter le diagramme de l'oeil du signal original, puis du signal transmis par un canal de bande passante $B_w$ et de bruit additif de puissance $P_b$. \bgsk Commenter les diagrammes pour chaque code. \bgsk On consid�re les caract�ristiques du canal: $P_b=0.01$ W et $B_w= 1$ kHz. Pour quel code en ligne, le diagramme de l'oeil est-il ``acceptable''. Commenter et expliquer. \clearpage \begin{verbatim} function [out, t] = Canal(x,gain,noise_power,bandwidth,fs) f=bandwidth; if (nargin == 4), fs=10E3;end %---------------------------------------------------------------------------- % Default values for parameters used in filter design %---------------------------------------------------------------------------- ripple = 0.1; % Allowable ripple, in decibels filt_order = 8; % Filter order fpoints = 256; % Used to display channel response Ts = 1/fs; % Sampling period; no_sample = length(x); % Number of input samples; time_t = [0:(no_sample-1)]*Ts; % instances where the samples defined; if (gain < 0), error('GAIN must be a non-negative parameter.'); end %---------------------------------------------------------------------------- % set the cut-off frequencies, and check consistency %---------------------------------------------------------------------------- if (length(f) == 1) % Low-pass type channel fc = f; passband = [fc]/(fs/2); if ( fc >= fs/2 ) fprintf('Cut-off frequency must be less than %6.2f [kHz].\n', fs/2000 ); error(''); end elseif (length(f) == 2) % Band-pass type channel fl = min(f); fu = max(f); passband = [fl, fu]/(fs/2); if ( fu >= fs/2 ) fprintf('Upper cut-off frequency must be less ... than %6.2f [kHz].\n', fs/2000 ); error(''); end end %---------------------------------------------------------------------------- % Determine & modify filter coefficients %---------------------------------------------------------------------------- Td = 0; % To simplify let delay time Td=0, you can modify by adding % Td as the last argument to CHANNEL function. [Bc,Ac] = cheby1(filt_order, ripple, passband); delay = fix(Td/Ts); % required time delay Bc = [zeros(1,delay) Bc]; % modify numerator for "delay" Bc = sqrt(gain) * Bc; % modify numerator for "gain" x = [x(:)' zeros(1,delay)]; %---------------------------------------------------------------------------- % Output routines % =============== % If no output arguments, plot the magnitude response, otherwise % compute the channel output vector "y" %---------------------------------------------------------------------------- if (nargout == 0) f = fs/(2*fpoints) * (0:fpoints-1); Hc = freqz(Bc,Ac,fpoints); mag = abs(Hc); phase = angle(Hc); subplot(121), plot( f, 20*log10(mag) ), title('Magnitude response'), xlabel('Frequency (Hz)'),ylabel('Mag [dB]'), grid on; subplot(122), plot( f, unwrap(phase) ), title('Phase response'), xlabel('Frequency (Hz)'),ylabel('Phase'), grid on; else y = filter(Bc,Ac,x); r = randn(size(y)); out = y + sqrt(noise_power)*r; if( nargout == 2), t = time_t; end end \end{verbatim} \end{document}
Télécharger le fichier source