You are on page 1of 12

REPUBLIQUE ALGERIENNE DEMOKRATIQUE ET POPULAIRE

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE

SCIENTIFIQUE

UNIVERSITE M'HAMED BOUGARA DE BOUMERDES

DEPARTEMENT DE PHYSIQUE

OPTION : Master Infotronique

UEF : VHDL

TP N°5
Modélisation d’un circuit
par les styles de Description
VHDL (suite)
Réaliser par :
HADJOUR KAMEL

2010/2011
INTRODUCTION

L’évolution de l’industrie des circuits intégrés durant la dernière décennie a été tellement
rapide qu’il est maintenant possible d’intégrer plusieurs systèmes complexes sur une

Seule puce. Cette évolution vers des niveaux d’intégration de plus en plus élevés est

motivée par les besoins de systèmes plus performants, légers, compacts et consommant

un minimum de puissance. Dans de telles circonstances, la gestion de la complexité avec

les outils d’aide à la conception traditionnels (les outils de bas niveau : masque,

schématique…) devient une tâche pénible, coûteuse, voire impossible, quand on

considère les contraintes de mise en marché d’un produit.

Dans le but de mieux gérer la complexité des circuits intégrés, tout en gardant les coûts

du développement dans des limites raisonnables, d’autres outils d’aide à la conception,

dits outils de synthèse, ont vu le jour dès le début des années 1990. En effet, le but ultime

de ces outils associés avec un langage de conception et de simulation puissant, tel que le

langage VHDL, est de générer le dessin des masques d’un circuit à partir de sa

description comportementale de haut niveau. Ainsi, le concepteur peut se limiter à la

conception, à la modélisation et à la simulation de son produit, sans tenir compte des

détails de mise en oeuvre au niveau schématique ou du dessin des masques 

1- Définition d’un modèle comportemental sur VHDL :

La plupart du temps, c’est un avantage, d’une part, en terme de temps d’exécution et de


mémoire demandée et d’autre part, pour simuler une partie d’un circuit dont le niveau de
structure est très détaillé (structurel) ou moins détaillé (comportemental). SPICE décrit
explicitement le structurel et décrit le comportemental implicitement pour un modèle
analogique, en conséquence, le temps d’exécution est très long et il est très gourmand en
mémoire pour le stockage des détails des composants internes
2 – Processus et Synchronisation :
Les différentes tâches d'un programme vhdl s'exécutent en parallèle les unes des autres. Ces
tâches sont appelées processus. Toutes les instructions concurrentes sont en fait des
processus mais la déclaration explicite de processus par le mot clé process permet de
construire sa propre instruction par le biais d’instructions séquentielles internes au processus.
Un processus peut avoir des variables locales. Le fonctionnement du processus est régi par
les règles suivantes :

1. Un processus est une boucle infinie , lorsqu'il arrive à la fin du code, il reprend
automatiquement au début 

2. Un processus doit être sensible des points d'arrêt de façon à le synchroniser.  La


synchronisation est donc indiquée par un point d'arrêt qui est évènement particulier.

3 - Objectif de TP

Développer le model fonctionnel d’un compteur de 5bit qui génère la séquence des valeurs 0,
1 , 2, …. 2N-1 (N : nbr de bits de signal contenant la valeur de compteur)

Avec :
Architecture
Entity
Entrée Sortie Dans la partie architecture on va utiliser le code
qui se trouve dans template :
Horloge : CLK Counter : count
de 5 bit process (<clock>, <reset>)
Reset : RST begin
active au niveau if <reset>='1' then
bas ‘0’ <count> <= (others => '0');
elsif <clock>='1' and <clock>'event then
<count> <= <count> + 1
end if;
end if;
end process;
la partie architecture sera bien éclairai dans les
pages suivantes
Partie Pratique :

On ouvre l’utilitaire Xilinx , puis on crée deux nouveaux projets au nom de TP_5 et deux
( new sources) bascule_d & reg_serial

- on écrit le premier programme de la bascule_D qui est le suivant :

--------------------- Library & Package ---------------------


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
---- On n’a pas besoin d’utiliser les deux bibliothéques logic.arith.all &
logic.unsigned.all en raison
--------------------- Entity ---------------------

entity bascule_d is
port(D,rst,clk:in std_logic;
Q:out std_logic);
end bascule_d;
--------------------- Architecture ---------------------
architecture structural of bascule_d is

begin
process (clk,rst)
begin
if rst='1' then
Q <= '0';
elsif (clk'event and clk='1') then
Q <=D;
end if;
end process;

end structural;

- après avoir terminé d’écrire le programme on l’enregistre puis on le teste avec


check syntax et vérifié s’il y a des erreurs à corriger.

- On écrit le deuxième programme reg_serial qui est le suivant :

--------------------- Library & Package ---------------------


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

--------------------- Entity --------------------- -

entity reg_serial is
port(ent,reset,clk:in std_logic;
sal:out std_logic);
end reg_serial;

architecture archi of reg_serial is

signal Q1:std_logic;

signal Q2:std_logic;

signal Q3:std_logic;

component bascule_d

port(D,rst,clk:in std_logic;

Q:out std_logic);

end component;

----------------------------------------

begin

bascule1:bascule_d port map(D=>ent,rst=>reset,clk=>clk,Q=>Q1);

bascule2:bascule_d port map(D=>Q1,rst=>reset,clk=>clk,Q=>Q2);

bascule3:bascule_d port map(D=>Q2,rst=>reset,clk=>clk,Q=>Q3);

bascule4:bascule_d port map(D=>Q3,rst=>reset,clk=>clk,Q=>sal);

end archi;

- On enregistre le code vhdl puis on le test avec check syntax


pour vérifier s’il y a pas d’erreurs

La figure (FIG.01 , FIG.02) ci-dessous nous montrent les deux


programmes & leurs check syntaxe
- En suite on modélise le programme avec Modelsim en cliquant
sur Source  behaviour simulation

- Puis double clique sur simulate behaviour model comme le


montre la fig.03 ci-dessous
Lorsque l’interface modelism s’ouvre on clique sur :

simulate  Run  Restart

pour initialiser les signaux comme nous le montre la figure suivante


En suite on modélise le programme avec Modelsim en cliquant sur Source  behaviour simulation

Puis double clique sur simulate behaviour model comme le montre la fig ci dessous
Lorsque l’interface modelism s’ouvre on clique sur simulate  Run  Restart pour initialiser les signaux

Comme le montre la fig.03 et FIG.04


En suite On va taper le code script suivant en prenant le chemin :

File  New  source  Do

En suite on ecris le code scripte suivant :

force clk 0 0, 1 20 -repeat 80

force rst 0 0, 1 20

run 250 ns

En suite on enregistre le script.do et en lance la simulation suivant le chemin

Simulate  Run  Run 100 on aura le résultat suivant :


Réponse aux Questions :

 Les packages utilisé pour la modélisation de circuit sont :

IEEE.STD_LOGIC_1164.ALL; comme les declaration de process (std_logic) qui se trouve dans cette
bibliothèque

IEEE.STD_LOGIC_ARITH.ALL; pour les opérations arithmétique comme l’addition et l’incrémentation etc……

IEEE.STD_LOGIC_UNSIGNED.ALL pour les opérations d’incrémentation de compteur on a besoin de se


package pour les valeurs indignées comme le bit_vector

 Si en entrée on utilise que l’horloge (clk) :

En sortie on aura le même résultat que notre TP ç à dire que même si on enlève le Reset le
compteur continuera toujours à s’incrémenter jusque à la fin de programme sans reboucler à
zéro

Conclusion :
A la fin de TP on conclut que pour une description comportemental d’un circuit et
modélisation nécessite l’utilisation de bloc process & les instructions séquentielles
qui se trouve au niveau de se bloque

You might also like