ENSEIRB LES CIRCUITS LOGIQUES PROGRAMMABLES ALTERA Laurent DULAU Patrice KADIONIK email http : kadionik@enseirb.fr : http://www.enseirb.fr/~kadionik - 1 / 70 - CETTE FORMATION EN LIGNE PRESENTE LES PRINCIPAUX COMPOSANTS ET OUTILS D ALTERA ON TROUVERA DES INFORMATIONS : - UNE PRESENTATION DES PRINCIPALES FAMILLES DE COMPOSANTS PROGRAMMABLES - UNE PRESENTATION DE L OUTIL MAX+PLUS II - UNE PRESENTATION DU LANGAGE AHDL - UNE PRESENTATION DU LANGAGE VHDL - UN EXEMPLE DE CONCEPTION AVEC L OUTIL MAX+PLUS II - 2 / 70 - Introduction à la logique programmable Pas vraiment des ASICs. Personnalisation et mise en œuvre simple. Composant directement disponible sur catalogue. Pas de retour chez le fabricant sauf pour les versions masquables. PAL, GAL, PLD, EPLD, FPGA 4 technologies : EPROM, EEPROM, SRAM, ANTIFUSIBLE Les circuits logiques programmables Altera ENSEIRB - 3 / 70 -
2 architectures : Les PLD : EPROM, EEPROM (Programmable Logic Device) Ce sont des assemblages de macro-cellules fonctionnelles disposant de beaucoup d entrées/sorties placées sur la pastille de part et d autre d une zone centrale où sont regroupées toutes les connexions à réaliser. - 4 / 70 - Les FPGA : SRAM, ANTIFUSIBLE (Field Programmable Gate Array) Provenant des réseaux de portes, conservent de leurs origines une structure en nombreux petits îlots entourés chacun par des lignes où ils se connectent à la demande. - 5 / 70 - Fabricants / technologies ACTEL ALTERA AMD ATMEL LATTICE XILINX ANTIFUSE, SRAM EPROM, EEPROM, SRAM EEPROM SRAM EPROM, EEPROM SRAM, ANTIFUSE, EPROM, EEPROM - 6 / 70 -
La technologie EEPROM Les EPLD à EPROM sont programmables électriquement et effaçables aux UV. Par contre les EPLD à EEPROM se reprogramment quasi instantanément et conservent la configuration donnée jusqu à ce qu une autre la remplace même en l absence de tension. La technologie SRAM Rapide et facile à programmer. (!) La configuration du composant s efface dès que la tension disparaît. - 7 / 70 - ALTERA Historique La société ALTERA est fondée en 1984 Premier circuit ALTERA commercialisé en EUROPE par TEKELEC en 1985-8 / 70 - ALTERA 8 familles : Classic (EPROM) MAX5000 (EPROM) FLASHlogic (SRAM & FLASH) MAX7000 (E 2 PROM) MAX9000 (E 2 PROM) FLEX 6K (SRAM) FLEX 8K (SRAM) FLEX 10K (SRAM) Les circuits logiques programmables Altera ENSEIRB - 9 / 70 -
ALTERA/CLASSIC Architecture : EPLD Techno : CMOS EPROM Nbre de portes : 300-900 Nbre d E/S : 22-64 Fmax : 50-100 MHz I/O drive : 25 ma - 10 / 70 - ALTERA/CLASSIC architecture Caractéristiques : EPLD très rapide Faible consommation Les circuits logiques programmables Altera ENSEIRB - 11 / 70 - ALTERA/MAX 5000 Architecture : EPLD type MAX (Multiple Array matrix) Techno : CMOS 0.65µm EPROM Nbre de portes : 600-3750 Nbre d E/S : 24-72 Fmax : 50-77 MHz I/O drive : 25 ma - 12 / 70 -
architecture ALTERA/MAX 5000-13 / 70 - ALTERA/MAX 5000 Caractéristiques : EPLD rapide Faible coût Utilisation facile Applications : Décodeur d adresses 20 pins Périphériques LSI 100 pins - 14 / 70 - ALTERA/FLASHlogic Architecture : PLD Techno : CMOS 0.65µm SRAM Nbre de portes : 1600-3200 Nbre d E/S : 62-172 Fmax : 80 MHz I/O drive : 25 ma - 15 / 70 -
architecture ALTERA/FLASHlogic - 16 / 70 - ALTERA/FLASHlogic Caractéristiques : PLD rapide Faible coût Utilisation facile Applications : Décodeur d adresses 20 pins Périphériques LSI 100 pins - 17 / 70 - ALTERA/MAX 7000 Architecture : CPLD type MAX (Multiple Array matrix) Techno : CMOS 0.6µm E 2 PROM Nbre de portes : 600-5000 Nbre d E/S : 36-164 Tpd : 5-10 ns I/O drive : 25 ma - 18 / 70 -
ALTERA/MAX 7000 Architecture - 19 / 70 - ALTERA/MAX 7000 Caractéristiques : Très rapide Très dense Grand nombre d E/S 3.3V/5V sur les E/S (5V sur le cœur) ISP (MAX 7000S) par bus JTAG Test JTAG Boundary Scan (MAX 7000S) Délais prédictibles (interconnections continues) - 20 / 70 - ALTERA/MAX 9000 Architecture : EPLD type MAX (Multiple Array matrix) Techno : CMOS 0.65µm E 2 PROM Nbre de portes : 6000-12000 Nbre d E/S : 159-216 Tpd : 12-15 ns I/O drive : 25m A - 21 / 70 -
Architecture ALTERA/MAX 9000-22 / 70 - ENSEIRB ALTERA/MAX 9000 Caractéristiques : Très rapide Très dense Grand nombre d E/S 3.3V/5V sur les E/S (5V sur le cœur) ISP par bus JTAG Test JTAG Boundary Scan Délais prédictibles (interconnections continues) Programmation en chaîne par bus JTAG via le module Bit Blaster Les circuits logiques programmables Altera - 23 / 70 - ALTERA/FLEX 6000 Architecture : FPGA type OptiFLEX (Flexible Logic Element matrix) Techno : CMOS 0.35 ou 0.5µm SRAM Nbre de portes : 5000 à 24000 Nbre d E/S : 160 à 215 Tpd : I/O drive : 25 ma - 24 / 70 -
Architecture ALTERA/FLEX 6000-25 / 70 - ALTERA/FLEX 6000 Caractéristiques : faible consommation (1mA en stand by) Très dense Compatible norme PCI 3.3V/5V Test JTAG Boundary Scan Programmation en chaîne par bus JTAG via le module Bit Blaster - 26 / 70 - ALTERA/FLEX 8000 Architecture : FPGA type FLEX (Flexible Logic Element matrix) Techno : CMOS 0.65µm SRAM Nbre de portes : 2500-16000 Nbre d E/S : 78-208 Tpd : I/O drive : 25 ma - 27 / 70 -
Architecture ALTERA/FLEX 8000-28 / 70 - ALTERA/FLEX 8000 Caractéristiques : faible consommation (1mA en standby) Très dense Grand nombre d E/S 3.3V/5V sur les E/S (5V sur le cœur) Test JTAG Boundary Scan Programmation en chaîne par bus JTAG via le module Bit Blaster - 29 / 70 - ALTERA/FLEX 10K Architecture : Mer de portes type FLEX (Flexible Logic Element matrix) Techno : CMOS 0.5µm SRAM Nbre de portes : 10000-130000 (250000 Déc97) Nbre d E/S : 134-406 Tpd : I/O drive : 25 ma - 30 / 70 -
Architecture ALTERA/FLEX 10K - 31 / 70 - ENSEIRB ALTERA/FLEX 10K Caractéristiques : faible consommation (1mA en stand by) Très dense Grand nombre d E/S 3.3V/5V sur les E/S (5V sur le cœur) Test JTAG Boundary Scan Programmation en chaîne par bus JTAG via le module Bit Blaster 6K-24K de RAM Les circuits logiques programmables Altera - 32 / 70 - ALTERA/FLEX 10K Applications : Petites mémoires (SRAM, FIFO) DSP et filtrage numérique Unité Arithmétique ATM, interface PCI... - 33 / 70 -
Plate-forme : Windows3.1, NT, 95, SUNOS, SOLARIS Entrée du design Compilation du design Vérification du design - 34 / 70 - Les différents menus MAX+PLUS II FILE - 35 / 70 - ASSIGN OPTIONS - 36 / 70 -
HELP - 37 / 70 - Les Principaux icones Floorplan Editor Compiler Hierarchy Display Simulator Timing Analyzer Programmer Open File Project Name Help Top level design File Save input file and check Save input design file and compile Save input file and Simule New File - 38 / 70 - Editeur graphique double click pour insérer un composant - 39 / 70 -
Editeur de symbole - 40 / 70 - Le langage AHDL Altera very High Speed Integrated Circuit Hardware Description Language Langage de description créé par Altera Plus souple et plus proche du composant que son grand frère VHDL Non exportable Possibilité par exemple d inclure des composants des bibliothèques Altera comme ceux de la serie 74xx ou de la librairie primaire comme par exemple une bacule D DFF Machine d état et compteur facile à mettre en œuvre Description par table Choix possible du type de composant Altera depuis le fichier Rétroannotation possible après compilation - 41 / 70 - Corps d un fichier AHDL du type name.tdf DESIGN IS 'name' DEVICE IS '7032LC44'; %choix d'un composant% CONSTANT x=n; par exemple countmax =14 pour un compteur INCLUDE "4count" appel au compteur 4count de la bibliothèque SUBDESIGN IS 'name' ( in1 : INPUT = constante; in2 : INPUT; inout1 : BIDIR; out1,out2[16..0] : OUTPUT; state_machine_1 : MACHINE INPUT; state_machine_1 : MACHINE OUTPUT; ) VARIABLE %type de composant% Q[n..0]: DFF; n+1 bacule D appelée Q0 à Qn cpt: 4count;cpt est du type 4count ss: MACHINE WITH STATES (S0, S1, S2); ss est une machine d'état BEGIN END; - 42 / 70 -
LES STRUCTURES IMPORTANTES FOR index_variable IN range GENERATE END GENERATE; IF expression THEN ELSIF expression THEN ELSE END IF; CASE expression IS WHEN constant_value => WHEN constant_value => WHEN OTHERS => END CASE; - 43 / 70 - TABLE node_name, node_name => node_name, node_name; input_value, input_value => output_value, output_value; TABLE DE VERITE input_value, input_value => output_value, output_value; input_value, input_value => output_value, output_value; END TABLE; VARIABLE ss : MACHINE WITH STATES (etat0,etat1,etat2); BEGIN ss.clk = clk; ss.reset=reset; CASE ss IS WHEN etat0 THEN GRAPHE D ETATS a=gnd; b=vcc; ss=etat1; WHEN etat1 THEN etc... END; - 44 / 70 - Le langage VHDL Very High Speed Integrated Circuit Hardware Description Language Normalisation des langages de description ( norme IEEE 1076.87/93 ) Uniformiser l apprentissage Portabilité Bibliothèques Un modèle VHDL peut être : Comportemental : Décrit la fonctionnalité d un objet par un algorithme séquentiel, ou table de vérité, sans référence à une structure d implémentation quelconque. Flux de données : Décrit le flux entre entrée et sortie au niveau bit, par des équations élémentaires. Structurel : Décrit la constitution de l objet en un ensemble d objets élémentaires interconnectés ( proche du schéma ). - 45 / 70 -
Structure hiérarchique d un modèle VHDL Unité de conception primaire : vue externe d un objet Entités (ENTITY) boite noire associé à une architecture décrivant la hiérarchie et le comportement de cette boite. Paquetage (PACKAGE) ensemble de déclarations de composants, utilisable comme une bibliothèque. Les composants sont définis dans d autres fichier VHDL. Unité de conception secondaire : modèle interne d un objet Architecture relative à une entité (ARCHITECTURE) - 46 / 70 - Syntaxe VHDL Ecriture des instructions : séquentielle ( Langage de programmation classique ) Exécution : concurrente Processus : une instruction concurrente = un processus contient des instructions séquentielles 1 composant = ensemble de processus simultanés s exécutant de manière asynchrone et communiquant à travers des signaux classe d objets : constantes variables ( affectation immédiate, :=) signaux spécifiques à la description de l objet affectation séquentielle ( <= ) - 47 / 70 - Corps d un fichier VHDL du type name.vhd LIBRARY library_name; ENTITY entity_name IS PORT( input1, input2 : IN STD_LOGIC; input_vector : IN STD_LOGIC_VECTOR(high downto low); bidir1, bidir2 : INOUT STD_LOGIC; output1, output2: OUT STD_LOGIC); END entity_name; ARCHITECTURE a OF entity_name IS SIGNAL signal_name : STD_LOGIC; SIGNAL signal_name : STD_LOGIC; BEGIN END a; - 48 / 70 -
LES PROCESSUS CONCCURENTS --Une architecture contient généralement un processus. process_label: PROCESS VARIABLE variable1 : STD_LOGIC; VARIABLE variable2 : STD_LOGIC; BEGIN WAIT UNTIL clk_signal = '1'; si le processus est séquentiel -- Signal Assignment Statement -- Variable Assignment Statement -- Procedure Call Statement -- If Statement -- Case Statement -- Loop Statement END PROCESS process_label; - 49 / 70 - CASE expression IS WHEN constant_value => WHEN constant_value => WHEN OTHERS => END CASE; LES STRUCTURES IMPORTANTES IF expression THEN ELSIF expression THEN ELSE END IF; loop_label: FOR index_variable IN range LOOP END LOOP loop_label; - 50 / 70 - UTILISER DES COMPOSANTS DE VOTRE BIBLIOTHEQUE PACKAGE package_name IS COMPONENT component_name -- Type Declaration PORT( -- Subtype Declaration input1, input2 : IN STD_LOGIC; -- Constant Declaration bidir1, bidir2 : INOUT STD_LOGIC; -- Signal Declaration output1, output2 : OUT STD_LOGIC); -- Component Declaration END COMPONENT; END package_name; --utiliser ce composant dans votre schéma : instance_name: component_name PORT MAP ( formal_parameter => actual_parameter, formal_parameter => actual_parameter); - 51 / 70 -
Les librairies la librairie Primaire portes, bascules, entrées, sorties La librairie EDIF (Electronic Design interchange Format) assure la compatibilité entre différentes sources ( Mentor, Cadence, Viewlogic) série 74xx... Les mégafonctions série74, multiplieur, compteur, registre... Les modules paramétrables LPM additionneur, multiplieur, UART, ROM, RAM, FIFO, FFT... intégrables au VHDL Le programme AMPP (Altera Megafunction Partners Program) (modules disponibles sur catalogue) DSP, MPEG, DCT, ATM, PCI - 52 / 70 - Le compilateur - 53 / 70 - Analyseur de temps 3 types d analyse : Delay Matrix Setup/Hold Matrix Registered Performance - 54 / 70 -
Editeur de hiérarchie - 55 / 70 - Editeur de courbes - 56 / 70 - Le simulateur - 57 / 70 -
Le programmateur - 58 / 70 - Editeur de Floorplan Placement externe - 59 / 70 - Placement interne - 60 / 70 -
L AIDE EN LIGNE - 61 / 70 - Le Bit Blaster Programmation des PLDs à partir d un PC ou d une station de travail par bus série ou JTAG Vitesse de transfert : 9600/230000 b/s Programme les familles MAX 9000 et MAX7000S Configure Les séries FLEX lors de la mise au point - 62 / 70 - Configuration des FLEX10K par EPROM VCC VCC FLEX10K EPC1 nconfig DCLK DATA0 nstatut DCLK DATA OE CONF_DONE MSEL0 nce MSEL1 ncs - 63 / 70 -
Norme IEEE1149.1 de test du Joint Test Action Group. Test du composant sur le circuit imprimé. L interface comporte : Un registre de périphérie, le Boundary Scan Register. Un registre d instruction. L INTERFACE JTAG Le Boundary Scan Register C est un Registre à décalage - 64 / 70 - Le registre d instruction Impératifs de test : Observabilité : qualité des soudures. Contrôlabilité : Implantation du programme de test après fabrication puis configuration dédiéé à l application Commande JTAG : Issue de la norme (sample, extest, bypass. de reconnaissance (uescode : code utilisateur, idcode : code constructeur pour adressage et stockage. - 65 / 70 - LE FREQUENCEMETRE OSCILLATEUR 1MHz 3 AFFICHEURS 7 SEGMENTS SELECTEUR DE GAMME DIVISEUR PROGRAMMABLE 3 DECODEURS BCD / 7 SEGMENTS GENERATEUR D'IMPULSION MEMORISATION ET COMPTAGE SIGNAL D'ENTREE - 66 / 70 -
DESIGN SOUS FORME DE SCHEMA UNITE COMPTEUR RF CLK 3 *BASCULES 74175 RETARD (2 inverseurs HEX) RESET 3 compteurs BCD 74390 CLK RAZ SIGNAL D'ENTREE - 67 / 70 - DECODEUR BCD / 7SEGMENTS DESIGN SOUS FORME AHDL : PROCEDER PAR TABLE DE VERITE digit a b c d e f g 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 2 1 1 0 1 1 0 1 3 1 1 1 1 0 0 1 4 0 1 1 0 0 1 1 5 1 0 1 1 0 1 1 6 1 0 1 1 1 1 1 7 1 1 1 0 0 0 0 8 1 1 1 1 1 1 1 9 1 1 1 1 0 1 1-68 / 70 - DIVIVEUR DE FREQUENCE CLKIN DIVISEUR PAR 10 REALISE EN VHDL (div10.vhd) DIVISEUR PAR 10 REALISE EN VHDL (div10.vhd) DIVISEUR PAR 10 REALISE EN VHDL (div10.vhd) DIVISEUR PAR 10 REALISE EN VHDL (div10.vhd) DIVISEUR PAR 10 REALISE EN VHDL (div10.vhd) INIT INIT INIT INIT INIT INIT f e d MULTIPLEXEUR REALISE EN VHDL (mux.vhd) c CLKOUT REALISER UN FICHIER DIV10.VHD ET UN FICHIER MUX.VHD. FAIRE LE SCHEMA DIVISEUR.GDF b a choix - 69 / 70 -
F R E Q U E N C E M E T R E. G D F INIT HORLOGE CALIBRE DIVISEUR FREQUENCE_IN CLK CLR RAZ RF UNITES signal_input DIZAINES UNITE COMPTAGE COMPTEURBCD.GDF CENTAINES COMPTEUR 74393 Q1D Q1B & DECODEUR.TDF DECODEUR.TDF DECODEUR.TDF UNITES DIZAINES CENTAINES - 70 / 70 -