Réalisation d'un codeur

Le bloc vlc est le codeur qui génère les signaux transmis au décodeur que l'on vient de réaliser. Un opérateur humain dispose de 5 boutons numérotés de 1 à 5. Lorsque l'opérateur appuie sur un bouton, cela positionne en entrée de vlc le code du nombre entier de 1 à 5, en parallèle sur 3 fils nommés "code", et cela génère aussi une impulsion longue sur un fil nommé "key_pressed". Le codeur vlc sera réalisé sous forme d'une machine de Moore. Il doit transformer ses signaux d'entrées en signaux respectant le protocole VLC décrit précédemment, avec la donnée en sortie série sur un seul fil "bit_value".

Les figures et tableaux suivants résument les interfaces du bloc VLC :

 

 

Nom

Type

Utilisation

clk

Entrée

Horloge

reset_n

Entrée

Reset asynchrone, actif à l'état bas

key_pressed

Entrée

Indique si une touche est appuyée. Ce signal reste actif au minimum une centaine de cycles

code

Entrée

Code sur 3 bits de la touche appuyée. N'est valable que pendant que key_pressed est actif

bit_valid

Sortie

indique que le bloc vlc génère sur "bit_value" un bit valide d'un code vlc

vit_value

Sortie

valeur du bit de code vlc générée

 

Les contraintes sont les suivantes :

 

  • vlc génère les séquences de bit dès que possible,

  • vlc ne génère qu'une seule séquence de bits lorsqu'une touche est appuyée (pas de répétition des symboles).

 

 

Travail à effectuer

 

  • Réaliser la machine vlc en suivant les mêmes étapes que pour vld, en tentant de minimiser le nombre d'états de la machine: dessin papier des chronogrammes puis du graphe d'état, écriture des tables de vérité des parties combinatoires, codage en langage système vérilog,

    • Éditez-le fichier vlc.sv en suivant les commentaires et le cadre déjà préparé,

    • Simulez votre codeur en exécutant la commande make simu_vlc.

  • Le test du couple (vlc,vld) se fait directement sur la maquette (make syn, make program). Vous utiliserez l'analyseur logique pour vérifier la bonne génération des signaux par vlc. Pour cela, les signaux suivants ont été reliés à l'analyseur logique:

    clk

    code (sur 3 entrées séparées)

    key_pressed

    bit_value

    bit_valid

    data_valid

    data_value

  • L'analyseur logique sera synchronisé sur un front montant du signal key_pressed, de manière à saisir les enchaînements après l'appui sur un bouton.

  • Le signal key_pressed est relié au bouton KEY 3 de la maquette et le CODE est relié aux switch SW[2:0].

  • La valeur de data_value après passage dans vos codeur et décodeur est affichée sur l'afficheur sept segments HEX0.