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é pdficon
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

Quelques devoirs


    Voir aussi:

    Documentation sur LaTeX
    lien vers la documentation Latex
    Source Latex LaTex icone

    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 Latex