Vous êtes sur la page 1sur 80

Circuits reprogrammables FPGA / Langage VHDL

Omar DIOURI
Email : diouri@upf.ac.ma 1
Année Universitaire 2022/2023
Présentation de la Logique Programmée
Actuellement les Objets Techniques (O.T.) utilisent de plus en plus la logique programmée
(µP, Mémoires, µC, ...). Ces structures ont besoin de s'interfacer entre elles. Elles utilisent
généralement pour réaliser ces interfaces des fonctions à base de fonctions logiques
élémentaires, compteurs, registres , .... Le nombre de circuits nécessaires pour remplir ces
fonctions peut devenir très vite important.

Pour diminuer les coûts de fabrication, de développement et de maintenance, les fabricants


de circuits intégrés ont donné naissance aux Circuits Logique Programmable ou encore
P.L.D. (Programmable Logic Device).

Ces circuits sont capables pour un O.T. de réaliser plusieurs fonctions logiques dans un seul
circuit. Si ces fonctions étaient réalisées à base des circuits logiques classiques, il en
faudrait plusieurs circuits.

Un autre avantage, l'évolution des fonctions d'un O.T. s'effectue par programmation
comparée à une solution classique où il faut refaire un circuit imprimé si on veut modifier le
fonctionnement.
La classification des P.L.D
❑P.A.L.
P.A.L. signifie Programmable Array Logic, c'est à dire réseau logique
programmable. La programmation de ces circuits s'effectue par destruction de
fusibles. Une fois programmés on ne peut plus les effacer. On distingue deux sous
familles:
- Les P.A.L. combinatoires ou P.A.L. simples. Ils sont constitués de fonctions
logiques combinatoires.
- Les P.A.L. à registres ou F.P.L.S. Field Programmable Logic Séquencer pour
séquenceur logique programmable. Ils sont constitués de logique combinatoire et
séquentielle (Registre).

❑Les P.A.L. effaçables: E.P.L.D. Ce qui signifie Erasable Programmable Logic Device,
peuvent être effacés par U.V. ou électriquement. Ils sont encore appelés P.A.L. CMOS.

❑Les G.A.L. Ce qui signifie Generic Array Logic ou encore réseau logique générique
La classification des P.L.D

❑Les C.P.L.D. Ce qui signifie Complex Programmable Logic Device. Ces circuits
sont composés de plusieurs P.A.L.s élémentaires (Par exemple l’équivalent de
P.A.L.s 22V10) reliés entre-eux par une zone d’interconnexion. Grâce à cette
architecture, ils permettent d’atteindre des vitesses de fonctionnement élevées
(plusieurs centaine de Mhz).

❑Les F.P.G.A. à anti fusibles permettent une plus grande intégration de portes et ils
ne sont pas effaçables électriquement. Le nom anti-fusible vient de la
programmation des connexions qui s'effectue par fermeture de circuits, comparé
aux fusibles où l'on ouvre les circuits.
La classification des P.L.D
P.A.L. Programmable Array Logic

La programmation s’effectue par destruction de fusible (un fusible détruit équivaut à un


circuit ouvert), voir schéma ci-dessous.

A partir de cette structure de base il va être possible de réaliser de nombreuses fonctions


logiques. La programmation va constituer à détruire les fusibles pour obtenir les fonctions
désirées, en sachant que lors de l'achat d'un P.A.L. tous les fusibles sont vierges ou pas
détruits.
La classification des P.L.D
P.A.L. Programmable Array Logic
La symbolisation et la représentation

La représentation schématique de la précédente structure demande beaucoup d'espace pour


représenter un P.A.L. en entier. Les industriels ont adopté une autre représentation voir ci-
dessous.

a: Porte ET à 3 entrées.
b: Porte ET à 3 entrées représentation P.A.L. les croix représentent les fusibles intacts.
c: Représentation de la structure interne d’un P.A.L.
La classification des P.L.D
P.A.L. Programmable Array Logic
La symbolisation et la représentation
La classification des P.L.D
P.A.L. Programmable Array Logic
Les différentes structures
❖ Structure générale

Tout P.A.L. est constitué :


- D'entrées (Input): I1 à In avec 8<n<20.
- De sorties (Output) Ou d’entrées / sorties (I/O) de type Totem Pôle ou Trois Etats :
O1 à On ou IO1 à IOn (2<n<15).
On peut trouver aussi:
- Une entrée d'horloge (Clock): Clk ou Clock.
- Une entrée de validation des sorties trois états: OE (Output Enable) ou Enable.
- Une entrée de remise à zéro des registres: RESET.
La classification des P.L.D
P.A.L. Programmable Array Logic
Les différentes structures
❖ Structure générale
D'un point de vue fonctionnel un P.A.L. est constitué d'une zone d'entrée, zone de fusibles ou
matrice de programmation et une structure de sortie non fusibles ou matrice de
programmation de sortie non programmable déterminant le type de circuit.
La classification des P.L.D
P.A.L. Programmable Array Logic
Les différentes structures
❖ Combinatoire

Il existe trois types:


- H -> (High) Porte ET suivit d'une Porte OU. Sortie active à l'état haut.
- L -> (Low) Porte ET suivit d'une Porte NON OU. Sortie active à l'état bas.
- C -> (Combinée) programmable en type H ou L.
La classification des P.L.D
P.A.L. Programmable Array Logic
Les différentes structures
❖ Séquentielle

Il existe trois types:


- R -> (Register): Registre. Ces circuits sont composés de bascule D. Les sorties des
bascules sont de type trois états contrôlées par un signal de validation Enable ou OE, et
une horloge est commune à toutes les bascules (clock).
La classification des P.L.D
P.A.L. Programmable Array Logic
Les différentes structures
❖ Séquentielle
- X -> (Register Or Exclusif): Ou Exclusif et Registre.

- RA -> (Register Asynchron): Registre asynchrone.


La classification des P.L.D
Circuit GAL (Generic Array Logic)

D’après la structure des PAL, il est clair que ces derniers présentent l’inconvénient d’être
programmable une seule fois, ce qui donne un gaspillage important, lorsqu’on veut
développer un nouveau circuit. Pour remédier à ce problème, la firme LATICE a pensé à
remplacer les fusibles irréversibles des PAL, par des transistors MOSFET pouvant être
régénérés et atteindre les objectifs suivants :

- Proposer des produits fabriqués selon une technologie qui permet des tests sur la zone de
programmation lors de la fabrication du circuit, ce qui été impossible pour les PAL puisque
cela consistait à faire sauter des fusibles.
- Permettre de remplacer les PAL dans n’importe quelle application.
- Avoir une plus grande souplesse de configuration des entrées/sorties par rapport à celle
des PAL.
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Réseau logique de portes

La structure de base est donc la même que celle des PAL, matrice ET programmable
matrice OU fixe comme indiqué sur la figure
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Réseau logique de portes

Au niveau de la structure interne, les GAL sont constitués de transistor CMOS alors que les
PAL classiques sont constitués de transistors bipolaires. Il reste encore un inconvénient
important dans les circuits PAL qui vient du fait que leurs structures de sorties soit figée
pour chaque composant.
Il est donc nécessaire de choisir le type de circuit PAL selon les fonctions à réaliser. Pour
cela on a introduit dans la structure de sorties des circuits GAL des macros cellules
programmables qui rendent le circuit versatile, ce qui veut dire qu’il est possible, par
programmation, de choisir entre une configuration de sortie combinatoire ou une
configuration de sortie séquentielle.
Donc un circuit GAL est constitué de :
- Une matrice AND reprogrammable et effaçable électriquement (EECMOS).
- Une matrice OR fixe (comme celle des PAL).
- Une configuration de sortie programmable à base de macro cellule (OLMC).
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Matrice AND

Dans un circuit PAL la matrice AND contient des fusibles, alors que dans un circuit GAL
elle est reprogrammable et effaçable électriquement et contient des cellules E2CMOS qui
ont pour élément de base le transistor MOSFET.
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Macro-cellule de sortie (OLMC)

La macro-cellule programmable OLMC (Output Logic Macro Cell), permet la réalisation


de divers structures de sorties et ainsi d’émuler n’importe quel circuit PAL. Cette cellule
est ajoutée après la matrice OR comme il est indiqué sur la figure.
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Macro-cellule de sortie (OLMC)

On donne un exemple de représentation de la structure d’une macro-cellule OLMC sur


le schéma de la figure, pour certains circuits GAL (GAL22V10, GAL18V10 et
GAL26CV12).
La classification des P.L.D
Circuit GAL (Generic Array Logic)
Macro-cellule de sortie (OLMC)

Selon la configuration des multiplexeurs on obtient différentes structures de sorties


résumées sur le schéma de la figure
La classification des P.L.D
Circuit GAL (Generic Array Logic)

GAL 16V8
La classification des P.L.D
C.P.L.D ( Complex Programmable Logic Device)

Ces circuits ont une capacité en nombre de portes et en possibilités de configuration très
supérieure à celle des PALs. Leurs architectures sont basées sur celles des PALS. Un CPLD
c’est l’équivalent de plusieurs PALs mis dans le même circuit associé à une zone
d’interconnexion. Le nombres de portes peut varier entre 100 et 100 000 portes logiques et
entre 16 et 1000 bascules voir plus.

Structure générale d’un CPLD


La classification des P.L.D
C.P.L.D ( Complex Programmable Logic Device)
Exemple de CPLD le circuit Isp1016 de LATTICE
La classification des P.L.D
F.P.G.A (Fields Programmable Gate Array)

Lancé sur le marché en 1984 par XILINX, le FPGA (Field Programmable Gate Array) est
un circuit pré-diffusé programmable. Le concept du FPGA est basé sur l’utilisation d’une
unité appelée LUT (look up table) comme élément combinatoire de la cellule de base. La
LUT peut être vu comme une mémoire qui permet de créer n’importe quelle fonction
logique combinatoire à 4 variables d’entrées. On l’appel aussi générateur de fonctions
(Function generator).
La classification des P.L.D
F.P.G.A (Fields Programmable Gate Array)

La puissance de ces circuits est telle qu’ils peuvent être composés de plusieurs
milliers voire millions de portes logiques et de bascules. Les deux plus grands
constructeurs de FPGA sont XILINX et ALTERA.

Ils sont composés de blocs logiques élémentaires (plusieurs milliers de portes) qui
peuvent être interconnectés.
La classification des P.L.D
F.P.G.A (Fields Programmable Gate Array)

Elle contient une LUT à 4 entrées et une


bascule D qui permet la réalisation de
fonctions logiques séquentielles. En sortie
nous avons un multiplexeur 2 vers 1 de
sorties autorise la sélection des deux types
de fonctions combinatoire ou séquentielle.
Nous avons sur la figure un exemple de
représentation d’une cellule LUT
La classification des P.L.D
F.P.G.A (Fields Programmable Gate Array)

Les cellules de base d’un FPGA sont disposées en lignes et en colonnes. Des lignes
d’interconnexions programmables qui traversent le circuit, horizontalement et
verticalement, entre les différentes cellules, et des lignes d’interconnexions permettant
de relier les cellules entre elles et avec les ports d’entrées/sorties. Les connexions
programmables sur ces lignes sont réalisées par des transistors MOS dont l’état est
contrôlé par des cellules mémoires SRAM. Ainsi, toute la configuration d’un FPGA est
contenue dans des cellules SRAM.
La classification des P.L.D
F.P.G.A (Fields Programmable Gate Array)
VHDL
Introduction

Pourquoi avoir créé un langage de description de structures électroniques (H.D.L. Hardware


Description language) VHDL ?

L’abréviation VHDL signifie VHSIC Hardware Description Language (VHSIC : Very High
Speed Integrated Circuit).
Ce langage a été écrit dans les années 70 pour réaliser la simulation de circuits
électroniques.
On l’a ensuite étendu en lui rajoutant des extensions pour permettre la conception
(synthèse) de circuits logiques programmables (P.L.D. Programmable Logic Device).
VHDL
Relation entre une description VHDL et les circuits logiques programmables

L’implantation d’une ou de plusieurs descriptions VHDL dans un PLD va dépendre de


l’affectation que l’on fera des broches d’entrées / sorties et des structures de base du circuit
logique programmable.
Schéma fonctionnel d’implantation de descriptions VHDL dans un circuit logique programmable.
VHDL
Relation entre une description VHDL et les circuits logiques programmables

Lors de la phase de synthèse chaque bloc sera matérialisé par des portes et/ou des
bascules. La phase suivante sera d’implanter les portes et les bascules à l’intérieur du
circuit logique.

Cette tâche sera réalisée par le logiciel placement/routage, au cours de laquelle les
entrées et sorties seront affectées à des numéros de broches.
VHDL
Organisation fonctionnelle de développement d’un PLD.
VHDL
Organisation fonctionnelle de développement d’un PLD.
VHDL
Structure d’une description VHDL simple

Une description VHDL est composée de 2 parties indissociables à savoir :


- L’entité (ENTITY), elle définit les entrées et sorties.
- L’architecture (ARCHITECTURE), elle contient les instructions VHDL permettant de
réaliser le fonctionnement attendu.
VHDL
Structure d’une description VHDL simple
Exemple :
VHDL
Structure d’une description VHDL simple
Exemple :
VHDL
Structure d’une description VHDL simple
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,...

La directive Use permet de sélectionner les bibliothèques à utiliser.


VHDL
Structure d’une description VHDL simple
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 :
VHDL
Structure d’une description VHDL simple
Déclaration de l’entité et des entrées / sorties (I/O)

L’instruction port .

On doit définir pour chaque signal : le NOM_DU_SIGNAL, le sens et le type.


VHDL
Structure d’une description VHDL simple
Déclaration de l’entité et des entrées / sorties (I/O)
❑ Le NOM_DU_SIGNAL :
Il est composé de caractères, le premier caractère doit être une lettre, sa longueur est
quelconque, mais elle ne doit pas dépasser une ligne de code.
VHDL n’est pas sensible à la « casse », c’est à dire qu’il ne fait pas la distinction entre les
majuscules et les minuscules.

❑ 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.
VHDL
Structure d’une description VHDL simple
Déclaration de l’entité et des entrées / sorties (I/O)
Le TYPE :
Le TYPE utilisé pour les signaux d’entrées / sorties est :
- le std_logic pour un signal.
- le std_logic_vector pour un bus composé de plusieurs signaux.

Par exemple un bus bidirectionnel de 5 bits s’écrira :


LATCH : inout std_logic_vector (4 downto 0) ;
Où LATCH(4) correspond au MSB et LATCH(0) correspond au LSB.

Les valeurs que peuvent prendre un signal de type std_logic sont :


- ‘0’ ou ‘L’ : pour un niveau bas.
- ‘1’ ou ‘H’ : pour un niveau haut.
- ‘Z’ : pour état haute impédance.
- ‘-‘ : Quelconque, c’est à dire n’importe quelle valeur.
VHDL
Structure d’une description VHDL simple
Déclaration de l’entité et des entrées / sorties (I/O)
Exemple :
VHDL
Structure d’une description VHDL simple
Déclaration de l’entité et des entrées / sorties (I/O)
Exemple :
VHDL
Structure d’une description VHDL simple
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
relations entre les entrées et les sorties. On peut avoir un fonctionnement purement
combinatoire, séquentiel voire les deux séquentiel et combinatoire.
VHDL
Structure d’une description VHDL simple
Déclaration de l’architecture correspondante à l’entité : description du fonctionnement
Exemple :
VHDL
Structure d’une description VHDL simple
Déclaration de l’architecture correspondante à l’entité : description du fonctionnement
Exemple :
VHDL
Structure d’une description VHDL simple
Déclaration de l’architecture correspondante à l’entité : description du fonctionnement
Exemple :
VHDL
Structure d’une description VHDL simple
Déclaration de l’architecture correspondante à l’entité : description du fonctionnement
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL

Commentaire
L’entrée RESET est prioritaire sur l’entrée
SET qui est à son tour prioritaire sur le front
montant de l’horloge CLK. Cette description
est asynchrone car les signaux d’entrée SET
et RESET sont mentionnés dans la liste de
sensibilité du process.
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL
VHDL

Vous aimerez peut-être aussi