@ccueil Colles

Source LaTeX icone Codage-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
Voir aussi:

Documentation sur LaTeX
pdficon
Source LaTex icone
Télécharger le fichier source pdficon

\documentclass[12pt]{article}
%\usepackage{french}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage[latin1]{inputenc}
\usepackage{a4wide}


\newcommand{\TITLE}{{\bf TP}: Reprsentation des signaux binaires.}
\title{TP n$^{\circ}$  : Reprsentation 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 diffrentes mthodes 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 mthodes de codage en ligne qui sont couramment utilises
  en communications num\-riques; 
\item densits spectrales de puissance associes  ces divers codes en
  ligne; 
\item causes de distorsion du signal dues  un canal de communication
  numrique; 
\item effets d'interfrences 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 gnrer alatoirement une
   squence binaire de $n$ bits. 
   Complter cette fonction par une autre fonction {\it waveplot}
   permettant la reprsentation 
   graphique de ce message binaire gnr avec un dbit binaire $R_b$
   ( {\bf rand , plot}). 
   (On pourra prendre comme valeur par dfaut pour la suite
   $Rb=1$k\,b/s). 

\bigskip
On s'intresse maintenant aux reprsentations possibles de ce
cette squence binaire. On parle pour cela de codage ligne. 

\bigskip
b) Ecrire une fonction {\it wavegen} qui associe  une squence
   binaire {\it b} de dbit $R_b$ le signal {\it sig} correspondant
   cod en ligne avec la frquence 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-priode:
       \[ 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 gnrer l'aphabet ternaire $\beta_k$, on pourra utiliser la
     relation de rcurrence: 
     \[ \left\{\bgar{ll}
     \beta_n = \alpha_n \, s_{n-1} \\
     s_n = (1-2\alpha_n) s_{n-1} \,, 
     \enar\right.\]
     correctement initialise. 

   \end{itemize}
\bgsk

\bigskip
La fonction {\it wavegen} prendra comme arguments le signal binaire
original ainsi qu'une chane de caractres ``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'entre d'un codeur,
$x(t)$ le signal en sorti du codeur (i.e. le signal cod en ligne), et
$h(t)$ la rponse 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-corrlation centre des $a_k$.
\end{itemize}

Pour chaque code en ligne utilis dans la partie prcdente, exprimer
la densit spectrale de puissance thorique, puis, avec
Matlab, gnrer une squence binaire $b$, et calculer numriquement
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}}$ zro 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 caractristiques
spectrales de chaque code. 
En dduire l'intrt, avantages et inconvnients, 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\}$ dsignant l'esprance): 
\[ \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 rcurrence 
\[ \beta_n = \alpha_n (1-2\alpha_{n-1}) \cdots (1-2\alpha_{n-m})
\cdots \,,
\]
les corrlations: 
\[ \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} donne  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'entre du canal, 
\item {\it gain} est le gain (attnuation) du canal, 
\item {\it noise} reprsente la puissance du bruit additif (bruit
  blanc Gaussien), 
\item {\it bandwidth} est la bande passante du canal, 
\item et bien sr, $sig_{out}$ est le signal obtenu  la sortie du
  canal. 
\end{itemize}

\bgsk 

Etudier pour chaque code en ligne vu prcdemment l'influence des
caractristiques 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 phnomnes. 



\section{Diagramme de l'oeil} 

Les consquences du bruit et du filtrage peuvent tre mises en
vidence en observant le signal de sortie avec la reprsentation 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'entre ``external trigger'' d'un oscilloscope  mmoire). 
La largeur de balayage est plus grande que la priode de la squence
de donnes 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, reprsenter 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 considre les caractristiques 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}

Haut de la page Haut de la page