Composants logiques programmables et VHDL Sylvain MONTAGNY sylvain.montagny@univ-savoie.fr Bâtiment chablais, bureau 13 04 79 75 86 86 Retrouver tous les documents de Cours/TD/TP sur le site www.master-electronique.com Université de Savoie
Présentation cours : Sommaire Cours : 10.5 h en 7 séances Chapitre 1 : Caractéristiques des circuits logiques Chapitre 2 : Les systèmes logiques Chapitre 3 : Synthèse de systèmes logiques combinatoires Chapitre 4 : Synthèse de systèmes logiques séquentiels Chapitre 5 : Les composants logiques programmables Chapitre 6 : Description en VHDL Université de Savoie 2
Présentation TD TD : 10.5 h en 7 séances TD1 : Synthèse logique combinatoire, caractéristiques électriques des portes logiques TD2 : Synthèses de circuits logiques séquentiels à l aide de graphe d état TD3 : Composant logique programmable TD4 : Description de fonctions logiques à l aide du langage VHDL TD5 : Synthèse d un système de communication série en VHDL Université de Savoie 3
Présentation TP TP : 12h en 3 séances de 4h TP1 : Synthèse d un système logique combinatoire dans l environnement ALTERA. TP2 : Synthèse d un système logique séquentielle TP3 : Synthèse d un mini projet séquentiel Université de Savoie 4
Examen Un contrôle continu : 1h Un contrôle final : 1h 75% Une note de travaux pratiques 25% Université de Savoie 5
Chapitre 1 : Caractéristiques des circuits logiques 1.1 Niveaux logiques et gabarits 1.2 Caractéristiques des composants logiques 1.3 Exemple d une datasheet Université de Savoie 6
Niveaux logiques et gabarits Niveaux logiques Les niveaux logiques sont décrits par des tensions v I v O Niveau Potentiel de sortie Potentiel d entrée Logique Positive H V OH V IH 1 L V OL V IL 0 On exprime une fonction de transfert en tension (caractéristique de transfert) donnant une relation entre V I et V O. Université de Savoie 7
Exemple : caractéristique d un inverseur Université de Savoie 8
Exemple : caractéristique d un inverseur Fonction de transfert de l inverseur : (courbe idéalisée) V O V OH V OH min V OL max V OL V OHmin : Tension minimale fournie par la sortie à l état HAUT V OLmax : Tension maximale fournie par la sortie à l état BAS V ILmax : Tension maximale reconnue comme un niveau BAS en entrée. V IHmin : Tension minimale reconnue comme un niveau HAUT par l entrée V I V ILmax V IH min Université de Savoie 9
Niveaux logiques et gabarits Notion de gabarit Le gabarit est valable pour TOUTE la FAMILLE logique V O Si 0 < V I < V IL max alors V O > V OH min V OH min V OL max Si V IH min < V I < V max alors V O < V OLmax Si V ILmax < V I < V IH min Pas de fonctionnement garanti V I V ILmax V IH min Université de Savoie 10
Niveaux logiques et gabarits Immunité au bruit (1) Immunité : Tension parasite (bruit) que l on peut ajouter au signal tout en conservant un fonctionnement normal + V I = V O +V B + V O V B V I VB représente le bruit Université de Savoie 11
Sortie du 1 er circuit Entrée du 2 ème circuit Marge de bruit
Niveaux logiques et gabarits Immunité au bruit (2) Le respect des gabarits lors de la mise en cascade implique : V OH min > V IH min et V OL max < V IL max On défini donc la marge de bruit : MB =Min( V OH min -V IH min ; V IL max -V OL max ) Université de Savoie 13
Niveaux logiques et gabarits Niveaux logiques CMOS et TTL 5 V 3,5 V 1 V IH 5 V 4,4 V V OH 1,5V 5 V 5 V 0 V 0 V IL 0,33 V 0 V V OL 2 V V IH 2,4 V V OH 3,3 V 2 V Entrée 1 CMOS 5V V IH 3,3 V 2,4 V Sortie V OH 0,8V 0 V Entrée V IL 0,4 V 0 V TTL Sortie V OL 0,8 V 0 V 0 V IL 0,4 V 0 V V OL Entrée CMOS 3.3V Sortie 14
Chapitre 1 : Caractéristiques des circuits logiques 1.1 Niveaux logiques et gabarits 1.2 Caractéristiques des composants logiques 1.3 Exemple d une datasheet Université de Savoie 15
Caractéristiques des composants logiques Sortance C est le nombre maximum d entrées de porte logique que la sortie d une porte peut piloter. Ceci s entend pour des portes d une famille attaquant des portes de la même famille. La sortance doit s exprimer dans chacun des deux états HAUT et BAS. Exemple : Sortance : I OHmax = 400 µa I IHmax = 40 µa I OLmax = -20 ma I ILmax = -1,6mA au niveau haut : 10 au niveau bas : 12,5 Cette sortie peut piloter correctement 10 entrées unitaires câblées en parallèle. 16
Caractéristiques des composants logiques Temps de commutation De 10% à 90% du niveau haut établi Tr : Rising Time Tf : Falling Time 90% 90% 10% 10% T r t f Université de Savoie 17
Caractéristiques des composants logiques Temps de propagation C est le temps de réponse de la sortie logique sur une modification d une des entrées. 1 v I (t) t v I (t) v O (t) v O (t) t tp LH tp HL tp LH : temps de propagation de l état bas à l état haut. tp HL : temps de propagation de l état haut à l état bas. Université de Savoie 18
Chapitre 1 : Caractéristiques des circuits logiques 1.1 Niveaux logiques et gabarits 1.2 Caractéristiques des composants logiques 1.3 Exemple d une datasheet Université de Savoie 19
Exemple sur datasheet 74F153 20
Exemple sur datasheet 74F153 Université de Savoie 21
Retrouver les gabarits d entrée et de sortie Calculer la marge de bruit de ce composant logique Calculer la sortance Retrouver le temps de propagation Retrouver le temps de commutation
Chapitre 2 : Les systèmes logiques 2.1 Équation et représentation graphique 2.2 Système logique combinatoire 2.3 Système logique séquentiel Université de Savoie 25
Équation et représentation graphique Equation logique Un système logique est décrit par des équations logiques définissant la valeur des sorties. Les équations logiques sont formalisées par l algèbre binaire (algèbre de Boole) Université de Savoie 26
Propriétés (1) de ET,OU,NON Commutativité a+b = b+a a.b = b.a Associativité a+(b+c) = (a+b)+c a.(b.c) = (a.b).c Distributivité a.(b+c) = a.b+a.c a+(b.c) = (a+b).(a+c) Idempotence a+a = a a.a = a Absorption a+a.b = a a.(a+b) = a Involution a = a On garde la hiérarchie classique (. est prioritaire sur +) a + (b.c) = a + b.c!= (a + b). c Université de Savoie 27
Propriétés (2) de ET,OU,NON Elément neutre a+0 = a a.1 = a Elément absorbant a+1 =1 a.0 = 0 Inverse a+a = 1 a.a = 0 Théorème de DE Morgan a+b = a. b a.b = a + b Théorème du Consensus a.x+b.x+a.b = a.x+b.x (a+x)(b+x)(a+b)=(a+x)(b+x) Université de Savoie 28
Équation et représentation graphique Norme française a b & ET s a b & NAND s a NON s a b >1 s a b >1 s a b =1 s OU NOR XOR Nb : La représentation française est utilisée en symboles logiques Norme ANSI/IEEE Std: 91-1984 : Standard Graphic Symbols for Logic Functions Université de Savoie 29
Équation et représentation graphique Norme américaine a b ET s a b NAND s a a s NON s a b OU s a b NOR s a b XOR Nb : La norme américaine est la norme utilisée dans les «datasheets» pour dessiner les graphes (schémas) logiques. s Université de Savoie 30
Chapitre 2 : Les systèmes logiques 2.1 Équation et représentation graphique 2.2 Système logique combinatoire 2.3 Système logique séquentiel Université de Savoie 31
Système logique combinatoire Définition Dans un système logique combinatoire les sorties ne dépendent que des entrées Combinatoire : S = f booléenne (a,b,c,..,n) Tous changements dans les signaux appliqués aux entrées se propage immédiatement à travers les portes jusqu à ce que leurs effets apparaissent aux sorties. Université de Savoie 32
Système logique combinatoire Exemple I i Logique S j = f booléenne (I i ) combinatoire Exemple de système combinatoire : Quelles sont les entrées et les sorties de ce système? Université de Savoie 33
Système logique combinatoire Les composants combinatoires Au catalogue des fournisseurs Portes intégrés et inverseurs (Gates) Multiplexeur / démultiplexeur Codeurs / Décodeurs Transcodeurs Comparateurs / Détections d erreurs Circuits arithmétiques (add, ALU, mult) Université de Savoie 34
Chapitre 2 : Les systèmes logiques 2.1 Équation et représentation graphique 2.2 Système logique combinatoire 2.3 Système logique séquentiel Université de Savoie 35
Système logique séquentiel Définition Les sorties dépendent : De l état présent du système (machine de Moore) De l état présent et des entrées du système (machine de Meally) L état futur dépend Des entrées et de l état présent du système Université de Savoie 36
Système logique séquentiel Exemple Exemple de système séquentiel : Quelles sont les entrées et les sorties de ce système? Définir les différents états possibles du système. Université de Savoie 37
Système logique séquentiel Logique asynchrone Asynchrone signifie que les états du systèmes évoluent à tout moment dès qu une entrée est modifiée. Exemple : la bascule RS R 0 0 1 S 0 1 0 Q t Q Q Q Q t+ Q 1 0 Fonction Mémoire Mise à 1 Mise à 0 Effet mémoire : spécificité des systèmes séquentiels Interdit Université de Savoie 38
Système logique séquentiel Logique synchrone Synchrone signifie que les états du système sont réévalués seulement lors d un front d horloge. Il y a donc un effet mémoire pendant une période d horloge. Exemple : La bascule D Horloge Q D Q Université de Savoie 39
Chapitre 3 : Synthèse de systèmes logiques combinatoires 3.1 Synthèse d un additionneur et d un multiplexeur 3.2 Les aléas dans les systèmes combinatoires Université de Savoie 40
Synthèse de systèmes logiques combinatoires 1. Détermination des entrées et des sorties du système. 2. Détermination de la table de vérité 3. Détermination de l équation logique (tableau de Karnaugh, simplification avec l Algèbre de Boole ) 4. Réalisation à l aide de circuits logiques Université de Savoie 41
Exemple (1) Synthèse d un additionneur 1 bit Addition de deux opérandes 1 bits avec une retenue a b R i ADD S R o Réaliser la synthèse logique de l additionneur 1 bit et retrouver les équations logiques suivantes S = a b R i R = a. b + a. Ri + b. o R i Nombre de portes? Temps de propagation? Université de Savoie 42
Exemple (2) Synthèse d un multiplexeur Sélection d une voie parmi 2 N grâce à N bits de commande Si (S 1 S 0 ) 2 =00 alors Q = I 0 I 0 I 1 I 2 I 3 Mux 4 vers 1 Q Q = S S. 1. 0 I O Si (S 1 S 0 ) 2 =01 alors Q = I 1 Q = S. S I etc 1 0. 1 S 1 S 0 Réaliser la synthèse logique du multiplexeur 4 vers 1 Université de Savoie 43
Multiplexeur (constitution) Q = S. S. I + S. S. I + S. S. I + S. S. I 1 0 0 1 0 1 1 0 2 1 0 3 I 0 & I 1 I 2 I 3 & & >1 Q S1 S 0 & Université de Savoie 44
Exemple sur datasheet du multiplexeur 74F153 Vérifier la cohérence de votre table de vérité avec celle de la datasheet Université de Savoie 45
Chapitre 3 : Synthèse de systèmes logiques combinatoires 3.1 Synthèse d un additionneur et d un multiplexeur 3.2 Les aléas dans les systèmes combinatoires Université de Savoie 47
Les aléas dans les circuits combinatoires Les aléas ou «glitch» sont des états instables d un signal juste après que les signaux dont il dépend est été modifié. A priori, toute fonction logique combinatoire synthétisée est susceptible de provoquer des aléas puisque : Toutes les entrées ne changent pas d état exactement au même moment. La cascade de cellules logiques peut induire des états intermédiaires instables. Université de Savoie 48
Synthèse sans aléas M DC 00 01 11 10 BA 00 0 0 1 1 01 1 1 1 1 11 1 1 0 0 10 0 0 0 0 M = D. B D. A 1 + 3 portes 4 termes 7 signaux M DC 00 01 11 10 BA 00 0 0 1 1 01 1 1 1 1 11 1 1 0 0 10 0 0 0 0 M = D. B + D. A B. A 2 + 4 portes 6 termes 10 signaux Cas ou B et A = 1 Université de Savoie 49
Chapitre 4 : Synthèse de systèmes logiques séquentiels 4.1 Schéma général d un système séquentiel 4.2 Description par graphe d état 4.2 Méthodologie de synthèse : Exemple d un distributeur de boisson Université de Savoie 50
Schéma général d un système séquentiel Les sorties dépendent : De l état présent du système (machine de Moore) De l état présent et des entrées du système (machine de Meally) L état futur dépend Des entrées et de l état présent du système Université de Savoie 51
Schéma général d un système séquentiel La présence de registre nous donne une «fonction mémoire» de l état actuel. Cet état actuel est déterminant pour le calcul de l état suivant du système. On représente l évolution du système séquentiel par un graphe d état. Université de Savoie 52
Chapitre 4 : Synthèse de systèmes logiques séquentiels 4.1 Schéma général d un système séquentiel 4.2 Description par graphe d état 4.2 Méthodologie de synthèse : Exemple d un distributeur de boisson Université de Savoie 53
Description par graphe d état Définition (1) Définition : Un diagramme ou graphe d états permet d avoir une représentation graphique d un système séquentiel. Il est constitué par l énumération de tous les états possible du système. Un seul de ces états peut être actif à la fois. A chaque état est associé la valeur de la (ou des) grandeur(s) de sortie. Transition Etat 1 2 s=1 s=0 Valeur de la ou des sorties dans l'état Université de Savoie 54
Description par graphe d état Définition (2) Les états sont identifiés par des cercles, avec leur nom et/ou leur code binaire associé écrit dans le cercle. Les transitions entre les états sont identifiées par des flèches entre les cercles. Les conditions pour toutes transitions (les valeurs nécessaires de variables d entrée) sont placées à côté des flèches de transition. Exemple : Graphe d état synchrone d une Bascule D D=1 D=0 1 2 Q=0 Q=1 D=1 D H Q D=0 Université de Savoie 55
Chapitre 4 : Synthèse de systèmes logiques séquentiels 4.1 Schéma général d un système séquentiel 4.2 Description par graphe d état 4.2 Méthodologie de synthèse : Exemple d un distributeur de boisson Université de Savoie 56
Méthodologie de synthèse Système séquentiel 1. Interprétation : Définir les entrées et les sorties du système, interpréter les descriptions ambiguës. 2. Graphe : Représenter le fonctionnement par un graphe d états 3. Tableau : Représenter le tableau de transition des états 4. Codage des états : Déterminer le nombre de bascules nécessaires et associer les états aux combinaisons de sortie des bascules 5. Equation : Choisir une architecture et le type de bascules. Déterminer les équations de sorties du système et les équations des états. Université de Savoie 57
Méthodologie de synthèse Exemple : Distributeur de boissons Cahier des charges Le distributeur délivre une boisson après que l on ait inséré 0,3 dans le monnayeur. On ne peut insérer que des pièces de 0,2 et de 0,1. Deux capteurs identifient le type de pièces insérées. Une fois le montant acquitté, une commande actionne une gâche électrique qui libère une boisson. Université de Savoie 58
Méthodologie de synthèse 1- Interprétation Définition des Entrées sorties 2 entrées : u : Pièce de 0,2 c : Pièce de 0,1 1 sortie O : Commande d ouverture de la gâche Cas ambigües : Cas ou la somme est supérieure à 0,3? Ce distributeur ne rend pas la monnaie Monnayeur u c Distributeur o Gâche raz H Université de Savoie 59
Méthodologie de synthèse 2- Graphe d état Université de Savoie 60
Méthodologie de synthèse 3- Tableau de transition des états C est une table de vérité constitué : en entrée de l état actuel du registre d état des entrées de la machine à états en sortie de l état futur du registre d état des sorties de la machine à états Université de Savoie 61
Méthodologie de synthèse 3- Tableau de transition des états Table des transitions non codée Entrée Sorties Etat courant Entrée (uc) Etat futur Sortie (o) E0 00 E0 0 01 E1 0 10 E2 0 11 X X E1 00 E1 0 01 E2 0 10 E3 0 11 X X E2 00 E2 0 01 E3 0 10 E3 0 11 X X E3 XX E0 1 62
Méthodologie de synthèse 4- Codage des états Nombre de bascules en fonction du nombre d états Choix de la combinaison des sorties des bascules qui codera chaque état Élaboration de la table de transitions des états codés 4 états 2 bascules Etat Code (Q1Q0) E0 00 E1 01 E2 10 E3 11 Table des transitions codée Etat courant (Q1Q0) Entrée (uc) Etat futur (D1D0) Sortie (o) 00 00 0 00 01 01 0 10 10 0 11 XX X 00 01 0 01 01 10 0 10 11 0 11 XX X 00 10 0 10 01 11 0 10 11 0 11 XX X 11 XX 00 1 63
Méthodologie de synthèse 5- Implémentation Choix d un type de bascules Déterminations des équations logiques des entrées des bascules D0 uc Q1Q0 00 01 11 10 00 0 1 X 0 01 1 0 X 1 11 0 0 X 0 10 0 1 X 1 D1 uc Q1Q0 00 01 11 10 00 0 0 X 1 01 0 1 X 1 11 0 0 X 0 10 1 1 X 1 D 0 = Q 0. c + Q 1. Q 0. c + Q 1. Q 0. u D 1 = Q 1. u + Q 1. Q 0 + Q 1. Q 0. c Université de Savoie 64
Méthodologie de synthèse 5- Implémentation Déterminations des équations logiques des sorties o Q0 Q1 0 1 0 0 0 1 0 1 o = Q 1.Q 0 >>Dessiner le schéma complet (bascules et portes logiques) de notre système Université de Savoie 65
Chapitre 5 : Les composants logiques programmables 5.1 Structure des PLD 5.2 Structure des CPLD 5.3 Structure des FPGA & ASICs Université de Savoie 66
Structure des PLD La structure de base de ces composants programmables sont des réseaux ET et OU permettant de réaliser n importe quelle fonctions logiques. a b c Matrice ET Matrice OU Sorties 1 s 2 3 4 Université de Savoie 67
Structure des PLD Structure interne a b c d Matrice OU programmable Matrice ET programmable s 1 s 2 s 3 s 4 68
Structure des PLD Cette structure interne nous permet pour l instant de traiter que les équations logiques combinatoires. Pour les équations séquentielles, il faut insérer une bascule et un rebouclage de la sortie vers les entrées. Université de Savoie 69
Structure des PLD DEUX MODES DE SORTIE : COMBINATOIRE ET SÉQUENTIEL OU : Sommes ET : Produits Sortie Université de Savoie 70
Structure des PLD Macrocellule de sortie (1) MODE COMBINATOIRE On multiplexe la sortie directe ou complémentée du ET-OU ET OU Université de Savoie 71
Structure des PLD Macrocellule de sortie (2) MODE SÉQUENTIEL On multiplexe la sortie inversée ou non inversée de la bascule D Université de Savoie 72
PAL22V10
Chapitre 5 : Les composants logique programmables 5.1 Structure des PLD 5.2 Structure des CPLD 5.3 Structure des FPGA & ASICs Université de Savoie 74
Structure des CPLD E/S Les CPLDs regroupent plusieurs PLD interconnectés par un réseau de connexions programmables. Les CPLDs sont les prémisses des premiers FPGAs. Ces circuits tendent à être remplacés par les FPGAs. PLD PLD PIM Programmable Interconect Matrix PLD PLD E/S Université de Savoie 75
Structure des CPLD Chaque bloc logique représente un PLD. Chaque PLD est composé d un certain nombre de macrocellules Équivaut à Université de Savoie 77
Un bloc logique et ses macrocellules Université de Savoie 78
Structure des CPLD Une macrocellule Université de Savoie 79
Chapitre 5 : Les composants logiques programmables 5.1 Structure des PLD 5.2 Structure des CPLD 5.3 Structure des FPGA & ASICs Université de Savoie 80
Structure des FPGA & ASICs Field Programmable Gate Array Université de Savoie 81
Structure des FPGA & ASICs AVANTAGES Possibilité de prototypage Time-to-market faible Adaptabilité aux futurs évolutions grâce à la reconfiguration INCONVENIENTS intégration limité par les ressources de routage prix à l unité élevé pour de grosses productions Université de Savoie 82
Université de Savoie 83
Les ASIC Application-Specific Integrated Circuits. Les ASIC fournissent précisément la fonctionnalité nécessaire pour une tâche spécifique. Cela leur permet d'être : plus petits, moins chers, plus rapide, De consommer moins de puissance qu'un processeur programmable (tel un Intel Pentium IV). Exemple : Une puce graphique faite sur mesure pour un PC peut tracer des images 10 à 100 fois plus rapidement qu'un processeur central à usage générique. Université de Savoie 84
Structure des FPGA & ASICs Conclusion Le choix entre FPGA ou ASIC, se fait en fonction du cahier des charges de l application Temps de mise sur le marché et durée de vie courte Très petit nombre de circuits >>> FPGA Optimisation des performances Grande série >>> ASIC Université de Savoie 85
Chapitre 6 : Description en VHDL 6.1 Présentation du langage VHDL 6.2 La partie ENTITY 6.3 La partie ARCHITECTURE 6.4 La description en VHDL Université de Savoie 86
Présentation du langage VHDL La description matériel Le langage VHDL (Very High level Description Language) est, comme son nom l indique, un langage de description matériel. Il ressemble fortement à un langage informatique (PASCAL, C). Il faut toutefois garder à l esprit que l objectif de la description est la synthèse de fonctions numérique à l aide de circuit PLD, FPGA ou ASIC. Pour cela il est important de connaître le circuit «cible» si on veut mener à bien cette synthèse. Université de Savoie 87
Présentation du langage VHDL Particularités La différence essentielle avec un langage informatique est la simultanéité des actions décrites. Pour cela il faudra se familiariser avec la notion : d instruction concurrente (simultanée) d instruction séquentielle. Par défaut toutes les instructions sont concurrentes, pour qu elles soient séquentielles il faut qu elles apparaissent dans un zone particulière appelée : process. Université de Savoie 88
Présentation du langage VHDL Objectifs Décrire un système combinatoire ou séquentiel en VHDL Comprendre comment le VHDL va synthétiser le système et l intégrer dans un composant programmable PLD, CPLD ou FPGA. Université de Savoie 89
Présentation du langage VHDL Structure d un fichier VHDL Université de Savoie 90
Présentation du langage VHDL La description La description VHDL consiste en une définition d un bloc ENTITY et d une définition d un bloc ARCHITECTURE. ENTITY est la description physique des entrées/sorties du système ARCHITECTURE est la description du comportement du bloc ENTITY ENTITY and2 IS PORT ( a,b : IN std_logic; f: OUT std_logic); END and2; ARCHITECTURE behavioral OF and2 IS BEGIN f <= a AND b; END behavioral; =>Dessiner l architecture représentée par la description VHDL ci-contre Université de Savoie 91
Présentation du langage VHDL Description VHDL Vue externe (entity) A B Cin Vue interne (architecture) A B Cin Additionneur (Boite noir) S Cout S Cout Université de Savoie 92
Chapitre 6 : Description en VHDL 6.1 Présentation du langage VHDL 6.2 La partie ENTITY 6.3 La partie ARCHITECTURE 6.4 La description en VHDL Université de Savoie 93
La partie ENTITY Exemple La partie ENTITY décrit les Entrées / Sorties rst d[7:0] clk q[7:0] co ENTITY black_box IS PORT ( clk, rst: IN std_logic; d: IN std_logic_vector(7 DOWNTO 0); q: OUT std_logic_vector(7 DOWNTO 0); co: OUT std_logic); END black_box; Université de Savoie 94
La partie ENTITY Port Modes La direction du port est indiquée de la façon suivante: IN Entrée de du système OUT Sortie du système INOUT Entrée et sortie du système (bidirectionnel) Université de Savoie 95
La partie ENTITY Exercice (1) Ecrire l entité d un additionneur Add4 de deux mots, a et b, de 4 bits en entrée, avec une retenue entrante ci, et une sortie somme sur 4 bits avec une retenue sortante co. a b ci 4 4 Add4 4 somme co Université de Savoie 96
La partie ENTITY Exercice (2) Ecrire l entité correspondante au schéma de ce multiplexeur : Université de Savoie 97
Chapitre 6 : Description en VHDL 6.1 Présentation du langage VHDL 6.2 La partie ENTITY 6.3 La partie ARCHITECTURE 6.4 La description en VHDL Université de Savoie 98
La partie ARCHITECTURE Organisation Toute architecture est associée à une entité Définition : L architecture définit les fonctionnalités et les relations temporelles. Elle décrit le comportement du composant. Zone de déclaration Zone de définition Université de Savoie 99
La partie ARCHITECTURE Objet VHDL : La déclaration Dans une architecture il est nécessaire de déclarer les objets utilisés et leur type avant la zone décrivant l'architecture (avant le «begin... end» ). Parmi les objets très utilisés, figurent : Les composants : COMPONENT Les signaux : SIGNAL Les variables : VARIABLE Université de Savoie 100
La partie ARCHITECTURE Objet VHDL : Signal Un signal représente une équipotentielle Il doit être déclaré avant utilisation L affectation se fait avec l opérateur «<=» Initialisation rapide Toto <=(others => 0 ); est équivalent à Toto <= "000000 0 "; Université de Savoie 101
La partie ARCHITECTURE Objet VHDL : Variable Une variable doit être déclarée avant utilisation Elle ne peut être déclarée que dans un «process» L affectation se fait avec l opérateur «:=» Université de Savoie 102
La partie ARCHITECTURE Les différentes descriptions L'architecture est la description interne du circuit. Elle est toujours associée à une entité. Une même entité peut avoir plusieurs «architectures». Ces descriptions peuvent être : Par flot de donnée Comportementale Structurelle Université de Savoie 103
La partie ARCHITECTURE Exemple de l additionneur A B Cin ADD Cout S Université de Savoie 104
La partie ARCHITECTURE Description par flot de donnée En flot de donnée les fonctions du système logique sont décrites par des équations booléennes. Le calcul des équations à été réalisé au préalable. Université de Savoie 105
A B S2 Cout Cin S1 S3 S architecture flot of Additionneur is signal S1, S2, S3 : bit ; begin S1 <= A xor B; S2 <= A and B; S3 <= S1 and Cin; architecture flot1 of Additionneur is signal S1, S2, S3 : bit ; S <= S1 xor Cin; Cout <= S2 or S3; end flot ; begin S <= S1 xor Cin; Cout <= S2 or S3; S1 <= A xor B; S2 <= A and B; S3 <= S1 and Cin; end flot ; L ordre des instructions n a pas d importance!!!
La partie ARCHITECTURE Description comportementale La description comportementale permet de faire une description du système sans faire référence aux équation, ni à la structure. Université de Savoie 107
A B Cin architecture comportementale of Additionneur is begin process (A,B,Cin) begin if (A = '0' AND B = '0' AND Cin = '0') then S <= '0 ; Cout <= '0 ; end if; if (A = '0' AND B = '0' AND Cin = '1') then S <= '1 ; Cout <= '0 ; end if; if (A = '0' AND B = '1' AND Cin = '0') then S <= '1 ; Cout <= '0 ; end if; etc end process; end comportementale; A B Cin S Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 S Count
La partie ARCHITECTURE Description structurelle (1) La description structurelle décrit la fonction à partir de composant préexistant. Il suffit de définir : La liste des composant utilisés La liste des interconnexions Université de Savoie 109
La partie ARCHITECTURE Description structurelle (2) architecture structurelle1 of Additionneur is component porteou port ( e1 : in bit; e2 : in bit; s : out bit ); end component; component porteet port ( e1 : in bit; e2 : in bit; s : out bit ); end component; component portexor port ( e1 : in bit; e2 : in bit; s : out bit ); end component; signal S1, S2, S3 : bit; begin u0 : porteet port map ( A, B, S2); u1 : portexor port map ( A, B, S1); u2 : porteet port map ( S1, Cin, S3); u3 : portexor port map ( S1, Cin, S); u4 : porteou port map ( S2, S3, Cout); end structurelle1; Université de Savoie 110
La partie ARCHITECTURE Hiérarchisation demi_add Additionneur A B demi_add u0 u0 S1 S2 S3 u2 Cout Cin u1 u1 S demi_add Université de Savoie 111
3) Unités de conception architecture structurelle2 of Additionneur is component porteou port ( e1 : in bit; e2 : in bit; s : out bit ); end component; component DemiADD port ( e1 : in bit; e2 : in bit; s1 : out bit ; s2 : out bit); end component; signal S1, S2, S3 : bit; begin u0 : DemiADD port map ( A, B, S2, S1); u1 : DemiADD port map ( S1, Cin, S3, S); u2 : porteou port map ( S2, S3, Cout); end structurelle2;
Entity DemiAdd is port ( e1 : in bit; e2 : in bit; s1 : out bit ; s2 : out bit); end DemiAdd; architecture structurelle of DemiAdd is component porteet port ( e1 : in bit; e2 : in bit; s : out bit ); end component; component portexor port ( e1 : in bit; e2 : in bit; s : out bit ); end component; begin u0 : PorteET port map ( e1, e2, s1); end structurelle; u1 : portexor port map ( e1, e2, s2);
La partie ARCHITECTURE Description structurelle (3) La description structurelle d'un circuit complexe en vhdl présente de nombreux avantages : Une architecture hiérarchique compréhensible : il est plus simple de séparer un circuit en un ensemble de blocs plus petits, ayant des fonctions bien identifiées. Ces blocs pourront alors être décrits sous forme comportementale, ou bien à leur tour être séparés en blocs encore plus simples. Une synthèse logique efficace : la synthèse est un processus lent (en terme de temps de calcul). Plus un bloc est gros et complexe, plus sa synthèse prendra du temps. Il vaut donc mieux travailler sur des blocs plus petits, plus simples à synthétiser, et rassembler le tout à la fin. Université de Savoie 114
Exercice (1) Ecrire l ensemble d un fichier VHDL (Library, Entity, Architecture) qui décrit une porte OU à 2 entrées a et b de 1 bit (sortie s) Université de Savoie 115
Exercice (2) Ecrire l ensemble d un fichier VHDL (Library, Entity, Architecture) qui décrit un additionneur ADD4 à 2 entrées de 4 bits A et B signées et une sortie S de 4 bits Université de Savoie 116
Chapitre 6 : Description en VHDL 6.1 Présentation du langage VHDL 6.2 La partie ENTITY 6.3 La partie ARCHITECTURE 6.4 La description en VHDL Université de Savoie 117
Description en VHDL Conventions lexicales (1) En général, les instructions se terminent par «;» Règles de dénomination : 26 lettres de l alphabet, les 10 chiffres et _ Le premier caractère est une lettre Il ne peut y avoir 2 «_» de suite L identifieur ne peut se terminer par «_» Université de Savoie 118
Description en VHDL Conventions lexicales (2) Majuscule / Minuscule Un mot en majuscule est identique à un mot en minuscule. Il est cependant conseillé d'avoir des règles d'écriture cohérentes. Par exemple, les mots réservés du langage peuvent être en majuscule et les autres mots en minuscule. Identificateurs Ce sont les noms de variables, de signaux, de fonctions,... Ils ne peuvent contenir que des lettres, des chiffres et le "underscore" _. Ils doivent commencer par une lettre. Ils ne peuvent pas contenir d'espace. Les mots-clefs du langage ne peuvent pas être utilisés comme identificateurs. Université de Savoie 119
Description en VHDL Conventions lexicales (3) Expressions Elles se terminent par un point virgule ; Littéraux : Ce sont des valeurs explicites : 67 est un littéral pour le type entier '0' est un littéral pour un bit "001" O"562" X"FF1" sont des littéraux pour les vecteurs de bits "chaine" est un littéral de type chaine de caractères Université de Savoie 120
Description en VHDL Conventions lexicales (4) Commentaires Les commentaires doivent être inclus dans le code, pour augmenter la lisibilité et la documentation. Ils commencent par 2 tirets (--) en se terminent en fin de ligne Il est impératif de documenter vos codes. Université de Savoie 121
Description en VHDL Mots réservés http://amouf.chez.com/syntaxe.htm Université de Savoie 122
Description en VHDL Les types d objet Les entiers (integer) Les types énumérés Les types tableaux Université de Savoie 123
Description en VHDL Les types : entiers Entier (integer) Le type entier integer prédéfini dans le paquetage standard STD permet de définir des nombres signés sur 32 bits entre -2 31 et (2 31 1). Exemple de déclaration d un signal (objet) de type integer pouvant prendre les valeurs de 0 à 99 : signal compteur : integer range 0 to 99 := 0; Université de Savoie 124
Description en VHDL Les types : énumérés (1) Un type énuméré est un type défini par une énumération exhaustive que le programmeur peut définir : Exemple de déclaration d un signal (objet) de type COULEURS : signal palette_couleur: COULEURS ; Dans le paquetage STANDARD de la bibliothèque STD, plusieurs types énumérés sont définis : 125
Description en VHDL Les types : énumérés (2) Dans le paquetage STD_LOGIC_1164 de la bibliothèque IEEE, le type STD_ULOGIC est défini par : Au démarrage les signaux sont dans un état inconnu 'U'. 'X' indique un conflit, le signal est affecté d'un côté à '1' et d'un autre à '0'. '0' et '1' correspondant aux valeurs booléennes du signal. 'Z' correspond à l'état haute 'impédance". 'W' est la valeur d'un signal relié à 2 résistances de tirage, une tirant à 0 et l'autre à 1. 'H' et 'L' sont des valeurs d'un signal relié respectivement à une résistance de tirage à 1 et à 0. '-' est un état indifférent. Utile pour décrire les tables de vérité. Université de Savoie 126
Description en VHDL Les tableaux Les types TABLEAU ou array sont des collections d'objets de même type, indéxés par des entiers ou des énumérés. Par exemple le type BIT_VECTOR de la bibliothèque STD est un tableau de dimension 1 (vecteur) de taille quelconque Et le type STD_ULOGIC_VECTOR de la bibliothèque IEEE : type std_ulogic_vector is array (natural range <>) of std_ulogic 127
Objet VHDL Exercice Type Définir un type énuméré etat composé des valeurs OK, HS, ERROR Université de Savoie 128
Description en VHDL Opérateurs (1) Opérateurs logiques (sur booléens, bits et dérivés) Opérateurs relationnels (sur types scalaires ou dérivés (signed, unsigned)) Université de Savoie 129
Description en VHDL Opérateurs (2) Opérateurs bits (sur vecteurs de bits et types numériques) Opérateurs arithmétiques (sur types numériques : entiers, signés, non signés, flottant) Opérateurs de décalage (sur tableaux de bits ou étendus) : sll, srl, sla, sra, rol, ror Université de Savoie 130
Description en VHDL Instructions VHDL Le VHDL le matériel à l aide : d'instructions concurrentes dont l'ordre d'écriture n'a aucune importance d instructions séquentielles qui sont exécutées les unes après les autres, comme c'est la cas du C. Ces instructions doivent être écrites dans un «process». Université de Savoie 131
Description en VHDL Assignations concurrentes Toutes les déclarations sont exécutées simultanément et en permanence L ordre des déclarations dans le code source n a pas d influence Les déclarations possibles sont : Assignation continue : <= Instantiation d un composant : port map Assignation conditionnelle : when else Assignation sélective : with select when when Appel d un process Université de Savoie 132
Description en VHDL Assignations séquentielles Les process manipulent les variable et signal Au sein de ces descriptions, les déclarations sont exécutées de manière séquentielle, l une après l autre L ordre des déclarations est donc important Les déclarations possibles sont : Assignation continue : <= (signal) et := (variable) Assignation conditionnelle : if then elsif then else end if; Assignation sélective : case is when => when => end case; Boucles : for in loop end loop; Boucles : while... loop end loop; Instructions next et exit Université de Savoie 133
Description en VHDL Qu est ce qu un VHDL Process? C est une suite d instructions séquentielles Les processus peuvent être actifs ou inactifs Il possède une liste de sensibilité qui sont les signaux pouvant rendre le processus actif lorsque qu un signal de cette liste change de valeur. Par exemple, un processus avec un signal d horloge dans sa liste de sensibilité deviendra actif à chaque front d horloge, et toutes les instructions séquentielles seront alors exécutées. A la fin du processus (et seulement à la fin), toutes les sorties (signaux) sont affectées et le processus redevient inactif. Université de Savoie 134
Description en VHDL Process synchrone Mise en œuvre de process synchronisé sur l horloge If clk event and clk= 1 then ou if rising_edge(clk) If clk event and clk= 0 then ou if falling_edge(clk) Université de Savoie 135
Description en VHDL SIGNAUX vs variables (1) Les signaux sont visibles dans toute l architecture. Ce sont des équipotentielles. Les variables sont locales à chaque processus et sont mises à jour immédiatement. Elles sont très utiles pour effectuer un codage séquentiel classique comme avec le langage C. Les variables sont déclarées juste avant le corps du processus et sont affectées avec l'instruction d'affectation immédiate :=. Ceci afin de ne pas confondre avec l'instruction <= "reçoit" pour les signaux. Université de Savoie 136
Description en VHDL SIGNAUX vs variables (2) Exemple : Pour le processus suivant, a,b et c sont des signaux, x est une variable. => Préciser à quelles moments les affectations vont être réalisée. process (a) variable x : std_logic; begin x := a+1; a <= a+1; b <= x; c <= a; end process; 137
Exercice Ecrire l ensemble d un fichier VHDL (Library, Entity, Architecture) qui décrit un compteur COMPT qui compte sur 3 bits sur front montant du signal d horloge clk Université de Savoie 138
Description en VHDL Exemple VHDL (1) Ces affectations sont des instructions concurrentes au même titre que les processus entres eux. Architecture avec processus architecture arc of adder is begin process(a,b,cin) begin S <= A xor B xor Cin; end process; end arc; Architecture avec affectations concurrentes architecture arc of adder is begin S <= A xor B xor Cin; end arc; Université de Savoie 139
Description en VHDL Exemple VHDL (2) Architecture avec processus architecture arc of adder is begin process(a,b,cin) begin if A = '0' then S <= B xor Cin; elsif B = '0' then S <= not(cin); else S <= Cin; end if; end process; end arc; Architecture avec affectations concurrentes architecture arc of adder is begin S <= B xor Cin when A = '0' else not Cin when B = '0' else Cin; end arc; Université de Savoie 140
Description en VHDL Exemple VHDL (3) Architecture avec processus architecture arc of MUX is begin process(sel) begin case SEL is when 0 => sortie <= A; when 1 => sortie <= B; when others => sortie <= D; end case; end process; end arc; Architecture avec affectations concurrentes architecture arc of MUX is begin with SEL select sortie <= A when 0, B when 1, C when 2, D when others; end arc; Université de Savoie 141