Académique Documents
Professionnel Documents
Culture Documents
logiques programmables)
Objectifs d'apprentissage
Comprendre le concept des PLD et les conceptions basées sur PLD et utiliser l’
Plan
Introduction
Au cours de la dernière décennie, les dispositifs logiques programmables (PLD) sont utilisés
pour le prototypage rapide des ASIC.
Les conceptions basées sur PLD peuvent être utilisées pour détecter les bogues au début du
cycle de conception et pour valider la conception dans un délai plus court pour les
spécifications fonctionnelles données.
Dans le scénario actuel, il y’a besoin d’un million de portes programmables ASIC pour la
réalisation des conceptions complexes.
La conception basée sur le PLD étant plus rentable et pouvant être réalisée plus
rapidement, le marché du PLD s'est considérablement développé pour le prototypage
rapide des ASIC.
Ce cours traite l'évolution des PLD, les types de PLD et l'architecture des PLD. Même ce cours
traite les directives et scénarios de conception spécifiques au PLD.
Les PLD sont utilisés dans divers segments de marché tels que les domaines de l'automobile, de
la consommation, des périphériques informatiques, du sans fil et de l'industrie pour la preuve
de concept des idées.
Le principal avantage des PLD est qu'ils peuvent être programmés par l'utilisateur final sur
le terrain.
Le premier PLD inventé avant 1970 est la mémoire programmable en lecture seule (PROM).
Mais PROM est une mémoire programmable une seule fois.
Encore une fois, nous pouvons différencier cela entre les dispositifs programmables par
masque et les dispositifs logiques programmables sur le terrain.
Les dispositifs logiques programmables à masque sont programmés par le fournisseur à
l'aide de l'interconnexion et du masque personnalisé,
Les appareils programmables sont programmés ou configurés par l'utilisateur en fonction
des spécifications de conception requises et de la complexité.
À la fin des années 1970, la logique matricielle programmable (PAL) a été introduite sur le
marché.
Avant de passer en revue la structure interne de chaque bloc pour comprendre le SPLD,
explorons la conception simple d'un additionneur complet utilisant le concept de OU
programmable.
L'additionneur complet utilisant deux demi additionneurs et la porte OU comme indiqué
dans la figure ci-dessous
Au lieu d'utiliser les demi-additionneurs et/ou la porte, l'additionneur complet peut être réalisé
en utilisant le tableau OU fixe et le tableau ET programmable.
Exercice :
Donner la table de vérité de l'additionneur complet ?
Donner les équations logiques liées à sum_out et carry_out, basées sur l’algèbre
booléenne min-terme ?
L'additionneur complet peut également être réalisé à l'aide d'un décodeur de 3 lignes à 8 lignes.
Le décodeur 3 lignes à 8 lignes est un circuit qui donne 8 sorties logiques pour 3 entrées et
possède une broche d'activation.
Le circuit est conçu avec des portes logiques ET et NAND.
Exercice :
Donner la table de vérité du décodeur 3 lignes à 8 lignes ?
Donner l'équation logique liée au décodeur 3 lignes à 8 lignes basée sur l’algèbre
booléenne min-terme ?
Donner le schéma logique du décodeur 3 lignes à 8 lignes ?
Donner le schéma logique de l'additionneur complet basé sur un décodeur 3 lignes vers
8 lignes ?
En fonction des termes minimum requis, le plan ET agit comme un décodeur programmable
et le plan OU qui est fixe est utilisé pour générer les sorties programmables « sum_out » et «
carry_out ».
En fonction du réseau programmable ou fixe, les SPLD sont classés comme suit :
Mémoire morte programmable (PROM);
Logique matricielle programmable (PAL);
Réseau logique programmable (PLA);
Logique de tableau générique (GAL);
Mémoire programmable en lecture seule (PROM)
La PROM a d'abord été développée comme une mémoire morte programmable une seule
fois.
Il est disponible en version programmable une fois (OTP) et programmable sur site.
Le PROMis programmable sur site basé sur EPROM et basé sur EEPROM.
Les PROM sont utilisées pour réaliser la logique du petit nombre de portes en utilisant le
concept de tables de recherche.
La logique peut être programmée dans la PROM.
C'est comme la table de recherche qui contient les fonctionnalités de la conception.
Les entrées de fonction peuvent être visualisées sous forme de lignes d'adresse, les
cellules de la matrice mémoire sont utilisées pour contenir les informations sur la
fonctionnalité et les lignes de sorties proviennent des cellules mémoire de la PROM.
Nous pouvons décrire l'architecture PROM comme suit: le décodeur d'entrée qui est un
tableau ET et les sorties sont générées à partir d'un tableau OU programmable.
Le PAL utilise le tableau ET programmable et le tableau OU fixe et peut être utilisé pour
concevoir une logique à petit nombre de portes.
Il était utilisé pour implémenter la somme sous forme canonique des fonctions booléennes
du produit en utilisant le tableau ET programmable suivi d'un tableau OU fixe.
Il peut être utilisé pour générer la sortie combinatoire, ou la sortie peut être enregistrée ou
peut être renvoyée en interne.
L'exemple d'utilisation du PAL avec le tableau ET programmable et le tableau OU fixe est
présenté dans la figure suivante. Ceci permet de réaliser les fonctions F1 et F2 définies par
les équations logiques suivantes.
Comme le montre la figure, les sorties sont combinatoires, c'est-à-dire que la sortie est la
fonction de l'entrée actuelle uniquement.
La structure PAL peut être modifiée en utilisant le registre à la sortie du tableau OR pour
générer la sortie enregistrée.
La figure ci-dessous décrit un autre exemple de macrocellule qui utilise le concept de PAL
avec la sortie enregistrée.
La sortie peut être programmée comme sortie enregistrée ou sortie non enregistrée.
La sortie PAL passe par la logique XOR qui et la porte XOR agissent comme le contrôle de
polarité.
Si la sortie de la porte XOR passe par le registre, la sortie peut être disponible en tant que
sortie enregistrée.
Output MUX est utilisé pour sélectionner la sortie enregistrée ou combinatoire en fonction
de l'état de la ligne de sélection.
Le bouclage de la sortie du registre est possible en interne et peut être utilisé pour le
traitement interne par le PAL.
Tableau logique programmable (PLA) :
Le PLA est plus flexible que le PAL, et le PLA utilise les tableaux ET et OU programmables.
Pour l'optimisation du circuit logique de la conception à petit nombre de portes, le PLA peut
être un bon choix.
Les fonctions booléennes peuvent être réalisées en utilisant le ET programmable suivi du
OU programmable.
La mise en œuvre des fonctions F1 et F2 à l'aide du PLA est donnée par la figure de la slide
suivante
Les fonctions logiques pour F1 et F2 sont :
Comme le montre la figure ci-dessous, la sortie peut être une combinaison active basse ou
active haute.
Même la sortie peut être configurée comme sortie active basse enregistrée ou haute sortie
active enregistrée.
Chaque bloc IO est utilisé pour établir une communication entre le monde extérieur et les
PLD.
Les multiples PLD sont empilés sur le silicium et peuvent être connectés à l'aide de
l'interconnexion programmable.
La structure de bloc PLD ou PAL peut être constituée d'un réseau de portes avec le registre
(le nombre de registres dépend de l'architecture) et être utilisée pour générer une sortie
combinatoire ou séquentielle ou les deux.
La figure suivante montre le bloc PLD de base, l'implémentation logique utilisant le VHDL est
également donnée.
La sortie combinatoire « q2_out » est la logique ET de « a_in » et « b_in » et réalisée à l'aide
du simple bloc PAL.
La sortie enregistrée « q1_out » est sensible au front positif de l'horloge « clk » et réalisée en
utilisant un registre dédié à l'intérieur du PAL ou en utilisant le registre du bloc IO.
L'utilisation d'entrées et de sorties enregistrées peut améliorer le timing et la performance
de la conception, même si l'ajout d'une logique pipeline devient facile si nécessaire.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
clk : in std_logic;
q1_out, q2_out : out std_logic
);
end cpld_logic;
Les réseaux de portes programmables sur site (FPGA) peuvent être programmés ou
configurés sur le terrain par les programmes utilisateur et largement utilisés dans la
conception de conceptions complexes de comptage de portes.
L'utilisation intensive des FPGA au cours de cette décennie est due à la disponibilité des
macros logicielles et matérielles requises pour le processeur, le DSP (Digital Signal
Processor) et le traitement vidéo.
Même la plupart des FPGA à architecture complexe prennent en charge les interfaces haut
débit, les protocoles Ethernet, USB (Universal Serial Bus) et AHB (Advanced High
performance).
L'architecture de base du FPGA peut être visualisée comme un océan de :
Les blocs logiques ou blocs logiques configurables (CLB),
Blocs d'entrées/sorties (IOB),
Bloquer les RAM (BRAM),
Blocs DSP (DSP),
Et d'autres ressources de routage.
CLB est utilisé pour réaliser la logique combinatoire et séquentielle.
Le CLB dédié comprend le nombre de tables de recherche (LUT) et de registres.
La fonction combinatoire est réalisée à l'aide des LUT où les LUT ont le retard uniforme.
Si la logique n'est pas installée dans le CLB unique, alors les multiples CLB doivent être
utilisés et reconfigurés en fonction de la fonctionnalité.
Ils sont configurés à l'aide du programme spécifique au fournisseur, à savoir un fichier
de configuration ou un fichier bitmap.
IOB est utilisé pour établir la communication entre le monde extérieur et les CLB et vice
versa.
L'IOB est constitué des tampons bidirectionnels avec les registres.
L'entrée peut être enregistrée à l'aide du bloc IO, et même la sortie peut être enregistrée
à l'aide du bloc IO.
Les entrées et sorties non enregistrées sont possibles. En fonction des exigences
fonctionnelles de la conception.
Le bloc IO peut être configuré comme IO enregistré ou IO non enregistré.
BRAM : Le FPGA peut avoir de la RAM distribuée et de la RAM bloc (BRAM).
-Et les BRAM sont réalisés à l'aide de blocs BRAM dédiés qui peuvent être programmés par l'outil
de conception spécifique au fournisseur pour la configuration et la taille requises.
La réalisation de RAM à port unique et de RAM à double port est possible à l'aide des BRAM.
La capacité de BRAM dépend de l'architecture.
DSP : Ce sont des blocs prédéfinis dédiés et peuvent être configurés pour réaliser la
fonctionnalité DSP.
La plupart des applications DSP ont besoin de multiplicateurs, de registres pipeline, de blocs
fonctionnels DSP dédiés aux opérations DSP, etc.
Pour le calcul DSP à grande vitesse, ces blocs sont utilisés et peuvent être configurés en
fonction des exigences de conception.
Le concept LUT peut être facilement compris en utilisant les conceptions basées sur MUX.
Nous voulons réaliser la fonction logique ayant quatre entrées et une seule sortie comme le
montre la figure suivante.
La LUT peut être utilisée pour réaliser les fonctions logiques, peut être utilisée comme RAM
distribuée et même utilisée pour réaliser les registres à décalage.
La sortie générée est combinatoire ou séquentielle selon la configuration définie par le
fichier bitstream.
Si la cellule SRAM (FF) contient le « 1 » logique, alors la sortie est une logique combinatoire,
et si la configuration FF contient le « 0 » logique, alors la sortie est une sortie enregistrée.
Un exemple de VHDL RTL (Register Transfert Level) synthétisable pour la conception
combinatoire est donné comme suit
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
Begin
end arch_comb_logic;
Begin
q2_out <= (a_in and b_in and c_in);
process (clk)
begin
if (clk=’1’ and clk’event) then
q1_out <= a_in and b_in and c_in;
end process;
end arch_design_logic
Dans un tel scénario, l'architecture CLB peut avoir plusieurs LUT et plusieurs registres avec
les blocs dédiés aux additionneurs.
La figure suivante décrit l'architecture du CLB et elle se compose de plusieurs LUT à trois
entrées, même si elle comprend l'additionneur complet et le registre.
La sortie de ce CLB peut être combinatoire ou séquentielle.
-Utiliser la notion de propagation de report. La figure suivante décrit la mise en œuvre d'un
additionneur complet utilisant la logique XOR et le multiplexeur.
-Dans FPGA, un type de logique similaire peut être utilisé pour effectuer l'addition en utilisant «
A, B, Cin » pour générer les sorties « Cout » et « Somme ».
-L'architecture CLB pour la série Virtex de XILINX est illustrée dans la figure
La LUT à quatre entrées est utilisée pour réaliser la fonction avec quatre entrées.
En utilisant les ressources de routage, la logique de la tranche 1 peut communiquer avec la
tranche 0.
Même la sortie d'un CLB peut transférer les données vers un autre CLB.
Le routage est effectué à l'aide des algorithmes de routage spécifiques au fournisseur.
-Le CLB à huit entrées avec la sortie enregistrée et la sortie combinatoire est illustré dans la
figure suivante
Ceci est utilisé pour concevoir la fonction logique qui nécessite 8 entrées.
Le CLB peut être utilisé pour obtenir une sortie enregistrée ou non enregistrée.
-Les LUT G et F sont des LUT à quatre entrées et la LUT H est une LUT à trois entrées.
-Nous souhaitons considérer le scénario de conception pour réaliser le décodeur 8:256 utilisant
FPGA.
Bloc IO :
-Les blocs IO sont utilisés pour communiquer avec le monde extérieur. Le bloc IO de base
La structure est illustrée dans la figure suivante.
L'IO peut être configuré pour transférer les données du monde extérieur vers le tableau
configurable.
-Les données sont transférées du port d'entrée vers PAD et via le tampon d'entrée vers CLB.
Les données peuvent être transférées du CLB vers le monde extérieur via le tampon de
sortie,
-Dans le scénario pratique, il est nécessaire d'avoir des entrées et des sorties enregistrées, et
dans de telles circonstances, le bloc IO peut avoir plusieurs registres dans le chemin d'entrée et
de sortie.
-Le bloc IO pour le FPGA Altera est illustré dans la figure , dans la diapositive précédente
-Exemple : nous voulons enregistrer une entrée programmable 'a_in' en utilisant le bloc IO,
comme le montre la figure suivante.
L'entrée enregistrée est générée au niveau de Data In 1 et est transmise au tableau CLB.
La ligne de couleur rouge indique la programmation du bloc IO comme bloc d'entrée avec
l'entrée enregistrée pour générer le signal « tmp_sig » comme entrée enregistrée.
IO configuré comme entrée enregistrée
-Exemple : Un RTL VHDL synthétisable pour l'entrée enregistrée et la sortie enregistrée est
donné comme suit :
Le BRAM monoport
Le BRAM double port (PORT A et PORT B)
-Selon l'architecture du périphérique FPGA, chaque BRAM se compose d'un nombre de cellules
RAM statiques.
Parmi elles, les quelques cellules sont utilisées pour la configuration de la mémoire et le
reste est utilisé pour le stockage des données.
-Les BRAM sont utilisées pour le stockage interne des données, pour concevoir des FIFO, des
tampons, des piles et peuvent être utilisées pour stocker les données nécessaires aux FSM
(Finite State Machines).
-Chaque BRAM a l'horloge et l'activation, la lecture et l'écriture de l'horloge, et chaque BRAM est
synchrone.
-Si nous considérons la BRAM à deux ports, alors les deux ports peuvent être utilisés de manière
interchangeable et peuvent être contrôlés pour l'opération de lecture-écriture synchrone.
-La structure BRAM à port unique et à double port est illustrée dans la figure suivante
Un exemple de RTL VHDL synthétisable d'une BRAM à port unique de taille 16X2 utilisant le
composant BRAM est donné comme suit :
Blocs DSP et multiplicateurs
-Pour la conception informatique élevée et pour les performances améliorées, les FPGA
modernes disposent de ressources dédiées sous forme de multiplicateurs et de blocs DSP.
-Les principales applications DSP sont le filtrage, la compression, la FFT, la DFT, l'encodage et le
décodage des flux d'entrée.
-La figure suivante donne des informations sur le bloc DSP dédié et peut être utilisée
efficacement pour concevoir certains algorithmes de traitement DSP comme la multiplication et
l'accumulation (MAC).
Comme le montre la figure, le bloc DSP possède le registre d'entrée, le multiplicateur, le
MAC, le bloc de sommation et le registre de sortie.
Pour améliorer les performances de conception, le bloc DSP dispose de registres pipeline.
Bloc DSP
P-our le routage local à l'intérieur du CLB et pour le routage global entre les CLB, différents
Des lignes d'une seule longueur sont utilisées au sein du CLB et sont utilisées pour les
distances les plus courtes
routage.
Connectez les matrices de commutation PSM (Programmable Switch Matrix) qui sont
situées à chaque intersection d'une ligne et d'une colonne de CLB.
Ligne double longueur, comme chaque ligne est deux fois supérieure à la ligne simple
longueur, elles sont utilisées pour acheminer deux CLB
Une ligne double longueur passe devant deux CLB avant d'entrer dans une matrice de
commutation.
Les lignes double longueur sont regroupées par paires avec les matrices de
commutation décalées de sorte que chaque ligne passe par une matrice de commutation à
chaque autre emplacement CLB de cette ligne ou colonne.
De longues lignes sont utilisées comme ressource de routage pour la puce FPGA complète
Les entrées CLB peuvent être pilotées à partir d'un sous-ensemble des lignes longues
adjacentes ; Les sorties CLB sont acheminées vers les lignes longues via des tampons à 3 états
ou des lignes interconnectées de longueur unique.
Scénarios pratiques et lignes directrices :
Réinitialiser la stratégie
-La plupart du temps, les concepteurs ne savent pas s'ils doivent utiliser la réinitialisation
synchrone ou les réinitialisations asynchrones dans la conception.
Réinitialisation synchrone
-Les réinitialisations synchrones sont recommandées dans la plupart des applications car la
logique de réinitialisation fait partie du chemin de données et la réinitialisation est
échantillonnée sur le front actif de l'horloge.
-La logique dans le chemin de données du registre utilisant la réinitialisation synchrone est
illustrée dans la figure ci-dessous :
-Le RTL utilisant VHDL pour la conception utilisant la réinitialisation synchrone est décrit comme
suit :
-En utilisant la stratégie de réinitialisation synchrone, les problèmes sont filtrés et illustrés ci-
dessous dans la figure :
Réinitialisation asynchrone :
-Le signal de réinitialisation asynchrone est échantillonné à tout moment quel que soit le front
d'horloge actif.
-La figure ci-dessous donne des informations sur le temps de récupération de réinitialisation. Si
le signal de réinitialisation arrive avant le front actif de l’horloge et reste stable, alors le timing
est respecté.
-La figure ci-dessous donne des informations sur la violation de synchronisation lorsque le signal
de réinitialisation modifie le front d'horloge. La conception passe à l’état métastable.
-Le temps de suppression de la réinitialisation est le temps requis pour l'annulation du signal de
réinitialisation.
-La réinitialisation asynchrone peut être synchronisée en interne à l'aide du niveau à deux
étages comme indiqué dans la figure ci-dessous:
-Le synchroniseur à deux étages est utilisé pour générer le signal de réinitialisation asynchrone
vers le registre
-Dans les conceptions asynchrones, comme le signal d'horloge n'est pas commun à tous les
registres, le retard cumulé ralentit les performances de la conception.
-Dans la plupart des scénarios pratiques, il n'est pas recommandé d'utiliser les conceptions
asynchrones.
-La conception asynchrone utilisant des bascules JK et une séquence de synchronisation est
illustrée dans la figure ci-dessous
-Comme le montre cette figure, pour obtenir la sortie « q-out », il faut un retard de 4 fois le
retard de propagation de la bascule unique.
-Dans les conceptions synchrones, toutes les bascules sont déclenchées sur le même front
d'horloge
-Le délai global est égal au délai de propagation d'une simple bascule.
-La conception synchrone du compteur gris 2 bits est illustrée dans la figure ci-dessous, et les
deux registres utilisent la même source d'horloge pilotée par l'horloge principale.
Résumé :
-Les SPLD sont utilisés pour la conception de conceptions à petit nombre de portes.
-Les CPLD sont utilisés pour réaliser des conceptions à nombre de portes modéré avec de
meilleures performances de synchronisation.
-Les FPGA sont programmés par le programme utilisateur sur le terrain.
-Les FPGA modernes comprennent les CLB, les IOB, les ressources de routage, les ressources de
synchronisation, les interconnexions programmables, les blocs DSP, les multiplicateurs, le
processeur, etc.