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