Circuits Logiques Programmables

IEEE
Page 1 sur 19Lecteur de document UniversityLib

Circuits Logiques Programmables

Institut Supérieur des Études Technologiques · Digital Electronics and VHDL Programming · lab

Browse all électronique et automatique documents

ISET de Bizerte

TP 1

Circuits Logiques Programmables

1. But

Maitriser la simulation fonctionnelle en utilisant le logiciel Modelsim.

2. Manupilation

1. Demi-additionneur

a) Description.

Le demi-additionneur est un circuit permettant d’additionner deux bit pour

fournir les sorties SUM et CARRY.

Le circuit suivant illustre un demi additionneur avec les entrées A et B et

fournissant le sorties S (SUM) et C (CARRY).

A

B

Demi-

Additionneur

S (SUM)

C (CARRY)

b) Table de vérité

A

0

0

1

1

B

0

1

0

1

c) Conception du circuit logique

=

. +

BABAS

.=

BAC

.

(XOR)

(AND)

d) Description VHDL

S

0

1

1

0

C

0

0

0

1

Soit la description VHDL du demi-additionneur.

Réécrivez cette description dans l’éditeur du logiciel Modelsim.

Page 2

ISET de Bizerte

Circuits Logiques Programmables

e) Simulation fonctionnelle du demi-additionneur avec Modelsim

• Après avoir lancé le logiciel Modelsim et ajouter le code du demi-

additionneur dans l’éditeur de Modelsim, enregistrez le fichier édité

sous

répertoire

nom

le

«c:/TP_VHDL».

« demi_additionneur.vhd »

sous

le

• Cliquez sur « File>Change Directory » puis sélectionnez le répertoire

« c:/TP_VHDL » dans lequel vous venez d’enregistrer votre fichier.

• Compilez le code VHDL du demi-additionneur pour pouvoir le simuler

en cliquant sur « Compile>Compile » puis en choisissant le demi-

additionneur.

• Vérifiez que la compilation c’est bien déroulé dans la fenêtre

« Transcript »

• Lancez la simulation en cliquant sur «Simulate>Start simulation», puis

en choisissant le demi-additionneur.

Page 3

ISET de Bizerte

Circuits Logiques Programmables

• Cliquez sur « view>object » puis sur « view> wave ».

• Sélectionnez les quatre signaux à visualiser (dans la fenêtre object)

et glissez déposer dans la fenêtre « wave ».

• Détachez la fenêtre « wave » puis lancez la simulation pas à pas.

• Forcez chaque fois un des signaux d’entrée pour parcourir

l’ensemble des combinaisons de la table de vérité.

Pour forcer un signal il suffit de cliquer sur lui avec le bouton droit

de la souris et de choisir la valeur logique à luis assigner.

• Comparez les valeurs visualisées avec les valeurs de la table de

vérité.

2. Additionneur Complet :

a) Présentation de l’additionneur complet

Un additionneur complet est un circuit à trois entrées A, B et Cin et deux sorties S et

Cout.

Page 4

ISET de Bizerte

Circuits Logiques Programmables

A

B

Cin

Additionneur

Complet

S

Cout

On peut concevoir un additionneur complet à partir de sa table de vérité mais il serait

plus intéressant de le concevoir à partir de deux demi additionneur.

Le schéma block d’un additionneur complet en utilisant deux demi additionneur est le

suivant :

A

B

Cin

Demi-

additionneur

Demi-

additionneur

S

OR

Cout

Advertisement

En VHDL pour utiliser un composant déjà conçu on doit utiliser le syntaxe :

component ENTITYNAME (of the desired component)

port (INPUTS

: DATATYPE;

OUTPUTS : DATATYPE);

end component;

Pour pouvoir interconnecter un composant déjà existant on doit utiliser le syntaxe :

Label: ENTITYNAME (of the desired component) port map (INPUTS & OUTPUTS)

b) Description VHDL de l’additionneur complet

Le code VHDL de l’additionneur complet est le suivant

Page 5

ISET de Bizerte

Circuits Logiques Programmables

Simuler ce composant avec Modelsim selon la démarche précédemment

présentée.

3. Additionneur Complet à 4 bits:

Soit le code VHDL du composant Additionneur complet sur 4 bits.

• Simulez ce module en utilisant Modelsim.

• Déterminez l’architecture interne de ce composant.

Page 6

ISET de Bizerte

Bascule D

Circuits Logiques Programmables

Le nouveau concept à introduire est l’utilisation de signal d’horloge (CLK). Lors de

l’utilisation d’un signal d’horloge on a nécessairement besoins d’utiliser un process

dont la sensibilité est « CLK ».

1. Rappel sur la bascule D :

Une bascule D est un circuit qui copie l’état de l’entrée au front de l’horloge.Dans ce

qui suit on va essayer de modéliser une bascule D sensible au front montant de

l’horloge.

2. Code VHDL du process permettant de modéliser le comportement d’une bascule

D :

PROCESS (clk)

BEGIN

IF ( clk'EVENT ) AND ( clk = '1') THEN

--On détecte le front de l’horloge puis on vérifie

--s’il s’agit d’un front montant ou descendant.

q <= d;

END IF;

END PROCESS;

3. Travail demander:

Compléter ce code pour fournir la description complète d’une bascule D.

Registre à décalage sur 4 bits

1. Description du registre à décalage :

Un registre à décalage est un ensemble de bascules arrangés de tel façon que le

nombre binaire stocké dans une bascule est décalé vers la bascule suivant à chaque

front d’horloge.

2. Travail demandé :

Partant de la description VHDL précédemment établie d’une bascule D.

Ecrire le code VHDL d’un registre à décalage.

Page 7

ISET de Bizerte

ISET de Bizerte

ISET de Bizerte

TP 2

TP 2

TP 2

Circuits Logiques Programmables

Circuits Logiques Programmables

Circuits Logiques Programmables

1. But

1. But

1. But

• Maitriser la conception de composants séquentiels.

• Maitriser la conception de composants séquentiels.

• Maitriser la conception de composants séquentiels.

• Maitriser l’environnement ISE 9.1.

• Maitriser l’environnement ISE 9.1.

• Maitriser l’environnement ISE 9.1.

2. Manipulation

2. Manipulation

2. Manipulation

1. Création d’un nouveau projet avec ISE

1. Création d’un nouveau projet avec ISE

1. Création d’un nouveau projet avec ISE

Le but de cette première manipulation est la création d’un nouveau projet sous

Le but de cette première manipulation est la création d’un nouveau projet sous

Le but de cette première manipulation est la création d’un nouveau projet sous

l’environnement ISE 9.1 de XILINX.

l’environnement ISE 9.1 de XILINX.

l’environnement ISE 9.1 de XILINX.

Pour pouvoir créer un nouveau...

Pour pouvoir créer un nouveau...

Pour pouvoir créer un nouveau...

• Lancer l’environnement ISE.

• Lancer l’environnement ISE.

• Lancer l’environnement ISE.

• Sélectionnez File>New Project, La fenêtre de configuration du nouveau projet

• Sélectionnez File>New Project, La fenêtre de configuration du nouveau projet

• Sélectionnez File>New Project, La fenêtre de configuration du nouveau projet

apparait.

apparait.

apparait.

• Tapez TP_2_VHDL dans l’emplacement destiné au nom du projet.

• Tapez TP_2_VHDL dans l’emplacement destiné au nom du projet.

• Tapez TP_2_VHDL dans l’emplacement destiné au nom du projet.

• Le répertoire du projet est crée automatiquement, toutefois vous pouvez choisir

• Le répertoire du projet est crée automatiquement, toutefois vous pouvez choisir

• Le répertoire du projet est crée automatiquement, toutefois vous pouvez choisir

un emplacement spécifique.

un emplacement spécifique.

un emplacement spécifique.

• Vérifiez que VHDL est sélectionné dans l’emplacement Top-Level Source

• Vérifiez que VHDL est sélectionné dans l’emplacement Top-Level Source

• Vérifiez que VHDL est sélectionné dans l’emplacement Top-Level Source

Type.

Type.

Type.

• Cliquez Next pour passer à la page de la propriété du composant cible.

• Cliquez Next pour passer à la page de la propriété du composant cible.

• Cliquez Next pour passer à la page de la propriété du composant cible.

• Remplir la table des propriétés pour choisir la famille de FPGA Spartan2

• Remplir la table des propriétés pour choisir la famille de FPGA Spartan2

• Remplir la table des propriétés pour choisir la famille de FPGA Spartan2

• Cliquez sur suivant pour créer les nouvelles sources.

Advertisement

• Cliquez sur suivant pour créer les nouvelles sources.

• Cliquez sur suivant pour créer les nouvelles sources.

2. Création du fichier VHDL haut niveau de notre projet :

2. Création du fichier VHDL haut niveau de notre projet :

2. Création du fichier VHDL haut niveau de notre projet :

Dans cette partie on va créer le fichier VHDL de haut niveau de notre circuit.

Dans cette partie on va créer le fichier VHDL de haut niveau de notre circuit.

Dans cette partie on va créer le fichier VHDL de haut niveau de notre circuit.

• Choisissez alors New Source.

• Choisissez alors New Source.

• Choisissez alors New Source.

Page 8

Page 8

Page 8

ISET de Bizerte

ISET de Bizerte

ISET de Bizerte

• Choisissez maintenant VHDL module puis dans le champ « File name »

• Choisissez maintenant VHDL module puis dans le champ « File name »

• Choisissez maintenant VHDL module puis dans le champ « File name »

Circuits Logiques Programmables

Circuits Logiques Programmables

Circuits Logiques Programmables

choisissez pour nom compteur.

choisissez pour nom compteur.

choisissez pour nom compteur.

• Vérifiez que « Add to project » est sélectionnée.

• Vérifiez que « Add to project » est sélectionnée.

• Vérifiez que « Add to project » est sélectionnée.

• Déclarez les ports du compteur en remplissant les informations sur les ports, on

• Déclarez les ports du compteur en remplissant les informations sur les ports, on

• Déclarez les ports du compteur en remplissant les informations sur les ports, on

va utiliser les signaux suivants :

va utiliser les signaux suivants :

va utiliser les signaux suivants :

 CLOCK qui est une entée connectée au signal d’horloge

 CLOCK qui est une entée connectée au signal d’horloge

 CLOCK qui est une entée connectée au signal d’horloge

permettant de déterminer la fréquence du compteur.

permettant de déterminer la fréquence du compteur.

permettant de déterminer la fréquence du compteur.

 DIRECTION qui est une entrée permettant de choisir le sens du

 DIRECTION qui est une entrée permettant de choisir le sens du

 DIRECTION qui est une entrée permettant de choisir le sens du

comptage.

comptage.

comptage.

 COUNT_OUT qui est une sortie sur trois bit contenant la valeur

 COUNT_OUT qui est une sortie sur trois bit contenant la valeur

 COUNT_OUT qui est une sortie sur trois bit contenant la valeur

comptée.

comptée.

comptée.

• Cliquez sur Next puis sur Finish, enfin valider la création du répertoire

• Cliquez sur Next puis sur Finish, enfin valider la création du répertoire

• Cliquez sur Next puis sur Finish, enfin valider la création du répertoire

du projet.

du projet.

du projet.

• Cliquez ensuite Next, next puis Finish.

• Cliquez ensuite Next, next puis Finish.

• Cliquez ensuite Next, next puis Finish.

Page 9

Page 9

Page 9

ISET de Bizerte

ISET de Bizerte

ISET de Bizerte

Circuits Logiques Programmables

Circuits Logiques Programmables

Circuits Logiques Programmables

Le fichier source crée contient le couple entite/architecture du composant compteur.

Le fichier source crée contient le couple entite/architecture du composant compteur.

Le fichier source crée contient le couple entite/architecture du composant compteur.

Il nous reste alors de compléter l’architecture à fin de refléter le comportement du

Il nous reste alors de compléter l’architecture à fin de refléter le comportement du

Il nous reste alors de compléter l’architecture à fin de refléter le comportement du

compteur.

compteur.

compteur.

Pour pouvoir continuer la description du composant on va essayer d’utiliser les

Pour pouvoir continuer la description du composant on va essayer d’utiliser les

Pour pouvoir continuer la description du composant on va essayer d’utiliser les

modèles de construction VHDL fournis avec ISE.

modèles de construction VHDL fournis avec ISE.

modèles de construction VHDL fournis avec ISE.

3. Utilisation des modèles VHDL fournis avec ISE :

3. Utilisation des modèles VHDL fournis avec ISE :

3. Utilisation des modèles VHDL fournis avec ISE :

L’étape de description du comportement du compteur peut être simplifiée en utilisant

L’étape de description du comportement du compteur peut être simplifiée en utilisant

L’étape de description du comportement du compteur peut être simplifiée en utilisant

les modèles de constructions VHDL fournis avec ISE.

les modèles de constructions VHDL fournis avec ISE.

les modèles de constructions VHDL fournis avec ISE.

On peut utiliser ces modèles de la façon suivante.

On peut utiliser ces modèles de la façon suivante.

On peut utiliser ces modèles de la façon suivante.

• Placez le curseur au dessus de begin dans l’architecture du compteur.

• Placez le curseur au dessus de begin dans l’architecture du compteur.

• Placez le curseur au dessus de begin dans l’architecture du compteur.

• Ouvrez le menu Language Templates en sélectionnant «Edit  Language

• Ouvrez le menu Language Templates en sélectionnant «Edit  Language

• Ouvrez le menu Language Templates en sélectionnant «Edit  Language

Templates».

Templates».

Templates».

Notez que vous pouvez afficher la fenêtre Language Templates en même

Notez que vous pouvez afficher la fenêtre Language Templates en même

Notez que vous pouvez afficher la fenêtre Language Templates en même

temps que les autres, en sélectionnant sur la fonction « Window  Tile

temps que les autres, en sélectionnant sur la fonction « Window  Tile

temps que les autres, en sélectionnant sur la fonction « Window  Tile

Vertically ».

Vertically ».

Advertisement

Vertically ».

• En utilisant le symbole « + » , parcourez les modéles pour accéder à : VHDL

• En utilisant le symbole « + » , parcourez les modéles pour accéder à : VHDL

• En utilisant le symbole « + » , parcourez les modéles pour accéder à : VHDL

→ Synthesis Constructs → Coding Examples → Counters → Binary →

→ Synthesis Constructs → Coding Examples → Counters → Binary →

→ Synthesis Constructs → Coding Examples → Counters → Binary →

Up/Down Counters → Simple Counter.

Up/Down Counters → Simple Counter.

Up/Down Counters → Simple Counter.

• Pour pouvoir utiliser le modèle du compteur dans notre code sélectionnez

• Pour pouvoir utiliser le modèle du compteur dans notre code sélectionnez

• Pour pouvoir utiliser le modèle du compteur dans notre code sélectionnez

EditUse in File, ou sélectionnez Use Template in File dans la barre d’outils.

EditUse in File, ou sélectionnez Use Template in File dans la barre d’outils.

EditUse in File, ou sélectionnez Use Template in File dans la barre d’outils.

Cette étape permet de recopier le modèle dans le fichier source ouvert.

Cette étape permet de recopier le modèle dans le fichier source ouvert.

Cette étape permet de recopier le modèle dans le fichier source ouvert.

• Fermer la fenêtre « Languages Templates ».

• Fermer la fenêtre « Languages Templates ».

• Fermer la fenêtre « Languages Templates ».

Page 10

Page 10

Page 10

ISET de Bizerte

4. Finalisation du code VHDL :

Circuits Logiques Programmables

• Ajouter la déclaration du signal suivant à fin de prendre en compte l’état précedent

du compteur.

signal count_int : std_logic_vector(3 downto 0) := "0000";

La déclaration d’un signal comme vue dans le cour doit s’effectuer

entre la déclaration de l’architecture et son begin.

• Personnaliser le code source du compteur en remplaçant les ports et les noms de

signaux.

 Remplacer toutes les occurrences de <clock> par CLOCK.

 Remplacer toutes les occurrences de <count_direction> par DIRECTION.

 Remplacer toutes les occurrences de <count> par count_int.

 Enregistrer le fichier.

Après avoir finis l’édition du fichier le résultat doit ressembler à ce qui suit :

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitive in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity counter is

Port ( CLOCK : in STD_LOGIC;

DIRECTION : in STD_LOGIC;

COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0));

end counter;

architecture Behavioral of counter is

signal count_int : std_logic_vector(3 downto 0) := "0000";

begin

process (CLOCK)

begin

if CLOCK='1' and CLOCK'event then

if DIRECTION='1' then

count_int <= count_int + 1;

else

count_int <= count_int - 1;

end if;

end if;

end process;

COUNT_OUT <= count_int;

end Behavioral;

5. Vérification de la syntaxe du module compteur :

Après avoir finis l’édition du module compteur on peut vérifier les erreurs éventuelles

de syntaxe.

Pour cela on doit :

• Vérifier que le paramètre Synthesis/Implementation est sélectionné dans le

panneau sources.

Page 11

ISET de Bizerte

Circuits Logiques Programmables

• Sélectionner le design counter dans la fenêtre source pour afficher les

processus liés dans la fenêtre des process.

• Cliquez sur « + » dans Synthesis-XST process à fin d’étendre le group de

processus liés.

• Double cliquez sur le processus « Check Syntax ».

Vous devez actuellement corriger les erreurs s’il s’y présente dans votre code

VHDL. Vous pouvez visualiser les erreurs visualisés dans la fenêtre console

ou Errors.

• Fermez actuellement le fichier VHDL du compteur.

6. Simulation de notre conception :

a. Vérifications des fonctionnalités en utilisant une simulation fonctionnelle:

Le but de cette manipulation est la création des formes d’ondes pour le

testbench afin de vérifier les fonctionnalités du compteur.

Créez le testbench comme suit :

o Sélectionnez le fichier Counter.vhd dans la fenêtre Sources.

o Créer un nouveau fichier test bench en accédant au menu

ProjectNew Source.

o Dans l’interface de création de la nouvelle source choisissez Test Bench

WaveForm comme type, nommez ce fichier counter_tbw, cliquez sur Next.

o La fenêtre « Associate Source » vous permet d’associer le test bench

au fichier source counter.

o Une page de sommaire s’affiche alors et vous permet de verifier les

paramètres du fichier ajouté, cliquez sur Finish si les paramètres vous

conviennent.

o Vous avez besoin maintenait de spécifier la fréquence d’horloge, le

temps et les délais de sortie avant d’ouvrir la fenêtre de traçage des

Page 12

ISET de Bizerte

waveform.

Les besoins pour notre design sont :

Circuits Logiques Programmables

 Le compteur doit fonctionner correctement à une fréquence

d’horloge de 25 MHz.

 L’entrée DIRECTION doit être valide 10ns avant l’arrivée du

front montant de l’horloge CLOCK.

la sortie COUNT_OUT doit être valide 10ns après l’arrivée du

front montant de l’horloge CLOCK.

Advertisement

Les paramètres correspondant à cette spécification à inscrire dans le

tableau sont :

 Clock High Time: 20 ns.

 Clock Low Time: 20 ns.

Input Setup Time: 10 ns.

 Output Valid Delay: 10 ns.

 Offset: 0 ns.

 Global Signals: GSR (FPGA)

 Cliquez sur Finish pour compléter l’initialisation temporelle.

 La partie colorée en bleu précédent le front montant de l’horloge correspond à

la contrainte d’établissement du signal précédent le front d’horloge. Cliquez

sur DIRECTION pour imposer les stimulis d’entrée de ce signal.

 Cliquez sur la cellule en bleu au niveau (à peu prêt) de 300ns

sur l’axe du temps, afin que le compteur puisse compter dans le

sens croissant.

Page 13

ISET de Bizerte

 Cliquez sur la cellule en bleu au niveau (à peu prêt) de 900ns

Circuits Logiques Programmables

sur l’axe du temps, afin que le compteur puisse compter dans le

sens décroissant.

 Enregistrer le fichier Waveform

 Dans la fenêtre des sources sélectionnez « Behavioral

Simulation », assurez vous que le fichier tesbench est ajouté à

votre projet.

 Fermer le fichier testbench Waveform.

b. Simulation du Compteur:

Dans cette étape on va vérifier si le compteur conçue respecte la

spécification :

 Vérifier que Behavioral Simulation et counter_tbw sont

sélectionnés dans fenêtre sources.

 Dans le menue process cliquez sur « + » afin de dérouler la

liste, cliquez sur Simulate Behavioral Model. Modelsim est alors lancer

à fin d’effectuer toute la simulation.

 Vous pouvez exploiter les possibilités de Modelsim pour vérifier que le

compteur fonctionne comme voulue.

Page 14

ISET de Bizerte

TP 3

Circuits Logiques Programmables

1. But

Implémentations de modules électroniques numériques standards afin de maitriser à la fois ces

composants ainsi que les constructions syntaxiques de VHDL

2. Manipulation :

1- le multiplexeur.

Utilisons un multiplexeur pour illustrer les assignations conditionnelles when et sélective with.

S0

S1

A

B

C

d

S1

0

0

1

1

Table de vérité :

S0

0

1

0

1

MUX

X

X

A

B

C

D

En utilisant le simulateur MODELSIM, valider le fonctionnement de ce multiplexeur.

Utilisation de l’assignation conditionnelle when :

Page 15

ISET de Bizerte

Circuits Logiques Programmables

Utilisation de l’assignation sélective with :

Page 16

ISET de Bizerte

2- Modèle d’une sortie à trois états (2 registres).

Circuits Logiques Programmables

INV

SEL

CLK

D

D

D

Q

Buff 3 états

La sortie Q se trouve à haute impédance si le buffer de sortie est actif. Valider ce mode sur

MODELSIM en activant l’entrée SEL

3- Diviseur d’horloge :

Soit la description VHDL d’un circuit diviseur d’horloge:

Intégrer ce détecteur dans un projet ISE, simulez son fonctionnement en créant le fichier testbench

pour Modelsim.

Page 17

ISET de Bizerte

Circuits Logiques Programmables

4- Détecteur de front :

Soit la description VHDL d’un circuit détecteur de front :

Intégrer ce détecteur dans un projet ISE, simulez son fonctionnement en créant le fichier testbench

pour Modelsim, puis présenter une deuxième méthode pour décrire ce circuit.

Page 18

ISET de Bizerte

5- Diviseur:

Circuits Logiques Programmables

Soit la description VHDL d’un circuit diviseur générique, le but essentiel de cette manipulation est la

rétro-ingénieur de conception VHDL existante

Simulez ce module avec Modelsim, donnez une interprétation du code, Déterminez le schéma block

de ce module.

Page 19