CIRCUITS NUMERIQUES PROGRAMMABLES (PROGRAMMABLE LOGIC DEVICES) Circuits numériques (re)-configurables par l’utilisateur, réalisant des fonctions logiques (combinatoires + séquentielles) de façon matérielle Contenu de la présentation 1) Introduction des différentes familles 2) SPLD (Simple Programmable Logic Device) 3) EPLD / CPLD (Erasable / Complex Programmable Logic Device) 4) FPGA (Field Programmable Gate Array) 1 - Différentes approches en électronique numérique: • circuits discrets (TTL, CMOS, ...) • circuits numériques programmables • ASICs logique discrète circuits numériques programmables ASIC vitesse - ++ ++ densité - ++ ++ coût - + ++ (pour très contrainte grosses quantités) temps de développement + ++ -- temps de simulation et de prototypage - ++ -- temps de fabrication - ++ -- facilité de mise en œuvre + + -- modification ultérieure + ++ -- ++ ++ -- support de l’outil de développement - ++ ++ consommation + - ++ risque d’approvisionnement Différentes familles de circuits numériques programmables • PAL (Programmable Array Logic) ou SPLD (Simple Programmable Logic Device) famille la plus ancienne (introduite par AMD) technologie: fusibles (One Time Programmable) EEPROM (appelation GAL (Generic Array Logic), marque déposée par LATTICE Semiconductor, ou PAL CMOS) principaux constructeurs: ATMEL, LATTICE Semiconductor, CYPRESS... • EPLD (Erasable Programmable Logic Device) ou CPLD (Complex Programmable Logic Device) technologie: EPROM (effaçable par UV) EEPROM (effaçable électriquement) principaux constructeurs: ALTERA, XILINX... • FPGA (Field Programmable Gate Array) technologie: anti-fusibles (non volatile) SRAM (volatile) principaux constructeurs: ALTERA, XILINX, ACTEL... 2 - SPLD (Simple Programmable Logic Devices) circuit numérique programmable le + simple: ROM entrées: lignes d’adresse sorties: lignes de données exemple: 4 mots de 4 bits I1 . I 0 I1 I1 . I 0 I1 . I 0 I0 ET I1 . I 0 OU exemple: O0 = (I1 . I0) + (I1 . I0) décodeur (fixe) O3 O2 O1 Sorties = fonctions logiques des entrées Décodeur complet pour les entrées (tous les termes produits sont générés) Mal adapté à la réalisation de fonctions logiques O0 = I1 XOR I0 PAL Structure de base: Plan de ET-OU programmable permettant de réaliser n’importe quelle fonction combinatoire de N entrées I1 sortie I0 principe de base a b c d I1 sortie a b c d I0 notation utilisée I1 sortie I0 ex: 10 entrées ROM: 210 = 1024 portes ET à 10 entrées PAL: quelques portes ET à 20 entrées réalisation d’un OU EXCLUSIF Structure d’un PAL I3 I2 I1 I0 réseau «OU» (fixe) 1 entrée supplémentaire 2 entrées supplémentaires par porte ET mais nombre de portes ET inchangé exemple: chaque sortie = somme de 4 termes produits fixe réseau «ET» (programmable) O3 O2 O1 O0 Structure d’une PROM I3 I2 I1 I0 réseau «OU» (programmable) 1 entrée supplémentaire la taille du réseau de ET est doublée sortie = n’importe quelle fonction logique des entrées réseau «ET» (fixe) problème: tous les termes produits sont générés O3 O2 O1 O0 Structure d’un PLA I3 I2 I1 I0 réseau «OU» (programmable) structure la + souple n’est plus sur le marché actuellement réseau «ET» (programmable) O3 O2 O1 O0 PAL versatile (V-PAL) par programmation: sortie combinatoire pure (active haut ou active bas) ou synchronisée sur horloge (inversée ou non) référence: exemple : PAL 22 V 10 nombre d’entrées nombre de sorties structure de sortie (V = versatile, H = combinatoire haut, etc...) résumé sur les PAL: - bien indiqués pour les fonctions combinatoires complexes, ne nécessitant pas ou peu de logique séquentielle (exemple: décodeurs, ...) - fréquence maximale des signaux d’entrée/sortie ≈ 250 MHz - nombre maximum d’entrées/sorties: 22-10 - consommation ≈ 100 mA - prix faible ≈ 1 à 5 € (selon la complexité et la vitesse) - gamme de composants «figée» (progressivement remplacée par EPLD, FPGA) 3 - Les EPLD Introduits dans le milieu des années 80 par ALTERA Principe de base: plusieurs PAL rassemblés sur un même circuit + interconnection programmable Limitation des PAL: structure du plan logique programmable croît trop rapidement avec le nombre d’Entrées/Sorties PAL: ≈ 10 à 20 entrées sorties EPLD: jusque 272 entrées-sorties 1 seul PAL plusieurs petits PAL n entrées In-1 ... I3 ... I0 exemple: 2 × 4 entrées I0 I7 ... 2n entrées par porte ET (beaucoup non utilisées) ... ... I4 Oi Oi ... Oj Architecture typique d’un EPLD (ex: ALTERA MAX) 3 types de ressources principales - PIA (Programmable Interconnect Array) - réseau de LAB (Logic Array Blocs) - réseau de IOB (Input Output Blocs) 1 LAB = 16 macrocellules PIA: connecte n’importe quelle entrée ou sortie d’un LAB à un autre LAB TIMING PREVISIBLE - Programmable Interconnect Array pattes d’entrées / sorties + sorties des macrocellules PIA: connecte n’importe quelle entrée ou sortie d’un LAB à un autre LAB TIMING PREVISIBLE (différence majeure avec les FPGA) - Structure d’une macro-cellule exemple: ALTERA MAX 7000 configurable en bascule D, T, JK ou SR à la base: 5 termes - produits par macrocellule suffisant dans la majorité des cas si besoin: + 15 autres termes - produits en provenance des macrocellules voisines meilleure utilisation des ressources et plus de flexibilité que les PALs horloge globale (commune) (logique synchrone) ou horloge locale (individuelle) (logique asynchrone) horloge locale / horloge globale Q1 CK1 compteur Q Q2 A CK B X A-B S Q3 D registre Q CK CK2 CK1 Q1 Q2 1er cas: CK2 <> CK1 2ème cas: CK2 = CK1 valeur lue erronée valeur lue correcte - Structure d’un IOB exemple: ALTERA MAX 7000E/S Méthodologie de conception créé par le concepteur réalisé par le logiciel de développement (QUARTUS) résumé sur les EPLD (valeurs typiques prises pour familles MAX ALTERA) - Principaux constructeurs: ALTERA, LATTICE, XILINX,... - Délais de propagation prédictibles et indépendants du routage - Fréquence d’horloge max: 300 MHz pour compteur 16 bits - Nombre maximal de macro-cellules: 512 - Nombre maximal d’entrées/sorties: 272 (en boîtier BGA 324-Pin) - Technologie: EEPROM (configuration sauvegardée hors alimentation) - Consommation: 50 à 300 mA (selon fréquence de fonctionnement, nombre de cellules actives, etc...) - Prix: de 4 à 100 € 4 - Les FPGA Introduits dans le milieu des années 80 par XILINX Structure s’apparentant aux ASIC de type «Gates-array» Gate-array: réseau de transistors et de portes pré-fabriquées dont les connexions sont réalisées en fonction de l’application souhaitée FPGA: réseau de blocs logiques configurables + interconnexions configurables par l’utilisateur TRES FORTE CAPACITE D’INTEGRATION («petits» blocs de base en grand nombre) bloc logique configurable bloc E/S configurable Idée de départ: l’approche classique des PAL, GAL, EPLD peut entraîner un gaspillage des ressources ressources perdues si inutilisées portes ET / OU remplacées par Look-Up Tables Technologies utilisées mémoire de configuration SRAM (reprogrammable) anti-fusibles (One Time Programmable) XILINX (Virtex, Spartan, ...) ALTERA (Stratix, Cyclone, ...) ... ACTEL QUICKLOGIC ... Temps de propagation des signaux dans un FPGA: dépend du placement / routage => non prédictible (<> EPLD) élément logique de base exemple: structure STRATIX ressources principales dans un FPGA 1 - élément logique de base 1 LUT = 1 ROM 16 x 1bit cellules simples (ex: ACTEL) (basées sur arbres de multiplexeurs) - faible surface occupée par les blocs - routage important nécessaire pour fonctions complexes 1 bascule D cellules complexes (ex: ALTERA) (1 LUT + 1 bascule D par cellule) - bien adapté à la réalisation de fonctions complexes 2 - bloc d’entrée / sortie ex: ALTERA Cyclone + possibilité de résistance de pull-up + 2 valeurs possibles de slew-rate + niveaux TTL ou CMOS, etc... + possibilité de sortie drain ouvert interfaçage possible avec mémoire DDR (Double Data Rate) ex: ALTERA Stratix 3 - routage entrées dédiées pour les signaux globaux (clock, clear, output enable, ...) 4 - ressources annexes • mémoire blocs RAM - réalisation de mémoire interne de taille configurable - réalisation de fonctions logiques complexes (exemple: multiplieur 4 bits x 4 bits, résultat sur 8 bits pré-calculé et stocké dans la mémoire) famille FLEX10K • blocs DSP principales fonctions de traitement du signal (filtres FIR, filtres IIR, corrélateurs, etc...) utilisent multiplieurs + additionneurs ou accumulateurs blocs spécialisés avec fonctions pré-câblées Résumé sur les FPGA - Principaux constructeurs: ALTERA, XILINX,... - Délais de propagation non-prédictibles et dépendants du routage - Fréquence d’horloge max: ~ 500 MHz - Nombre maximal de macro-cellules: ~180 000 - Taille mémoire disponible maximale: ~ 5 Mb - Nombre maximal d’entrées/sorties: ~1200 (en boîtier BGA 40 x 40) - Technologie: SRAM (configuration à charger à la mise sous tension) ou OTP - Fonctions spécifiques parfois disponibles (mémoire, DSP, PLL, ...) - Consommation: qq 100 mA (selon fréquence de fonctionnement, nombre de cellules actives, etc...) - Prix: de 10 à qq 100 €