20
Université des Sciences et Techniques de Lille Rapport de mini projet : Initialisation au langage VHDL par étude d’un émetteur Manchester

Codage Manchester

  • Upload
    rachid

  • View
    5.080

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Codage Manchester

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 Bekangba Gracia

Page 2: Codage Manchester

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

Page 3: Codage Manchester

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.

Page 4: Codage Manchester

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 NRZLe 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

Page 5: Codage Manchester

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 ManchesterLe 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

 

diviseur

horloged'émission générateur

pseudo-aléatoire

donnéesNRZ

sortiemanchester

circuit d'interface(codage antipolaire,

filtrage, amplification)ligne

CPLD

oscillateurde référence

codeur

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.

Page 6: Codage Manchester

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

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=HMAN=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 (2N-1) bits codés NRZ à partir 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éatoireL’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.

Codeur Manchester MAN

Page 7: Codage Manchester

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 00 1 0 11 0 0 11 1 1 0

Page 8: Codage Manchester

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  

Page 9: Codage Manchester

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

Q a l’entrée D. c’est ainsi qu’on obtient le diviseur par 16 ci dessous en mettant 4bascules en cascades.

Page 10: Codage Manchester

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).

Page 11: Codage Manchester

Simulation

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.

Signal sans parasites Signal parasités

Page 12: Codage Manchester

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.

Page 13: Codage Manchester

Simulation

On a bien pour le signal S8 une période 8 fois plus grande que le signal HIdem 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

Page 14: Codage Manchester

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 « & ».

Page 15: Codage Manchester

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

NRZ=0→MAN=H

NRZ=1→MAN=HMAN=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

H H

Page 16: Codage Manchester

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.

Page 17: Codage Manchester

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.