VHDL_TP_0506

5
AVx / version 3.1 / 7-12-05 Outils informatiques 2005-2006 Exercices VHDL pour l’évaluation Alain Vachoux EPFL/STI-IMM-LSM [email protected] Organisation des exercices Les informations sur l’organisation des exercices se trouvent sur les pages web suivantes: http://lsm.epfl.ch/page12635-fr.html (description du cours + documents) http://moodle.epfl.ch/course/view.php?id=118 (Site web pour le rendu des exercices pour l'évaluation) Chaque étudiant inscrit au cours est prié de s’enregistrer sur le site Moodle (2ème URL ci-dessus). Il faut utiliser votre identification GASPAR (nom d’utilisateur et mot de passe) ainsi que la clé d’identification "30nov05" (sans les guillemets). Ceci permettra de rendre les fichiers relatifs aux exercices et d’obtenir des commentaires et les notes de l’évaluation du module VHDL.

description

VHDL

Transcript of VHDL_TP_0506

Page 1: VHDL_TP_0506

Outils informatiques 2005-2006

Exercices VHDL pour l’évaluation

Alain VachouxEPFL/STI-IMM-LSM

[email protected]

Organisation des exercices

Les informations sur l’organisation des exercices se trouvent sur les pages web suivantes:

• http://lsm.epfl.ch/page12635-fr.html (description du cours + documents)

• http://moodle.epfl.ch/course/view.php?id=118 (Site web pour le rendu des exercices pourl'évaluation)

Chaque étudiant inscrit au cours est prié de s’enregistrer sur le site Moodle (2ème URL ci-dessus).Il faut utiliser votre identification GASPAR (nom d’utilisateur et mot de passe) ainsi que la cléd’identification "30nov05" (sans les guillemets). Ceci permettra de rendre les fichiers relatifs auxexercices et d’obtenir des commentaires et les notes de l’évaluation du module VHDL.

AVx / version 3.1 / 7-12-05

Page 2: VHDL_TP_0506

Outils informatiques 2005-2006 Exercices VHDL pour l’évaluation - 2

Exercice 1: Décodeur pour affichage à 7 segments

Il s’agit de développer un modèle fonctionnel (comportemental) d’un décodeur pour un affichageLED à 7 segments.

Interface (entité):• Une entrée BCD de 4 bits codant un entier de 0 à 9.• Sept sorties de 1 bit SEG_A, ..., SEG_G, une par segment, valant ’1’ si le segment correspon-

dant doit être allumé et valant ’0’ sinon.• Nom d’entité suggéré: dec7seg.

Comportement (architecture):• Le comportement à décrire est purement combinatoire et doit réaliser la table de vérité du

composant. Utiliser une instruction d’affectation de signal sélective concurrente ou sa formeéquivalente utilisant un processus (voir p. 59 du cours).

• Nom d’architecture suggéré: bhv (pour "behaviour" - comportement).• Le chiffre 9 peut être affiché avec les segments abcgf ou abcdgf à ’1’.• Prévoir un affichage d’erreur si le code BCD est incorrect.

Modèle de test:• Le modèle de test doit tester toutes les entrées possibles en séquence.• Noms suggérés pour le modèle de test: tb_dec7seg (entité) et bench (architecture).

Option:• Les sorties peuvent être rassemblées dans un seul bus de 7 bits. Les indices du bus peuvent

être des entiers (p.ex. 7 downto 1) ou des caractères (p.ex. ’a’ to ’g’).• Définir une table de vérité dans un tableau constant. La table de vérité peut être utilisée dans

l’architecture du composant et dans le modèle de test. Il peut être nécessaire de déclarer latable de vérité dans un paquetage séparé qui est importé dans l’architecture et le modèle detest (voir p. 89 du cours). Le paquetage est alors importé dans le modèle au moyen d’uneclause use (voir p. 19 du cours).

BC

D(3

:0)

4

SEG_A

SEG_B

SEG_C

SEG_D

SEG_E

SEG_F

SEG_G

a

b

c

d

e

f

g

BCD"0010"

a b c d e f g"1 1 0 1 1 0 1"

AVx / version 3.1 / 7-12-05

Page 3: VHDL_TP_0506

Outils informatiques 2005-2006 Exercices VHDL pour l’évaluation - 3

Exercice 2: Compteur synchrone

Il s’agit de développer un modèle fonctionnel (comportemental) d’un compteur synchrone géné-rant une séquence de valeurs 0, 1, 2, ..., 2N-1, où N est le nombre de bits du signal contenant lavaleur du compteur. Une fois la valeur maximum atteinte, le compteur recommence à la valeur 0.

Interface (entité):• Entrées: Horloge CLK (1 bit), reset RST_B (1 bit) actif au niveau bas (’0’).• Sortie: Valeur du compteur COUNT (N bits). N peut être une valeur fixe à choix ou un pa-

ramètre générique. Voir ci-dessous pour le choix du type.• Nom d’entité suggéré: counter.

Comportement (architecture):• Pseudo-code à réaliser en VHDL:

si reset actif alors COUNT := 0sinon à chaque flanc d’horloge faire:

si COUNT > valeur maximum alors COUNT := 0sinon COUNT := COUNT + 1

• Encapsuler le comportement ci-dessus dans un processus sensible sur les signaux CLK etRST_B. Le reset est asynchrone (indépendant du flanc d’horloge).

• La notation "(others => ’0’)" permet d’initialiser un mot de taille quelconque à zéro.• Il est interdit de lire la valeur d’un signal d’interface de mode out. Utiliser une variable lo-

cale au processus pour réaliser l’incrémentation.• Le type bit_vector ne supporte pas les opérations arithmétiques de manière prédéfinie, le

type unsigned si (voir p. 96 du cours).• Nom d’architecture suggéré: bhv.

Modèle de test:• Définir une horloge dont la période est définie par une constante (voir p. 53 du cours).• Tester le comportement de reset (une impulsion 101) et le comportement normal.• Noms suggérés pour le modèle de test: tb_counter (entité) et bench (architecture).

Options:• Le modèle peut compter jusqu’à une valeur fixée au choix ou définie dans un paramètre gé-

nérique.• Le flanc d’horloge actif peut être le flanc montant ou le flanc descendant.• Le test "COUNT > valeur maximum" n’est pas forcément nécessaire...

CompteurNCLK

RST_B0, 1, 2, 3, …, 2N-1, 0, 1, 2, ...

CO

UN

T(N

-1:0

)

AVx / version 3.1 / 7-12-05

Page 4: VHDL_TP_0506

Outils informatiques 2005-2006 Exercices VHDL pour l’évaluation - 4

Exercice 3: Registre série-parallèle

Il s’agit de développer un modèle structurel d’un registre N bits avec une entrée série et une sortieparallèle basé sur des composants flip-flops.

Interface (entité):• Entrées: Horloge CLK (1 bit), reset RST_B (1 bit) actif au niveau bas (’0’), données série DIN

(1 bit).• Sortie: Contenu du registre DOUT (N bits). N peut être une valeur fixe à choix ou un para-

mètre générique.• Nom d’entité suggéré: spreg.

Structure (architecture):• L’architecture doit inclure N instances de composants flip-flops dont le modèle de base est

donné en p. 54 du cours. Le modèle de flip-flop doit inclure un comportement de reset syn-chrone du type:

wait until clk = ’1’;if rst_b = ’0’ then ... else ...

• Utiliser le mécanisme d’instanciation directe pour décrire la structure du registre.• Nom d’architecture suggéré: str (pour "structure").

Modèle de test:• Définir une horloge dont la période est définie par une constante (voir p. 53 du cours).• Tester le comportement de reset.• Remplir le registre avec un mot de N bits et le vider.• Noms suggérés pour le modèle de test: tb_spreg (entité) et bench (architecture).

Options:• Le modèle peut inclure un nombre fixe de flip-flops ou un nombre défini par un paramètre

générique. Dans ce dernier cas, l’usage d’une instruction generate est requise (voir p. 78 ducours).

N

CLK

RST_B

Q

QSET

CLR

DBIT(N-1)

Q

QSET

CLR

DBIT(N-2)

Q

QSET

CLR

DBIT(N-3)

Q

QSET

CLR

DBIT(1)

DIN

DOUT(N-1:0)

Q

QSET

CLR

DBIT(0)

AVx / version 3.1 / 7-12-05

Page 5: VHDL_TP_0506

Outils informatiques 2005-2006 Exercices VHDL pour l’évaluation - 5

0

00

0

1

0

0

Exercice 4: Registre à décalage programmable

Il s’agit de développer un modèle fonctionnel (comportemental) d’un registre à décalage de N bitspouvant subir des opérations de décalages ou de rotations sur un nombre quelconque de bits enun seul coup d’horloge (on parle aussi de barrel shifter).

Interface (entité):• Entrées: Horloge CLK (1 bit), reset RST_B (1 bit) actif au niveau bas (’0’), commande CMD

(type énuméré), nombre de bits affectés par la commande NSR (entier ≥ 0), données paral-lèle DIN (N bits). N peut être une valeur fixe à choix ou un paramètre générique.Les commandes doivent être codées par un type énuméré (voir p. 33 du cours) avec les con-ventions suivantes:• LOAD: chargement de DIN dans le registre.• SHLL, SHRL: décalage logique à gauche, à droite.• SHLA, SHRA: décalage arithmétique à gauche, à droite.• ROTL, ROTR: rotation à gauche, à droite.Le type énuméré doit être déclaré dans un paquetage séparé (voir p. 89 du cours). Le paque-tage est alors importé dans le modèle au moyen d’une clause use (voir p. 19 du cours) justeavant l’entité.

• Sortie: Contenu du registre DOUT (N bits).• Nom d’entité suggéré: barrelsr.

Comportement (architecture):• Réaliser les opérations de décalages et de rotations au moyen de l’opérateur de concaténa-

tion ’&’ (voir p. 36 du cours).• Le contenu du registre peut être mémorisé dans un signal ou une variable.• (Option) Définir chaque opération possible par une procédure (voir p. 81 du cours).• (Option) Traiter NSR < 0 comme l’opération symétrique (p.ex. SHLL -2 = SHRL 2).• Nom d’architecture suggéré: bhv.

Modèle de test:• Vérifier les opérations modélisées au moyen des opérateurs de décalages et de rotations

prédéfinis sll, srl, sla, sra, rol et ror (voir p. 36 du cours).• Utiliser des assertions (voir p. 57 du cours).• Noms suggérés pour le modèle de test: tb_barrelsr (entité) et bench (architecture).

N

N

RST_B

CLK

NSR

CMD DIN(N-1:0)

DOUT(N-1:0)

N-1 N-2 1 0

7 6 5 4 3 2 1

SHLL 1

0

'0'7 6 5 4 3 2 1 0

7 6 5 4 3 2 1

SHRL 1'0'7 6 5 4 3 2 1

7 6 5 4 3 2 1

SHLA 1

0

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1

SHRA 1

7 6 5 4 3 2 17 6 5 4 3 2 1

ROTL 1

0

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1

ROTR

7 6 5 4 3 2 1

AVx / version 3.1 / 7-12-05