Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TP7 - Modélisation en VHDL (2 Séances) : Exercice 7.1 - Un Additionneur/soustracteur 4 Bits (Séance 1)

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 1

Architecture des ordinateurs

TP7 – Modélisation en VHDL (2 séances)


Pour compiler les programmes VHDL, nous utiliserons GHDL (http://ghdl.free.fr) qui fonctionne
sous Linux et sous Windows.
La simulation VHDL produit un fichier .vcd. On pourra utiliser par exemple GTKWave pour
afficher ces fichiers (http://gtkwave.sourceforge.net/) qui fonctionne également sous Windows et
sous Linux.
Utiliser l’éditeur de votre choix pour éditer les entités/architectures VHDL (emacs, notepad, …)

GHDL
• Pour vérifier que la syntaxe est correcte (option –s) : gdhl –s foo_ent.vhd
• Pour compiler une unité (option –a) : ghdl –a foo_ent.vhdl
• Pour consulter la liste des unités compilées (option –d) : ghdl -d
• Pour faire l’élaboration/édition de liens (option –e) : ghdl –e foo
• Pour lancer la simulation (-r), il faut indiquer un temps limite de simulations :
ghdl –r foo –-stop-time=40ns –-disp-time –-vcd=foo.vcd

Exercice 7.1 – Un additionneur/soustracteur 4 bits (séance 1)


1. Créer un ENTITY VHDL halfAdd qui représente un demi-additionneur bit à bit. Créer une
ARCHITECTURE VHDL halfAdd_flot sur le modèle flot de données pour réaliser cette
ENTITY.
2. Pour tester votre implantation, créer un testbench (tb_halfAdd), c’est-à-dire une entité et une
architecture VHDL chargée de stimulée le demi-additionneur avec toutes les valeurs possibles
et de vérifier que le résultat fourni est bien le résultat attendu. Lancer une simulation de ce
testbench et observer le résultat de simulation avec GTKWave.
3. Créer une entité fullAdd qui modélise un additionneur complet.
4. Créer deux architectures différentes, une (fullAdd_flot) qui réalise l’additionneur complet
par une méthode flot de données, une autre (fullAdd_struct) par une méthode
structurelle. Créer UN testbench (fullAdd_tb : ENTITY et ARCHITECTURE) pour valider
les deux modèles et les comparer. Ajouter des délais sur les portes et observer.
5. Créer un couple ENTITY/ARCHITECTURE qui modélise un additionneur/soustracteur 4 bits
selon le modèle structurel.
6. Réaliser une autre architecture pour l’additionneur/soustracteur 4 bits avec un modèle
comportemental (utilisation d’un process et du package std_logic_arith).

Exercice 7.2 – Des composants séquentiels (séance 2)


1. Réaliser un couple ENTITY/ARCHITECTURE reg16 qui modélise un registre 16 bits selon
le modèle comportemental. Un registre a deux opérations synchrones de lecture et d’écriture
actives sur niveau haut et une opération asynchrone de mise à zéro active sur niveau bas.
2. Réaliser un couple ENTITY/ARCHITECTURE programCounter qui modélise un compteur
de programme (PC, IP). Un compteur de programme est un registre 16 bits muni de 2
opérations synchrones actives sur niveau bas : charge, saut. Lorsqu’aucune de ces opérations
n’est active, le comportement par défaut est d’incrémenter l’adresse courante mémorisée par un
signal interne.
3. Réaliser un couple ENTITY/ARCHITECTURE qui modélise un banc de 8 registres de 16 bits
selon le modèle structurel. Ce banc de registres permet de lire deux données simultanément et
de faire une écriture. Les lectures sont prioritaires sur l’écriture. Ces trois opérations d’accès
sont synchrones, le banc de registres aura 1 entrée d’horloge, 3 entrées N1, N2, N3 qui
contiennent les numéros de lecture et d’écriture, 1 entrée pour la donnée à écrire, 2 sorties pour
les données lues. Lorsqu’une donnée est présente sur une des entrées N1, N2 ou N3, les
lectures et écriture correspondantes sont effectuées. Si ‘X’ est présent alors la lecture ou
écriture correspondante n’est pas faite.

Frédéric Mallet Licence Informatique L3 2010/2011

Vous aimerez peut-être aussi