Vous êtes sur la page 1sur 12

30/07/2019

Ecole Nationale Polytechnique –Constantine.


Département EEA
Quatrième Année Ingénieurs –Semestre 2.
Automatique/Electrotechnique
Cours. Circuits Programmables

Chapitre V. (Partie 4)
Langages de programmation HDL
(Hardware description langage, langage de description du matériel)
Durée du Cours: 1h30
Présenté par: Dr. S. BENSEGUENI
(benskandix@gmail.com)

Année Universitaire. 2018-2019

2. Développement et conception en langage VHDL


(Inférence)
Bien qu'il soit possible d'inclure des bascules et des
tampons à trois états dans une conception en les
choisissant explicitement, il est courant de permettre
aux outils de conception de déduire la présence de
ces composants en utilisant des structures spéciales
dans le code VHDL.
Dans cette partie, on couvrira l'inférence de simples
verrous D (D-Latch), bascule D (D-Flip-Flops) et
tampon à trois états (Tristate Buffers).

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Verrous D
Les verrous D sont déduits lorsqu'une sortie n'est pas
définie pour toutes les conditions, comme cela se produit
lorsqu'une instruction if n'a pas de clause else.
Ci-dessous un fragment de code typique menant à
l'inférence d'un verrou D.
1 process(Gate, D)
2 begin
3 if (Gate=’1’) then
4 Q<=D;
5 end if;
6 end process;
Circuits Programmables Dr. S. Bensegueni

1
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Verrous D
Un verrou sera également déduit si un signal est attribué dans
une, mais pas dans toutes les branches d'une instruction if ou
case. De plus, les variables seront verrouillées si elles sont
attribuées après avoir été lues comme dans le fragment de code
suivant :
1 process(in1)
2 variable var1:std_logic;
3 begin
4 out1 <= var1 or ‘1’; -- var1 is read
5 var1 := not in1; -- var1 is assigned
6 end process;
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Bascules D
Ici, l'attribut d'événement pour le signal n'est vrai que lorsque le
signal change d'état. Une structure typique qui mènera à
l'inférence de bascules D est illustrée ci-dessous.
1 process(CLK, Reset)
2 begin
3 if Reset=’1’ then
4 -- reset function
5 elsif CLK’event and CLK=’1’ then
6 -- process implementation
7 end if;
8 end process;

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Bascules D
Tous les signaux ou variables affectés n'importe où
dans l'instruction if auront des bascules induites.
Pour que l'inférence de bascules D fonctionne
correctement, le test d'un bord de signal doit être la
seule condition de cette branche de l'instruction if,
et il ne doit exister qu'un seul test pour un bord dans
l'instruction if.

Circuits Programmables Dr. S. Bensegueni

2
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Tampons à trois états
Une exigence commune lors de la conception de
systèmes avec des bus est de permettre à plusieurs
processus (ou instructions simultanées) d'accéder au
même signal (bus) sous le contrôle de trois états. Cela
peut être réalisé par une utilisation appropriée de l’état à
trois états défini dans le type std_logic. Le code
suivant montre comment les tampons de trois états
peuvent être déduits afin que deux processus puissent
partager le même signal de sortie. Ce cas suppose qu'un
processus de niveau supérieur contrôlera les signaux
sélectionnés, de sorte qu'un seul processus puisse
évaluer le signal de sortie (out1) à la fois.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Tampons à trois états
1 library IEEE;
2 use IEEE.std_logic_1164.all;
3
4 entity tristate is
5 port (in1, in2, select1, select2 : in std_logic;
6 out1: out std_logic
7 );
8 end tristate;
9
10 architecture tristate_arch of tristate is
11 begin
12 buffer1 : process (in1, select1)
13 begin
14 if select1=’1’ then
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Tampons à trois états
15 out1 <= in1;
16 else
17 out1 <= ‘Z’;
18 end if;
19 end process buffer1;
20
21 buffer2 : process (in2, select2)
22 begin
23 if select2=’1’ then
24 out1 <= in2;
25 else
26 out1 <= ‘Z’;
27 end if;
28 end process buffer2;
29 end tristate_arch;

Circuits Programmables Dr. S. Bensegueni

3
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Les contraintes de synchronisation permettent de
définir le délai maximal autorisé entre les composants
de la conception. Les outils de mise en œuvre
prendront ces informations et tenteront de construire
un circuit qui réponde à ces contraintes, assurant ainsi
que la conception remplira la fonction souhaitée.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
L'élément de base utilisé pour créer des contraintes
de synchronisation est le chemin de synchronisation.
Les trois chemins les plus courants sont les chemins
clock-configuration, clock-pad et pad-to-setup.
Comme on pouvait s'y attendre, le délai maximum
pour chaque chemin doit être inférieur à la période
d'horloge.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Commençons par examiner le chemin clock-
configuration, comme illustré à la figure :

.
Circuits Programmables Dr. S. Bensegueni

4
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Un chemin d'horloge à configuration commence à une broche
d'horloge de bascule, se propage à travers toute la logique
combinatoire et le routage (y compris les tampons à trois états)
et se termine à une autre bascule. La durée maximale autorisée
de propagation d'un signal de la bascule source à la bascule
cible doit être inférieure au temps entre les fronts montants de
CLK1 et de CLK2 et égale à la somme des transformations
d'horloge pour la bascule source.
Les outils de conception prendront également en compte tout
décalage d'horloge (délai de propagation). Si CLK1 = CLK2, le
délai maximal autorisé est égal à la période d'horloge.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
La figure ci-dessus illustre un chemin clock-pad. Comme
les chemins d'horloge à configuration, les chemins
d'horloge à pad suivent toute la logique combinatoire (y
compris les tampons à trois états) mais se terminent par
un pad du FPGA. Le temps écoulé entre le front montant
de l’horloge et le signal arrivant sur la broche est le délai
du chemin. Toutefois, pour déterminer la fréquence
d’horloge, nous devons également prendre en compte les
temps de propagation externe et de configuration (la
marge).
Circuits Programmables Dr. S. Bensegueni

5
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Les délais entre les pads et les clock sont illustrés à la
figure ci-dessous comme pour le chemin clock-pad, une
marge externe est incluse qui prend en compte le délai
externe horloge-sortie et le délai de propagation.
Les outils de conception fournissent généralement un
mécanisme permettant de spécifier la marge externe
pour les chemins d'horloge à pad et de pad à setup (bien
que cela puisse être difficile à spécifier. En pratique, il est
préférable d'éviter d'insérer une logique combinatoire
entre un pad et une bascule pour assurer la marge
maximale possible.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Le moyen le plus simple de définir le délai maximal
admissible pour les délais de chemin d’horloge à
configuration et de pad à configuration est de définir
la période de chaque horloge du système. Il est
également possible de spécifier le délai pour des
chemins particuliers ou des groupes de chemins
particuliers (par exemple, entre tous les chemins
d'horloge à la configuration entre deux éléments de
conception ou le délai de chemin d'accès de
configuration pour une entité particulière).
Circuits Programmables Dr. S. Bensegueni

6
30/07/2019

2. Développement et conception en langage VHDL


(Inférence)
Contraintes de temps
Cela peut être utile s’il est acceptable que le délai de
logique et de routage entraîne le dépassement de la
période d’horloge (par exemple un circuit
combinatoire complexe dont le résultat n’est pas
utilisé immédiatement) ou lorsque le temps d’arrivée
sur la bascule de destination n’est pas différent.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
On analyse le circuit ci-dessous pour mieux comprendre le
fonctionnement :

L’analyse se fait en quatre étapes:


1. Identification des variables d’états.
2. Ecriture les équations d’états et les équations de sortie.
3. Préparation de la table d’états.
4. Dessin du diagramme d’états.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
1. Les variables d’états sont A et B.
2. Les équations d’états sont:
A+=A XOR B ; B+= NOT(B) OR X ; Z=A NOR B.
3. La table des états:

.
Circuits Programmables Dr. S. Bensegueni

7
30/07/2019

2. Développement et conception en langage VHDL


(Machine à états)
4. La machine à états (de Moore ‘la sortie ne dépend
que de l’état présent’) :

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
4. La machine à états (de Moore ‘la sortie ne dépend
que de l’état présent’) :

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
Deux approches sont possibles :
Approche 1.
- Quand on veut modéliser un circuit pour lequel on a le
schéma.
- Quand on a les équations d’états et de sorties.
Résultat.
- Deux bascules dans un seul processus.
- La sortie sera décrite dans un énoncé concurrent à
l’extérieur du processus.
- Réinitialisation asynchrone.
Circuits Programmables Dr. S. Bensegueni

8
30/07/2019

2. Développement et conception en langage VHDL


(Machine à états)

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
Exemple de la machine à états en VHDL
Approche 2.
- Quand on veut identifier les états, les conditions de
transition et les sorties pour chaque état.
-Quand on aura pas besoin d’équations d’états.

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)

.
Circuits Programmables Dr. S. Bensegueni

9
30/07/2019

2. Développement et conception en langage VHDL


(Machine à états)
Parties d’une machine à états:
Une machine à états peut être partitionnée en trois
parties:
1. Les éléments de mémoire qui conservent l’état
présent de la machine.
2. Un circuit combinatoire pour le calcul du prochain
état.
3. Un circuit combinatoire pour le calcul des sorties de
Moore et de Mealy.
Pour cette raison, il y trois principaux styles de
description selon la répartition de la machine sur un
ou plusieurs processus.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
Exemple de la machine à états en VHDL

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
L’exemple suivant est utilisé pour illustrer les trois
styles de descriptions :

NOT(X)

Circuits Programmables Dr. S. Bensegueni

10
30/07/2019

2. Développement et conception en langage VHDL


(Machine à états)
1. Utilisation d’un seul
processus :

Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
2. Utilisation de deux
processus :

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


(Machine à états)
3. Utilisation de trois
processus :

.
Circuits Programmables Dr. S. Bensegueni

11
30/07/2019

2. Développement et conception en langage VHDL


(Machine à états)
3. Utilisation de trois
processus :

.
Circuits Programmables Dr. S. Bensegueni

2. Développement et conception en langage VHDL


En résumé :

.
Circuits Programmables Dr. S. Bensegueni

12

Vous aimerez peut-être aussi