You are on page 1of 18

Université des Sciences et Techniques de Lille

Rapport de mini projet :

Initialisation au langage VHDL par étude d’un émetteur Manchester

Réalisé par : Supervisé par :


Bouras Farid Bourzgui
BekangbaGracia
Sommaire

1. Introduction

2. Transmissions numériques et codage Manchester

3. Préparation : Etude de l’émetteur

4. Le codeur

5. Le générateur pseudo-aléatoire

6. Le diviseur

7. Synthèse par macro-fonctions simulation de l’Emetteur

8. Synthèse en VHDL et simulation de l’Emetteur

8.1. Diviseur de fréquence

8.2. Générateur pseudo-aléatoire

8.3. Codeur

8.4. Ensemble émetteur

1. Introduction
L’évolution des circuits intégrés numériques, en particuliers les circuits programmables
(CPLD, FPGA), conduit le concepteur à réaliser des systèmes de plus en plus complexe.
Notre mini projet a pour but de nous familiariser avec le langage VHDL par l’étude d’un
émetteur Manchester.
Nous allons segmenter notre travail en quatre(4) grandes parties :
• présentation du problème et justification de l’utilisation du code Manchester
• fonctions à implanter.
• synthèse de l’émetteur.
• reprendre la synthèse en langage VHDL.

2. Transmissions numériques et codage Manchester


La transmission numérique consiste à faire transiter les informations sur le support physique
de communication sous forme de signaux numériques. Ainsi, des données analogiques
devront préalablement être numérisées avant d’être transmises.
Toutefois, les informations numériques ne peuvent pas circuler sous forme de 0 et de 1
directement, il s’agit donc de les coder sous forme d’un signal possédant deux états, par
exemple :
-deux niveaux de tension par rapport à la masse
-la différence de tension entre deux fils
-la présence/absence de courant dans un fil

Pour que la transmission soit optimale, il est nécessaire que le signal soit codé de façon à
faciliter la transmission sur le support physique. Il existe pour cela différents systèmes de
codage pouvant se classer en deux catégories :
-le codage à deux niveaux : le signal peut prendre uniquement une valeur strictement négative
ou strictement positive.
-le codage à trois niveaux : le signal peut prendre une valeur strictement négative, nulle ou
strictement positive.

Le codage NRZ
Le codage NRZ (non Return to zéro) est le premier système de codage, car le plus simple. Il
consiste à transformer les 0 en –X et les 1 en +X, de cette façon on a un codage bipolaire dans
lequel le signal n’est jamais nul. Par conséquent, le récepteur peut déterminer la présence ou
non d’un signal.

Il note aussi un codage NRZI qui est sensiblement différent du codage NRZ. Avec ce codage,
lorsque le bit est à 1, le signal change d’état après le top d’horloge. Lorsque le bit est à 0, le
signal ne subit aucun changement d’état.

Le codage NRZI possèdes de nombreux avantages, dont :


-la détection de la présence ou non du signal
-la nécessité d’un faible courant de transmission du signal

Par contre, il possède un défaut : la présence d’un courant continu lors d’une suite de 0,
gênant la synchronisation entre émetteur et récepteur.
Le codage Manchester
Le codage Manchester, également appelé codage biphasé introduit une transition au milieu de
chaque intervalle. Il consiste en fait à faire un OU exclusif (XOR) entre le signal et le signal
d’horloge, ce qui se traduit par un front montant lorsque le bit est à 0, un front descendant
dans le cas contraire. L’utilisation de ce codage supprime alors la composante continue.

3. Préparation : étude de l’émetteur

horloge
oscillateur d'émission générateur
diviseur
de référence pseudo-aléatoire

données
NRZ

codeur
CPLD

circuit d'interface sortie


ligne (codage antipolaire, manchester
filtrage, amplification)

Nous avons ci-dessus le schéma synoptique de l’émetteur.


Le signal d’horloge d’émission par une division par 16 de la fréquence est obtenu à partir
d’un signal carré issu d’un oscillateur à quartz servant de référence temporelle stable.
Dans notre cas de figure, nous ne disposons pas d’un système numérique ayant réellement des
données à transmettre, aussi nous le simulerons par un générateur pseudo-aléatoire.
Ce type de générateur permet de générer à partir de l’horloge d’émission une séquence codée
NRZ.
Cette dernière permettra de tester à la fois l’émetteur et le récepteur avec un signal plus
proche de la réalité qu’une suite de niveaux identiques ou qu’une alternance de 1 et de 0.
A partir de ce signal et de l’horloge d’émission, le codeur réalise la translation du code NRZ
vers le code Manchester.
Le circuit d’interface (non étudié) permet ensuite d’attaquer la ligne.
4. Le codeur

NRZ
MAN
H

En observant le chronogramme ci-dessus, on remarque que l’entrée H est


recopiée quand l’entrée du signal NRZ est à « 0 ». Par contre on a l’inverse de H
en sortie quand le signal NRZ égal « 1 ».

NRZ =0→MAN =H

NRZ =1→ MAN = H

MAN = NRZ ⋅H + NRZ ⋅H

On reconnait ainsi la fonction « ou exclusif »

MAN = NRZ ⊕ H

Ainsi la sortie MAN ne dépend pas d’un état précédent, on a donc une fonction
combinatoire.

5. Le générateur pseudo-aléatoire

Le générateur pseudo-aléatoire génère une suite périodique de (2 -1) bits codés NRZ à partir
N

de N bascules D montées en registre à décalage.


L’on remarque que plus on augmente le nombre de bascules plus la suite numérique paraît
aléatoire
L’entré du registre à décalage est une combinaison par un ou exclusif (complémenté ou non)
de la sortie du registre et d’une ou plusieurs bascules intermédiaires dont le rang dépend de N.
Après réalisation du générateur pseudo-aléatoire à l’aide du logiciel Max +plus II 10.2
BASELINE en créons un fichier qu’on a appelé gene_alea.gdf, nous avons pu faire une
simulation (voir chronogramme ci-dessous) en tenant compte que toutes les bascules ont leur
sortie à 0 à l’origine des temps.

On a bien une succession de niveau aléatoire sur 15bits que l’on a ensuite periodisée, c’est
ainsi que l’on peut parler de suite pseudo-aléatoire.

Le générateur pseudo-aléatoire présente un état de sortie qui bloque le système. En effet on


fonctionne ici sur une logique inversée donc le NL1 correspond au niveau « 0 ». La sortie de
la porte étant rebouclée en entrée du registre a décalage, si toutes les sorties de bascules sont
au NL1 alors l’état « 0 » sera recopié en entrée du registre ainsi se forme une boucle de niveau
« 0 ».

D’après le schéma du générateur on réalise la fonction pseudo-aléatoire grâce à une porte


XNOR dont la table de vérité est la suivante :

A B Q (XOR) /Q (XNOR)
0 0 1 0
0 1 0 1
1 0 0 1
1 1 1 0

6. Le Diviseur

A l’aide du logiciel nous avons crée un fichier divlogiciel.gdf dont le schéma est représenté
ci-dessous.

Ainsi nous avons effectué une simulation du diviseur 16 dont le chronogramme est représenté
ci-dessous :

Afin de pouvoir proposer un schéma structurel, il est important de rappeler le fonctionnement


de la bascule D.

Bascule D sur front montant


Table de vérité :

D Ck Qn+1 n+1

0 0 1

1 1 0

X 0 Qn n

C’est une bascule qui a deux entrées (entrée D et l’horloge) et une sortie. A chaque front
montant d’horloge, Q recopie l’entrée D.
sa fonction est donc une mémoire puisque l’information en entrée se retrouve en sortie après
chaque coup d’horloge. Cette bascule peut réaliser une division par 2 en réinjectant la sortie
a l’entrée D. c’est ainsi qu’on obtient le diviseur par 16 ci dessous en mettant 4bascules
Q
en cascades.
7. Synthèse par macro-fonctions et simulation de l’émetteur

Par le biais du logiciel MAX+plus les fonctions précédemment crées sont implantées dans des
composants qui nous permettent ainsi de simuler l’ensemble du montage.
On voit sur les chronogrammes des impulsions parasites qui sont dues à un décalage entre les
données NRZ et l’horloge d’émission. Ces impulsions parasites n’ont en générale aucune
incidence sur un système réel car elles seraient supprimées par les filtres de sortie.
Dans notre simulation la solution proposée pour ce problème consiste à resynchroniser la
sortie du codeur en utilisant un montage mémoire utilisant une bascule D (schéma ci-
dessous).

Simulation

Signal parasités

Nous observons bien que le fait de resynchroniser la sortie du codeur avec un montage
mémoire (bascule D) entraîne bien une disparition des impulsions parasites.
8. Synthèse en VHDL et simulation de l’Emetteur.

L’ensemble émetteur récepteur va maintenant être décrit en langage VHDL, description à


partir de laquelle le logiciel établira les liaisons entre les différentes portes et bascules à
l’intérieur du CPLD.

8.1. Diviseur de fréquence

Nous avons écris un programme qui décrit un diviseur de fréquence permettant d’obtenir en
sortie deux signaux de fréquence 8 fois et 16 fois plus faible que celle du signal d’entrée.
Programme :

Nous avons effectué une simulation du programme afin de vérifier son fonctionnement.
Le chronogramme est représenté ci-dessous.

Simulation
On a bien pour le signal S8 une période 8 fois plus grande que le signal H
Idem pour le signal S16 avec une période 16 fois plus grande.

8.2 Générateur pseudo-aleatoire :

Nous avons réalisé ici un programme décrivant un générateur à 4 bascules

Simulation :

Le chronogramme de NRZ montre bien une séquence aléatoire e niveau logique recopiée tout
les 16 fronts d’horloge.
Ce programme peut être décris de plusieurs façons ici on remplace la boucle « for » par
l’opérateur de concaténation « & ».

8.3 - Le codeur

Le codeur est en fait une porte xor et nous avons décris son fonctionnement grâce a un
programme VHDL
H H

NRZ =0→MAN =H

NRZ =1→ MAN = H

MAN = NRZ ⋅H + NRZ ⋅H

Le chronogramme du signal MAN présente des impulsions parasites appelées glitchs


Pour supprimer les parasites on va utiliser une bascule D comme précédemment décrite mais
par le programme VHDL ci dessous
Ce programme est utilisé dans une macro fonction « BASCULED1 »

8.4 Ensemble émetteur :

Après avoir décri par VHDL touts les macro-fonctions de l’émetteur nous les avons assemblés
pour donner le montage suivant.
Simulation :

L’émetteur Manchester est bien généré par le montage. Sur les chronogrammes précédent on
peut vérifier sont fonctionnement et aussi les différente étapes de traitement du signal
notamment le diviseur de fréquence, le générateur aléatoire, le codeur et enfin la suppression
des glitchs.

You might also like