0% ont trouvé ce document utile (0 vote)
64 vues30 pages

Chap 6 RLP

Transféré par

Jiba Lassry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
64 vues30 pages

Chap 6 RLP

Transféré par

Jiba Lassry
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

13/11/2023

Département Maintenance Industrielle M.I


DUT GIM2 / GEII2

Élément de module :
RLP (Réseaux Logique Programmable et FPGA)

Professeur I.BOUGANSSA A.U: 2023/2024


[email protected]

Plan:

- Introduction

- Principe des réseaux programmables

- Types des réseaux programmables combinatoires

•PROM : Programmable Read-Only Memory

•PAL : Programmable Array Logic

•FPLA : Field Progmmable Array Logic

•Les réseaux programmables séquentiels

•Les ASICs

•Architectures des FPGA (Fields Programmable Gate Array)

• Initiation au langage de description matériel VHDL

1
13/11/2023

Introduction
3

Un circuit logique programmable, ou réseau logique


programmable, est un circuit logique intégré qui peut être
reprogrammé après sa fabrication.
Il est composé de nombreuses cellules logiques élémentaires
librement assemblables.
Un circuit logique programmable permet la réalisation de circuits
logiques à grand nombre de variables d'entrée et de sortie,
selon la spécification de l'utilisateur et en utilisant un même
support matériel.

i.bouganssa 13/11/2023

Types des circuits logiques programmables


4

Les PLDs et les CPLDs


Les ASICs
Les FPGAs

i.bouganssa 13/11/2023

2
13/11/2023

5 Domaines d’applications

Spatiale, aviation, automobile, instrumentation,


médicale, téléphonie mobile, terminaux de paiement
pour carte bancaire ...

i.bouganssa 13/11/2023

I. les PLDs :
6
les PLDs (Programmable Logic Device), les CPLDs (Complex Logic
Programmable Device) sont des circuits, disponibles sur catalogue,
exclusivement numériques.
Les PLDs sont proposés avec deux grandes familles : PAL (Programmable
Array Logic), et GAL (Généric Array Logic).
Les PLDs présentent les avantages suivants : personnalisation et mise en
oeuvre simple, outils de développement peu coûteux (souvent gratuits), pas de
retour chez le fabriquant, en plus ces circuits sont idéaux pour un prototypage
rapide.
Les inconvénients des PLDs peuvent être résumés à : une consommation
globale accrue par les circuits de configuration, les PLDs sont peut-être chers
pour de grandes séries, les primitives du fabricant pouvant être complexes, la
performance globale est dépendante pour beaucoup de l’outil utilisé.

i.bouganssa 13/11/2023

3
13/11/2023

1. Introduction sur les RLP


7
•Chaque fonction logique de n variables peut être mise sous
la forme d’une somme de produits.

•Pour réaliser une telle fonction on a besoin :

– d’un ensemble d’opérateurs ET (portes AND) organisés sous


forme d’une matrice pour réaliser les produits.

– Un ensemble d’opérateurs OU (Porte OR) organisés sous forme


d’une matrice pour réaliser la somme.

i.bouganssa 13/11/2023

 Schéma général pour réaliser une fonction logique


8

i.bouganssa 13/11/2023

4
13/11/2023

 Exemple 1
9  Soit la fonction :

i.bouganssa 13/11/2023

 Exemple 1
10  Soit la fonction :

 Représentation simplifiée

i.bouganssa 13/11/2023

5
13/11/2023

11 2. Principe des portes ET utilisées

Un fusible brulé ( sauté )

Fusible intacte

i.bouganssa 13/11/2023

Un fusible
12

 Une matrice ET non programmée

 Une matrice ET programmée

i.bouganssa 13/11/2023

6
13/11/2023

 Exemple 2

13  Réaliser les fonctions suivantes:

i.bouganssa 13/11/2023

3. Principe des portes OU


14
 C’est le même principe que les portes ET.

i.bouganssa 13/11/2023

7
13/11/2023

15

 Exemple d’une matrice OU non programmée

 Exemple d’une matrice OU programmée

i.bouganssa 13/11/2023

 Exemple 3

16
 Réaliser les fonctions suivantes

i.bouganssa 13/11/2023

8
13/11/2023

17

4. Conclusion pour les réseaux logiques programmables

 Un réseau logique programmable (circuit logique programmable) est un


circuit qui peut être configurer par l’utilisateur pour avoir une ou plusieurs
fonctions logiques.
 Un circuit programmable est constitué d’un ensemble d’opérateurs ET et
OU organisés sous forme de deux matrices.
 La matrice des ET est un ensemble de portes AND qui permet de relier les
différentes variables d’entrées.
 La matrice des OU est un ensemble de portes OR qui permet de relier les
différents termes AND.

i.bouganssa 13/11/2023

18
Remarques:

 Une matrice peut être programmable (paramétrable) ou figée


(préconfigurée).
 La programmation consiste a faire bruler (sauter) les fusibles des
termes (ou des variables) qu’on veut pas utiliser => laisser les
fusibles utiles.
 La programmation se fait une seule fois : une fois les fusibles
brulés on peut pas les réparer.

i.bouganssa 13/11/2023

9
13/11/2023

 Schéma général d’un réseau logique programmable


19

i.bouganssa 13/11/2023

5. Classification des réseaux programmables:


20

 Selon le type des deux matrices on peut distinguer les trois types suivants :
 Matrice ET figée et OU programmable => PROM (Programmable Read-Only
Memory)
 Matrice ET programmable et OU figée => PAL (Programmable Array Logic)
 Matrice ET programmable et OU programmable => FPLA (Field Programmable
Array Logic)

i.bouganssa 13/11/2023

10
13/11/2023

II. Les ASICs:


21
Un ASIC est un circuit électronique dédié. Il peut regrouper sur une

même puce tous les éléments actifs nécessaires à la réalisation d'une


fonction ou d'un ensemble électronique. Ce composant n'est pas modifiable.
Comparé à un FPGA, il offre une capacité d'intégration plus élevée, une
vitesse plus rapide et un coût plus faible. En effet, les ASIC permettent
l’intégration d’un nombre très important d’opérateurs de calculs et de
mémoire.
Cependant, le développement d'un ASIC est très long. Il s'agit d'un
circuit intégré conçu exclusivement pour le projet ou l'application qui l'utilise.
Grâce aux ASIC les concepteurs peuvent désormais regrouper dans un seul
boîtier toutes les fonctions nécessaires à leur application en occupant une
surface comparable
i.bouganssa à celle d'un simple composant. 13/11/2023

22 III. Les FPGAs : (1)

Les FPGAs, (field-programmable gate array, réseau de portes programmables)


sont des composants électroniques programmables de la famille des PLDs.
Un FPGA est un ensemble de blocs logiques élémentaires que l’utilisateur peut
interconnecter pour réaliser les fonctions logiques de son choix.
La densité des portes est importante et sans cesse en évolution. L'avantage d’un
FPGA est leur grande souplesse dans leur technologie permettant une
réutilisation à volonté et en un temps très court (quelques millisecondes) dans
des algorithmes différents.
Le progrès technologique permet de faire des composants toujours plus
rapides et à plus haute intégration, autorisant la programmation d'applications
importantes. Grâce à l'évolution des procédés de fabrication, ces composants
peuvent actuellement
i.bouganssa supporter des applications complexes. 13/11/2023

11
13/11/2023

III. Les FPGAs : (2)


23
Ils sont constitués d'un réseau de blocs logiques, de blocs mémoires, de blocs
dédiés et d'entrées/sorties. L'ensemble est relié par un réseau d'inter-
connexions programmable. Les blocs logiques permettent de réaliser des
opérations avec quelques variables à travers une LUT (Look Up Table).
Le résultat peut être éventuellement stocké dans un registre, les blocs RAM
permettent d'implanter des mémoires adressables et des FIFO (First In, First
Out), les blocs dédiés permettent de réaliser facilement de nombreuses
opérations de traitement (blocs DSP), de gérer l'horloge, ou des interfaces de
communication (Rocket IO, Ethernet, PCI Express). Les nombreux ports
permettent également de connecter des périphériques de la plateforme
Matérielle à base de FPGA.

i.bouganssa 13/11/2023

III. Les FPGAs : (3)


24

Architecture conceptuelle d'un FPGA (Architecture, Interconnexions et CLB).

Les FPGA se programment grâce à leurs LUT et leur


réseau d'interconnexion. La programmation se fait avec
un langage de programmation hardware tel que le VHDL
ou bien le Verilog. L'outil de développement transforme
cette description en un fichier de configuration du FPGA
en plusieurs étapes : le HDL (Hardware Design
Language) doit d'abord être synthétisé (transformé en
éléments logiques de base), puis les éléments doivent être
placés sur le composant (placement) et enfin
interconnectés (routage).
i.bouganssa 13/11/2023

12
13/11/2023

Les deux grandes familles des FPGA


25
Actuellement, on trouve sur le marché des circuits FPGA (de faible, moyenne et
haute densité) produits par les deux principaux producteurs de circuits logiques
programmables : Xilinx et Altera. Sur le même marché, on trouve plusieurs
autres producteurs de circuits FPGA, on peut citer à titre d’exemple : Actel,
Abound Logic, Achronix, Atmel, Cypress, Lattice Semiconductor, etc.
L'architecture d'une cellule logique élémentaire (CLE) varie fortement d'un
producteur à l'autre:

i.bouganssa 13/11/2023

La famille Altéra
26
Le concurrent de Xilinx dans le marché des FPGA est Altera avec un chiffre
d’affaire de $1.29 milliard en 2006. En effet, la société américaine Altera,
créée en 1983, est un fabricant de composants reprogrammables (FPGA, CPLD
et ASIC) et des processeurs embarqués. Pour la gamme haute performances on
trouve les FPGA : Stratix et Stratix GX (2002), Stratix II (2004), Stratix II GX (2005),
Stratix III (2006) et Stratix IV et HardCopy (2008).
Pour les FPGA de grande série on trouve : Cyclone (2002), Cyclone II (2004), Cyclone III
(2007), Cyclone IV et Arria GX (2007), etc.
Enfin, pour les CPLD, on trouve les exemples les plus utilisés : MAX 3000A et
MAX 7000 (1991), MAX II (2007) et MAX V (2010). Altera est aussi à l'origine
des processeurs softcores NIOS et NIOSII ainsi que le bus Avalon.
Le bus Avalon est un bus informatique destiné à l'implémentation sur du
matériel programmable (FPGA). Ses principaux atouts sont la simplicité de son
architecture, une conception prévue pour optimiser l'utilisation des ressources
matérielles et un support multi-maître.
i.bouganssa 13/11/2023

13
13/11/2023

27 La famille Xilinx
Xilinx, Inc. (1984) est une entreprise américaine de semi-conducteurs.
Inventeur du FPGA avec un premier produit en 1985, Xilinx fait partie des plus
grandes entreprises spécialisées dans le développement et la commercialisation de
composants logiques programmables, et des services associés tels que les logiciels de
CAO électroniques et formation.
En effet, Xilinx vend également des spécifications d'architectures, des fonctions très
simples comme des compteurs jusqu'à des systèmes complets comme des
microcontrôleurs.
Xilinx est également à l'origine du processeur softcore MicroBlaze.
Xilinx fabrique une large gamme de FPGA et de CPLD pour diverses applications.
En effet, l'offre commerciale de Xilinx est découpée en plusieurs gammes : (FPGA
hautes performances : gamme Virtex, FPGA pour la fabrication en grande série :
gamme Spartan et CPLD : gammes XC9500 et Coolrunner).
Les plus onéreux sont les FPGA Virtex (Virtex II/pro, Virtex4 et Virtex5).
Les composants Virtex5 sont disponibles, à bon prix, avec plusieurs catégories (LX, LXT, SXT, TXT et
FXT).
i.bouganssa 13/11/2023

Exemple d’application: (Nexys 3)


28

i.bouganssa 13/11/2023

14
13/11/2023

Exemple d’application: (Nexys 3)


29
Le circuit imprimé est Nexys3, une plate-forme complète de prêt-à utiliser
le développement de circuits basée sur un FPGA Xilinx Spartan 6 FPGA.
son bord haute vitesse port USB2, 16 MOctets Des dispositifs de
mémoire RAM et ROM, et plusieurs d'E / S et ports en font une plate-forme
idéale pour le numérique systèmes de toutes sortes, y compris
systèmes de processeurs intégrés basés sur Xilinx MicroBlaze.
Le port USB2 pensionnaire puissance
et une interface de programmation,
de sorte que le Conseil Nexys3 peut
être utilisé avec un ordinateur
Portable ou ordinateur pour créer un
design vraiment portable.
i.bouganssa 13/11/2023

Exemple d application: (Nexys 3)


30

i.bouganssa 13/11/2023

15
13/11/2023

31 Exemple d application: (Nexys 3)

• 500K porte Xilinx FPGA Spartan 6


• données de configuration de base de FPGA USB2 et à grande vitesse
transferts
• un port USB (batteries et / ou de prise murale peuvent également être
utilisés)
• 16 Mo de Micron PSDRAM et 16 Mo de ROM Intel Strata Flash
• Xilinx Flash Platform pour les configurations de FPGA non volatiles
• oscillateur 100MHz en plus prise pour la deuxième oscillateur
• 8 LED, 4 chiffres affichage à 7 segments, 5 boutons poussoir , huit
commutateurs à glissière

i.bouganssa 13/11/2023

32 Exemple d application: (Nexys 3)


Utilisateur I / O
Le conseil Nexys3 comprend plusieurs dispositifs d'entrée, des dispositifs de
sortie, et les ports de données, permettant à de nombreux modèles à être
mises en œuvre sans la nécessité pour tous les autres composants.
Entrées: Interrupteurs à glissière et boutons-poussoirs pour les boutons
poussoirs et huit commutateurs à glissière sont fournies pour les entrées
de circuit. Entrées à bouton-poussoir sont normalement bas, et ils sont
entraînés élevé que lorsque le bouton est pressé. Interrupteurs à glissière
génèrent des apports constants élevés ou faibles selon leur position.
Entrées à bouton-poussoir et interrupteur à glissière utilisent une
résistance série pour la protection contre les courts-circuits.

i.bouganssa 13/11/2023

16
13/11/2023

33 Exemple d application: (Nexys 3)


Sorties: LED
Huit LED sont fournis pour les sorties du circuit. Anodes LED sont chassés du
FPGA via 390 ohms résistances, donc sortie une logique '1' les éclairera
avec 3-4ma du courant d'entraînement. Un neuvième LED est fourni sous
tension LED et dixième LED indique l'état de programmation de FPGA.
Le conseil Nexys3 contient une anode commune affichage LED sept segments
à quatre chiffres. Chacun des quatre chiffres est composé de sept
segments disposés selon une configuration "chiffre 8", avec une diode
électroluminescente intégrée dans chaque segment.

i.bouganssa 13/11/2023

34 Initiation au VHDL
VHDL : VHSIC(abréviation de l'anglais Very High Speed Integrated Circuits) Hardware
Description Language.
Développé dans les années 80 aux États-Unis, le langage de description
VHDL est ensuite devenu une norme IEEE numéro 1076 en 1987.
Révisée en 1993 pour supprimer quelques ambiguïtés et améliorer la
portabilité du langage, cette norme est vite devenue un standard en matière
d'outils de description de fonctions logiques. A ce jour, on utilise le langage
VHDL pour :
- concevoir des ASIC,
- programmer des composants programmables du type PLD, CPLD et FPGA,
- concevoir des modèles de simulations numériques ou des bancs de tests.
i.bouganssa 13/11/2023

17
13/11/2023

35 Initiation au VHDL
L'électronicien a toujours utilisé des outils de description pour
représenter des structures logiques ou analogiques.
Le schéma structurel que l'on utilise depuis si longtemps et si souvent
n'est en fait qu'un outil de description graphique.
Aujourd'hui, l'électronique numérique est de plus en plus présente et tend
bien souvent à remplacer les structures analogiques utilisées jusqu'à
présent. Ainsi, l'ampleur des fonctions numériques à réaliser nous
impose l'utilisation d'un autre outil de description.
Il est en effet plus aisé de décrire un compteur ou un additionneur 64 bits
en utilisant l'outil de description VHDL plutôt qu'un schéma.
Le deuxième point fort du VHDL est d'être “un langage de description de
haut niveau”. D'autres types de langage de description, comme
l'ABEL par exemple, ne possèdent pas cette appellation.
En fait, un langage est dit de haut niveau lorsqu'il fait le plus possible
abstraction de l'objet auquel ou pour lequel il est écrit.

i.bouganssa 13/11/2023

36 Initiation au VHDL
Dans le cas du langage VHDL, il n'est jamais fait référence au composant
ou à la structure pour lesquels on l'utilise. Ainsi, il apparaît deux
notions très importantes :
1. portabilité des descriptions VHDL, c'est-à-dire, possibilité de cibler
une description : VHDL dans le composant ou la structure que l'on
souhaite en utilisant l'outil que l'on veut (en supposant, bien sûr,
que la description en question puisse s'intégrer dans le
composant choisi et
que l'outil utilisé possède une entrée VHDL) .
2. conception de haut niveau, c'est-à-dire qui ne suit plus la
démarche descendante : habituelle (du cahier des
charges jusqu'à la réalisation et le calcul des structures
finales) mais qui se “limite” à une description
comportementale directement issue des spécifications
techniques du produit que l'on souhaite obtenir.
i.bouganssa 13/11/2023

18
13/11/2023

37 Initiation au VHDL

Structure d’une description VHDL


A. Entité et architecture En VHDL, une structure logique est
décrite à l'aide d'une entité et d'une architecture de la façon
suivante :

i.bouganssa 13/11/2023

38 Initiation au VHDL
1) Déclaration des bibliothèques.
Toute description VHDL utilisée pour la synthèse a besoin de
bibliothèques. L’IEEE (Institut of Electrical and Electronics Engineers)
les a normalisées et plus particulièrement la bibliothèque IEEE1164.
Elles contiennent les définitions des types de signaux électroniques, des
fonctions et sous programmes permettant de réaliser des opérations
arithmétiques et logiques,...
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
Ces deux bibliothèques ont des fonctions de conversions de types et
elles permettent d’associer un entier avec des signaux électroniques.
Elles permettent d’écrire facilement des compteurs, décompteurs,
additionneurs, soustracteurs…
i.bouganssa 13/11/2023

19
13/11/2023

39 Initiation au VHDL
2) Déclaration de l’entité et des entrées / sorties (I/O).
Elle permet de définir le NOM de la description VHDL ainsi que les
entrées et sorties utilisées, l’instruction qui les définit c’est port :
Syntaxe: entity NOM_DE_L_ENTITE is
port ( Description des signaux d’entrées /sorties …);
end NOM_DE_L_ENTITE;
Exemple : entity TEST is
port ( CLOCK : in std_logic;
RESET : in std_logic;
Q : out std_logic_vector(1 downto 0)
);
end TEST;
i.bouganssa 13/11/2023

40 Initiation au VHDL
2) Déclaration de l’entité et des entrées / sorties (I/O).
Le SENS du signal.
- in : pour un signal en entrée.
- out : pour un signal en sortie.
- inout : pour un signal en entrée sortie
- buffer : pour un signal en sortie mais utilisé comme entrée dans la
description.

i.bouganssa 13/11/2023

20
13/11/2023

41 Initiation au VHDL
3) Déclaration de l’architecture correspondante à l’entité : description du
fonctionnement.
L’architecture décrit le fonctionnement souhaité pour un
circuit ou une partie du circuit.
En effet le fonctionnement d’un circuit est généralement
décrit par plusieurs modules VHDL. Il faut comprendre par
module le couple ENTITE/ARCHITECTURE. Dans le cas de
simples PLDs on trouve souvent un seul module.
L’architecture établit à travers les instructions les relations
entre les entrées et les sorties. On peut avoir un
fonctionnement purement combinatoire, séquentiel voire
les deux séquentiel et combinatoire.
architecture ARCH of TEST is
begin
………………………
end ARCH;

i.bouganssa 13/11/2023

Initiation au VHDL
Exemple 1 :
42 -- Opérateurs logiques de base
Library ieee;
Use ieee.std_logic_1164.all;
entity PORTES is
port (A,B :in std_logic;
Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8:out std_logic);
end PORTES;
architecture DESCRIPTION of PORTES is
begin
Y1 <= A and B;

Y2 <= A or B;

Y3 <= A xor B;

Y4 <= not A;

Y5 <= not B;

Y6 <= A nand B;

Y7 <= A nor B;

Y8 <= A xnor B;
i.bouganssa 13/11/2023

end DESCRIPTION;

21
13/11/2023

43 Initiation au VHDL
4) Les instructions de base (mode « concurrent »), logique combinatoire.
Qu’est ce que le mode « concurrent » ? Pour une description VHDL toutes les
instructions sont évaluées et affectent les signaux de sortie en même temps.
L’ordre dans lequel elles sont écrites n’a aucune importance. En effet la
description génère des structures électroniques, c’est la grande différence
entre une description VHDL et un langage informatique classique.
Dans un système à microprocesseur, les instructions sont exécutées les unes à la
suite des autres. Avec VHDL il faut essayer de penser à la structure qui va être
générée par le synthétiseur pour écrire une bonne description, cela n’est pas
toujours évident.
Exemple : Pour le décodeur 1 parmi 4, l’ordre dans lequel seront écrites les
instructions n’a aucune importance.

i.bouganssa 13/11/2023

44 Initiation au VHDL
architecture DESCRIPTION of DECOD1_4 is
begin
D0 <= (not(IN1) and not(IN0)); -- première instruction
D1 <= (not(IN1) and IN0); -- deuxième instruction
D2 <= (IN1 and not(IN0)); -- troisième instruction
D3 <= (IN1 and IN0); -- quatrième instruction
end DESCRIPTION;
---------------------------------------------------------------
architecture DESCRIPTION of DECOD1_4 is
begin
D1 <= (not(IN1) and IN0); -- deuxième instruction
D2 <= (IN1 and not(IN0)); -- troisième instruction
D0 <= (not(IN1) AND not(IN0)); -- première instruction
D3 <= (IN1 AND IN0); -- quatrième instruction
end DESCRIPTION;
i.bouganssa 13/11/2023

22
13/11/2023

45 Initiation au VHDL
Les affectations simple : <= , & , …
l’opérateur le plus utilisé en VHDL. En effet il permet de modifier l’état d’un signal en fonction d’autres
signaux et/ou d’autres opérateurs.
Exemple avec des portes logiques : S1 <= E2 and E1 ;
Les valeurs numériques que l’on peut affecter à un signal sont les suivantes :
- ‘1’ ou ‘H’ pour un niveau haut avec un signal de 1 bit.
- ‘0’ ou ‘L’ pour un niveau bas avec un signal de 1 bit.
- ‘-’ pour un état quelconque, c’est à dire ‘0’ ou ‘1’.
- Pour les signaux composés de plusieurs bits on utilise les guillemets " … " , voir les exemples de bases
numériques utilisées pour les bus peuvent être :
BINAIRE, exemple : BUS <= "1001" ; -- BUS = 9 en décimal
HEXA, exemple : BUS <= X"9" ; -- BUS = 9 en décimal
OCTAL, exemple : BUS <= O"11" ; -- BUS = 9 en décimal
Exemple: Soit A et B de type 3 bits et S1 de type 8 bits et A = "001" et B ="110"
S1 <= A & B & "01" ;
i.bouganssa 13/11/2023
-- S1 prendra la valeur suivante après cette affectation S1 = "001110 01"

46 Initiation au VHDL

Les opérateurs logiques:

Exemples :
S1 <= A sll 2 ; -- S1 = A décalé de 2 bits à gauche.
S2 <= A rol 3 ; -- S2 = A avec une rotation de 3 bits à gauche
-- Si A est de type std_logic_vector(7 downto 0)
S1 <= ‘0’ & A(7 downto 1); -- décalage d’un bit à droite
S1 <= "000" & A(7 downto 3); -- décalage de trois bits à droite
S1 <= A(6 downto 0) & ‘0’; -- décalage d’un bit à gauche
S1 <= A(4 downto 0) & "000"; -- décalage de trois bits à gauche

i.bouganssa 13/11/2023

23
13/11/2023

47 Initiation au VHDL
Les opérateurs arithmétiques:

NB: Pour pouvoir utiliser les opérateurs ci-dessus il faut rajouter les bibliothèques
suivantes au début du fichier VHDL:
Use ieee.numeric_std.all ;
Use ieee.std_logic_arith.all ;
Exemples :
S1 <= A – 3 ; -- S1 = A – 3 On soustrait 3 à la valeur de l’entrée / signal
A
S1 <= S1 + 1 ; -- On incrémente de 1 le signal S1
S1 <= A * B ; -- S1 = A multiplié par B : A et B sont codés sur 4 bits
S2 <= A / B ; -- S2 = A divisé par B : A et B sont codés sur 4 bits

i.bouganssa 13/11/2023

Initiation au VHDL
48

Les opérateurs relationnels:


Ils permettent de modifier l’état d’un signal ou de signaux
suivant le résultat d’un test ou d’une condition. En logique
combinatoire ils sont souvent utilisés avec les instructions :
- when … else …
- with ... Select …

i.bouganssa 13/11/2023

24
13/11/2023

49 Initiation au VHDL
Affectation conditionnelle:
Cette instruction modifie l’état d’un signal suivant le résultat
d’une condition logique entre un ou des signaux, valeurs,
constantes.
SIGNAL <= expression when condition
[else expression when condition]
[else expression];
Exemple N°1 : S1 prend la valeur de E2 quand E1=’1’ sinon S1 prend la valeur ‘0’.
S1 <= E2 when ( E1= ‘1’) else ‘0’;
Exemple N°2 : Structure évoluée d’un multiplexeur 4 vers 1.
S <= E1 when (SEL="00" )
else E2 when (SEL="01" )
else E3 when (SEL="10" )
else E4 ;
i.bouganssa 13/11/2023

Initiation au VHDL
50

Affectation sélective:
Cette instruction permet d’affecter différentes valeurs à un signal, selon
les valeurs prises par un signal dit de sélection.
with SIGNAL_DE_SELECTION select
SIGNAL <= expression when valeur_de_selection,
[expression when valeur_de_selection,]
[expression when others];
Exemple N°1 : Multiplexeur 4 vers 1
with SEL select
S2 <= E1 when "00",
E2 when "01",
E3 when "10",
E4 when others;

i.bouganssa 13/11/2023

25
13/11/2023

Exemple N°2 : Affectation sélective avec les autres cas forcés à ‘0’.
51 Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity TABLE1 is
port (
E1,E2 : in std_logic;
SEL : in std_logic_vector(1 downto 0);
S2 : out std_logic
);
end TABLE1;
architecture DESCRIPTION of TABLE1 is
begin
with SEL select
S2 <= E1 when "00",
E2 when "01",
'0' when others; -- Pour les autres cas de SEL S2 prendra la valeur 0 logique
end DESCRIPTION;

i.bouganssa 13/11/2023

Exemple 3 :
-- Décodeurs 7 segments
entity DEC7SEG is
52 port (DEC :in std_logic_vector(3 downto 0);
SEG:out std_logic_vector(6 downto 0)
);
end DEC7SEG;
architecture DESCRIPTION of DEC7SEG is
begin
SEG <= "1111110" when DEC = 0
else "0110000" when DEC = 1
else "1101101" when DEC = 2
else "1111001" when DEC = 3
else "0110011" when DEC = 4
else "1011011" when DEC = 5
else "1011111" when DEC = 6
else "1110000" when DEC = 7
else "1111111" when DEC = 8
else "1111011" when DEC = 9
else "-------";
end DESCRIPTION;
i.bouganssa 13/11/2023

26
13/11/2023

53

13/11/202
i.bouganssa
3

54 Initiation au VHDL
5) Les instructions du mode séquentiel.
Définition d’un PROCESS.
Un process est une partie de la description d’un circuit dans laquelle les
instructions sont exécutées séquentiellement c’est à dire les unes à la suite
des autres. Il permet d’effectuer des opérations sur les signaux en utilisant
les instructions standard de la programmation structurée comme dans les
systèmes à microprocesseurs.
L’exécution d’un process est déclenchée par un ou des changements d’états
de signaux logiques. Le nom de ces signaux est défini dans la liste de
sensibilité lors de la déclaration du process.
Exemple : [Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux)
Begin
-- instructions du process
end process [Nom_du_process] ;
i.bouganssa 13/11/2023

27
13/11/2023

Initiation au VHDL
55
Règles de fonctionnement d’un process :
1) L’exécution d’un process a lieu à chaque changement d’état d’un signal de la
liste de sensibilité.
2) Les instructions du process s’exécutent séquentiellement.
3) Les changements d’état des signaux par les instructions du process sont pris en
compte à la fin du process.
L’assignation conditionnelle:
if condition then instructions
[elsif condition then instructions]
[else instructions]
end if ;
Exemple:
if (RESET=’1’) then SORTIE <= ”0000”;
end if ;

i.bouganssa 13/11/2023

56 Initiation au VHDL
L’assignation sélective:
case signal_de_slection is
when valeur_de_sélection => instructions
[when others => instructions]
end case;
Exemple:
case SEL is
when “000” => S1 <= E1;
when “001” => S1 <= ‘0’;
when “010” | “011” => S1 <=’1’;
-- La barre | permet de réaliser un ou logique entre les deux valeurs “010” et “011”
when others => S1 <= ‘0’;
end case;
NB: ne pas confondre => (implique) et <= (affecte).
i.bouganssa 13/11/2023

28
13/11/2023

Initiation au VHDL
57
Exemples de process : Déclaration d’une bascule D.
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity BASCULED is
port (
D,CLK : in std_logic;
S : out std_logic
);
end BASCULED;
architecture DESCRIPTION of BASCULED is
begin
PRO_BASCULED : process (CLK)
begin
if (CLK'event and CLK ='1') then
S <= D;
end if;
end process PRO_BASCULED;
end DESCRIPTION;
i.bouganssa 13/11/2023

58

13/11/202
i.bouganssa
3

29
13/11/2023

59

13/11/202
i.bouganssa
3

Initiation au VHDL
60 Commentaires:
- Seul le signal CLK fait partie de la liste de sensibilité. D’après les règles de
fonctionnement énoncées précédemment, seul un changement d’état du
signal CLK va déclencher le process et par conséquent évaluer les
instructions de celui-ci.
- L’instruction if (CLK'event and CLK='1') then permet de détecter un front
montant du signal CLK. La détection de front est réalisée par l’attribut event
appliqué à
l’horloge CLK. Si on veut un déclenchement sur un front descendant, il faut
écrire
l’instruction suivante : if (CLK'event and CLK='0').
- Les bibliothèques IEEE possèdent deux instructions permettant de détecter
les fronts
montants ) rising_edge(CLK) ou descendants falling_edge(CLK).
- Si la condition est remplie alors le signal de sortie S sera affecté avec la
valeur du signal d’entrée D.

i.bouganssa 13/11/2023

30

Vous aimerez peut-être aussi