Vous êtes sur la page 1sur 46

PLD 

: Programmable Logique Device

– PAL : Programmable Array Logic


– GAL : Generic Array Logic
– CPLD : Complex Programmable Logic Device
– FPGA : Field Programmable Gate Array
FPGA
Field Programmable Gate Array

→ Circuit intégré contenant un très grand nombre de portes logiques


organisées en blocs logiques configurables et interconnectables
→ permet le prototypage rapide des circuits numériques à grande
complexité
→ sont assimilables à des A.S.I.C. programmables par l’utilisateur

→ « Programmer » un FPGA = Configurer et interconnecter


des blocs logiques
Architecture des FPGA
– Blocs d ’entrées/sorties « IOB » configurables
• Entrée, sortie ou les deux, mémorisation dans une bascule D
• niveaux logiques LVTTL, LVCMOS, … 3.3V, 2.5V,…
• pull-up ou pull-down interne sur les entrées
– Blocs logiques « CLB » configurables
• Blocs combinatoires 4 entrées une sortie (en général)
• Bascules D pour la mémorisation
– Lignes d ’interconnexions    « PSM » configurables
• lignes courtes
• lignes longues
– Autres : multiplicateurs , PLL, ram, processeur, CAN, etc…
Description simplifiée d’un FPGA

Entrée/Sortie (IOB)

Bloc logique (CLB)

Zone d ’interconnexions
Description simplifiée d ’un FPGA
Spartan III
Buffers Gestion d ’horloge (DCM)

Bloc logique (CLB)

Ram
Entrée/Sortie (IOB)

Multiplieurs

Zone d ’interconnexions
Blocs d ’interconnexions programmables(PSM)
Dans les FPGA les
blocs sont
interconnectés de
différentes façons :
→ des optimisations
de routage sont
possibles
→ sélections de
lignes ou colonnes
→ canaux de
routage rapide
(longues distances)

spartan3 XC3S200
Bloc d ’entrée/sortie (IOB)

Multiplexeurs positionnés lors de la configuration

Mémorisation
de la sortie

Mémorisation
de l ’entrée
spartan3 XC3S200
Entrée « directe »
Entrée mémorisée dans une bascule
Sortie « directe »
Sortie mémorisée dans une bascule
Bloc d ’entrée/sortie (IOB)

Autorisation de la sortie Driver de sortie à 3 états

Adaptation électrique des entrées par résistance


Look up table (LUT)

0
1
0
4 entrées LUT 1 sortie Sortie
24 bits

SRAM 16*1 bits 1


(Look Up Table) 4 entrées

- Les 4 entrées permettent d ’adresser 16 cellules mémoires de


1 bit chacune (24)
- Le contenu de la table permet d ’obtenir n ’importe quelle
fonction logique de 4 entrées binaires.
Principe de fonctionnement
d ’une cellule logique de base

Bascule Mux
4 entrées LUT D Q

Ck Positionné lors de
SRAM de 16 bits la configuration
(Look Up Table) CE

Mémorisation
du résultat
Principe de fonctionnement
d ’une cellule logique de base

Fonctionnement purement combinatoire

Bascule
4 entrées LUT D Q

Ck Choix
SRAM de 16 bits
(Look Up Table) CE
Principe de fonctionnement
d ’une cellule logique de base

Mémorisation du résultat

Bascule
4 entrées LUT D Q

Ck
Choix
SRAM de 16 bits
(Look Up Table) CE

Mémorisation
du résultat
Cellule logique de base avec logique de propagation
de la retenue (CL)

Pour la réalisation de structures d’additions à propagation


de la retenue CPA (Carry Propagate Adder )
Bloc logique configurable (CLB)

spartan3 XC3S200
Horloges

• Des entrées spécialisées sont prévues pour recevoir les signaux


d'horloge et les distribuer à l'intérieur du circuit

• les DCM (Digital Clock Managers) sont des blocs internes pour la gestion
du signal d'horloge:

• Ils génèrent d'autres fréquences d'horloge et des déphasages à partir du


signal d ’horloge externe, en éliminant le « jitter »

•Les DCM sont basés sur des PLL (phase-locked loops)


4 blocs de gestion d ’horloge (DCM Spartan 3)

f
f avec déphasage
2.f
f /(1,5 2 2,5...16)
( 2…32)/(1..32) . f
blocs de gestion d ’horloge (Virtex II)
Technologies utilisées par les différents fabricants
Programmation des FPGA Xilinx (sRAM)

• La chaîne de bits de configuration est envoyée en série dans la


mémoire vive interne de configuration par :
• Connexion JTAG (Joint Test Action Group)
• Mémoire externe flash à accès série

Le transfert est rythmé


par une Horloge
Exemples de familles de FPGA
FPGA Xilinx

→ Famille Virtex pour les hautes performances


→ Famille Artix pour les bas coûts et la basse
consommation d’énergie;
→ Famille Spartan
→ Famille Kintex pour des solutions
intermédiaires.
Exemples de familles de FPGA
FPGA Altera

→ Famille Stratix, commercialisée depuis 2002,


vise les hautes performances ;
→ Famille Cyclone, aussi commercialisée en
2002, vise les dispositifs à bas coût et à basse
consommation d’énergie ;
→ Famille Arria, apparue en 2007, propose des
circuits FPGA intermédiaires.
Flot typique de CAO pour FPGA
Outils logiciels génériques

• Synopsis, Mentor, ViewLogic, ASYL, CADENCE, …

Avantages:
– un seul apprentissage pour tous les composants
– permet une conception détachée du composant cible…

Inconvénients :
– toujours un peu en retard sur les derniers composants sortis
– plus chers
– Le Programme de routage constructeur est nécessaire
Outils logiciels spécifiques

• Ne permettent que le développement des composants du constructeurs

• Ex : Actel Logiciel Designer, Altera Max.PlusII, AMD Mach XL,


Lattice IspDesignEXPERT, Xilinx ISE renommé VIVADO, Quartus II,

• Avantages :
– ils optimisent au mieux la synthèse pour le composant ciblé
– toujours à jour sur le dernier composant
• Inconvénients :
– ils nécessitent un apprentissage à refaire si on souhaite
changer de constructeur
Les interfaces de saisie

• Schéma électronique:
On place et on relie des composants
Le fichier HDL est créé automatiquement

• Saisie en mode texte en VHDL ( Verilog, Abel…)


Description structurelle
Description comportementale
Génération du composant pour la saisie schématique

• Autre : Saisie graphique de diagramme d ’états


La synthèse logique

• Traduit en «blocs logiques élémentaires interconnectés »


les fichiers du projet.

• L ’utilisateur peut agir sur la façon dont la synthèse s ’effectue.


Par exemple :
Codage « one-hot » ou binaire pour les machines séquentielles
...
• Le résultat de la synthèse peut être affiché sous forme :
- classique ne tenant pas compte de l ’architecture du FPGA
- ou de schémas adapté à l ’architecture du FPGA
La simulation fonctionnelle

• Simule le fonctionnement du circuit avant son implantation

• Utile pour détecter des erreurs de conception

• Ne tient pas compte des contraintes et aléa de


fonctionnement liées au composant ciblé:
• fréquences maximales d ’horloge
• possibilités de routage
• ressources insuffisantes
• temps de transfert réel dans les circuits logiques
•…etc...
Le placement - routage

• Implante le circuit dans le composant cible

• Affecte les pattes d ’entrées/sorties

• Mode d ’optimisation (en surface ou en vitesse)

• Génère le fichier de configuration à télécharger dans la cible

• Produit un rapport avec les ressources utilisées et les temps


de propagation de broche à broche.
La simulation « post-routage »

• La simulation tient compte de l ’implantation dans le


composant.

• Elle permet de vérifier si le circuit répond au cahier des


charges
Chargement dans la cible

• Directement par l ’interface JTAG dans la mémoire SRAM


de configuration

• Indirectement :
• Le fichier est tout d ’abord stocké dans une mémoire
flash à accès série externe (ou interne).
• A la mise sous tension du FPGA il y a recopie de la
mémoire flash vers la SRAM de configuration
Tests sur la cible

• On effectue des tests avec des signaux réels sur la cible pour
valider le circuit créé.

• L ’interface JTAG est utile pour sonder l ’état logique des


broches du circuit en fonctionnement
Autres types de circuits programmables et
perspectives

→ FPAA : Field Programmable Analog Arrays


– Circuits programmables Analogiques :
composés de cellules analogiques permettant
de réaliser toutes les fonctions analogiques
souhaitées.
– langage de programmation : extension du
VHDL (VHDL-AMS)
→ Processeurs avec zone FPGA
Projet FPGA

Conception « Top-Down »
→ Décomposer le circuit principal en blocs fonctionnels simples
interconnectés.
→ Chaque bloc fonctionnel complexe peut, à son tour, être décomposé
en éléments plus simples

Réalisation « Bottom-up »
→ Mettre au point chacun des blocs fonctionnels séparément
→ Regrouper les blocs pour réaliser le circuit principal et tester le
fonctionnement global
Exo. 1 Calcul du bit de parité (paire ou impaire)

Un bit de parité, ou bit de contrôle, est un bit ajouté à une chaîne de


code binaire pour garantir que le nombre total de 1 bits dans la
chaîne est pair ou impair. Les bits de parité sont utilisés comme la
forme la plus simple de code de détection d'erreur.
→ Écrire un programme VHDL pour réaliser un circuit générateur
de bit de parité paire ou impaire d’un mot binaire de 8 bits.
→ Écrire un programme VHDL pour réaliser le circuit générateur
d’erreur qui à la réception du mot binaire avec son bit de parité
(ainsi que le type de parité) génère un bit d’erreur en cas où le bit
de parité est incorrect.
Exo. 2 Convertisseur analogique-numérique Flash
(CAN Flash).
Exo. 2 Convertisseur analogique-numérique Flash
(CAN Flash).

On voudrait réaliser, en utilisant Entrées (255) Sorties


un FPGA, la partie logique du X255..X1 8 bits
CAN Flash (Encodeur à priorité)
dont le fonctionnement est décrit 00000000..00000000 00000000
par la table de vérité suivante : 00000000..00000001 00000001
00000000..00000011 00000010
→ Donner la description VHDL
00000000..00000111 00000011
de ce circuit logique.
00000000..00001111 00000100
. .
. .
. .
00111111..11111111 11111101
01111111..11111111 11111110
11111111..11111111 11111111
Pb. 1 Conception d'une minuterie à embarquées dans
divers équipements électriques
On désire réaliser une minuterie permettant d'enclencher un
équipement pendant un temps prédéterminé. On commence par
choisir le temps de temporisation entre 00 et 99 secondes, affiché sur
deux afficheurs 7 Segments, en utilisant 2 boutons poussoirs, l’un
pour les dizaines et l’autre pour les unités. L’appui sur ces boutons
incrémentent respectivement la valeur des unités et des dizaines. Le
décomptage commence sur un appui sur un bouton START, ce qui
enclenche aussi l'équipement. Quand le comptage arrive à 00, la
commande de l'équipement est mise à 0 et le comptage s'arrête.
Le système dispose aussi d’un bouton Reset asynchrone qui permet de
mettre à zéro la minuterie et d’arrêter l’équipement piloté.
En entrée du circuit, on dispose d’un signal d’horloge de 32,768 kHz.
→ Donner le schéma de principe d'un tel circuit en précisant ses entrées / sorties.
→ Écrire la description VHDL d'un tel circuit
Pb. 2 Circuit de commande 3 D pour moteurs pas à
pas unipolaire
Principe de fonctionnement d’un moteurs pas à pas
unipolaire
Circuit de commande d’un moteurs pas à pas
unipolaire
Graphe d’état de la commande d’un moteurs pas à pas
unipolaire – Pas complet et demi pas
T1 T2 T3 T4

0
1010
T1 T2 T3 T4
S.D S. D
0
1010 S. D
S.F S.F S.D
3 1 1
7
1001 0110
1000 S.F S.F 0010

S.F S.F S.D


S.D S.D S.F S.F
S.D
2
2
0110
0101 6
1001

S.F
S.D
S.D 3
5 S.F S.F 0100
0001
4
0101
S.D
S.D
Circuit à réaliser

On vous demande de concevoir un circuit qui serait capable de


piloter 3 moteurs pas à pas unipolaires. Pour chaque
commande de moteur (indépendantes les unes des autres), on
aura les entrées/sorties suivantes :
→ un signal d’horloge
→ deux entrées pour fin de courses droite et gauche
→ une entrée sur 2 bits qui permettrait de diviser la fréquence
du signal d’horloge et ainsi réduire la vitesse de rotation du
moteur par un facteur 1, 2, 4 ou 8
→ une entrée qui permettrait de sélection le type de
commande en pas complet ou en demi pas pour plus précision.
→ En sortie, il générera les 4 signaux de commande d’un
moteur pas à pas unipolaire.

Vous aimerez peut-être aussi