بسم اهلل الرحمن الرحيم µprocesseurs & µContrôleurs Pr Abdelmajid HAJAMI IBIM 2022 Plan Electronique numérique Rappels des bases de l’électronique numérique Langage VHDL et conception de circuits Microprocesseur Notions de base sur les microprocesseurs Système à microprocesseur Etude d’un microprocesseur 16 bits Techniques de programmation Microcontrôleurs Architecture d’un microcontrôleur Microcontrôleur 68HC11. Pr. Abdelmajid HAJAMI 2 Evaluation Contrôles Continus Devoirs Travaux de recherche Exposés assiduité Pr. Abdelmajid HAJAMI Travaux pratiques Absence : 3 Règles de travail Pr. Abdelmajid HAJAMI Désigner un représentant de classe Durée de la séance : De 9h00 à 12h00. Pause de 10 min. Moyens de communication (décisions): Contact direct en classe (pas dans les couloires) Email du groupe Email du représentant Pas de téléphone Retard tolérable de 10min Respect des RDV (changement, remise des travaux, …) 4 Electronique numérique Rappels Pr. Abdelmajid HAJAMI 5 Électronique Partie de la physique appliquée, traitant de la mise en forme et de la gestion des signaux électriques, permettant de transmettre/recevoir mais aussi traiter et mémoriser des informations Pr. Abdelmajid HAJAMI 6 Électronique Analogique La discipline s’intéresse au traitement continu des signaux analogiques, c’est-à-dire ceux évoluant d’une façon continue dans le temps et considérés comme tels Pr. Abdelmajid HAJAMI Numérique s’intéresse au traitement des signaux dont l’espace de valeurs est discret. Ainsi, le nombre de valeurs que peuvent prendre ces signaux est limité. Celles-ci sont codées par des nombres binaires. 7 Électronique numérique En numérique, les composants électroniques actifs (Diodes et transistors) fonctionnent en régime de commutation (bloqué ; saturé = fermé ; ouvert) Pr. Abdelmajid HAJAMI 8 Électronique numérique Portes logiques Les portes logiques sont réalisées à partir de composants électroniques élémentaires (Diodes, Résistances, Transistors), Pr. Abdelmajid HAJAMI 9 Électronique numérique Technologies des portes logiques Pr. Abdelmajid HAJAMI TTL CMOS Conception - Bipolaire + FET temps propagation + (10 ns) - (40 ns) consommation - (2 mw) + (10 nw) Alimentation - (0-5v) + (3-18v) Sortance - (10) + (50) 10 Électronique numérique Portes logiques trois états En plus des états Haut (1 logique) et Bas (0 logique) , ces portes peuvent être dans un troisième état appelé Haute Impédance où elles sont considérée comme un circuit ouvert. Entrées Porte logique Commande Pr. Abdelmajid HAJAMI Sortie ‘0’ : Normale ‘1’ : Haute impédance 11 Électronique numérique Portes logiques trois états En plus des états Haut (1 logique) et Bas (0 logique) , ces portes peuvent être dans un troisième état appelé Haute Impédance où elles sont considérée comme un circuit ouvert. Pr. Abdelmajid HAJAMI 12 Électronique numérique Circuits logiques Ils réalisent des fonctions logiques en faisant appel à des portes logiques X Y z Circuit logique S X Y S z Circuit logique S=f(X,Y,Z) Pr. Abdelmajid HAJAMI 13 Électronique numérique Circuits logiques Circuits combinatoires Les états des sorties des circuits dépendent linéairement des états des entrées, Circuits séquentiels L’état actuel des sorties dépend de leurs anciens états et des états actuel des entrées Additionneur, soustracteur Bascules : D, RS, T, JK Codeurs, décodeurs Compteurs : synchrones, asynchrones Multiplexeurs, démultiplexeurs Registres à décalages UAL Mémoires … Pr. Abdelmajid HAJAMI 14 Électronique numérique Circuits combinatoires : Additionneur complet Ai Bi Ci-1 Table de vérité AiBi Σi Σ Ci retenue A B Ci-1 Σ C 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 00 01 11 10 0 0 1 0 1 1 1 0 1 0 Ci-1 logigramme Pr. Abdelmajid HAJAMI 15 Électronique numérique Circuits combinatoires : Additionneur complet 5 bits A4 Pr. Abdelmajid HAJAMI S2 S3 S4 Add complet n° 2 Add complet n° 3 Add complet n° 4 C C3 C4 C B2 B3 B4 A3 C1 C2 Add complet n° 0 Add complet n° 1 C0 S0 S1 A2 B0 B1 A1 A0 16 Électronique numérique Circuits combinatoires : Multiplexage Le multiplexage est un procédé qui permet de transmettre sur une seule ligne des informations en provenance de plusieurs sources ou à destination de plusieurs cibles. X0 X1 X2 Y X3 B A Le démultiplexeur réalise le travail inverse - Pr. Abdelmajid HAJAMI 17 Électronique numérique Circuits combinatoires : Multiplexage Considérons un multiplexeur à quatre entrées, donc deux lignes d'adressage, et une ligne de validation. E X0 X1 X2 Y X3 B Pr. Abdelmajid HAJAMI A 18 Électronique numérique Circuits combinatoires : Multiplexage Pr. Abdelmajid HAJAMI 19 Électronique numérique. TDs Systèmes de numération : Faites les changements de bases suivants: N=100111/2= ? /10 N=41/8= ? /10 33 N=1F/16= ? /10 31 N=19/10 = ? /2 10011 N=125/10 = ? /8 N=475/10 = ? /16 N=765/8= ? /2 N=7BF/16= ? /2 Pr. Abdelmajid HAJAMI 39 175 1DB 111110101 11110111111 20 Électronique numérique. TDs Systèmes de numération : Calculer les résultats des opérations arithmétiques suivantes: 1 0 0 10 1 + 1 1 1 1 1 1 = ? 1011101-101110=? 1001 x 101=? 11011 ÷ 111=? 11011 111 -1111 11 01101 111 0110 Pr. Abdelmajid HAJAMI 1 0 0 11 0 1 +111111 1100100 1001 x 101 1001 0000. 1001. 101101 1011101 - 1 11 01 11 1 1 0 0101111 21 Électronique numérique Circuits séquentiels: Bascule R.S.T ou R.S.Clock La bascule R.S.T. est une bascule pour laquelle les entrées S et R ne sont prises en compte qu'en coïncidence avec un signal de commande. Ce signal peut être fourni par une horloge, Les valeurs de S et R ne prennent effet que pendant les états actifs de Clk. Pr. Abdelmajid HAJAMI 22 Électronique numérique Circuits séquentiels: Bascule JK La bascule JK permet de lever l'ambiguïté qui existe dans la table de la bascule SR. Les entrées asynchrones Pr (Preset) et Cr (Clear) permettent d'assigner l'état initial de la bascule, par exemple juste après la mise sous tension pour éviter tout aléa. Pr. Abdelmajid HAJAMI 23 Électronique numérique Circuits séquentiels: Compteur asynchrone Un compteur asynchrone est constitué de n bascules J-K fonctionnant en mode T. Le signal d'horloge n'est reçu que par le premier étage . Pour chacune des autres bascules le signal d'horloge est fourni par une sortie de la bascule de rang immédiatement inférieur. Pr. Abdelmajid HAJAMI 24 Électronique numérique Circuits séquentiels: Compteur asynchrone Pr. Abdelmajid HAJAMI 25 Électronique numérique Circuits séquentiels: Compteur asynchrone à cycle incomplet On peut souhaiter compter jusqu'à un nombre N qui ne soit pas une puissance de 2, par exemple 10 (système décimal). Pour cela on utilise un compteur de n bascules, tel que 2n > N. On lui ajoute un asservissement de l'entrée Clear pour remettre le compteur à zéro tous les N coups. Pr. Abdelmajid HAJAMI 26 Électronique numérique Circuits séquentiels: Registre de mémorisation Un registre permet la mémorisation de n bits. Il est donc constitué de n bascules, mémorisant chacune un bit. La figure suivante donne un exemple de registre 4 bits réalisé avec quatre bascules D. Pr. Abdelmajid HAJAMI 27 Électronique numérique Circuits séquentiels: Registre à décalage Dans un registre à décalage les bascules sont interconnectées de façon à ce que l'état logique de la bascule de rang i puisse être transmis à la bascule de rang i+1 (ou i-1) quand un signal d'horloge est appliqué à l'ensemble des bascules. L'information peut être chargée de deux manières dans ce type de registre: Entrée parallèle ou Entrée série De même l'information peut être lue en série ou en parallèle. Pr. Abdelmajid HAJAMI 28 Électronique numérique Circuits séquentiels: Registre à décalage Entrée série - Sortie parallèle La figure suivante donne un exemple de registre de 4 bits à entrée série et sortie parallèle réalisé avec des bascules D Pr. Abdelmajid HAJAMI 29 Électronique numérique Registre à décalage Entrée parallèle - sortie série Circuits séquentiels: La figure suivante présente un exemple de registre à décalage à entrée parallèle ou série et sortie série. Si X = 1 l'entrée parallèle est inhibée et l'entrée série est validée. Si X = 0 l'entrée série est bloquée par contre le chargement par l'entrée parallèle est autorisé. Pr. Abdelmajid HAJAMI 30 Électronique numérique Circuits séquentiels: Registre à décalage universel La figure suivante présente un exemple de registre à décalage universel de 4 bits. Les diverses possibilités sont sélectionnées par les lignes commande S0 et S1. Pr. Abdelmajid HAJAMI 31 Électronique numérique. TDs Circuits combinatoires: Faire l’étude et la conception d’un compteur/décodeur BCD pour afficheur 7 segments, Le comptage se fait de 0 jusqu’à 9 (utiliser un compteur asynchrone). Q0 Q1 Compteur Q2 Q3 a A b c B d Décodeur e C f g D a b f g e c d Horloge Pr. Abdelmajid HAJAMI 32 Les Mémoires Pr. Abdelmajid HAJAMI 33 Les mémoires Dans un calculateur toutes les informations sont manipulées sous une forme binaire. Ces informations doivent en général être conservées pendant un certain temps pour permettre leur exploitation. Ce rôle est dévolu aux mémoires. Nous avons déjà rencontré les registres de mémorisation, mais ceux-ci ne sont pas adaptés aux grandes capacités de stockage Pr. Abdelmajid HAJAMI 34 Les mémoires – Définitions et terminologie Pr. Abdelmajid HAJAMI Mémoire : On appelle mémoire, tout système permettant de conserver une information et d'en disposer par la suite : par exemple un bit, un octet (huit bits) ou plus généralement un mot de n bits ou Byte. Capacité : On appelle capacité d'une mémoire le nombre de bits qu'elle peut conserver : on l'exprime généralement en octets ou en kilooctet (1024 octets) ou encore en mégaoctet (1024 kilooctets) ou en gigaoctet (1024 Megaoctets). 35 Les mémoires – Définitions et terminologie Pr. Abdelmajid HAJAMI Le format des données : C’est le nombre de bits que l’on peut mémoriser par case mémoire. On dit aussi que c’est la largeur du mot mémorisable. Le débit : C’est le nombre maximum d'informations lues ou écrites par seconde. Volatilité : Elle caractérise la permanence des informations dans la mémoire. L'information stockée est volatile si elle risque d'être altérée par un défaut d'alimentation électrique et non volatile dans le cas contraire. 36 Les mémoires Cycles de fonctionnement des mémoires Deux paramètres caractérisent la vitesse d'une mémoire. Le temps d'accès (ta): représente le temps qui sépare une demande de lecture de l'obtention de l'information. Pour une opération d’écriture, c’est le temps nécessaire pour écrire l’information. Le temps de cycle (tc): correspond à l'intervalle de temps minimum qui sépare deux demandes successives en lecture ou écriture. Pr. Abdelmajid HAJAMI 37 Les mémoires Cycle de lecture C'est le plus simple des cycles. La procédure consiste à : 1. Établir l'adresse; 2. Afficher la fonction de lecture; 3. Sélectionner le ou les boîtiers nécessaires; Après un certain délai, l'information apparaît sur la sortie qui passe en basse impédance. L'information reste présente jusqu'à la fin du cycle. Pr. Abdelmajid HAJAMI 38 Les mémoires Cycle de lecture Pr. Abdelmajid HAJAMI 39 Les mémoires Cycle d'écriture La procédure d'écriture consiste à : 1. Établir l'adresse; 2. Sélectionner le ou les boîtiers nécessaires; 3. Établir la donnée sur l'entrée; 4. Établir une impulsion d'écriture. Pr. Abdelmajid HAJAMI 40 Les mémoires Pr. Abdelmajid HAJAMI Cycle d'écriture 41 Les mémoires Principe : Entrée R/ W Cellule mémoire 1 bit Sélection ‘0’ : active ‘1’ : inactive Sortie Cellule mémoire 1bit Pr. Abdelmajid HAJAMI 42 Les mémoires Principe : Entrées R/ W Cellule mémoire Cellule mémoire Cellule mémoire Cellule mémoire 1 bit 1 bit 1 bit 1 bit Sélection Sortie Mot mémoire de 4 bits Pr. Abdelmajid HAJAMI 43 Les mémoires Principe : n entrées mot mémoire n bits mot mémoire n bits Sélections mot mémoire n bits mot mémoire n bits mot mémoire n bits mot mémoire n bits R/ W n sorties Mémoire de 6 mots de n bits taille = 6*n bits Pr. Abdelmajid HAJAMI 44 Les mémoires Adressage / Décodage : n E/S k lignes de sélection Décodeur 1/m m mots de n bits m = 2k R/ W Pr. Abdelmajid HAJAMI 45 Les mémoires Boîtier final : n E/S k lignes de sélection 2k * n bits R/ W 𝑪𝑺 Pr. Abdelmajid HAJAMI 46 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): Clk RAM ROM EPROM Data Bus Central Unit @ Bus Control Bus Parallel I/O Serial I/O CAN Timer • Data Bus: bus de données, pour véhiculer les données entre les éléments du système, • @ Bus: utilisé par la Central Unit pour adresser (sélectionner) le reste des éléments du système, • Control Bus: utilisé par la Central Unit pour controler le reste des éléments du système, Pr. Abdelmajid HAJAMI 47 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): Clk RAM ROM EPROM central Unit @ Bus Parallel I/O Serial I/O CAN Timer Le but du décodeur d’adresses est de permettre la sélection des différents boîtier électroniques, en fonction des adresses disponibles sur le bus d’adresse entre les différents composants du système Pr. Abdelmajid HAJAMI 48 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): Considérons un microprocesseur ayant un bus d’adresses de 16 bits et travaillant sur des données de 8 bits. Ce microprocesseur peut donc adresser 64 ko (65536= 216= 26. 210). Notons A le bus d’adresses (16 bits) A15 à A0. A0 Notons D le bus de données (8 bits) D7 à D0. μP A12 A13 A14 A15 D0 D7 R/W Pr. Abdelmajid HAJAMI 49 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): • Le schéma représentant les connexions d’un microprocesseur à une mémoire de capacité 8 ko (213) et pouvant donc être adressée par un bus à 13 bits. • Les bits qui restent permettront de sélectionner (activer) le boitier de la mémoire adressée. A0 A12 μP A0 A12 8KO Memory A13 A14 A15 CS D0 D7 D0 D7 R/W Pr. Abdelmajid HAJAMI 50 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): • Et si l’on veut augmenter la taille de la mémoire ? A0 A12 μP A0 A12 8KO Memory A0 A12 8KO Memory 2 A0 A12 8KO Memory 3 A13 A14 A15 CS CS CS D0 D7 D0 D7 D0 D7 D0 D7 R/W Pr. Abdelmajid HAJAMI 51 Les mémoires Adressage par un µProcesseur (Décodage d’adresses): En fait avec les bits A15, A14 et A13 nous pouvons adresser 8 (23 ) mémoires de 8 ko en effectuant un décodage d’adresses. Ceci est le maximum théorique permis avec 16 bits. En effet : 8 * 8ko = 64 ko. Pour cela on utilise un circuit décodeur avec 3 entrées : A13, A14 et A15 8 sorties : une des 8 sorties est activée selon la valeur de A15 A14 A13. Adresses des 8 mémoires : Mém 0 : 0 à 1FFFH Mém 4 : 8000H et 9FFFH Mém 1 : 2000H et 3FFFH Mém 5 : A000H et BFFFH Mém 2 : 4000H et 5FFFH Mém 6 : C000H et DFFFH Mém 3 : 6000H et 7FFFH Mém 7 : E000H et FFFFH Pr. Abdelmajid HAJAMI A0 A12 μP A13 A14 A15 D0 D7 A0 A12 8KO Memory CS D0 D7 A0 A12 8KO Memory 2 A0 A12 8KO Memory 3 CS CS D0 D7 D0 D7 R/W 52 Les mémoires Extension de la taille mémoire : Extension de la longueur des mots La figure suivante montre qu'il est aisé d'associer deux boîtiers de 2k mots de n bits pour obtenir un bloc de 2k mots de 2*n bits. L'adressage doit être appliqué simultanément aux deux circuits, l'un fournissant les n bits de poids faible et l'autre les n bits de poids fort. Les Mémoires Pr. Abdelmajid HAJAMI 53 Les mémoires Extension de la taille mémoire : Extension du nombre de mots la figure suivante montre la réalisation d'un bloc de 4 x 2k mots de n bits à l'aide de 4 boîtiers de 2k x n bits. Il nous faut k+2 lignes d'adresse. Les k bits de poids faible de l'adresse sont appliqués simultanément sur les 4 boîtiers. Les deux bits de poids fort attaquent un décodeur à quatre sorties. Chacune de ces quatre lignes permet de sélectionner un boîtier (entrée de validation du boîtier : CS). Un seul boîtier alors connecté aux lignes de sortie. Lesest Mémoires Pr. Abdelmajid HAJAMI 54 Les mémoires Extension de la taille mémoire TD 1 Soit un boîtier mémoire de 3 lignes d’adressage et 8 lignes de données. 1. Calculer la taille en octet de ce boîtier. 2. En utilisant plusieurs boîtiers, réaliser une mémoire de 16 Octet. 3. En utilisant plusieurs boîtiers, réaliser une mémoire de 32 Octet où les mots font 16 bits de taille . Les Mémoires PS :penser à utiliser des circuits annexes. Pr. Abdelmajid HAJAMI 55 Les mémoires Extension de la taille mémoire TD 1 2. En utilisant plusieurs boîtiers, réaliser une mémoire de 16 Octet. @bus : A0,A1,A2 R/W A3 CS R/W RAM1 CS RAM 2 Les Mémoires Data bus : D0….D7 Pr. Abdelmajid HAJAMI Data bus : D0….D7 56 Les mémoires Extension de la taille mémoire TD 1 3. En utilisant plusieurs boîtiers, réaliser une mémoire de 32 Octet où les mots font 16 bits de taille @bus : A0,A1,A2 R/W A3 CS R/W R/W RAM11 CS Les Mémoires Data bus : D0….D7 Pr. Abdelmajid HAJAMI @bus : A0,A1,A2 RAM 21 CS R/W RAM12 CS RAM 22 Les Mémoires Data bus : D8….D15 Data bus : D0….D15 57 TD 2 Les mémoires Extension de la taille mémoire On dispose d’un boitier mémoire de 16 lignes d’adresses et des mots de 8bits. 1- Calculer la taille de ce boitier. 2- Combien de boitiers mémoires sont nécessaires pour avoir une taille de 256KO? 3- Quel est le nombre de bits d’adresses requis? 4- Donner le schéma détaillé de câblage de cette mémoires de 256KO, Pr. Abdelmajid HAJAMI 58 Les mémoires Extension de la taille mémoire TD 3 Un système à microprocesseur comprend : Une RAM de 8KO (2 boitiers de 4KO ). Une EPROM2 de 4KO Une EPROM1 de 8KO Les Mémoires Les CSi des boitiers RAM et les OEi des boitiers EPROM sont valides sur un niveau bas. On donne : L’@i de la RAM1 est $0000 L’@i de la RAM2 Just après l’@f de la RAM1 L’@i de l’EPROM1 Just après l’@f de la RAM2 L’@i de l’EPROM2 Just après l’@f de l’EPROM1. Compléter le tableau ci-dessous Pr. Abdelmajid HAJAMI 59 Les mémoires Extension de la taille mémoire @i @f @i EPROM1 @f @i EPROM2 RAM2 RAM1 A15 A14 A13 A12 A11 A10 A9 A8 A7 @i @f @f Pr. Abdelmajid HAJAMI A6 A5 A4 A3 A2 A1 A0 @Hex 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 1 Les Mémoires 0 1 0 1 0 1 60 Les mémoires Extension de la taille mémoire TD 4 On considère le schéma partiel d’un système à µC, 1- Quelle est la condition de sélection des mémoires RAM et ROM? 2- Quelles sont les plages mémoires de chacune de ces mémoires? @bus : A0….A11 R/W A12 A13 A14 A15 CS R/W RAM CS ROM Data bus : D0….D7 Pr. Abdelmajid HAJAMI 61 Les mémoires Extension de la taille mémoire TD 5 On considère le schéma partiel d’un système à µC, @bus µP A13 A14 A15 S0 S1 S2 Decoder S3 S4 S5 S6 S7 CS (RAM) CS (Serial) CS (ROM) Data bus 1- Donner la condition de sélection de chaque boitier, 2- En déduire les différents espaces mémoires ainsi réservés. Pr. Abdelmajid HAJAMI 62 Les mémoires Types de mémoire : Mémoire Volatile RAM Statique Type cellule Non volatile ROM ROM PROM Dynamique EPROM EEPROM Pr. Abdelmajid HAJAMI 63 Les mémoires Mémoires vives RAM : Random Access memory Une mémoire vive sert au stockage temporaire de données. Elle doit avoir un temps de cycle très court pour ne pas ralentir le microprocesseur. Les mémoires vives sont en général volatiles : elles perdent leurs informations en cas de coupure d'alimentation. Certaines d'entre elles, ayant une faible consommation, peuvent être rendues non volatiles par l'adjonction d'une batterie. Il existe deux grandes familles de mémoires RAM (Random Acces Memory : mémoire à accès aléatoire) : Les RAM statiques Les RAM dynamiques Pr. Abdelmajid HAJAMI 64 Les mémoires Mémoires RAM : RAM statique Le bit mémoire d'une RAM statique (SRAM) est composé d'une bascule. Chaque bascule contient entre 4 et 6 transistors. Pr. Abdelmajid HAJAMI 65 Les mémoires Mémoires RAM : RAM dynamique Dans les RAM dynamiques (DRAM), l'information est mémorisée sous la forme d'une charge électrique stockée dans un condensateur (capacité grille substrat d'un transistor MOS). Pr. Abdelmajid HAJAMI 66 Les mémoires Mémoires RAM : RAM dynamique Avantages Cette technique permet une plus grande densité d'intégration, car un point mémoire nécessite environ quatre fois moins de transistors que dans une mémoire statique. Sa consommation s’en retrouve donc aussi très réduite. Pr. Abdelmajid HAJAMI 67 Les mémoires Mémoires RAM : RAM dynamique Inconvénients La présence de courants de fuite dans le condensateur contribue à sa décharge. Ainsi, l’information est perdue si on ne la régénère pas périodiquement (charge du condensateur). Les RAM dynamiques doivent donc être rafraîchies régulièrement pour entretenir la mémorisation : il s'agit de lire l'information et de la recharger. Ce rafraîchissement indispensable a plusieurs conséquences : - il complique la gestion des mémoires dynamiques car il faut tenir compte des actions de rafraîchissement qui sont prioritaires. - la durée de ces actions augmente le temps d'accès aux informations. - la lecture de l’information est destructive. Elle se fait par décharge de la capacité du point mémoire lorsque celle-ci est chargée. Donc toute lecture doit être suivie d’une réécriture. Pr. Abdelmajid HAJAMI 68 Les mémoires Mémoires RAM : dynamique Vs statique • En général les mémoires dynamiques, qui offrent une plus grande densité d'information et un coût par bit plus faible, sont utilisées pour la mémoire centrale, • Alors que les mémoires statiques, plus rapides, sont utilisées lorsque le facteur vitesse est critique, notamment pour des mémoires de petite taille comme les caches et les registres. Pr. Abdelmajid HAJAMI 69 Les mémoires Mémoires Mortes ROM : Read Only Memory Pour certaines applications, il est nécessaire de pouvoir conserver des informations de façon permanente même lorsque l'alimentation électrique est interrompue. On utilise alors des mémoires mortes ou mémoires à lecture seule (ROM : Read Only Memory). Ces mémoires sont non volatiles. Ces mémoires, contrairement aux RAM, ne peuvent être que lue. L’inscription en mémoire des données restent possible mais est appelée programmation. Suivant le type de ROM, la méthode de programmation changera. Il existe donc plusieurs types de ROM : Pr. Abdelmajid HAJAMI ROM PROM EPROM EEPROM 70 Les mémoires Mémoires Mortes ROM : Read Only Memory Elle est programmée par le fabricant et son contenu ne peut plus être ni modifié, ni effacé par l'utilisateur. Pr. Abdelmajid HAJAMI 71 Les mémoires Mémoires Mortes ROM : Read Only Memory Structure : Composée d'une matrice dont la programmation s’effectue en reliant les lignes aux colonnes par des diodes. L'adresse permet de sélectionner une ligne de la matrice et les données sont alors reçues sur les colonnes (le nombre de colonnes fixant la taille des mots mémoire). Programmation : L'utilisateur doit fournir au constructeur un masque indiquant les emplacements des diodes dans matrice. Avantages : - Densité élevée - Non volatile - Mémoire rapide Pr. Abdelmajid HAJAMI 72 Les mémoires Mémoires Mortes ROM : Read Only Memory Inconvénients : Écriture impossible Modification impossible (toute erreur est fatale). Délai de fabrication (3 à 6 semaines) Obligation de grandes quantités en raison du coût élevé qu'entraîne la production du masque et le processus de fabrication. Pr. Abdelmajid HAJAMI 73 Les mémoires PROM : Programmable ROM C’est une ROM qui peut être programmée une seule fois par l'utilisateur (Programmable ROM). La programmation est réalisée à partir d’un programmateur spécifique. Structure : Les liaisons à diodes de la ROM sont remplacées par des fusibles pouvant être détruits ou des jonctions pouvant être court-circuitées Pr. Abdelmajid HAJAMI 74 Les mémoires PROM : Programmable ROM Programmation : Les PROM sont livrées avec toutes les lignes connectées aux colonnes (0 en chaque point mémoire). Le processus de programmation consiste donc à programmer les emplacements des ‘’1’’ en générant des impulsions de courants par l’intermédiaire du programmateur ; les fusibles situés aux points mémoires sélectionnés se retrouvant donc détruits. Pr. Abdelmajid HAJAMI 75 Les mémoires PROM : Programmable ROM Avantages : idem ROM Claquage en quelques minutes Coût relativement faible Inconvénients : Pr. Abdelmajid HAJAMI Modification impossible (toute erreur est fatale). 76 Les mémoires EPROM : Erasable Programmable ROM EPROM principe Effacement Pr. Abdelmajid HAJAMI EEPROM MOS à grille flottante UV Tension + + RAM non volatile Programmable non volatile + Effacement par mot - - efface toute la mémoire. - effacé hors circuit - écriture lente -Lente / RAM - coût de réalisation 77 Les mémoires hiérarchie mémoire Pr. Abdelmajid HAJAMI 78 Langage VHDL et conception de circuits Pr. Abdelmajid HAJAMI LES CIRCUITS LOGIQUES PROGRAMMABLES (PAL, GAL, CPLD, FPGA) Le langage VHDL 79 Les circuits logiques programmables Soit la fonction logique suivante : F= 𝑎𝑏𝑐𝑑 + 𝑎bcd ത + ab𝑐ҧ Sa réalisation en portes logique est la suivante : assurez-vous !! a b C d Et si jamais le circuit est déjà réalisé ? Pr. Abdelmajid HAJAMI F X X ! 80 Les circuits logiques programmables Solutions : ROM Read Only Memory Pr. Abdelmajid HAJAMI PLA Programmable Logic Array 81 Les circuits logiques programmables Solutions : ROM Read Only Memory Pr. Abdelmajid HAJAMI PLA Programmable Logic Array 82 Les circuits logiques programmables Solutions : ROM Read Only Memory ത + 𝑎bcd Soit la fonction logique : F= a𝑏𝑐𝑑 ത + ab𝑐d ҧ Pensez à réaliser cette fonction par une mémoire ROM. Peut on la réaliser en utilisant un autre circuit? Pr. Abdelmajid HAJAMI 83 Les circuits logiques programmables Solutions : On utilise une représentation compact des portes logiques avec plusieurs entrées Pr. Abdelmajid HAJAMI PLA Programmable Logic Array 84 Les circuits logiques programmables L’implémentation de circuits logiques avec des circuits SSI, MSI et LSI nécessite beaucoup de travail pour choisir, disposer et relier les composantes discrètes. Certaines fonctions logiques complexes peuvent être remplacées par des PROM, mais une mémoire est en général trop grande et pas assez flexible pour bien convenir à la tâche. Les PLA (1970), et PAL (1978) étaient plus efficaces que les PROM; ils pouvaient être programmés chez le manufacturier ou une fois par l’utilisateur. Les GAL sont la version améliorée des PLA et PAL et sont programmés par l’utilisateur. Pr. Abdelmajid HAJAMI 85 Les circuits logiques programmables Pr. Abdelmajid HAJAMI Basis for comparison PLA PAL Stands for Programmable Logic Array Programmable Array Logic Construction Programmable array of AND and OR gates. Programmable array of AND gates and fixed array of OR gates. Availability Less prolific More readily available Flexibility Provides more programming flexibility. Offers less flexibility, but more likely used. Cost Expensive Intermediate cost Number of functions Large number of functions can be implemented. Provides the limited number of functions. 86 Les circuits logiques programmables Un PLA (Programmable Logic Array) est similaire à une ROM, mais il ne réalise pas tous les produits de termes comme une ROM. Un PLA à n entrées et m sorties peut réaliser m fonctions de n variables, en autant que chacune requiert un nombre limité de produits des variables en entrée. Un PLA est composé de deux réseaux programmables, ET et OU. Le réseau ET programmable est effectivement un décodeur programmable incomplet. • Chaque intersection d’une ligne horizontale et d’une ligne verticale est programmable. • Seuls 6 termes (produits – ET logique) peuvent être réalisés à partir des quatre entrées et de leurs compléments. • Seules trois fonctions de sortie peuvent être réalisées. • Chaque fonction peut utiliser n’importe lequel des six termes programmables Pr. Abdelmajid HAJAMI 87 Les circuits logiques programmables Le développement des mémoires utilisées en informatique fut à l’origine des premiers circuits logiques programmables (PLD : Programmable Logic Device). Ce type de produit peut intégrer dans un seul circuit plusieurs fonctions logiques programmables par l’utilisateur. Sa mise en œuvre se fait très facilement à l’aide d’un programmateur, d’un micro- ordinateur et d’un logiciel adapté. Pr. Abdelmajid HAJAMI 88 Les circuits logiques programmables Structure de base d’un PLD Entrées La plupart des PLDs suivent la structure suivante : Un ensemble d’opérateurs « ET » sur lesquels viennent se connecter les variables d’entrée et leurs compléments. Un ensemble d’opérateurs « OU » sur lesquels les sorties des opérateurs « ET » sont connectées. Une éventuelle structure de sortie (Portes inverseuses, logique 3 états, registres...). Pr. Abdelmajid HAJAMI Sorties 89 Les circuits logiques programmables Structure de base d’un PLD Les deux premiers ensembles forment chacun ce qu’on appelle une matrice. Les interconnexions de ces matrices doivent être programmables. C’est la raison pour laquelle elles sont assurées par des fusibles qui sont « grillés » lors de la programmation. Lorsqu’un PLD est vierge toutes les connexions sont assurées. Interconnexion programmable Pr. Abdelmajid HAJAMI 90 Les circuits logiques programmables PLD : Symbolisation et Représentation La programmation s’effectue par destruction de fusible (un fusible détruit équivaut à un circuit ouvert), voir schéma ci-dessous. Structure simplifiée d’un PAL 2 entrées 1 sortie I1 et I2 sont des entrées (Input), O c’est une sortie (output). Pr. Abdelmajid HAJAMI 91 Les circuits logiques programmables PLD : Symbolisation et Représentation Une autre représentation adoptée. a : porte ET à trois entrées. b : porte ET à trois entrées : représentation PAL. Les croix représentent les fusibles intacts. c : représentation de la structure interne d’un PAL. Pr. Abdelmajid HAJAMI 92 Les circuits logiques programmables PLD : Exemple1 Si on veut obtenir les fonctions Q0 a.b a.b et Q1 a. b a. b On « grillera » des fusibles de façon à obtenir le schéma suivant : Pr. Abdelmajid HAJAMI 93 Les circuits logiques programmables Exemple2 Un comité composé de quatre personnes a besoin d’un système de vote secret pour les amendements sur la constitution du comité. Un amendement est approuvé si au moins 3 personnes votent pour. Concevoir un circuit logique qui accepte 4 entrées représentant les votes. La sortie du circuit doit indiquer si l’amendement est accepté. Pr. Abdelmajid HAJAMI 94 A B C D F 0 0 0 0 0 0 ҧ ҧ ത ഥ F = 𝐴𝐵𝐶𝐷 + 𝐴 𝐵CD + AB 𝐶D + ABC 𝐷 + ABCD 0 0 1 0 0F = ABC 1 + ABD 0 + ACD 0 + BCD 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 Pr. Abdelmajid HAJAMI A B C D F 95 ҧ ҧ + ABC𝐷 ത ഥ + ABCD F = 𝐴𝐵𝐶𝐷 + 𝐴𝐵CD + AB𝐶D F = ABC + ABD + ACD + BCD Programmer le circuit PLD 4-3-6 pour implémenter la fonction F A B C D F = ABC + ABD + ACD + BCD Étapes: 1. Choisir les ports d’entrée et de sotie. 2. Écrire les équations de sortie en somme de produits 3. Indiquer quelles connexions établir. Observations: • La minimisation des équations n’est pas toujours utile. • L’ordre dans lequel sont placées les entrées est crucial. Pr. Abdelmajid HAJAMI F 96 Les circuits logiques programmables Familles de PLD Il existe plusieurs familles de PLD qui sont différenciées structure interne. par leur TYPE Nombre de portes intégrées Matrice ET Matrice OU Effaçable PROM 2 000 à 500 000 Fixe Programmable Non PAL 10 à 100 Programmable Fixe Non GAL 10 à 100 Programmable Fixe Electriquement EPLD 100 à 3000 Programmable Fixe Aux U-V FPLA 2000 à 3000 Programmable Programmable Electriquement Pr. Abdelmajid HAJAMI 97 Les circuits logiques programmables REMARQUE : Certaines de ces familles possèdent en plus des matrices « ET » et « OU », de la logique séquentielle (Bascules « D », « JK »...) placée après les entrées ou avant les sorties du PLD. Pr. Abdelmajid HAJAMI 98 Les circuits logiques programmables PAL (Programmable Array Logic) • Dans un circuit PAL, le réseau ET est programmable et le réseau OU est fixe. • Chaque intersection d’une ligne horizontale et d’une ligne verticale est programmable. • Les portes ET ont une sortie de 0 par défaut. • Chaque patte de sortie est menée par un tampon inverseur contrôlé par une fonction logique. • Un PAL16L8 a: – 10 entrées dédiées ; – 2 sorties dédiées ; – 6 pattes pouvant être utilisées comme entrée ou sortie Pr. Abdelmajid HAJAMI 99 Les circuits logiques programmables PAL (Programmable Array Logic) Tout P.A.L. est constitué : D'entrées (Input): I1 à In avec 8 < n < 20. De sorties (Output) Ou d’entrées / sorties (I/O) de type Trois Etats : O1 à On ou IO1 à IOn (2<n<15). On peut trouver aussi: Une entrée d'horloge (Clock): Clk ou Clock. Une entrée de validation des sorties trois états: OE (Output Enable) ou Enable. Pr. Abdelmajid HAJAMI Une entrée de remise à zéro des registres: RESET. 100 Les circuits logiques programmables PAL (Programmable Array Logic) les premiers circuits programmables à être utilisés pour réaliser des fonctions logiques étaient développés par le constructeur AMD Ils possèdent des matrices « ET » programmables et des matrices « OU » fixes. La fusion des fusibles est obtenue en appliquant à leurs bornes une tension de 11,5 V pendant 10 à 50 µS (leur tension de fonctionnement est environ de 5V). Cette opération est bien sûr effectuée en utilisant un programmateur adapté. La structure de base de ce PLD est présentée par le schéma suivant. Pr. Abdelmajid HAJAMI 101 Les circuits logiques programmables PAL (Programmable Array Logic) Structure des PAL Pr. Abdelmajid HAJAMI 102 Les circuits logiques programmables PAL (Programmable Array Logic) Configuration des entrées/sorties • Chaque patte de sortie est menée par un tampon inverseur contrôlé par une fonction logique. • La sortie peut donc être: l’inverse de la porte OU à laquelle elle est relie ; ou une haute impédance (HZ ). ‘1’ X Pr. Abdelmajid HAJAMI ‘0’ (HZ) X X 103 Les circuits logiques programmables PAL (Programmable Array Logic) Configuration des entrées/sorties Certaines broches de ces circuits peuvent être utilisées aussi bien en entrée qu’en sortie grâce à un système de logique 3 états. La commande de cette dernière est configurée au moment de la programmation. La structure de sortie permet aussi de réinjecter les sorties en entrée (Feedback). Porte trois états permettant de déc onnec tée la broc he de la matric e "ET" I/O Selon le type de PAL la structure de sortie peut être constituée d’une porte « NON», d’une porte « OU » Exclusive , d’une bascule « D » ou d’une combinaison des trois. Le nombre d’entrées et de sorties est lui aussi lié à la référence du PAL Pr. Abdelmajid HAJAMI 104 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Les diverses possibilités de ces circuits et leur standardisation ont conduit les constructeurs à définir une nomenclature permettant de décoder assez facilement la référence des PALs. Pr. Abdelmajid HAJAMI 105 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie Lettre(s) Code(s) Pr. Abdelmajid HAJAMI Structure de sortie L Combinatoire active bas H Combinatoire active haut C Combinatoire : L et H combinés R Registre synchrone (bascule D) RA Registre asynchrone RP Registre programmable X Registre et OU exclusif V Versatile 106 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie : combinatoire Il existe trois types: - H -> (High) Porte ET suivit d'une Porte OU. Sortie active à l'état haut. - L -> (Low) Porte ET suivit d'une Porte NON OU. Sortie active à l'état bas. - C -> (Combinée) programmable en type H ou L. Pr. Abdelmajid HAJAMI 107 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie : séquentielle R -> Register Pr. Abdelmajid HAJAMI 108 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie : séquentielle X -> Register- OR Exclusif Pr. Abdelmajid HAJAMI 109 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie : séquentielle RA -> Register Asynchron Elles peuvent prendre quatre configurations suivant les valeurs de AP et AR Pr. Abdelmajid HAJAMI 110 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Structure de sortie : versatile Les structures de sorties dite versatile proposent quatre configurations possibles suivant les valeurs de S0 et S1. Pr. Abdelmajid HAJAMI 111 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Remarques Le nombre d’entrées varie entre 10 et 22. Le nombre de sorties varie entre 1 et 10. La puissance est indiquée par une lettre code. La vitesse indique le temps de propagation en ns. Les versions versatiles ont une cellule de sortie programmable permettant d’obtenir n’importe quel autre type de structure de sortie (L, H, R ...). Les versions CMOS (CE) sont effaçables électriquement. Les fusibles sont remplacés par des transistors de type MOS FET. Ce ne sont ni plus ni moins que des « GALs ». Pr. Abdelmajid HAJAMI 112 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Exemple Pr. Abdelmajid HAJAMI 113 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Exemple de PAL : PAL 16L8 Ce type de circuit est uniquement constitué de logique combinatoire. Il possède 20 broches agencées de la façon suivante : - 10 broches configurables uniquement en entrée - 2 broches configurables uniquement en sortie - 6 broches configurables en entrée et en sortie - 2 broches d’alimentation. Pr. Abdelmajid HAJAMI 114 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Exemple de PAL : PAL 16L8 L’ensemble des sorties provient de portes 3 états inverseuses. L’état haute impédance peut être commandée par l’ensemble des entrées. Chaque porte de la matrice « OU » possède 7 entrées. Ceci signifie que chaque sortie peut résulter, au maximum, d’une fonction « OU » entre 7 termes produits. Chaque porte de la matrice « ET » possède 32 entrées. Ceci signifie que chaque terme produit peut résulter, au maximum, d’une fonction « ET » entre 16 variables et leurs compléments. Pr. Abdelmajid HAJAMI 115 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Brochage du PAL 16L8 Pr. Abdelmajid HAJAMI 116 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Exemple de PAL : PAL 16R8 Ce type de circuit est constitué de logique combinatoire et séquentielle. 20 broches agencées de la façon suivante : 8 broches (n° 2 à 9) configurables uniquement en entrée 1 broche (n° 1) d’entrée d’horloge de l’ensemble des 8 bascules D 1 broche (n° 11) de validation des 8 sorties (Output Enable) 8 broches (n° 12 à 19) configurables en sortie et pouvant être réinjecter en entrée 2 broches d’alimentation (n° 10 et 20). Pr. Abdelmajid HAJAMI 117 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Exemple de PAL : PAL 16R8 L’ensemble des sorties provient de portes 3 états inverseuses provenant elles-mêmes de bascules D. L’état haute impédance est commandée par l’entrée OE (broche n°11). Chaque porte de la matrice « OU » possède 8 entrées. Ceci signifie que chaque sortie peut résulter, au maximum, d’une fonction « OU » entre 8 termes produits. Chaque porte de la matrice « ET » possède 32 entrées. Ceci signifie que chaque terme produit peut résulter, au maximum, d’une fonction « ET » entre 16 variables et leurs compléments. En résumé on peut dire que les huit sorties de ce circuit proviennent d’un registre trois états. La mise en haute impédance de ce dernier est commandée par la broche OE et la mémorisation est activée par les fronts montants de l’horloge CLK. Pr. Abdelmajid HAJAMI 118 Les circuits logiques programmables PAL (Programmable Array Logic) RÉFÉRENCE DES PALS (D’APRÈS AMD). Brochage du PAL 16R8 Pr. Abdelmajid HAJAMI 119 Les circuits logiques programmables PAL (Programmable Array Logic) TD 1 On désire implémenter, à l'aide de ce circuit, les fonctions suivantes : O3 = A.B.C.D, 1- Quels sont les caractéristiques des fonctions que l'on peut réaliser avec ce PAL (nombre de termes produits) ? 2- Une croix représente un fusible non-claqué. Supprimer les croix nécessaires afin de réaliser les fonctions souhaitées. Pr. Abdelmajid HAJAMI 120 D C B A Réseau de OU fixe Réseau de ET programmable Pr. Abdelmajid HAJAMI O 3 O 2 O1 O0 TD 1 121 Les circuits logiques programmables PAL (Programmable Array Logic) TD 2 On désire réaliser un convertisseur code BCD → code Gray à 4 entrées. 1- Donner la table de vérité du système. 2- Simplifier les équations logiques à l’aide des tableaux de Karnaugh. 3- On souhaite utiliser le PAL de l'exercice 1. Supprimer les croix nécessaires afin de réaliser les fonctions souhaitées. Pr. Abdelmajid HAJAMI 122 D C B A Réseau de OU fixe Réseau de ET programmable Pr. Abdelmajid HAJAMI O 3 O 2 O1 O0 TD 2 123 D C B A Réseau de OU fixe Réseau de ET programmable Pr. Abdelmajid HAJAMI O 3 O 2 O1 O0 TD 2 124 Les circuits logiques programmables PAL (Programmable Array Logic) TD 3 On souhaite réaliser un décodeur hexadécimal pour afficheur 7 segments suivant le schéma (les LED réalisant l’afficheur sont allumées si la cathode est à 0 V) : 1- Donner la table de vérité du circuit. 2- Simplifier les équations logiques à l’aide des tableaux de Karnaugh. 3- On souhaite utiliser un PAL 16L8 (voir schéma ci-après). Quelles sont ses caractéristiques ? 4- Placer les croix nécessaires sur le schéma suivant afin de réaliser les fonctions souhaitées. Pr. Abdelmajid HAJAMI 125 Les circuits logiques programmables PAL (Programmable Array Logic) Pr. Abdelmajid HAJAMI TD 3 126 Les circuits logiques programmables GAL (Generic Array Logic) Présentation: L’inconvénient des PALs: ne sont programmables qu’une seule fois. LATTICE a donc pensé à remplacer les fusibles irréversibles des PALs par des transistors MOS FET pouvant être régénérés. Naissance des GALs « Réseau logique Générique ». Ces circuits peuvent donc être reprogrammés à volonté sans pour autant avoir une durée de vie restreinte. Les GALs sont constitués de transistor CMOS alors que les PALs classiques sont constitués de transistors bipolaires. La consommation des GALs est plus faible. d’autres constructeurs les appellent « PAL CMOS ». LATTICE a équipé la plupart de ses GALs de macro-cellules programmables permettant d’émuler n’importe quel PAL. Ces structures de sortie sont donc du type « Versatile » (V). Pr. Abdelmajid HAJAMI 127 Les circuits logiques programmables GAL (Generic Array Logic) Circuits GAL (Generic Array Logic): – dispositifs programmables par l’utilisateur; – mis en marché par Lattice Semiconductors en 1985; – peuvent émuler différents types de PAL. • Les circuits GAL ont longtemps remplacé les composantes SSI-LSI, mais ne sont plus manufacturés. Pr. Abdelmajid HAJAMI 128 Les circuits logiques programmables GAL (Generic Array Logic) Protection contre la duplication Les GAL sont dotés d’un bit de sécurité qui peut être activé lors de la programmation, empêcher toute lecture du contenu du circuit. Ce bit est remis à zéro seulement en effaçant complètement le GAL. Il est aussi constitué d’un ensemble de huit octets, appelé signature électronique, pouvant contenir des informations diverses sur le produit. Pr. Abdelmajid HAJAMI 129 Les circuits logiques programmables GAL (Generic Array Logic) Référence Pr. Abdelmajid HAJAMI 130 Les circuits logiques programmables GAL (Generic Array Logic) Types de GALs Référence Vitesse (nS) GAL 16V8 GAL 18V10 GAL 20V8 GAL 20RA10 GAL 22V10 GAL 26V12 GAL 6001 Nombre de broches 20 20 24 24 24 28 24 10, 15 ou 20 15 ou 20 10, 15 ou 25 15 ou 20 15, 20 ou 25 15 ou 20 30 ou 35 Consommation (mA) 55 ou 115 115 55 ou 115 115 130 130 150 ispGAL 16Z8 24 20 ou 25 90 Remarque Macro-cellule (1) // // Registre asynchrone (1) Macro-cellule (1) // Macro-cellule (1) - Type FPLA (2) Macro-cellule (1) Programmable en circuit (3) * (1) : structure de sortie. * (2) : Matrices « OU » et « ET » programmables. * (3) : Circuit reprogrammable à tout moment par liaison série. Pr. Abdelmajid HAJAMI 131 Les circuits logiques programmables GAL (Generic Array Logic) Cellule OLMC: (Output Logic Macrocell) Les Circuits GAL montre une cellule OLMC: (Output Logic Macrocell) La sortie de la OLMC peut être: – En haute impédance; – sortie combinatoire inversée ou non; – sortie de bascule inversée ou non; – renvoyée dans le réseau programmable. Pr. Abdelmajid HAJAMI 132 Les circuits logiques programmables GAL (Generic Array Logic) Cellule OLMC: (Output Logic Macrocell) GAL 16V8 Ces structures de sortie sont programmables et permettent d’émuler n’importe quelle autre structure de sortie. Elles possèdent en tout 2 bits de programmation communs à toutes les cellules (CG1 et CG0) et 2 bits spécifiques à chaque cellule (CL0x et CL1x). Pr. Abdelmajid HAJAMI 133 Les circuits logiques programmables GAL (Generic Array Logic) Cellule OLMC: (Output Logic Macrocell) GAL 16V8 Configurations possibles de la macro-cellule pour le GAL 16V8 : Configuration de la structure de sortie Registre synchrone - sortie 3 états (C1) Entrée / Sortie combinatoire - sortie 3 états (C2) Entrée et/ou Sortie combinatoire (C3) Entrée combinatoire (C4) Entrée / Sortie combinatoire - sortie 3 états (C2) Pr. Abdelmajid HAJAMI Circuit PAL émulé 16R8 16R4 - 16R6 10L8 - 12H6 12L6 16L8 - 16H8 134 Les circuits logiques programmables complexes CPLD (Complex Prorammable Logic Devices) Les ROM, PLA, PAL et GAL sont parfois appelés des circuits logique programmable simples (Simple Programmable Logic Devices – SPLD). Les Complex Programmable Logic Devices – CPLD – sont une extension naturelle des circuits PAL. Un CPLD incorpore plusieurs PAL sur une seule puce avec un réseau d’interconnexions. Le réseau permet de relier les pattes de la puce à différents blocs internes et de relier les blocs entre eux. Pr. Abdelmajid HAJAMI 135 Les circuits logiques programmables complexes CPLD (Complex Prorammable Logic Devices) Macro-cellules composés de : - Une zone de portes logiques - Une bascule Pr. Abdelmajid HAJAMI 136 Les FPGA (Fields Programmable Gate Array). les FPGAs sont aussi des circuits programmables par l’utilisateur. La puissance de ces circuits est telle qu’ils peuvent être composés de plusieurs milliers voire millions de portes logiques et de bascules. Les dernières générations de FPGA intègrent même de la mémoire vive (RAM). Les deux plus grands constructeurs de FPGA sont XILINX et ALTERA. Ils sont composés de blocs logiques élémentaires (plusieurs milliers de portes) qui peuvent être interconnectés. Pr. Abdelmajid HAJAMI 137 Les FPGA (Fields Programmable Gate Array). Structure interne d’un FPGA de type XILINX I/O Bloc Pr. Abdelmajid HAJAMI 138 Les FPGA (Fields Programmable Gate Array). Structure interne d’un FPGA de type XILINX Pr. Abdelmajid HAJAMI 139 Les FPGA (Fields Programmable Gate Array). Structure interne d’un FPGA de type XILINX Fin partie 1 Pr. Abdelmajid HAJAMI 140 Langage VHDL et conception de circuits VHDL VHSIC Hardware Description Language VHSIC :Very High Speed Integrated Circuit Pr. Abdelmajid HAJAMI 141 Le langage VHDL Introduction Écrit dans les années 70 pour réaliser la simulation de circuits électroniques. On l’a ensuite étendu en lui rajoutant des extensions pour permettre la conception (synthèse) de circuits logiques programmables (P.L.D. (Programmable Logic Device). Auparavant on utilisait des langages de bas niveau (ABEL, PALASM, ORCAD/PLD,..)pour décrire le fonctionnement d’un circuit électronique programmable. Actuellement il n’est plus possible d’utiliser ces outils car la densité de fonctions logiques (portes et bascules) intégrée dans les PLDs est grande(plusieurs milliers de portes voire millions de portes). Les sociétés de développement et les ingénieurs ont créé des langages dits de haut niveau (VHDL et VERILOG). Ces deux langages font abstraction des contraintes technologiques des circuits PLDs. Ils permettent au code écrit d’être portable, c’est à dire qu’une description écrite pour un circuit peut être facilement utilisée pour un autre circuit Pr. Abdelmajid HAJAMI 142 Le langage VHDL Introduction Le Verilog et le VHDL ont des capacités techniques équivalentes. Le choix du langage est souvent dicté par la "culture« de l’équipe de développement ou de l’équipe de recherche. En vue de l’implantation des circuits numériques, le choix du langage VHDL semble incontournable, puisque quelque soit la cible choisie, ce langage est supporté par la quasi-totalité des logiciels de CAO. Pr. Abdelmajid HAJAMI 143 Le langage VHDL Introduction VHDL est utilisé pour : concevoir des ASIC (application-specific integrated circuits, circuits spécialisés), programmer des composants programmables du type PLD, CPLD et FPGA, concevoir des modèles de simulations numériques ou des bancs de tests. • Principe de base: Définir un langage de description de matériel qui puisse être utilisé pour simuler du matériel numérique • Extension: Utilisation du même langage pour la synthèse automatique de circuits Pr. Abdelmajid HAJAMI 144 Le langage VHDL Langage de description VS Langage de programmation VHDL n’est pas un langage de programmation comme le C, c’est un langage de description matériel. un langage de programmation est destiné à être traduit en langage machine puis à être exécuté par un microprocesseur. un langage de description matériel comme VHDL décrit une réalité matérielle, c’està-dire le fonctionnement d’un système numérique. Il va être traduit (synthétisé) en un ensemble de circuits logiques combinatoires et séquentiels qui vont être implémentés dans un circuit intégré. Pr. Abdelmajid HAJAMI 145 Le langage VHDL Langage de description VS Langage de programmation comparaison des conceptions pour processeur et pour circuit logique programmable Pr. Abdelmajid HAJAMI 146 Le langage VHDL Description VHDL & PLD Exemple d’implantation de descriptions VHDL ou de blocs fonctionnels implantés dans un PLD Pr. Abdelmajid HAJAMI 147 Le langage VHDL Description VHDL & PLD Lors de la phase de synthèse chaque bloc sera matérialisé par des portes et/ou des bascules. La phase suivante sera d’implanter les portes et les bascules à l’intérieur du circuit logique. Cette tâche sera réalisée par le logiciel placement/routage («Fitter»), au cours de laquelle les entrées et sorties seront affectées à des numéros de broches. On peut remarquer sur le schéma la fonction particulière du bloc VHDL N°5. En effet dans la description fonctionnelle d’un PLD on a souvent besoin d’une fonction qui sert à cadencer le fonctionnement de l’ensemble Pr. Abdelmajid HAJAMI 148 Le langage VHDL Organisation fonctionnelle de développement d’un PLD. Entrée schématique Pr. Abdelmajid HAJAMI Entrée syntaxique Langage: - VHDL Diagrammes d’états 149 Pr. Abdelmajid HAJAMI 150 Le langage VHDL Structure d’une description VHDL Une description VHDL est composée de 2 parties indissociables à savoir : - L’entité (ENTITY), elle définit les entrées et sorties. - L’architecture (ARCHITECTURE), elle contient les instructions VHDL permettant de réaliser le fonctionnement attendu. Pr. Abdelmajid HAJAMI 151 Pr. Abdelmajid HAJAMI 152 Le langage VHDL Les bases du VHDL Comme la majorité des langages, le VHDL : fait appel à des bibliothèques (library). Il utilise des mots clés. Les lignes de commandes se terminent par « ; » Les commentaires sont précédés par « -- » Il utilise indifféremment les majuscules et minuscules. Les modèles peuvent être décrits en comportemental, structurel ou mixte Il utilise les concepts de base suivant : l’entité (entity), l’architecture (architecture), la configuration (configuration) et le boitier(Package). Pr. Abdelmajid HAJAMI 153 Le langage VHDL Déclaration des bibliothèques Toute description VHDL utilisée pour la synthèse a besoin de bibliothèques. L’ IEEE les a normalisées et plus particulièrement la bibliothèque IEEE1164. Elles contiennent les définitions des types de signaux électroniques, des fonctions et sous programmes permettant de réaliser des opérations arithmétiques et logiques,... Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; -- cette dernière bibliothèque est souvent utilisée pour l’écriture de compteurs La directive Use permet de sélectionner les bibliothèques à utiliser. IEEE (Institut of Electrical and Electronics Engineers) Pr. Abdelmajid HAJAMI 154 Le langage VHDL Déclaration de l’entité et des E/S (I/O) Elle permet de définir le NOM de la description VHDL ainsi que les entrées et sorties utilisées, l’instruction qui les définit c’est port : Syntaxe: entity NOM_DE_L_ENTITE is port ( Description des signaux d’entrées /sorties …); end NOM_DE_L_ENTITE; Exemple : entity SEQUENCEMENT is port ( CLOCK : in std_logic; RESET : in std_logic; Q : out std_logic_vector(1 downto ); end SEQUENCEMENT; Pr. Abdelmajid HAJAMI Remarque : Après la dernière définition de signal de l’instruction Port il ne faut jamais mettre de point virgule. 0) 155 Le langage VHDL Déclaration de l’entité et des E/S (I/O) L’instruction port : Syntaxe: NOM_DU_SIGNAL : sens type; Exemple: CLOCK: in std_logic; BUS : out std_logic_vector (7 downto 0); On doit définir pour chaque signal : Le NOM_DU_SIGNAL, le sens et le type. Pr. Abdelmajid HAJAMI 156 Le langage VHDL Déclaration de l’entité et des E/S (I/O) L’instruction port : Le nom du signal : Il est composé de caractères, le premier caractère doit être une lettre, sa longueur est quelconque, mais elle ne doit pas dépasser une ligne de code. VHDL n’est pas sensible à la « casse », c’est à dire qu’il ne fait pas la distinction entre les majuscules et les minuscules. Pr. Abdelmajid HAJAMI 157 Le langage VHDL Déclaration de l’entité et des E/S (I/O) L’instruction port : Le sens du signal : - in : pour un signal en entrée. - out: pour un signal en sortie. - inout: pour un signal en entrée sortie - buffer: pour un signal en sortie mais utilisé comme entrée dans la description. Pr. Abdelmajid HAJAMI 158 Le langage VHDL Déclaration de l’entité et des E/S (I/O) L’instruction port : Le type du signal : Le TYPE utilisé pour les signaux d’entrées / sorties est : - le std_logic pour un signal. - le std_logic_vector pour un bus composé de plusieurs signaux. Par exemple un bus bidirectionnel de 5 bits s’écrira : LATCH : inout std_logic_vector (4 downto 0) ; Où LATCH(4) correspond au MSB et LATCH(0) correspond au LSB. Pr. Abdelmajid HAJAMI 159 Le langage VHDL Déclaration de l’entité et des E/S (I/O) L’instruction port : Les valeurs que peut prendre un signal de type std_logic sont : - ‘0’ ou ‘L’ : pour un niveau bas. - ‘1’ ou ‘H’ : pour un niveau haut. - ‘Z’ : pour état haute impédance. - ‘-‘ : Quelconque, c’est à dire n’importe quelle valeur. Pr. Abdelmajid HAJAMI 160 Le langage VHDL Déclaration de l’entité et des E/S (I/O) Exemples de description d’entités entity COUNT is port(CLK, RST: CNT : ); end COUNT; in std_logic; inout std_logic_vector(2 downto 0) entity COMP4BIT is port (A,B :in std_logic_vector(3 downto 0); PLUS,MOINS,EGAL :out std_logic); end COMP4BIT; Pr. Abdelmajid HAJAMI 161 Le langage VHDL Déclaration de l’entité et des E/S (I/O) Exemples de description d’entités entity DEC7SEG is port ( A : in std_logic; B : in std_logic; C : in std_logic; D : in std_logic; SA : out std_logic; SB : out std_logic; SC : out std_logic; SD : out std_logic; SE : out std_logic; SF : out std_logic; SG : out std_logic ); end DEC7SEG; Pr. Abdelmajid HAJAMI entity DEC7SEG4 is port (DEC :in std_logic_vector(3 downto 0); SEG:out std_logic_vector(0 to 6) ); end DEC7SEG4; 162 Le langage VHDL Déclaration de l’entité et des E/S (I/O) Exemples de description d’entités Exemple: Soit le signal d’entrée A de 8 bits, on le déclarera en VHDL comme suit : A : in std_logic_vector ( 7 downto 0 ) ; Ou bien : A : in std_logic_vector (0 to 7); La différence entre les deux expressions est l’indice du MSB et du LSB. Dans la première expression, l’indice du MSB est A(7), celui du LSB est A(0). Dans la deuxième expression, l’indice du MSB est A(0), celui du LSB est A(7). Pr. Abdelmajid HAJAMI 163 Le langage VHDL Déclaration de l’entité et des E/S (I/O) Remarque On peut utiliser le type bit à la place de std_logic, et le type bit_vector à la place de std_logic_vector, la différence entre eux est que le type bit ne possède que deux état : ‘0’ et ‘1’ ce qui est très limité car il faut prendre en considération les autres états, c’est pourquoi on préfère le type std_logic au type bit. Pr. Abdelmajid HAJAMI 164 Le langage VHDL Déclaration de l’architecture correspondante à l’entité description du fonctionnement L’architecture décrit le fonctionnement souhaité pour un circuit ou une partie du circuit. En effet le fonctionnement d’un circuit est généralement décrit par plusieurs modules VHDL. Un module représente le couple ENTITE/ARCHITECTURE. Dans le cas de simples PLDs on trouve souvent un seul module. À travers les instructions, l’architecture établit les relations entre les entrées et les sorties. On peut avoir un fonctionnement purement combinatoire, séquentiel voire les deux séquentiel et combinatoire. Pr. Abdelmajid HAJAMI 165 Le langage VHDL Déclaration de l’architecture correspondante à l’entité Exemple 1 : Opérateurs logiques de base -- Opérateurs logiques de base entity PORTES is port (A,B :in std_logic; Y1,Y2,Y3,Y4,Y5,Y6,Y7:out std_logic); end PORTES; architecture DESCRIPTION of PORTES is begin Y1 <= A and B; Y2 <= A or B; Y3 <= A xor B; Y4 <= not A; Y5 <= A nand B; Y6 <= A nor B; Y7 <= not(A xor B); end DESCRIPTION; Pr. Abdelmajid HAJAMI 166 Exemple 2 : Décodeurs 7 segments -- Décodeurs 7 segments entity DEC7SEG4 is port (DEC :in std_logic_vector(3 downto 0); SEG:out std_logic_vector(0 to 6)); end DEC7SEG4; architecture DESCRIPTION of DEC7SEG4 is begin SEG <= "1111110" when DEC = 0 a else "0110000" when DEC = 1 else "1101101" when DEC = 2 else "1111001" when DEC = 3 f else "0110011" when DEC = 4 g else "1011011" when DEC = 5 else "1011111" when DEC = 6 else "1110000" when DEC = 7 e else "1111111" when DEC = 8 else "1111011" when DEC = 9 d else "-------"; end DESCRIPTION; Pr. Abdelmajid HAJAMI b c 167 Exemple 3/1 : Décodage d’adresses -- Décodage d’adresses Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; entity DECODAGE is port ( A15, A14, A13, A12, A11, A10 : in std_logic; RAM0 : out std_logic; RAM1 : out std_logic; RAM2 : out std_logic; RAM3 : out std_logic; ROM : out std_logic; INTER1 : out std_logic; INTER2 : out std_logic; INTER3 : out std_logic ); end DECODAGE; Pr. Abdelmajid HAJAMI 168 Exemple 3/2 :Décodage d’adresses -- Décodage d’adresses architecture DESCRIPTION of DECODAGE is signal ADRESSE: std_logic_vector(15 downto 0); begin ADRESSE <= A15 & A14 & A13 & A12 & A11 & A10 & "----------"; -- définition du bus d’adresses ROM <= '0' when (ADRESSE >= x"E000") and (ADRESSE <= RAM0 <= '0' when (ADRESSE >= x"0000") and (ADRESSE <= RAM1 <= '0' when (ADRESSE >= x"0400") and (ADRESSE <= RAM2 <= '0' when (ADRESSE >= x"0800") and (ADRESSE <= RAM3 <= '0' when (ADRESSE >= x"0C00") and (ADRESSE <= INTER1 <= '0' when (ADRESSE >= x"8000") and (ADRESSE <= INTER2 <= '0' when (ADRESSE >= x"A000") and (ADRESSE <= INTER3 <= '0' when (ADRESSE >= x"C000") and (ADRESSE <= end DESCRIPTION; Pr. Abdelmajid HAJAMI x"FFFF") x"03FF") x"07FF") x"0BFF") x"0FFF") x"8001") x"A001") x"C00F") else else else else else else else else '1'; '1'; '1'; '1'; '1'; '1'; '1'; '1'; 169 Le langage VHDL Les types de base Le VHDL est un langage fortement typé. Chaque objet doit être déclaré et appartenir à un type connu (ensemble de valeurs possibles). Parmi ces types : Pr. Abdelmajid HAJAMI Bit, Boolean, Integer, Std_logic (dans la bibliothèque std_logic_1164), Bit_vector, Std_logic_vector, Signed et Unsigned,(dans la bibliothèque numeric_std), Natural (sous type de integer limité aux nombres ≥0), Positif ( sous type de integer limité aux nombres >0), Character, string 170 Le langage VHDL Les valeurs explicites Entier : codé en binaire sur 23bits Entier basé : base#valeur# : 2#11# , 16#1F# Valeurs physiques : toujours laisser un espace entre la valeur et l’unité 100 ps 2 ns 5 V Caractère : entre apostrophe ‘a’, ‘@’ Bit : entre apostrophe ‘0’, ‘1’, ‘Z’ Chaîne de caractères : entre guillemets (attention ici les minuscules et majuscules sont significatives) "Bonjour " Pr. Abdelmajid HAJAMI Bus : entre guillemets "01111001 " 171 Le langage VHDL Les instructions de base («mode concurrent ») Logique combinatoire le mode « concurrent » Pour une description VHDL toutes les instructions sont évaluées et affectent les signaux de sortie en même temps. L’ordre dans lequel elles sont écrites les instructions n’a aucune importance. La description VHDL génère des structures électroniques, c’est la grande différence entre une description VHDL et un langage informatique classique. Dans un système à microprocesseur, les instructions sont exécutées les unes à la suite des autres Pr. Abdelmajid HAJAMI 172 Le langage VHDL Les instructions de base («mode concurrent ») Logique combinatoire Exemple architecture DESCRIPTION of DECOD1_4 is begin D0 <= (not(IN1) and not(IN0)); -- première instruction D1 <= (not(IN1) and IN0); -- deuxième instruction D2 <= (IN1 and not(IN0)); -- troisième instruction D3 <= (IN1 and IN0); -- quatrième instruction end DESCRIPTION; architecture DESCRIPTION of DECOD1_4 is begin D1 <= (not(IN1) and IN0); -- deuxième instruction D2 <= (IN1 and not(IN0)); -- troisième instruction D0 <= (not(IN1) AND not(IN0)); -- première instruction D3 <= (IN1 AND IN0); -- quatrième instruction end DESCRIPTION; Pr. Abdelmajid HAJAMI 173 Le langage VHDL Les instructions de base («mode concurrent ») Logique combinatoire Les opérateurs : l’affectation simple <= Il permet de modifier l’état d’un signal en fonction d’autres signaux et/ou d’autres opérateurs. S1 <= E2 and E1 ; Les valeurs numériques que l’on peut affecter à un signal sont les suivantes : - ‘1’ ou ‘H’ pour un niveau haut avec un signal de 1bit. - ‘0’ ou ‘L’ pour un niveau bas avec un signal de 1bit. - ‘Z’ pour un état haute impédance avec un signal de 1bit. - ‘-’ pour un état quelconque, c’est-à-dire ‘0’ ou ‘1’. - Pour les signaux composés de plusieurs bits on utilise les guillemets " … ", Pr. Abdelmajid HAJAMI Les bases numériques utilisées pour les bus peuvent être : BINAIRE , exemple : BUS <= "1001" ; -- BUS = 9 en décimal HEXA , exemple : BUS <= X"9" ; -- BUS = 9 en décimal OCTAL , exemple : BUS <= O"11" ; -- BUS = 9 en décimal 174 Le langage VHDL Les opérateurs : l’affectation simple <= Library ieee; Les opérateurs d’affectation : Use ieee.std_logic_1164.all; <= affectation à un signal entity AFFEC is := affectation à une variable port ( E1,E2 : in std_logic; BUS1,BUS2,BUS3 : out std_logic_vector(3 downto 0); S1,S2,S3,S4 : out std_logic); end AFFEC; architecture DESCRIPTION of AFFEC is begin S1 <= '1'; -- S1 = 1 S2 <= '0'; -- S2 = 0 S3 <= E1; -- S3 = E1 S4 <= '1' when (E2 ='1') else 'Z'; -- S4 = 1 si E1=1 sinon S4 -- prend la valeur haute impédance BUS1 <= "1000"; -- BUS1 = "1000" BUS2 <= E1 & E2 & "10"; -- BUS2 = E1 & E2 & 10 BUS3 <= x"A"; -- valeur en HEXA -> BUS3 = 10(déc) end DESCRIPTION; Pr. Abdelmajid HAJAMI 175 Le langage VHDL Les instructions de base («mode concurrent ») Logique combinatoire L’opérateur de concaténation : & Cet opérateur permet de joindre des signaux entre eux . --S1 --- Soit A et B de type 3 bits et S1 de type 8 bits A = "001" et B ="110" <= A & B & "01" ; S1 prendra la valeur suivante après cette affectation S1 = "00111001" Valeur de A "001" Pr. Abdelmajid HAJAMI Valeur de B « 110" 176 Le langage VHDL Les instructions de base («mode concurrent ») Les opérateurs logiques Opérateur ET NON ET OU NON OU OU EXCLUSIF N OU EXCLUSIF NON VHDL and nand or S1 <= A sll 2 ; -- S1 = A décalé de 2 bits à gauche. nor S2 <= A rol 3 ; -- S2 = A avec rotation de 3 bits à gauche xor S3 <= not (R); -- S3 = R xnor not DECALAGE A GAUCHE DECALAGE A DROITE ROTATION A GAUCHE ROTATION A DROITE Pr. Abdelmajid HAJAMI Logique combinatoire sll srl rol ror 177 Le langage VHDL Les instructions de base («mode concurrent ») Les opérateurs logiques Logique combinatoire Pour réaliser des décalages logiques en synthèse logique, il est préférable d’utiliser les instructions suivantes Décalage à droite : -- Si A est de type std_logic_vector(7 downto 0) S1 <= ‘0’ & A(7 downto 1); -- décalage d’un bit à droite S1 <= "000" & A(7 downto 3); -- décalage de trois bits à droite Décalage à gauche : -- Si A est de type std_logic_vector(7 downto 0) S1 <= A(6 downto 0) & ‘0’; -- décalage d’un bit à gauche S1 <= A(4 downto 0) & "000"; -- décalage de trois bits à gauche Pr. Abdelmajid HAJAMI 178 Le langage VHDL Les instructions de base («mode concurrent ») Les opérateurs arithmétiques Logique combinatoire Pour pouvoir utiliser les opérateurs ci-dessus il faut rajouter les bibliothèques suivantes au début du fichier VHDL: Use ieee.numeric_std.all ; Use ieee.std_logic_arith.all ; Pr. Abdelmajid HAJAMI 179 Le langage VHDL Les instructions de base («mode concurrent ») Les opérateurs relationnels Logique combinatoire Ils permettent de modifier l’état d’un signal ou de signaux suivant le résultat d’un test ou d’une condition. En logique combinatoire ils sont souvent utilisés avec les instructions : - when … else … - with …. Select …. Pr. Abdelmajid HAJAMI 180 Le langage VHDL Les instructions de base («mode concurrent ») L’affectation conditionnelle Logique combinatoire Cette instruction modifie l’état d’un signal suivant le résultat d’une condition logique entre un ou des signaux, valeurs, constantes. SIGNAL <= expression when condition [else expression when condition] [else expression]; -- S1 prend la valeur de E2 quand E1=’1’ sinon S1 prend la valeur ‘0’ S1 <= E2 when ( E1= ‘1’) else ‘0’; Pr. Abdelmajid HAJAMI 181 Le langage VHDL Les instructions de base («mode concurrent ») L’affectation conditionnelle -- Structure évoluée d’un S2 <= E1 when (SEL="00" ) E2 when (SEL="01" ) E3 when (SEL="10" ) E4 when (SEL="11" ) else ‘0’; Pr. Abdelmajid HAJAMI Logique combinatoire multiplexeur 4 vers 1 else else else 182 Le langage VHDL Les instructions de base («mode concurrent ») L’affectation sélective Logique combinatoire Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs prises par un signal dit de sélection. with SIGNAL_DE_SELECTION select SIGNAL <= expression when valeur_de_selection_1, [expression when valeur_de_selection_2,] [expression when others]; l’instruction [expression when others] n’est pas obligatoire mais fortement conseillée, elle permet de définir la valeur du SIGNAL dans le cas où la condition n’est pas remplie. Pr. Abdelmajid HAJAMI 183 Le langage VHDL Les instructions de base («mode concurrent ») L’affectation sélective Logique combinatoire -- Multiplexeur 4 vers 1 with SEL select S2 <= E1 when "00", E2 when "01", E3 when "10", E4 when "11", '0' when others; Pr. Abdelmajid HAJAMI 184 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Process Un process est une partie de la description d’un circuit dans laquelle les instructions sont exécutées séquentiellement c’est à dire les unes à la suite des autres. Il permet d’effectuer des opérations sur les signaux en utilisant les instructions standard de la programmation structurée comme dans les systèmes à microprocesseurs. L’exécution d’un process est déclenchée par un ou des changements d’états de signaux logiques. Le nom de ces signaux est défini dans la liste de sensibilité lors de la déclaration du process. Pr. Abdelmajid HAJAMI 185 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Process [Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux) Begin -- instructions du process end process [Nom_du_process] ; Remarque: Le nom du process entre crochet est facultatif, mais il peut être très utile pour repérer un process parmi d’autres lors de phases de mise au point ou de simulations. Pr. Abdelmajid HAJAMI 186 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Process Règles de fonctionnement d’un process. 1) L’exécution d’un process a lieu à chaque changement d’état d’un signal de la liste de sensibilité. 2) Les instructions du process s’exécutent séquentiellement. 3) Les changements d’état des signaux par les instructions du process sont pris en compte à la fin du process. Pr. Abdelmajid HAJAMI 187 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Les structures utilisées dans un Process L’assignation conditionnelle if condition then instructions [elsif condition then instructions] [else instructions] end if ; --Exemple: if (RESET=’1’) then SORTIE <= ”0000”; end if ; Pr. Abdelmajid HAJAMI 188 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Les structures utilisées dans un Process L’assignation sélective case signal_de_slection is when valeur_de_sélection => instructions [when others => instructions] end case; Pr. Abdelmajid HAJAMI 189 Le langage VHDL Les instructions du mode séquentiel Logique séquentielle Les structures utilisées dans un Process --Exemple L’assignation sélective case SEL is when “000” => S1 <= E1; when “001” => S1 <= ‘0’; when “010” | “011” => S1 <=’1’; -- La barre | permet de réaliser un ou logique entre les deux -- valeurs “010” et “011” when others => S1 <= ‘0’; end case; Pr. Abdelmajid HAJAMI 190 Le langage VHDL Exemple de Process : Déclaration d’une bascule D Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; entity BASCULED is port ( D,CLK : in std_logic; S : out std_logic); end BASCULED; architecture DESCRIPTION of BASCULED is begin PRO_BASCULED : process (CLK) begin if (CLK'event and CLK ='1') then S <= D; end if; end process PRO_BASCULED; end DESCRIPTION; Pr. Abdelmajid HAJAMI 191 Le langage VHDL Exemple de Process : Déclaration d’une bascule D Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; entity BASCULED is port ( D,CLK : in std_logic; S : out std_logic); end BASCULED; architecture DESCRIPTION of BASCULED is begin PRO_BASCULED : process (CLK) begin if (CLK'event and CLK ='1') then S <= D; end if; end process PRO_BASCULED; end DESCRIPTION; Pr. Abdelmajid HAJAMI - Seul le signal CLK fait partie de la liste de sensibilité. D’après les règles de fonctionnement énoncées précédemment, seul un changement d’état du signal CLK va déclencher le process et par conséquent évaluer les instructions de celui-ci. 192 Le langage VHDL Exemple de Process : Déclaration d’une bascule D Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; - L’instruction if (CLK'event and CLK='1') then Use ieee.std_logic_unsigned.all; permet de détecter un front montant du signal CLK entity BASCULED is . La détection de front est réalisée par l’attribut Event port ( appliqué à l’horloge CLK D,CLK : in std_logic; . Si on veut un déclenchement sur un front descendant, il S : out std_logic); faut écrire l’instruction suivante : end BASCULED; if (CLK'event and CLK='0'). architecture DESCRIPTION of BASCULED is begin PRO_BASCULED : process (CLK) begin if (CLK'event and CLK ='1') then S <= D; end if; end process PRO_BASCULED; end DESCRIPTION; 193 Pr. Abdelmajid HAJAMI Le langage VHDL Exemple de Process : Déclaration d’une bascule D + RESET + SET Même exemple que précédemment mais avec des entrées de présélections de mise à zéro RESET prioritaire sur l’entrée de mise à un SET, toutes les deux sont synchrones de l’horloge CLK. Pr. Abdelmajid HAJAMI 194 Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; entity BASCULEDSRS is port ( D,CLK,SET,RESET : in std_logic; S : out std_logic); end BASCULEDSRS; architecture DESCRIPTION of BASCULEDSRS is begin PRO_BASCULEDSRS : process (CLK) Begin if (CLK'event and CLK ='1') then if (RESET =’1’) then S <= ‘0’; elsif (SET =’1’)then S <= ‘1’; else S <= D; end if; end if; end process PRO_BASCULEDSRS; end DESCRIPTION; Pr. Abdelmajid HAJAMI 195 Le langage VHDL Simulation : utilisation de composant Pour tester un projet, il faut utiliser un programme de test écrit en langage VHDL. Ce programme contient une déclaration des bibliothèques, la déclaration de l’entité du module de test à proprement dit et le code correspondant. Exemple : simulation de la porte ET en VHDL Pr. Abdelmajid HAJAMI 196 Le langage VHDL Simulation : Porte ET Step 1 Déclaration des bibliothèques LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Pr. Abdelmajid HAJAMI 197 Le langage VHDL Simulation : Porte ET Step 2 Déclaration de l’entité test Aucune entrée – Aucune sortie ENTITY TestPorteET IS END TestPorteET ; TestPorteET Pr. Abdelmajid HAJAMI 198 Le langage VHDL Simulation : Porte ET Déclaration de l’architecture de test Déclaration des signaux internes TestPorteET s_entree1 s_entree2 Pr. Abdelmajid HAJAMI Step 3 ARCHITECTURE Test OF TestPorteET IS SIGNAL s_entree1 : Std_Logic := '0'; SIGNAL s_entree2 : Std_Logic := '0'; SIGNAL s_sortie : Std_Logic := 'Z'; s_sortie s_entree1, s_entree2 et s_sortie sont des signaux internes au programme de test, 199 Le langage VHDL Simulation : Porte ET Déclaration d’un composant Référence à un composant !! TestPorteET Step 4 COMPONENT PorteET PORT ( entree1 : IN Std_Logic ; entree2 : IN Std_Logic ; sortie : OUT Std_Logic ) ; END COMPONENT; s_entree1 s_entree2 Pr. Abdelmajid HAJAMI s_sortie Il s’agit d’une déclaration d’un composant de type PorteET PorteET entree1 entree2 sortie 200 Le langage VHDL Simulation : Porte ET Step 5 Instanciation d’un composant Instance d’un composant porte : PorteET √ TestPorteET s_entree1 PorteET entree1 entree2 s_entree2 Pr. Abdelmajid HAJAMI Porte s_sortie Il s’agit d’une instanciation d’un composant de type PorteET sortie PorteET entree1 entree2 sortie 201 Le langage VHDL Simulation : Porte ET Step 6 Câblage du composant (maping) Instance d’un composant √ porte : PorteET PORT MAP (s_entree1, s_entree2, s_sortie); TestPorteET s_entree1 PorteET entree1 entree2 s_entree2 Pr. Abdelmajid HAJAMI Porte s_sortie Le maping s’effectue en prenant en compte l’ordre des signaux dans PorteET sortie PorteET entree1 entree2 sortie 202 Le langage VHDL PROCESS BEGIN WAIT FOR 10 ns; s_entree1 <= '0'; s_entree2 <= '0'; Simulation : Porte ET Step 7 WAIT FOR 10 ns; s_entree1 <= '0'; s_entree2 <= '1'; Génération des signaux WAIT FOR 10 ns; Le mapping s’effectue en s_entree1 <= '1'; prenant en compte l’ordre des signaux dans PorteET s_entree2 <= '1'; WAIT FOR 10 ns; TestPorteET s_entree1 <= '1'; s_entree2 <= '0'; s_entree1 WAIT FOR 10 ns; PorteET s_sortie entree1 s_entree1 <= '0'; sortie entree2 s_entree2 <= '0'; PorteET WAIT FOR 10 ns; Porte s_entree2 entree1 WAIT ; sortie entree2 END PROCESS END Test; Pr. Abdelmajid HAJAMI 203 Le langage VHDL ToDo Pr. Abdelmajid HAJAMI 204 Le langage VHDL TD 1 Donner la description VHDL du circuit combinatoire suivant A inter1 B S C D Pr. Abdelmajid HAJAMI inter2 205 Le langage VHDL TD 1 Donner la description VHDL du circuit combinatoire suivant inter1 A S B C D Pr. Abdelmajid HAJAMI inter2 206 Le langage VHDL TD 2 Pr. Abdelmajid HAJAMI 207 Le langage VHDL TD 2 Pr. Abdelmajid HAJAMI 208 Le langage VHDL TD 2 Pr. Abdelmajid HAJAMI 209 Le langage VHDL TD 2 Fin partie 2 Pr. Abdelmajid HAJAMI 210 Le langage VHDL TP : ModelSim Pr. Abdelmajid HAJAMI 211 Le langage VHDL TP : ModelSim Fin partie 2 Pr. Abdelmajid HAJAMI 212 Microcontrôleurs Etudes et programmation Pr. Abdelmajid HAJAMI 213 Architecture d’un µcontroleur Définitions : Microprocesseur un microprocesseur consiste en une unité centrale de traitement (UAL + registres + unité de contrôle) entièrement contenue dans un seul circuit intégré. Data Bus Accumulateur 1 Register 2 Accumulateur 2 Multiplexeur µprocesseur Pr. Abdelmajid HAJAMI Register 1 Flag Register d’Indexe ALU Pointeur de pile Compteur ordinaire Control unit @ Unité de traitement ctrl cmd Unité de commande 214 Architecture d’un µcontroleur Définitions : Calculateur Construit autour d’un microprocesseur il contient : 3 2 1 Pr. Abdelmajid HAJAMI 215 Architecture d’un µcontroleur Définitions : microcontrôleur Construit autour d’un microprocesseur il contient : Clk RAM ROM EPROM Data Bus central Unit @ Bus Control Bus Parallel I/O Pr. Abdelmajid HAJAMI Serial I/O CAN Timer 216 Le µcontrôleur 68HC11 Structure du 68HC11 Développé par MOTOROLA (devenue Feescale) construit autour d’une UCT 8 bits, il possède : un espace adressable de 64 Ko (bus d'adresses de 16 bits). Un convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux (8 entrées multiplexées). Une interface de communication série asynchrone (RS232) (SCI) Une interface de communication série synchrone (SPI) Un timer 16 bits avec 3 entrées de capture et 4 sorties de comparaison plus 1 E/S programmable (Port A) 22 sources d'interruptions (internes et externes) 38 broches d'E/S polyvalentes réparties sur 5 ports (A, B, C, D). Pr. Abdelmajid HAJAMI 217 Le µcontrôleur 68HC11 Structure interne du 68HC11 Pr. Abdelmajid HAJAMI 218 Le µcontrôleur 68HC11 Structure du 68HC11 Ports d’entrées sorties Pr. Abdelmajid HAJAMI 219 Le µcontrôleur 68HC11 Structure du 68HC11 : Ports d’entrées sorties Les échanges des informations entre le µC et l’environnement extérieure se fait au moyen des ports d ’E/S. Le 68HC11 comporte 5 port s d’E/S : 4 ports de 8 bits (8 lignes E/S) : A, B, C, E 1 ports de 6 bits (6 lignes E/S) : D Certaines lignes sont des Entrées, Certaines lignes sont des Sorties, A E B D C Certaines lignes peuvent être programmées soit en Entrée ou en Sortie, Pr. Abdelmajid HAJAMI 220 Le µcontrôleur 68HC11 Structure du 68HC11 : Configuration des entrées sorties Le port B (adresse : $1004) : ne se configure pas; toujours ses lignes sont des sorties Port B PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Le port E (adresse : $100A) : ne se configure pas; toujours ses lignes sont des entrées Port E PE7 Pr. Abdelmajid HAJAMI PE6 PE5 PE4 PE3 PE2 PE1 PE0 221 Le µcontrôleur 68HC11 Structure du 68HC11 : Configuration des entrées sorties Le port A (adresse : $1000) : possède 3 lignes d’entrée; 3 lignes de sorties et 2 lignes d’E/S Port A PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 La programmation des lignes PB3 et PB7 se fait en positionnant les bits DDRA 3 et DDRA7 du registre PACTL (adresse : $1026) Un bit à 1 ligne configurée en sortie Un bit à 0 ligne configurée en entrée PACTL DDRA7 1 1 0 Pr. Abdelmajid HAJAMI DDRA3 0 222 Le µcontrôleur 68HC11 Structure du 68HC11 : Configuration des entrées sorties Le port C (adresse : $1003) : est entièrement configurable en E/S Port C PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 La programmation des lignes se fait en positionnant les bits du registre DDRC (adresse : $1007) Un bit à 1 ligne configurée en sortie Un bit à 0 ligne configurée en entrée Pr. Abdelmajid HAJAMI DDRC 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 223 Le µcontrôleur 68HC11 Structure du 68HC11 : Configuration des entrées sorties Le port D (adresse : $1008) : contient 6 lignes configurable en E/S Port D PD5 PD4 PD3 PD2 PD1 PD0 La programmation des lignes se fait en positionnant les bits du registre DDRD (adresse : $1009) Un bit à 1 ligne configurée en sortie Un bit à 0 ligne configurée en entrée Pr. Abdelmajid HAJAMI DDRD 1 1 0 1 0 1 0 1 0 1 0 0 224 Le µcontrôleur 68HC11 Brochage du 68HC11 Le 68HC11E2 est inclus dans un boitier à 52 broches. En plus des 38 E/S des ports, il possède 14 broches: VSS et VDD: alimentation VDD=5V, VSS=0. XTAL et EXTAL: connections d'un quartz ou d'une horloge externe. E et 4XOUT: sorties d'horloge. IRQ et XIRQ: entrées d'interruptions externes. VRH et VRL: tension de référence pour la conversion A/N. VRH<VDD. MODA et MODB: mode de fonctionnement. RESET: signal d'initialisation. STRA et STRB: en mode normal (monopuce), signaux de communication avec une interface parallèle Pr. Abdelmajid HAJAMI 225 Le µcontrôleur 68HC11 Mode de fonctionnement du 68HC11 Le 68 HC 11 est prévu pour fonctionner sous 4 modes qui sont : 1) Mode circuit seul (Single Chip). (MODA = 0; MODB = 1) Démarrage en ROM ou EEPROM. 2) Mode étendu (ou multiplexé). (MODA = 1; MODB = 1) Adressage sur 16 bits (64ko),possibilité d'ajouter des circuits d'interface. 4) Mode Spécial Bootstrap. (MODA = 0; MODB = 0) Le programme est téléchargé en RAM via l'interface série (SCI) puis exécuté. 3) Mode Spécial Test. (MODA = 1; MODB = 0) C'est un mode de fonctionnement réservé aux tests en usine, lors de la fabrication. Pr. Abdelmajid HAJAMI 226 Le µcontrôleur 68HC11 Registres internes du 68HC11 7 A 0 7 0 15 D 0 15 IX 0 15 IY 0 15 SP 0 15 PC 0 7 Pr. Abdelmajid HAJAMI B CCR 0 227 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 8 bits : Accumulateurs A et B deux registres 8 bits chacun, pour manipuler des données sur 1 Octet, La concaténation des registre A et B constitue un registre 16 bits appelé B 7 15 A 0 7 B 0 D 0 NB : D ce n’est pas un registre indépendant; c’est la concaténation de A et B. Pr. Abdelmajid HAJAMI 228 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 8 bits : Le registre d’état CCR Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois qu’une instruction est exécutée, 7 S X CCR H I N 0 Z V C C; Carry : Mis à 1 en cas de retenue lors d'une opération arithmétique. Indique un débordement en contexte non-signé. V; Overfow: Débordement en contexte signé. Z; Zero: Mis à 1 si le résultat d'une opération vaut zéro. Pr. Abdelmajid HAJAMI 229 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 8 bits : Le registre d’état CCR Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois qu’une instruction est exécutée, 7 S X CCR H I N 0 Z V C N; Negative: Mis à 1 pour un résultat négatif (contexte signé). I; Interrupt mask: Mis à 1 pour interdire les interruptions masquables. Pr. Abdelmajid HAJAMI H; Half-Carry: Demi-retenue. Utilisée pour les opérations en DCB. 230 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 8 bits : Le registre d’état CCR Il s’agit d’un registre qui est susceptible d’être modifié à chaque fois qu’une instruction est exécutée, 7 S X CCR H I N 0 Z V C X; X interrupt mask : Interruption non-masquable (entrée XIRQ). Une fois mis à 0, ne peut plus être mis à 1. S; Stop disable: mis à 1 pour inactiver l'instruction stop (valeur par défaut au RESET) Pr. Abdelmajid HAJAMI 231 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 16 bits 15 D 0 15 IX 0 A + B : concaténation de A et B Registres indexes 15 IY 0 15 SP 0 Stack pointer : pointeur de pile 15 PC 0 Program pointer : pointeur de programme Pr. Abdelmajid HAJAMI 232 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 16 bits 15 D 0 A + B : concaténation de A et B Pour manipuler des données sur 16 bits Pr. Abdelmajid HAJAMI 233 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 16 bits 15 IX 0 Registres indexes 15 IY 0 Ils peuvent être utilisés pour manipuler des données sur 16 bits; mais ils sont très utilisés pour l’adressage indexé comme des registre d’indexe pour manipuler des adresses. Pr. Abdelmajid HAJAMI 234 Le µcontrôleur 68HC11 Registres internes du 68HC11 Les registres 16 bits 15 SP 0 Stack pointer : pointeur de pile 15 PC 0 Program pointer : pointeur de programme SP est le pointeur de pile : il indique en permanence la prochaine adresse libre de la pile. PC est le compteur ordinal: il contient l’adresse de la prochaine instruction du programme qui sera exécutée. Pr. Abdelmajid HAJAMI 235 Le µcontrôleur 68HC11 Plan mémoires du 68HC11 Pr. Abdelmajid HAJAMI 236 Le µcontrôleur 68HC11 Ecriture d’un programme Start Etablissement du cahier de charge Décomposition en Sous Problèmes Concevoir la solution (Organigramme) Ecrire le programme source (PS) Assembler en programme objet (CO) Tester le programme Non Test OK ? Chargement dans EPROM Pr. Abdelmajid HAJAMI End 237 Le µcontrôleur 68HC11 Jeux d’instructions du 68HC11 : Familles d’instruction Classement en 5 grandes familles: Instructions de traitement: regroupent les opérations arithmétiques et logiques sur les données. exécutées entre registres ou entre registre et mémoire, le résultat étant stocké dans un registre. Instructions de chargement/rangement: Pour être traitées, les données doivent être chargées dans les registres et les résultats stockés en mémoire. chargement (load): registre mémoire. rangement (store): mémoire registre Instructions de branchement : Par défaut les instructions s'exécutent séquentiellement dans l'ordre de rangement en mémoire. Les branchements permettent de dérouter un programme de manière conditionnelle. Pr. Abdelmajid HAJAMI 238 Le µcontrôleur 68HC11 Jeux d’instructions du 68HC11 : Familles d’instruction Classement en 5 grandes familles: Sous-programmes, pile et interruptions: Les instructions de cette catégorie permettent de gérer des sous-programmes (instructions d'appel et de retour) de gérer des interruptions (sous-programmes particuliers). de gérer explicitement une structure de données de type pile (utilisée de manière implicite par les sous-programmes). Instructions diverses : On range dans cette catégorie les instructions systèmes ou des instructions inclassables par ailleurs (Exemple: l'instruction nop qui ne fait rien!) Pr. Abdelmajid HAJAMI 239 Le µcontrôleur 68HC11 Jeux d’instructions du 68HC11 : Structure d’une instruction Une instruction est composée de deux parties distincts et consécutives Opérateur (Obligatoire) Opérande (s) (Facultatifs selon le cas) LDAA # $20 Certains opérateurs ne nécessitent pas d’opérandes. Ce sont des opérations sur registres CLRA Pr. Abdelmajid HAJAMI 240