Présentation et classification des circuits logiques programmables. Références : Le langage VHDL » – Jacques Weber – Editions Dunod « ASIC et composants logiques programmables »– Denis Rabasté (IUFM) « 1 - Introduction • Début des années 80 Ö Début des circuits logiques programmables. • 4 catégories de circuits à cette époque : – Fonctions standards (T.T.L., M.O.S., usage général). – Les microprocesseurs (applications industrielles). – Les séquenceurs programmés (applications complexes et rapides). – Les circuits intégrés spécifiques A.S.I.C. (gros volumes de productions). 1 - Introduction • 3 grandes phases pour l’évolution de la logique : – 1975-85 : remplacement des circuits logiques standards par des circuits programmables. – 1985-95 : coprocessing (implantation de circuits logiques complexes autour des microprocesseurs) et début des circuits logiques à haute densité d’intégration. – Depuis 1995 : le circuit logique programmable devient le niveau supérieur du système. (possibilité d’implanter un microprocesseur dans un F.P.G.A.). 1 - Introduction • Progrès des techniques de fabrication : – Nombre de portes multiplié par 10000 (en 25 ans). – Fréquence d’horloge multipliée par 50 (en 25 ans). – Taille d’un transistor : 1,2 µm en 1991 à 0,18 µm en 2000. – Loi de Moore qui stipule le doublement du nombre de transistors sur une puce tous les 18 mois. Nombres de portes Fréquence d’horloge 1 - Introduction • Classification et répartition des circuits numériques : Circuits numériques Circuits standards Circuits à fonctionnement programmable Circuits à architecture programmable et faible temps de développement 74HC…. Microprocesseurs, Microcontrôleurs PLD, CPLD, FPGA Circuits à temps de développement important ASIC 1 - Introduction • ASIC (Application Specific Integrated Circuit) : – Réalisé à partir d’un dessin (masque) sur la pastille de silicium et fourni à un fabricant (fondeur). – Non re programmable donc !!!!!!! – Temps de développement très long. – Densité d’intégration très élevée. – Destiné à des applications de très grandes séries (téléphone, automobile,...). • Un circuit ASIC n’est donc pas un vrai circuit logique programmable. 2 – Familles de circuits logiques • Un circuit logique programmable descend directement de la technologie des mémoires : • R.O.M. : Read Only Memory – Données non modifiables et conservées. – Programmable une seule fois par un appareil spécial. • R.A.M. : Random Access Memory – Cellules accessibles en lecture et écriture. – SRAM (static) constituée de bascules. – DRAM (dynamic) constituée de capacités (rafraîchissement). – Données perdues sans alimentation. 2 – Famille de circuits logiques • M.R.O.M. : Masked ROM – Ecriture des données effectuée une fois pour toutes par le fabricant. – Interconnexions électriques réalisées à l’aide d’un masque. • P.R.O.M. : Programmable ROM – Programmable par l’utilisateur à l’aide d’un appareil spécial. – Une fois programmée, elle ne peut être ni effacée, ni reprogrammée. 2 – Famille de circuits logiques • Parmi les PROM on distingue : • PROM à fusibles : – Programmée une fois pour toutes. – La programmation se réalise par destruction de fusibles. • E.P.R.O.M. : Erasable PROM – Programmation réversible. – La mémoire peut être rendue à nouveau vierge. • O.T.P.R.O.M. : One Time PROM – EPROM dont on a inhibé d’effacement. – Mémoires non effaçables. la possibilité 2 – Famille de circuits logiques • Parmi les EPROM on distingue : • UVPROM : – Programmable électriquement et effaçable aux UV. – Le boitier est muni d’une fenêtre (quartz) permettant l’exposition. • E.E.P.R.O.M. : Electrically Erasable PROM – Effaçable et reprogrammable électriquement. – L’effacement dure 10 ms pour environ 20 minutes pour les UVPROM. • Mémoires Flash EEPROM – EEPROM avec de faibles niveaux de tensions. – Plus rapides que les EEPROM. – Programmateur intégré dans le circuit (I.S.P. (In Situ Programming)). 2 – Famille de circuits logiques • Classification des ROM : Mémoires mortes. MROM programmables par masque. PROM à fusibles. UVPROM ou PROM effaçables aux UV. EPROM ou PROM effaçables. EEPROM ou PROM effaçables électriquement. PROM programmables par l'utilisateur. OTPROM ou EPROM programmables une seule fois. EEPROM Flash effaçables électriquement. 2 – Famille de circuits logiques • Les circuits logiques programmables également plusieurs abréviations. présentent • P.L.D. : Programmable Logic Device – Terme général regroupant l’ensemble des circuits logiques programmables mais souvent utilisés pour désigner le plus simple d’entre eux. • C.P.L.D. : Complex PLD – Circuit complexe dont l’architecture dérive des PLD. – Quelques dizaines de milliers de portes. • F.P.G.A. : Field Programmable Gate Array – Complexité très élevée et voisine de celle des ASIC. – Quelques centaines de milliers de portes. 3 – Opérateurs génériques • Un circuit logique programmable est un assemblage d’opérateurs logiques combinatoires et séquentiels. • Diverses fonctions peuvent être réalisées selon l’architecture et la programmation consiste à définir une fonction parmi toutes ces fonctions. • Programmer une fonction c’est définir les interconnexions entre les divers opérateurs logiques et définir les équations des opérateurs combinatoires. • Ce sont les interconnexions et les opérateurs qui sont programmables ! 3 – Opérateurs génériques 3.1 – Codage d’une fonction logique • La base de toute fonction logique est combinatoire. • Une fonction séquentielle s’obtient alors en réinjectant les sorties sur les entrées (asynchrone) en intercalant éventuellement des bascules triggeables (synchrone). • Généralement une fonction logique peut être réalisée de différentes façons : – Un réseau logique programmable (base d’un PLD). – Une mémoire de type ROM. – Un multiplexeur. 3 – Opérateurs génériques 3.2 – Réseaux logiques programmables • Une fonction logique combinatoire peut se mettre sous la forme d’une somme (OU) de produit (ET), un produit de somme ou un mélange des deux. • Un réseau logique programmable (Programmable Logic Array, PLA) utilise des matrices de portes ET et OU que l’on programme pour obtenir la fonction désirée. • La programmation consiste alors à établir les différentes connexions entre les portes ET et OU pour obtenir la fonction désirée. 3 – Opérateurs génériques • Exemple simplifié d’un PLA e2 e1 1 * * * * * * * S * Connexion modifiable • Les entrées et leurs compléments sont connectées à plusieurs portes ET. • Les sorties des portes ET sont connectées aux entrées de portes OU. 3 – Opérateurs génériques • Toutes les variables sont connectées et la programmation consiste à supprimer certaines connexions. • Une connexion supprimée Ö état logique 1 sur l’entrée de la porte ET (transparent). • Les connexions programmables sont représentées par une croix et la programmation consiste à « griller » les connexions de liaisons. • Ces connexions sont appelées « fusibles » même si leurs réalisations n’en comportent aucun. 3 – Opérateurs génériques • Initialement : s(e1,e2) = e1.e1 .e2.e2+ e1.e1 .e2.e2 • Exemple du OU exclusif : e2 e1 1 * * * * Connexion supprimée • s(e1,e2) = e1. e2+ e1.e2 S 3 – Opérateurs génériques • PAL 16L8 : le plus simple des circuits PAL : – Opérateurs ET à 32 entrées. – Opérateurs OU à 8 entrées. – Nécessité de simplifier la représentation des connexions. Connexion permanente e1 * * * * S * * * * e2 Connexion modifiable 3 – Opérateurs génériques 3.3 – Mémoire de type ROM • Une fonction combinatoire est totalement décrite par ses combinaisons d’entrée et ses états de sortie. • Ce principe correspond à celui d’une mémoire où à chaque adresse on associe des états de sortie. • Il fait appel à une structure PLA dont la matrice ET est figée et sert de décodeur d’adresse. La matrice OU est programmée en fonction de la sortie voulue. • Cette méthode utilisée pour les mémoires l’est également pour les CPLD ou les FPGA sous forme de LUT (Look Up Table). 3 – Opérateurs génériques • Lorsqu’une adresse est présente (ex. I3I2I1I0 = 1000), la sortie de la porte ET concernée passe à 1. • Suivant les fusibles laissés intacts dans la matrice OU, on a un mot sur O3O2O1O0 (ex. 0000 si tous les fusibles sont grillés). 3.4 - Multiplexeurs 3 – Opérateurs génériques • Un multiplexeur est un circuit d’aiguillage. • Forme simplifiée : e1 Mux. e2 S • 2 entrées d’info (e1, e2) • 1 entrée de sélection sel • 1 sortie s sel • Fonctionnement : sel =0 Ö s= e1; sel =1 Ö s= e2 • Le multiplexeur permet donc de créer des chemins de données à l’intérieur d’un circuit programmable vers différents blocs. 3 – Opérateurs génériques • Le multiplexeur peut également synthétiser des équations logiques (principe utilisé dans les FPGA). • Expression générale du multiplexeur 2 vers 1 : s(e1,e2) = e1. sel + e2. sel • Application au OU exclusif : e2 e2 e2 Mux. Sel = e1 S s(e1,e2) = e2. e1 + e2. e1 3 – Opérateurs génériques • Possibilité de généraliser à n entrées de sélection, 2n entrées d’informations et une sortie. • Dans un circuit programmable à base de multiplexeurs (FPGA), la programmation consiste à établir des interconnexions entre les cellules de calcul et les variables. • Cette interconnexion s’appelle le routage et l’affectation des cellules à une fonction souhaitée s’appelle le placement. 3.5 – Ou exclusif 3 – Opérateurs génériques • L’opérateur OU exclusif est parfois utilisé dans certains circuits logiques car il permet de réaliser : – Des fonctions de calcul (addition, soustraction,...). – Des fonctions de cryptage et de contrôle (parité). – Des inverseurs commandés. S Fonction F 1 T Fusible Sortie à polarité programmable F = S. T + S. T Avec fusible : T=0 Ö F=S Sans fusible : T=1 Ö F=S 0 • Cette méthode est utilisée lorsqu’il est plus économique (en nombre de portes) de calculer le complément d’une fonction. 3.6 – Bascules 3 – Opérateurs génériques • Les fonctions séquentielles et synchrones peuvent également être créées dans les circuits logiques programmables. • L’élément de base est une cellule mémoire pouvant changer d’état sur front d’horloge (bascule). • Les bascules D sont toujours présentes dans ces circuits (ce qui n’est pas forcément le cas des bascules JK). • Le changement d’un type de bascules en un autre est toujours possible mais le choix du type de bascule est déterminé automatiquement lors de la programmation. 4 – Technologie d’interconnexion • La technologie utilisée pour matérialiser les connexions est un facteur primordial dans le choix des circuits programmables. Ce choix dépend : – Du maintien ou non de la fonction programmée en absence d’alimentation. – De la possibilité ou non de modifier la fonction programmée. – De la facilité de mise en oeuvre (utilisation d’un appareil spécial). – De la densité d’intégration. – De la rapidité de fonctionnement. 4 – Technologie d’interconnexion 4.1 – Connexions programmables une seule fois (OneTime programming). • 4.1.1 – Cellules à fusibles • C’est la première technologie utilisée mais a pratiquement disparu (présente encore dans des circuits de conception ancienne et de faible densité). • Le principe consiste à détruire un fusible conducteur par passage d’un courant fourni par une tension supérieure à l’alimentation (12-25V). 4 – Technologie d’interconnexion 1 e1 fusible e2 S • A l’origine, toutes le connexions sont établies. • La programmation consiste à diriger les impulsions de courant vers les fusibles à détruire. • L’état de chaque fusible est représenté dans une table (0 Ö fusible intact, 1 Ö programmé) puis transféré sous forme d’un fichier normalisé (format JEDEC). 4 – Technologie d’interconnexion • 4.1.2 – Cellules à anti fusibles • C’est le principe de la soudure électrique par points. • Un point d’interconnexion est réalisé aux croisements de 2 pistes conductrices séparées par un isolant. • Une surtension (16 V /1 ms) entre les 2 pistes provoque la destruction de l’isolant et établit le contact. • Cette technologie ne permet pas la reprogrammation mais offre les avantages suivants : – Vitesse de programmation élevée. – Densité d’intégration élevée (1 point de connexion : 1 à 2 µm2; un fusible : 700 µm2). – Résistance de contact faible (et donc retard faible). 4 – Technologie d’interconnexion • 4.2 – Cellules reprogrammables • 4.2.1 – Cellules à transistors MOS à grilles flottantes et EPROM • Les transistors MOS sont des interrupteurs commandés par le potentiel appliqué sur la grille. • Ces composants peuvent alors être bloqués ou passants sans l’application permanente de la tension de commande. • Si la grille est isolée, indéfiniment (20 ans). elle conserve sa charge 4 – Technologie d’interconnexion • Le principe consiste à piéger ou non des électrons dans la grille à l’aide d’une tension supérieure à la tension d’alimentation. • L’extraction des électrons piégés permet le retour à l’état initial. • Ces circuits sont reprogrammables à volonté et les tensions utilisées suffisamment faibles pour qu’elles soient générées par les circuits eux mêmes dans certains cas (programmation in situ sans appareil extérieur). • Plusieurs technologies EPROM sont en concurrences : 4 – Technologie d’interconnexion • 4.2.1.1. – UV EPROM • Les connections sont réinitialisables par une exposition à un rayonnement UV d’une vingtaine de minutes (une fenêtre est prévue pour le composant). • L’effacement est lourd, non sélectif et ne peut se faire sur site. • Ce principe n’est pas utilisé dans les circuits logiques programmables étudiés. 4 – Technologie d’interconnexion • 4.2.1.2. – EEPROM • L’effacement et la programmation (quelques ms) se font électriquement (par une tension de 12 V) et de façon sélective. La reprogrammation de tout le composant n’est pas nécessaire. • Une cellule nécessite cinq transistors (75 à 100 µm2) ce qui réduit la densité d’intégration. • Le nombre de cycles de programmation est limité à 100 (CMOS 0,6 µm) ou 10 000 (CMOS 0,8 µm) à cause de la dégradation des isolants. 4 – Technologie d’interconnexion • 4.2.1.3. – Flash EPROM • Chaque cellule utilise uniquement deux transistors (25 µm2) de surface d’où une intégration 4 fois supérieure au cas de l’EEPROM (mais 10 fois inférieure à la technologie anti fusible). • Le nombre de cycles d’écriture est de 104 à 106 car l’épaisseur de l’isolant est plus importante. • La reprogrammation n’est pas sélective (cellules simples). Le temps de programmation est de quelques µs, celui d’effacement de quelques ms (sous 12 V). 4 – Technologie d’interconnexion • Les cellules Flash et EEPROM nécessitent une alimentation supplémentaire pour être programmées ou effacées. Cette alimentation est obtenue grâce à un circuit de pompe de charge intégré. • Le composant peut alors être programmé directement sur la carte. On parle alors de composants ISP (In Situ Programmation). 4 – Technologie d’interconnexion • 4.2.2 – Cellules SRAM • Pour les technologies à mémoire statique, l’état de chaque interrupteur est commandé par une cellule mémoire classique à 4 transistors (+ 2 de programmation). Sélection Etat mémorisé, commande de l’interrupteur Valeur Deux transistors • La modification de la configuration est une opération logique (bascule) et non électrique. • Cette technologie est très utilisée par les FPGA. 4 – Technologie d’interconnexion • Cette technologie offre de nombreux avantages : – Reconfiguration partielle ou totale et illimitée. – Possibilité de modifier la configuration en fonction des besoins. – Possibilité de créer des fonctions dont certains paramètres sont modifiables en cours de fonctionnement. – Accès rapide (ns) et sélectif grâce aux cellules SRAM. – Taille des cellules d’environ 50 µm2. • Le problème majeur est la recharge à chaque mise sous tension de la configuration (les données de configurations sont mémorisées dans une PROM ou par une pile). • C’est le haut de gamme de la technologie (avec les anti fusibles). 5 – Architectures utilisées 5.1 – Le PLD • Initialement appelé PAL, ce circuit utilise le principe du PLA à réseau ET programmable. • Capacité de calcul limitée par le nombre de produits et le nombre de facteurs de chaque produit. • Ce genre de circuit est progressivement abandonné au détriment des CPLD et FPGA. • Initialement bipolaires les cellules de connexions sont à présent en technologie MOS à grille flottante et donc reprogrammables. 5 – Architectures utilisées • Structure de base : PLA dont seule la matrice ET est programmable. I3 I2 I1 Réseau OU fixe I0 I0 I0 P0 P15 Réseau ET programmable F3 F2 F1 F0 5 – Architectures utilisées d c b P0 • Exemple de contacts : F0 = F1 = F2 = F3 = Réseau OU fixe a abc + abc + abc abcd + abcd abc + abc + abc + abc ab + ab P15 Réseau ET programmable F3 F2 F1 F0 5 – Architectures utilisées I15 I3 I2 I1 I0 I0 Réseau OU programmable I0 P0 • La matrice OU peut également être programmable (FPLA) Field PLA P15 Réseau ET programmable fusible contact I15 I3 I2 I1 I0 I0 Réseau OU programmable I0 P0 • Exemple : F0 = I0I1I2 + I0I1I2 = P0+P1 F1 = I0I1I15 + I0I1I2 = P2+P0 F2 = I1I3 + I1I2 + I0I15 + I0I1I2 = P3+P4+P5+P1 F3 = F2 P15 Réseau ET programmable F0 F1 F2 F3 5 – Architectures utilisées • Cette structure de base est associée à un bloc appelé O.L.M.C. (Output Logic Macro Cell) pouvant être : – Combinatoire (simple connexion reliant la sortie de la porte OU à l’entrée du buffer de sortie dont la sortie est réinjectée sur le réseau programmable). – Séquentielle (le bloc OLMC est alors une bascule D). – Versatile (choix par programmation d’une des deux configurations précédentes). 5 – Architectures utilisées • Les PLD de dernière génération utilisent des OLMC versatiles plus complexes. • Exemple du circuit de référence 22V10 : • Le multiplexeur 4 vers 1 met en circuit ou non la bascule D et permet d’inverser ou pas les signaux. • Le multiplexeur 2 vers 1 permet de réinjecter soit la sortie, soit l’entrée du buffer de sortie vers le réseau programmable. 5 – Architectures utilisées • Références d’un PAL : PAL EE T SS (PAL 22V10) – EE : nombre d’entrées – SS : nombre de sorties – T : type du PAL Type Désignation Type Désignation H Combinatoire à logique positive R A registre L Combinatoire à logique négative RA A registre asynchrone P Combinatoire à logique à polarité programmée RP A registre programmable C Combinatoire à logique complémentaire V Versatile 5 – Architectures utilisées • Les dernières générations de ces circuits sont appelées GAL (Generic Array Logic). • Ce sont des circuits à transistor MOS à grille flottante et donc reprogrammables électriquement. • Références d’un GAL : GAL EE T SS. • GAL est en fait une marque déposée de la société Lattice et ce genre de circuits devrait être appelé PAL MOS. 5 – Architectures utilisées 5.2 – Le CPLD (Complex PLD) • Un CPLD est approximativement une association de plusieurs PLD (afin d’intégrer un grand nombre de fonctions dans un même circuit). • Plusieurs PLD (appelés blocs logiques) sont intégrés sur une même pastille et reliés entre eux par une matrice d’interconnexions. • Une fonction logique est alors décomposée en opérations simples jusqu’à ce que les opérations élémentaires rentrent dans un des blocs logiques. 5 – Architectures utilisées • Chaque bloc LAB (Logic Array Bloc) contient 16 macrocellules et est l’équivalent d’un PLD à 16 OLMC. • Les blocs sont reliés entre eux par une matrice d’interconnexion appelée PIA (Programmable Interconnect Array). 5 – Architectures utilisées • Les blocs sont reliés par un seul point de connexion : – Temps de propagation d’un bloc à un autre constant et prédictible. – Phase de placement des différentes fonctions au sein des macro cellules non critique. • Le temps de propagation étant constant, le routage n’influe pas sur les performances du circuit. • La technologie de connexion utilisée est généralement de l’EEPROM ou de l’EPROM flash. • La partie concernant le placement et le routage est appelée « fitter ». 5.3 Le FPGA 5 – Architectures utilisées • Pour ces circuits, les blocs logiques sont plus nombreux mais plus simples que pour les CPLD. • Les interconnexions entre les blocs ne sont pas centralisées ce qui nécessitent d’importantes ressources de placement et de routage. 5 – Architectures utilisées • Les broches externes ne sont pas affectées aux blocs logiques et c’est l’utilisateur qui décide de cette affectation. • Les structures des blocs dépendent des familles de circuits et peuvent être : – Simples avec des ressources de routage importantes (FPGA à anti fusibles). – Compliquées avec moins de ressources de routage (FPGA SRAM). • Dans tous les cas, ces blocs restent moins compliqués que pour les CPLD. 5 – Architectures utilisées Actel (AC3) Xilinx (XC4000) • Le passage d’un bloc à un autre se fait par un nombre de connexion dépendant de la position relative de ces deux blocs et de l’état d’encombrement de la matrice d’interconnexion. • Contrairement aux CPLD, le temps de propagation est imprédictible avant placement et routage. 5 – Architectures utilisées • Un autre exemple de bloc logique simple est basé sur l’utilisation de LUT (Look Up Table). • Ce sont des structures permettant de synthétiser une fonction à partir d’un multiplexeur. • Les sorties de la table de vérité sont présentes dans des cellules SRAM connectées directement à un multiplexeur. • La sortie du multiplexeur correspond alors à la fonction logique recherchée. 5 – Architectures utilisées • Exemple : y = a b c D0 + a bc D1+ a bc D2 +a bc D3 +a b c D4 +a bc D5 +abc D6 +abc D7 a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 y 0 1 1 1 1 0 0 1 5 – Architectures utilisées • Les performances du circuit (vitesse) dépendent donc de la phase de placement des blocs et de routage des connexions. • Exemple : – Liaison BA vers BL : 2 blocs éloignés mais peu de connexions donc un faible retard introduit (lié à la résistance de connexion et à la capacité parasite). – Liaison BD vers BH : 2 blocs voisins mais beaucoup de connexions et donc un retard important. BA BD BH BL 5 – Architectures utilisées • Les technologies de connexions sont généralement de types SRAM, antifusibles ou encore Flash. • Actel est le leader mondial des FPGA à technologie Flash. Cette technologie est très utilisée dans l’aéronautique car elle présente une grande immunité aux rayonnements cosmiques (comme les anti fusibles). 1 bit faux 5 – Architectures utilisées • Résumé des trois types de connexions : SRAM Reprogrammable Flash Reprogrammable Non volatile anti fusible Non volatile 5 – Architectures utilisées • Il est possible d’implanter dans des FPGA des fonctions aussi complexes qu’un microcontrôleur. • Ces fonctions sont fournies par le constructeur et portent le nom de « megafunction » ou « megacore ». Le terme générique utilisé est « propriété intellectuelle » (IP). • La RAM réservée pour les connexions peut également être utilisée comme RAM « classique ». 6 – Les outils de développement • Initialement la programmation consistait à transformer la description structurelle du circuit en table des fusibles (fichier JEDEC). • Le programmateur délivrait alors des surtensions aux endroits précis du circuit où devaient être grillés les fusibles. • Deux nouvelles techniques sont à présent utilisées. 6 – Les outils de développement 6.1 – Fonctionnement normal, programmation et test • Le principe consiste à imposer dans l’architecture du circuit les trois modes suivant : fonctionnement normal, programmation et test. • Il est quasi impossible de tester de l’extérieur les cartes d’ou la mise en place pour les tests de la norme J.T.A.G. (Join Test Action Group). • Lorsque le mode test est activé, il y a : – Inhibition du fonctionnement normal. – Connexion des broches du circuit à des cellules dédiées aux tests (ces cellules sont connectées en un registre parcourant l’ensemble des broches). 6 – Les outils de développement 6.2 – Programmation in situ • Ce type de programmation consiste à programmer une carte directement à partir d’un PC (port parallèle, USB). • Les FPGA à SRAM offrent plusieurs possibilités de chargement de la mémoire de configuration : – Chargement automatique : à chaque mise sous tension les données d’une mémoire PROM sont rechargées (chargement série (peu de broches) ou parallèle (rapide)). – Chargement série ou parallèle : réalisé à partir d’un processeur maître autorisant les modifications rapides des configurations y compris pendant le fonctionnement. 6 – Les outils de développement 6.3 – Principe • Plusieurs étapes apparaissent dans l’outil de développement : – 1. La description de la fonction à réaliser (graphique ou textuelle). – 2. La compilation afin de vérifier la cohérence de la description, la syntaxe et d’effectuer une simulation. – 3. Le placement et le routage pour un circuit donné (étape fondamentale pour l’optimisation du système). – 4. Programmation du circuit et vérification du fonctionnement. • Résumé des étapes : 6 – Les outils de développement Description (textuelle ou graphique) Compilation et vérification Simulation fonctionnelle Placement, routage, simulation temporelle Programmation Vérification 7 – Choix du circuit • 3 grandes familles à distinguer : – Les PLD et CPLD en technologie Flash. Généralisation à la programmation in situ, circuits réservés à des fonctions moyennement complexes mais rapides (200 MHz). – Les FPGA à SRAM et Flash. Large gamme de produits (en densité et en vitesse), circuits reprogrammables à volonté et configurables rapidement (200 ns). – Les FPGA à anti fusibles. Programmables une seule fois, ils tendent à remplacer les ASIC. • D’autres critères doivent être pris en compte ! 7 – Choix du circuit 7.1 La puissance de calcul • Différents paramètres la définissent : – Le nombre de portes : (>250 000 portes en 2000). – Le nombre de cellules : dépend du constructeur (10 bascules pour un 22V10, une centaine à quelques milliers pour un FPGA). – Le nombre d’entrées-sorties : de quelques dizaines à quelques centaines. – Capacité mémoire : les FPGA à SRAM contiennent de la mémoire pour stocker leurs configurations mais qui peut également être utilisée en tant que telle. – Routabilité : elle doit être le plus automatique possible pour l’utilisateur. 7 – Choix du circuit 7.2 Vitesse de fonctionnement : • Pour un PLD : – Comportement dynamique prévisible et indépendant de la fonction programmée. – Les notices fournissent directement les valeurs des fréquences maximum et du temps de retard entre les signaux appliqués et les fronts d’horloge. • Pour un FPGA : – Performances dépendante de la fonction, du placement et du routage. – Le routeur analyse le schéma généré et en déduit les différents temps de propagation. 7 – Choix du circuit 7.3 Consommation : • Pour aller vite, il faut de la puissance ! • Consommation réduite depuis l’utilisation de faibles tensions d’alimentation (3,3 V; 1,2 V...). • Les cellules de certains circuits sont programmables en deux modes : – Faible consommation. – Vitesse maximum (pour une consommation élevée). 7 – Choix du circuit • Expression du courant moyen consommé : ICC = ICC0 + k nL F + nS CS ∆V F/2 ICC0 : courant statique consommé au repos. nL : nombre moyen de cellules qui commutent sur le front d’horloge. nS : nombre moyen de sorties qui commutent sur le front d’horloge. CS : capacité de charge moyenne des sorties. ∆V : excursion de la tension de sortie. F : fréquence d’horloge. K : coefficient de consommation par cellule par hertz. • A ne pas négliger : k = 150 µA/MHz/cellule, 50 MHz, 100 cellules Ö 750 mA ! 7 – Choix du circuit 7.4 - Récapitulatif Nombre de portes Vitesse PLD CPLD FPGA 150 40 000 4 000 000 A technologie égale, le FPGA possède la fréquence de travail la plus basse. Technologie de connexion MOS à grille flottante MOS à grille flottante SRAM, Flash et anti fusible Codage des fonctions PLA PLA / LUT LUT / MUX 8 – Les évolutions • Exemple de la famille Spartan (Xilinx) : - 1998 : Spartan XCS40 $27 à $50 9 0.65µ, 1800 cellules logiques. 9 25 kbits max de ram distribuée. - 2000 : Spartan-2 XC2S100 $13 à $18 9 0.25µ, 2700 cellules logiques. 9 40 kbits de ram dédiée, 38 kbits de ram distribuée. - 2004 : Spartan-3E XC3S250E < $12 9 0.09µ, 5000 cellules logiques. 9 216 kbits de ram dédiée, 38 kbits de ram distribuée. 8 – Les évolutions • Exemple de la famille Virtex (Xilinx) : - 2000 : Virtex XCV400 $200 à $350 9 0.25µ, 10.000 cellules logiques. 9 84 kbits de ram dédiée, 154 kbits de ram distribuée. - 2004 : Virtex-4 XC4VLX15 < $120 9 0.09µ, 14.000 cellules logiques, 400-500 MHz. 9 864 kbits de ram dédiée, 96 kbits de ram distribuée. - 2008 : Virtex-5 XC5VSX240-T 9 0.065µ, 330.000 cellules logiques, 550 MHZ. 9 4200 kbits de ram distribuée. 8 – Les évolutions • Vers le tout FPGA ? $14.3B $11.6B $10.4B 84% PLD 16% ASIC PLD PLD 74% 26% 69% ASIC ASIC 1996 2003 31% 2006 • Les circuits ASIC s’imposent pour les fonctions standards à très gros volumes mais le prix et la souplesse des FPGA les imposent partout ailleurs. 8 – Les évolutions • La fonction SOPC : Actuellement, la tendance est la migration du microprocesseur dans le FPGA : On parle alors de SOPC (System On Programmable Chip). Flash µproc Port Zone reconfigurable dynamiquement Disque dur • D’ici 2010, 50% des FPGA intégreront un µprocesseur dans leurs structures. Réseau • Le cœur de processeur peut être de type « Hard » ou de type « Soft » c’est à dire que la fonction processeur est développée puis chargée dans le FPGA (blocs IP en VHDL). C’est ce qu’on appelle le Softcore (≠Hardcore). 8 – Les évolutions • Deux principales familles : Altera Xilinx Type ARM9 PowerPC405 Hard RISC 32 bits RISC 32 bits Excalibur Virtex 2, 4, 5 Nios II Microblaze Soft • Le processeur peut également emporter un système d’exploitation (OS) ( Linux, µClinux,…). • Exemple de la famille Altera (Excalibur) : - Un FPGA de type APEX (EP20K200E). - Un CPLD (Max 7064). - Possibilité d’implanter un processeur NIOS (Netware Input Output System). 8 – Les évolutions 8 – Les évolutions • Exemple de la famille Xilinx : - Processeurs « Hard » : PowerPC 350/450 MHz. - Processeurs « Soft » : PicoBlaze 8 bits (jusqu’à 44 Mips (Spartan3) (< 200 cellules logiques) et gestion du séquentiel : PWM I2C / UART / SPI, claviers, afficheurs. - Processeurs « Soft » : MicroBlaze 32 bits (jusqu’à 68 DMips (Spartan3), mémoires, communication…). 8 – Les évolutions • EDK (Embedded Development Kit) : Environnement de développement (construction du système virtuel : périphériques, bus, ..., codage, debug,…). • Plusieurs architectures possibles : Le processeur au centre des périphériques dans le FPGA ou le processeur en tant que bloc parmi d’autres. • Un processeur « soft » doit être petit : Plutôt un processeur sans RTOS par tâche qu’un processeur unique et un logiciel critique. Structure du PAL 22V10 : 10 OLMC reliées par un PLA à matrice OU programmable. Le délai de propagation des signaux est de 4 ns d’où une fréquence de fonctionnement jusqu’ à 230 MHz. Structure de la famille MAX7000 (CPLD) : elle comprend des circuits de 600 à 20 000 portes (600 à 5000 portes utilisables) et utilise une technologie EEPROM. Les circuits les plus rapides ont des temps de propagation broche à broche de 5 ns d’où une fréquence de fonctionnement pouvant aller jusqu’ à 175 MHz. Chaque bloc logique (LAB) comprend 16 macrocellules. Chaque macrocellule est constituée d’une matrice ET programmable, d’une matrice OU fixe et d’une bascule configurable en sortie. Structure de la famille FLEX10K (hybride CPLD/FPGA) : ces circuits intègrent de 10 000 à 250 000 portes et jusqu’à 40 kbits de RAM. La structure ressemble à celle d’un CPLD classique avec une seule matrice d’interconnexion qui relie les blocs logiques entre eux. Les retards dus aux connexions sont donc prévisibles. Par contre, comme pour un FPGA, les connexions sont réalisées en technologie SRAM. Chaque bloc logique (LAB) contient 8 éléments logiques (LE). La partie combinatoire d’un élément logique est réalisée par une mémoire à 4 bits d’adresse et 1 bit de donnée (LUT), celle ci attaquant une bascule. Structure de la famille cyclone II 2C20 (FPGA) : Technologie 90 nm avec 20 000 éléments logiques (structure ci-dessous). Fréquence de travail : 320 MHz.