1 / 225

Initiation à la logique programmable

Initiation à la logique programmable. Typologie des circuits logiques. 1 fonction par circuit. PAL, CPLD FPGA. Microprocesseurs Microcontrôleurs DSP. Mixtes : FPGA + MICRO + RAM. RAM, ROM. Périphériques standards, ASICs. SOC.

drea
Download Presentation

Initiation à la logique programmable

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Initiation à la logique programmable

  2. Typologie des circuits logiques 1 fonction par circuit PAL, CPLD FPGA Microprocesseurs Microcontrôleurs DSP Mixtes : FPGA + MICRO + RAM RAM, ROM Périphériques standards, ASICs SOC Un système électronique numérique pourra être implémenté avec des circuits logiques de divers types : standards configurables séquentiables à mémoire spécialisés (System On Chip)

  3. Les composants programmables Typologie des circuits logiques à configuration interne à configuration interne figée programmable (PLDs, CPLDs, FPGA,...) (microprocesseurs) Langages de Langages de programmation : Méthodes & description : Assembleur, Outils de Abel, AHDL langage haut niveau conception langage haut niveau (C, java...) (VHDL,Verilog) Séquence Fichier de d'instructions configuration

  4. Intérêt des PLDs PLDs (Programmable Logic Devices) : acronyme générique de tout ce qui est circuit logique programmable (SPLDs, CPLDs, FPGA). L’intérêt que présentent les circuits programmables par rapport aux circuits à structure figée tient essentiellement à des impératifs technico-économiques, résumés en quelques mots clés : Intégration Temps réel Développement Confidentialité

  5. Intégration de systèmes par les PLDs Intérêt des PLDs x10 portes Moins de boîtiers : Moins de cartes x100 portes Cartes plus petites Consommation réduite 1000 à 10000 portes 1000 à x1000 000 portes

  6. Intégration fonctionnelle Intérêt des PLDs Il est courant d’implémenter avec le même circuit plusieurs fonctions distinctes Contrôleur I2C Port série Contrôleur VGA Contrôleur caméra Préprocesseur pixels Contrôleur RAM A la limite on crée un SOC : Système On Chip

  7. Temps réel : parallélisme Intérêt des PLDs Les unités fonctionnelles d’un PLD peuvent réagir simultanément et sans délai au même signal Unité 1 Unité 2 Unité 3

  8. Temps réel : pipeline Intérêt des PLDs Les unités fonctionnelles d’un PLD peuvent travailler simultanément de façon concurrentes Unité 1 Unité 2 Unité 3 Unité 4 Unité 5 Unité 6 Unité 7 Unité 8 Unité 9

  9. Développement aisé Intérêt des PLDs Existence d’outils de développement totalement dédiés à la conception de systèmes sur PLDs. Possibilité de portage de projets déjà implémentés sur d’autres cibles. Possibilité d’utiliser des noyaux de propriété intellectuelle (IP)* pour des fonctions standards. Le marché offre de plus en plus de PLDs intégrant des fonctions complexes jusqu’alors implémentées par des circuits spécialisés (RAM, multiplieurs…) ... * ou libres…

  10. Développement flexible Intérêt des PLDs Un modification même majeure des spécifications techniques n’entraîne pas nécessairement une modification de l’environnement externe des PLDs (circuit imprimé en particulier) Les PLDs actuels sont reconfigurables indéfiniment soit in situ soit par leur mémoire (PROM ou FLASH) de configuration. ...

  11. Coûts Intérêt des PLDs Tous les arguments cités en faveur des PLDs ont une incidence sur les côuts : Intégration : réduction des coûts d ’industrialisation (surface PCB, manipulations) Développement : réduction des délais de développement et de coût des avenants de modifications Portabilité des projets : les investissements intellectuels sont récupérables pour d’autres projets ou même commercialisables sous forme d ’IP.

  12. Confidentialité Intérêt des PLDs Sauf recopie intégrale d’un système intégrant des PLDs il est difficile d’en refaire la synthèse logique au seul examen des circuits et de leur fonctionnement... Les PLDs directement configurables disposent en général de la possibilité d’être programmés sans possibilité de relecture de leur configuration (bit de sécurité).

  13. Microcontrôleur ou PLDs ? Intérêt des PLDs La réalisation d’un système logique séquentiel peut amener à faire un choix entre microcontrôleur et PLD. D’où la nécessité d’en connaître quelques différences fondamentales : Un PLD est capable de réagir en temps réel à un changement d’état de ses entrées. Un PLD est capable d’implémenter plusieurs processus fonctionnant en parallèle Un PLD offre beaucoup plus de ports E/S qu’un microcontrôleur.

  14. Limites des PLDs Coût total Quantité Intérêt des PLDs Tout en présentant d’indéniables qualités, les PLDs présentent également des limites : Rapidité : les fréquences d ’horloge sont limitées au mieux à quelques centaines de MHz en raison des délais de propagation induits par le routage. PLDs Coût : si le coût de développement est en général avantageux, le coût en quantité peut s’avérer plus lourd que celui d’une solution à base d’ASICs. Asics

  15. Les PLDS : Approche Circuit programmable : circuit capable de recevoir une configuration programmée de ses ressources intégrées. La majorité des circuits programmables du marché sont des circuits logiques (peu d’analogiques) Principaux constructeurs du marché : Actel Altera DG France : ancien ESEO AMD Philips Vantis Xilinx DG France : ancien ESEO

  16. Les PLDS : Un ancêtre, le FPLA (1982) 48x16x2 + 48 x 8 = 1920 points de configuration Entrées * * fusibles titanium-tungstène 82S100 (Signetics) : 16 entrées (e1..e16), 8 sorties (S1..S8), 48 termes produits (P1..P48).

  17. FPLA : analyse de la configuration +5V e 1 S1 = e1.e2.e3 P1 = e1.e2.e3 e P1 2 e 3 +5V P1 P2 P3 S1 Un ancêtre : le FPLA Compte tenu des points de configuration activés (ou plutôt coupés), par exemple : Le terme produit P1 est issu d’un ET câblé tel que : La sortie S1 est issue d’un OU câblé tel que : S1 = P1 + P3 Ici P3 = 0 ; il reste :

  18. FPLA : représentation symbolique Un ancêtre : le FPLA Pour schématiser l’organisation et la configuration d’un PLD, on utilise en général la représentation suivante : e2 e3 e1 P1 P2 P3 S1 S2

  19. FPLA : synthèse Un ancêtre : le FPLA Au final, l’organisation d’un FPLA s’appuie sur deux matrices programmables : e2 e3 e1 Matrice de OU P1 P2 P3 Matrice de ET S1 S2 La matrice de ET fournit n termes produits à la matrice de OU.

  20. Les PLDS actuels : désignation Les circuits logiques programmables du marché sont classés en gros selon 3 grandes familles : SPLDs (Simple Programmable Logic devices) Les PLDS actuels : désignation CPLDs(Complex Programmable Logic Devices) FPGAs (Field Programmable Gates Array) Les critères de cette classification seront présentés lors de la synthèse finale de cet exposé.

  21. Les SPLDs Faible volume de ressource : quelques centaines de portes Pas de chemin d’interconnexion interne programmable (pas de « routage » nécessaire entre les E/S et les ressources du PLD) Unique réseau programmable de ET commun à un certain nombre de structures répétitives. Exemples : PAL, GAL, EPLD

  22. Un SPLD : le PAL Les SPLDs (Programmable Array Logic) Exemple : PAL16L8 (représentation partielle) Le réseau programmable est ici constitué d’une matrice de 32 colonnes x 64 lignes. Les colonnes donnent accès à toutes les entrées (directes et inverses) .

  23. PAL16L8 : la cellule Les SPLDs Les lignes sont regroupées ici par 10 pour former un motif répétitif, la cellule logique. Chaque cellule peut ici : Faire la somme de 7 termes produits Configurer la borne I/O en entrée ou en sortie

  24. PAL16L8 : l ’organisation Cellule logique (10 lignes) Pin I/O Buffer 3 états Réseau programmable 8x10lignes / 32 colonnes Les SPLDs 6 Entrées externes ou rétroactions 10 Entrées externes 8 cellules logiques chevauchent un réseau de 32 colonnes

  25. Exercice : Contrôleur d’interruption /IRQ I0 I1 I2 I3 I4 I5 I6 I7 Contrôleur d ’IT Micro processeur 3 A[2:0] Les SPLDs Le rôle du contrôleur d ’interruption est triple : Signaler au microprocesseur qu’une IT est demandée (/IRQ = 0) Indiquer le numéro d’IT à servir (codée sur 3 bits A[2:0]) Gérer la priorité des demandes : IT0 aura la plus grande priorité 8 entrées 4 sorties : a priori un PAL16L8 fera l’affaire

  26. Contrôleur d’IT : Table des états I7 I6 I5 I4 I3 I2 I1 I0 /IRQ A2 A1 A0 Les SPLDs S1 X X X X X X X 1 0 0 0 0 S2 X X X X X X 1 0 0 0 0 1 S3 X X X X X 1 0 0 0 0 1 0 S4 X X X X 1 0 0 0 0 0 1 1 S5 X X X 1 0 0 0 0 0 1 0 0 S6 X X 1 0 0 0 0 0 0 1 0 1 S7 X 1 0 0 0 0 0 0 0 1 1 0 S8 1 0 0 0 0 0 0 0 0 1 1 1 S9 0 0 0 0 0 0 0 0 1 X X X Chaque état du système est désigné par un label : S1 à S9. Ces labels servent par la suite à établir les équations des sorties sans utiliser directement les termes canoniques.

  27. Contrôleur d’IT : Equations sources Les SPLDs Equations des états : (syntaxe ABEL ou AHDL) S1 = I0; S2 = I1 & !I0; S3 = I2 & !I1 & !I0; S4 = I3 & !I2 & !I1 & !I0; S5 = I4 & !I3 & !I2 & !I1 & !I0; S6 = I5 & !I4 & !I3 & !I2 & !I1 & !I0; S7 = I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0; S8 = I7 & !I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0; S9 =!I7 & !I6 & !I5 & !I4 & !I3 & !I2 & !I1 & !I0; Equations des sorties : Attention : les buffers du PAL16L8 sont inverseurs. Il faut alors exprimer les inverses des sorties désirées. !IRQ = S9; !A0 = S1 # S3 # S5 # S7; !A1 = S1 # S2 # S5 # S6; !A2 = S1 # S2 # S3 # S4;

  28. Contrôleur d’IT : configuration du PAL Les SPLDs I7 /IRQ I6 A0 I5 A1 I4 A2 I7 I6 I5 I4 I3 I2 I1 I0

  29. Exercice : décodeur d’adresse En première approximation le décodeur se présentera comme suit : CS0 A[15..0] décodeur CS1 CS2 Les SPLDs Le PAL16L8 et ses dérivés conviennent à la réalisation de petites fonctions combinatoires : multiplexeurs, décodeurs, encodeurs... Exemple : on veut réaliser un décodeur d ’adresses pour 3 plages définies sur 16 bits comme suit : plage0 : ADR < 04000h plage1 : 04000h <= ADR < 07C00h plage2 : 07C00h >= ADR

  30. Décodeur : analyse A15..A12 A11..A8 CS0 CS1 CS2 0000 0000 0 1 1 0011 1111 0100 0000 1 0 1 0110 1111 0111 0000 1 0 1 0111 1011 0111 1100 1 1 0 1111 1111 0000->3fff plage0 4000->6fff plage1 7000->7bff 7c00->ffff plage2 Les SPLDs En fait les 8 bits de poids faible de l’adresse n’interviennent pas dans ce décodage. Une table de vérité permet d’affiner d’analyse. Les 6 bits de poids fort suffisent pour ce décodeur

  31. Décodeur : équations sources Les SPLDs A[15..10] CS0 décodeur CS1 CS2 module DECODEUR *Décodeur décrit en langage ABEL (DATAIO) declarations DECODEUR device 'P16L8'; A15,A14,A13,A12,A11, A10 PIN 02,03,04,05,06,07; CS0,CS1,CS2 PIN 19,18,17; ADR = [A15,A14,A13,A12,A11,A10,X,X,X,X,X,X,X,X,X,X]; equations !CS0 = (ADR < ^h4000); !CS1 = (ADR >= ^h4000) & (ADR < ^h7C00); !CS2 = (ADR >= ^h7C00); end DECODEUR;

  32. Décodeur : équations réduites Les SPLDs La compilation du fichier source précédent donne les équations réduites, c’est-à-dire ramenées en sommes de termes canoniques utilisant les seuls signaux nécessaires. !CS0 = !A15 & !A14; !CS1 = !A15 & A14 & !A10 # !A15 & A14 & !A11 # !A15 & A14 & !A12 # !A15 & A14 & !A13); !CS2 = A14 & A13 & A12 & A11 & A10 # A15;

  33. Décodeur : fichier de configuration Les SPLDs L ’assemblage des équations réduites produit le fichier de configuration (fichier fusibles) du réseau programmable de la cible désignée. NOTE Table of pin names and numbers* NOTE PINS A15:2 A14:3 A13:4 A12:5 A11:6 A10:7* NOTE PINS CS0:19 CS1:18 CS2:17* L0000 11111111111111111111111111111111* L0032 10111011111111111111111111111111* L0256 11111111111111111111111111111111* L0288 10110111111111111111101111111111* L0320 10110111111111111011111111111111* L0352 10110111111110111111111111111111* L0384 10110111101111111111111111111111* L0512 11111111111111111111111111111111* L0544 11110111011101110111011111111111* L0576 01111111111111111111111111111111* Ce fichier ne désigne que les lignes de la matrice intervenant dans le projet : les ‘ 1 ’ correspondent aux fusibles à couper.

  34. Décodeur : programmation du PAL A15 A14 A13 A15 A14 A13 A12 A11 A10 Les SPLDs Un programmateur spécialisé fait fondre les fusibles du PAL selon les directives du fichiers de fusibles ( = fusible intact). CS0 CS1 CS2

  35. Programmation d ’un SPLD : synthèse Les SPLDs Cahier des charges Analyse du problème Résolution du problème par mise en équations ou algorithmes Choix du PLD en fonction du nombre d ’E/S Saisie des équations ou algorithme Compilation -> équations réduites Génération d’un fichier de configuration

  36. Un PAL pour le séquentiel : PAL16R8 R comme Register OE clock Les SPLDs Le réseau programmable est identique à celui du PAL16L8. L’architecture finale de la cellule intègre une bascule D, dont l’horloge est commune à toutes les cellules.

  37. Un PAL plus flexible : PALCE16V8 Réseau identique à celui des PAL16L8 et PAL16R8 Les SPLDs Les PALs présentés en introduction aux SPLDs à titre d ’exemple ne sont pratiquement plus disponibles. Ils sont remplacés par un PAL plus flexible, plus performant, le PALCE16V8 (CE : CMOS Erasable ; V : versatile)

  38. PALCE16V8 : la cellule Les SPLDs Les 8 cellules logiques de ce PAL sont configurables en : - sortie combinatoire - sortie séquentielle(registred) - en entrée grâce à 4 multiplexeurs programmables.

  39. PALCE16V8 : le XOR programmable Les SPLDs La sortie traverse un XOR programmable. Ce dispositif permet d’inverser la somme fournie par le OU pour faire face aux cas où le nombre de termes produits en entrée serait supérieur à 8, ceci en utilisant les propriétés du théorème de Morgan. Ce système se retrouve pratiquement dans toutes les cellules des PLDs.

  40. Rôle du XOR programmable Les SPLDs Exemple : soit l ’équation réduite : E8 = !init &pbd &!x &!y &!test & E8 # !init &pbc & x & y &!test & E8 # !init &pba & x &!y &!test & E8 # !init &pba &!x & y &!test & E8 # !init &pbd &!x &!y & X7 # !init &pbc & x & y & E7 # !init &pba & x &!y & E7 # !init &pba &!x & y & E7 # !init &pbd &!x &!y & E7 # !init &test & E7 ; Une seule cellule logique d’un PALCE16V8 sera incapable d’implémenter directement cette somme : il y a 9 termes produits et le OU de la cellule ne comporte que 8 entrées.

  41. Rôle du XOR programmable (2) Les SPLDs Solution au problème : si le même terme E8 est exprimé par son inverse, le résultat ne comportera plus ici que 7 termes produits : !E8 = init # !pbd &!x &!y &!test # !pbc & x & y &!test # !pba & x &!y &!test # !pba &!x & y &!test # !E7 &!E8 # !E7 &!test; Le OU d’une cellule peut implémenter cette somme et le résultat doit par la suite être inversé grâce au XOR programmable. Cette opération d ’inversion est en général laissée au compilateur qui choisit l’expression directe ou inversée de la somme selon les cas, quand c’est possible.

  42. Saturation de la cellule : problème Les SPLDs La saturation d’une cellule par excès de termes produits de la somme à implémenter, non résolue par l’inversion, est un problème récurrent. La solution consiste en général à décomposer la somme autant d’expressions que nécessaire pour permettre leur implémentation chacun par une cellule distincte.

  43. Saturation de la cellule : exemple a b c d e cellule1 /aux cellule2 /Y Les SPLDs /Y !Y= P1 # P2 # P3 # P4 # P5 # P6 # P7 # P8 # P9 # P10; !aux = P1 # P2 # P3 # P4 # P5 #P6 # P7 # P8; !Y = aux # P9# P10;

  44. Message d’inadéquation (1) Les SPLDs En général ce message correspond à une combinatoire trop importante, représentée par des équations réduites comportant trop de termes produits.

  45. Message d’inadéquation (2) Les SPLDs Le projet demande plus de cellules logiques que la cible choisie n’en possède.

  46. Une variante aux PALs : le GAL Les SPLDs Generic Array Logic Autre solution au problème précédent : utiliser des circuits dont les cellules logiques comportent des OU possédant un nombre supérieur d’entrées, tel le GAL22V10 de VANTIS (représentation partielle à 50%). Réseau 130 x 44

  47. GAL22V10 : la cellule Les SPLDs La cellule logique donne à quelques détails près les mêmes possibilités de configuration qu’un PALCE grâce à 2 multiplexeurs programmables. 8 à 16 entrées

  48. Exercice : bascule toggle Les SPLDs Q D Clk Q T CS Configurer la matrice de cette cellule pour avoir une bascule T (‘toggle’) avec clear synchrone

  49. Les CPLDs Volume moyen de ressources : quelques milliers de portes. Cellules logiques organisées en plusieurs blocs logiques identiques ayant chacun leur réseau programmable indépendant et non relié directement aux pins E/S. Chaque bloc logique est équivalent à un SPLD sans pins.

  50. Les CPLDs (2) Les CPLDs Chemin d’interconnexion interne programmable par une matrice d’interconnexion commune. (« routage » nécessaire entre les E/S et les blocs du CPLD) Pour une même puce, choix du boîtier en fonction des pins E/S nécessaires. Exemple : famille EPM7000 de Altera

More Related