Académique Documents
Professionnel Documents
Culture Documents
Denis Rabast
IUFM dAix Marseille
page 1/15
Lutilisation dun codage Manchester antipolaire (5 V et -5 V par exemple) supprime alors toute
composante continue.
Remarque : le choix dun front montant pour coder le NL1 est purement arbitraire, et on trouvera
parfois le choix inverse.
Dans la suite ltude sera faite pour un CPLD aliment en 0/5 V ; le codage sera donc unipolaire et
nous supposerons un circuit dinterface (non tudi) tablissant la liaison la ligne de communication.
Ce circuit dinterface permettra la transition vers un codage antipolaire (pour lmetteur) ou depuis un
codage antipolaire (pour le rcepteur).
2 Prparation
2.1
Etude de lmetteur
oscillateur
de rfrence
diviseur
horloge
d'mission
gnrateur
pseudo-alatoire
donnes
NRZ
codeur
CPLD
ligne
circuit d'interface
(codage antipolaire,
filtrage, amplification)
sortie
manchester
A partir dun signal carr issu dun oscillateur quartz servant de rfrence temporelle stable, on
obtient le signal dhorloge de la transmission (note horloge dmission sur le schma) par une
division par 16 de la frquence.
Denis Rabast
IUFM dAix Marseille
page 2/15
Dans notre cas de figure, nous ne disposons pas dun systme numrique ayant rellement des
donnes transmettre, aussi nous le simulerons par un gnrateur pseudo-alatoire.
Un gnrateur pseudo-alatoire gnre partir de lhorloge une squence code NRZ. Cette dernire
permettra de tester la fois lmetteur et le rcepteur avec un signal plus proche de la ralit quune
suite de niveaux identiques ou quune alternance de 1 et de 0.
A partir de ce signal et de lhorloge de transmission, le codeur ralise la translation du code NRZ vers
le code manchester.
Le circuit dinterface (non tudi) permet ensuite dattaquer la ligne.
2.1.1
Le codeur
Donner la fonction implanter dans cette partie pour obtenir le fonctionnement dsir.
2.1.2
Le gnrateur pseudo-alatoire.
Ce bloc permet de gnrer partir de N bascules montes en registre dcalage une suite
priodique de 2N-1 bits cods NRZ. Plus le nombre de bascules est important et plus la suite
numrique parat alatoire. Cette suite tant cependant priodique, elle est dite pseudo-alatoire.
Lentre du registre dcalage est une combinaison par un ou exclusif (complment ou non) de la
sortie du registre et dune ou plusieurs bascules intermdiaires dont le rang dpend de N (voir dtails
des connexions en fonction du nombre de bascules en annexe).
Reprsenter les chronogrammes des diffrents signaux de sortie des bascules en fonction de
lhorloge dentre (on supposera que toutes les bascules ont leur sortie 0 lorigine des temps).
Vrifier que nous avons bien une suite pseudo-alatoire de 2N-1 bits quelle que soit la sortie choisie.
Dans ce type de gnrateur il existe toujours au moins un tat de sortie qui bloque le systme. Que se
passe t-il dans notre exemple si toutes les sorties de bascules sont au NL1 ?
2.1.3
Le diviseur
Nous utiliserons une fonction pr-dfinie par le logiciel pour raliser ce diviseur.
Dans le cas o nous aurions le raliser laide de bascules D, proposer un schma structurel.
Denis Rabast
IUFM dAix Marseille
page 3/15
3 Etude du rcepteur
Pour dcoder le signal reu, nous allons utiliser le fait quau milieu de chaque priode de lhorloge
dmission, un front montant (pour un NL1 de la donne NRZ) ou descendant (pour un NL0 de la
donne NRZ) reprsente la valeur cherche.
Il suffira donc daller lire le signal reu aprs ce front pour avoir la valeur NRZ, aux trois quarts de la
priode de lhorloge dmission par exemple.
Cependant, rcepteur connat la frquence de lhorloge dmission, mais pas sa phase (il ne peut
prdire quel endroit se trouve le milieu et les trois quarts de la priode).
Il va donc falloir retrouver cette information partir du signal reu. Pour cela on peut remarquer que
celui-ci comporte systmatiquement un front en milieu de priode, et alatoirement un front en dbut
(ou fin) de priode (lorsque le signal NRZ ne change pas).
Un dtecteur de front va dans un premier temps fournir une brve impulsion chaque front montant
ou descendant.
En sortie de celui-ci nous aurons donc des impulsions systmatiques et des impulsions
alatoires .
une priode d'horloge
horloge
de l'metteur
(non connue
du rcepteur)
t
signal
reu
en VE
t
signal
en VI
t
impulsions
systmatiques
en milieu de priode
d'horloge
impulsions
alatoires
Nous allons liminer ces dernires au moyen dun monostable M1 front montant, non
redclenchable qui fournira un NL1 pendant une dure correspondant 75% de la priode de
lhorloge dmission.
Aprs un tat transitoire, les fronts montants de la sortie de ce monostable seront cals sur la moiti
de la priode de lhorloge dmission. Nous avons donc retrouv linformation phase de cette dernire.
Pour nous placer aux trois quarts de la priode de lhorloge dmission, nous utilisons un monostable
M2 front montant plac en sortie du premier (de manire ne plus voir les impulsions alatoires) qui
Denis Rabast
IUFM dAix Marseille
page 4/15
fournit sa propre sortie un NL0 pendant une dure correspondant 25% de la priode dhorloge.
Cette sortie nous donne donc un front montant aux trois quarts de la priode dhorloge dmission.
Lchantillonneur numrique recopie alors sur sa sortie la valeur du signal reu par le rcepteur au
moment de ce front montant.
On dispose dun oscillateur de rfrence dlivrant une frquence 16 fois suprieure la frquence
dmission des donnes. Le choix dun rapport 16 identique celui de lmetteur simplifiera le
schma ; ce nest cependant pas une ncessit.
Donner les chronogrammes aux diffrents endroits du schma structurel lorsque la suite NRZ code
par lmetteur est 0111010 .
Vrifier quon retrouve bien cette suite en sortie du dcodeur aprs un certain retard. Justifier ce
retard.
3.1.1
Dtecteur de front
Le signal dhorloge de la bascule D est suppos de frquence trs suprieure tous les autres
signaux et sans relation de phase avec le signal reu par le rcepteur.
Dans la pratique nous utiliserons le signal issu de loscillateur quartz dont la frquence est 16 fois
suprieure celle de lhorloge dmission.
On rappelle que sur une bascule D, pour tre prise en compte, la donne lentre D doit tre
prsente un temps, dit temps de pr positionnement (set up time), de quelques ns avant le front
dhorloge.
Donner les chronogrammes des diffrents signaux du dtecteur et vrifier que lon a bien la fonction
souhaite.
3.1.2
Monostables
Sur un circuit purement numrique (ne faisant pas intervenir de circuits RC) une telle fonction peut
tre ralise par un compteur. Lhorloge de ce compteur sera attaque par le signal dhorloge de
rfrence, de frquence 16 fois suprieure la frquence dmission. Lors de lapparition dune
impulsion de dclenchement (fournie par le dtecteur de front), la sortie M1 du monostable doit passer
au NL1 pendant 12 coups dhorloge (soit 75 % de 16), tandis que la sortie M2 doit rester au NL0
pendant 4 coups dhorloge (soit 25 % de 16). Tant que M1 nest pas repass au NL0, lentre de
dclenchement reste sans effet.
Proposer un schma associant quelques portes logiques et un compteur binaire 4 bits, quip dune
entre dhorloge (clock), dune remise 0 synchrone (sclr) active au NL1 et dune autorisation de
comptage (cnt_en) active au NL1.
3.1.3
Echantillonneur numrique
Denis Rabast
IUFM dAix Marseille
page 5/15
4.1
Emetteur
Dans le logiciel Quartus II ouvrir un nouveau projet que lon nommera par exemple Manchester.qdf.
Ouvrir ensuite une feuille graphique que lon nommera par exemple EMETTEUR.bdf.
Implanter le diviseur de frquence par 16 ; son nom est Freqdiv et il se trouve dans la bibliothque
altera / 72 / quartus / librairies / others / maxplus2 .
Par un clic droit sur le symbole, accder au menu contextuel Open Design File (ou par un double
clic sur le composant),qui ouvre le schma interne du diviseur ; comparer avec la solution tablie lors
de la prparation, dduire le niveau logique placer sur les entres G et CLR (les niveaux logiques
par dfaut sont prciss sur le coin bas droit de chaque sortie).
Imposer une entre pour lhorloge, et une sortie sur DIV16 qui sera alors lhorloge de transmission,
que lon nommera par exemple H_TX.
Tester le bon fonctionnement (on se limitera une simulation fonctionnelle).
Ajouter le gnrateur pseudo-alatoire en imposant une borne de sortie pour le signal NRZ et tester le
fonctionnement. On trouvera les bascules D (appeles DFF2 pour Data Flip Flop) dans
altera / 72 / quartus / librairies / others / maxplus2 ainsi que les diffrentes portes logiques
dans altera / 72 / quartus / librairies / primitives / logic .
Placer maintenant le codeur et tester de nouveau.
Effectuer maintenant une compilation complte puis raliser une simulation temporelle.
On peut remarquer la prsence sur le signal cod Manchester dimpulsions parasites (glitch) lorsque
le signal NRZ change de niveau. Ces impulsions sont dues lasynchronisme de notre description,
matrialis par un dcalage entre les donnes NRZ et lhorloge dmission (temps de propagation des
bascules D du gnrateur pseudo-alatoire). Dans un systme rel elles seraient supprimes par les
filtres de sortie et resteraient sans incidence. Dans notre application, nous allons devoir re
synchroniser la sortie du codeur en modifiant le schma structurel de celui-ci de la manire suivante :
4.2
Rcepteur
page 6/15
4.3
Ouvrir une nouvelle feuille graphique, la nommer EMET_RECEPT, y placer lmetteur et le rcepteur
puis vrifier le bon fonctionnement de lensemble.
un
nouveau
projet
que
lon
nommera
par
exemple
5.1 Emetteur
Diviseur de frquence
En vous inspirant des programmes VHDL tudis lors de sances prcdentes, proposer et tester une
description du diviseur. Crer un symbole graphique.
Gnrateur pseudo-alatoire
Le programme suivant dcrit un gnrateur 6 bascules. Il utilise une instruction de boucle ; il est
important de comprendre que ce type dinstruction dcrit une redondance de la structure matrielle, il
sagit dune boucle spatiale et non temporelle.
Remarque : le programme suivant utilise linstruction xnor (ou exclusif complment) qui nest
dfinie quen VHDL 93. Au moment de la compilation, il faudra donc vrifier que le VHDL 93 est bien
le
langage
choisi
dans
le
menu
: in std_logic;
: out std_logic);
page 7/15
end if;
end process;
SORTIE_NRZ<=X(4);
end arch;
---------------------------------------------------------------------------------------------------------------------------------------Modifier le programme pour obtenir un gnrateur 4 bascules ; tester le fonctionnement.
Crer un symbole graphique.
Modifier de nouveau le programme pour remplacer la boucle par lutilisation de loprateur de
concatnation & ; tester le fonctionnement.
Codeur
Proposer un programme dcrivant le codeur, sans tenir compte dans un premier temps des
impulsions parasites ; tester le fonctionnement.
Crer un symbole graphique.
Proposer maintenant un programme permettant de supprimer les impulsions parasites, bas sur le
mme principe que celui utilis prcdemment ; compiler et vrifier.
Crer un symbole graphique.
Ensemble metteur
Ouvrir une description graphique, la nommer RECEPT_VHDL.bdf et y assembler les symboles des
diffrents lments dcrit prcdemment. Tester le fonctionnement de lensemble. Crer un symbole
graphique
5.2 Rcepteur
Dtecteur de front
Proposer une description VHDL du dtecteur de front et la tester.
Crer un symbole graphique.
Monostable
Le programme suivant dcrit les deux monostables dans le cas o un rapport 64 existerait entre les
frquences de lhorloge de rfrence et celle dmission :
---------------------------------------------------------------------------------------------------------------------------------------library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
--les paquetages std_logic_1164 et std_logic_unsigned de la bibliothque ieee
--permettent respectivement l'utilisation du type std_logic et l'addition avec ce type
entity MONO is
port ( FRONT, H
S25
end MONO;
: in std_logic;
: out std_logic);
page 8/15
begin
--le front descendant de S75 est plac 75% de la priode
S75 <='1' when X<=47 else '0';
--le front montant de S25 est plac 25% de la priode
S25 <='0' when X<=15 else '1';
process (H, FRONT)
begin
if (H'event and H = '1') then
--autorisation de comptage pendant 75% du temps aprs l'impulsion de front
if S75='1' then X <= X + 1 ;
--inhibition de l'entre de dclenchement pour les impulsions alatoires
elsif FRONT='1' then X <= "000000";
end if;
end if;
end process;
end arch;
---------------------------------------------------------------------------------------------------------------------------------------Modifier le programme pour ladapter notre cas. Tester.
Crer un symbole graphique.
Echantillonneur numrique
Proposer une description VHDL ralisant la fonction dsire. Tester. Crer un symbole graphique.
Ensemble rcepteur
Ouvrir une description graphique et la nommer RECEPT_VHDL.bdf et y assembler les symboles des
diffrents lments du rcepteur. Tester lensemble. Crer un symbole graphique
Denis Rabast
IUFM dAix Marseille
page 9/15
Simulation fonctionnelle
Simulation temporelle
Denis Rabast
IUFM dAix Marseille
page 10/15
Le rcepteur
Simulation de lensemble
Denis Rabast
IUFM dAix Marseille
page 11/15
Synthse VHDL
Le diviseur
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY div_freq IS
port ( H
S16
END div_freq;
: IN STD_LOGIC;
: OUT STD_LOGIC);
Le gnrateur alatoire
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY gene_alea IS
port ( HOR
SORTIE_NRZ
END gene_alea;
: IN STD_LOGIC;
: OUT STD_LOGIC);
page 12/15
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY alea IS
port ( HOR
: IN STD_LOGIC;
: OUT STD_LOGIC);
SORTIE_NRZ
END alea;
Le codeur
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY modulateur IS
port ( HOR, DATA_NRZ
S_MOD
END modulateur;
: IN STD_LOGIC;
: OUT STD_LOGIC);
Le dglitcheur
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY deglitch IS
port ( ENTREE_glitch, H
: IN STD_LOGIC;
SORTIE_MANCHEST
: OUT STD_LOGIC);
END deglitch;
ARCHITECTURE arch OF deglitch IS
BEGIN
Denis Rabast
IUFM dAix Marseille
page 13/15
PROCESS (H)
BEGIN
if H'event and H='1' then
SORTIE_MANCHEST<= ENTREE_GLITCH;
end if;
END PROCESS;
END arch;
Le dtecteur de front
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY detect_front IS
port ( ENTREE_MOD, H
SORTIE_FRONT
END detect_front;
: IN STD_LOGIC;
: OUT STD_LOGIC);
Le monostable
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY MONO IS
port ( FRONT, H
S25
END MONO;
: IN STD_LOGIC;
: OUT STD_LOGIC);
page 14/15
Lchantillonneur
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY demod IS
port ( ENTREE_FRONT, ENTREE_manchest
SORTIE_DEMOD
END demod;
: IN STD_LOGIC;
: OUT STD_LOGIC);
Denis Rabast
IUFM dAix Marseille
page 15/15