LYCEE MAGHREB ARABE TECHNIQUE

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
La Logique séquentielle
Machines séquentielles
« Systèmes électroniques »
« 1.7. Fonction mémoire et différents types de logiques »
Calculs de complexité d'algorithmes
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Les éléments de mémorisation
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Chap 1 Grammaires et dérivations.
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
Les microprocesseurs A. Objectifs de la séquence:
Les Compteurs A. Objectifs de la séquence:
Architecture de machines Eléments de logique
Présentation Unité de codage
ALGEBRE DE BOOLE Mohamed Yassine Haouam
Cours Systèmes logiques
Circuits Logiques Programmables
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Les bases de l’Algorithmique
Principes de programmation (suite)
MACHINE DE MOORE SYNCHRONE SIMPLIFIÉE Professeur à l'UHP / ESIAL
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Gestion des Périphériques
Cours #6 Conception d’unités de contrôle
Analyse lexicale Généralités Expressions rationnelles Automates finis
NOTE : Pour faire évoluer le diaporama, si le clic de souris ne fait rien utilisez les touches du clavier : Pg up Pg down.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
SYSTEMES D’INFORMATION
Électronique numérique Intervenants : Boitier V. / Perisse T.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à l’algorithmique
Principes de programmation
Algèbre Relationnelle
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
IFT 6800 Atelier en Technologies d’information
Cours #7 Vérification d’un modèle VHDL
Chapitre 3 Syntaxe et sémantique.
8PRO100 Éléments de programmation Les types composés.
Partie II Sémantique.
Logique séquentielle.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI Jean-Jacques DUMÉRY -1-
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Structures alternative et répétitive
Paradigmes des Langages de Programmation
Algorithmique Les structures Rappel L'enchaînement séquentiel
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Advanced Boolean Equation Language
Composants logiques programmables
Le GRAFCET.
Chapitre 3 :Algèbre de Boole
Fonctions logiques séquentielles bascules compteurs registres
Les réseaux logiques programmables
Chemin critique et fréquence maximale d’horloge
Algorithmique et programmation (1)‏
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Un survol du language C.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Banc d’essai pour un.
Chapitre 5 : Les circuits séquentiels
Logique séquentielle. Logique séquentielle Logique séquentielle Définition En logique combinatoire, le niveau de la sortie dépend directement du niveau.
Le VHDL Programmation des CPLD et FPGA avec Quartus II ENSET d'Oran / IUFM Aix Marseille - mai
Chapitre 4 La représentation des nombres.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Les bascules et registres
L’électronique des ordinateurs Laurent JEANPIERRE IUT de CAEN – Campus 3.
Transcription de la présentation:

LYCEE MAGHREB ARABE TECHNIQUE 2 STE ATC T1 2007---2008

ABEL-HDL

I Présentation : ABEL-HDL est un langage de description de la structure à intégrer dans un PLD (HDL = Hardware Description Language) précurseur des langages VHDL et VERILOG. Un fichier écrit en ABEL constitue la source d'outils qui génèrent les fichiers de programmation (fichier JEDEC) des PLD.

II Organisation d'un fichier ABEL : L'exemple ci-dessous montre l'organisation d'un fichier ABEL: 1 indique sous quel nom seront créés les fichiers programmation du PAL module pap

titre du fichier (facultatif) 2 title 'pas a pas' titre du fichier (facultatif) 3 déclaration du brochage retenu pour le PAL définition d'un vecteur (facultatif) définition du type de sortie (ici séquentiel) h,oe,r,m pin 1,13,2,3; q1,q2,q3,q4 pin 23,22,21,20; sortie=[q1,q2,q3,q4]; sortie istype 'buffer,reg_d';

5 4 equations définitions des équations sortie.clk = h; sortie.oe = oe; sortie.ar = r; définition du fonctionnement des registres de sortie 5 q1.d = !q2 & !q4 & !m # q3 # !q4 & m; q3.d = q & !q4 # !q1 & q3 & !m # q2 & m; q2.d = q4 & !q1 # q2 & !q3 & !m # q4 & m; q4.d = q1 & !q3 # !q3 & !q2 & !m #q1 & m définitions des équations

6 end fin du fichier

title 'addition 2 bits' // optionnel, information complémentaire CARRY A B SUM Half Adder Exemple Demi-addionneur module Addition; title 'addition 2 bits' // optionnel, information complémentaire   Addition device 'P16H8'; // optionnel, permet de spécifier le type de matériel cible : PAL16P8 " input pins ‘’ A, B pin 3, 5; // la spécification du numéro de broches est optionnelle " output pins ‘’ SUM, Carry_out pin 15, 18 istype 'com'; // le compilateur fait la différence entre broches d’entrées et de sortie par le terme istype equations SUM = (A & !B) # (!A & B) ; Carry_out = A & B;  end  ; Addition // génération des sorties en fonction des entrées

Éléments syntaxiques Module : en règle générale le nom du module a le nom du fichier source *.abl (pour certains compilateurs c’est même obligatoire). Il peut y avoir plusieurs modules dans une source. Title : permet de préciser la fonction du module (optionnel).

Éléments syntaxiques Device : optionnel. Cela permet d’associer au module un circuit associé (le module sera implémenter dans le circuit spécifié). Cependant pour garder le module indépendant du circuit (pour pouvoir réutiliser le module dans un autre circuit) il est préférable de ne pas utiliser cette directive. Il sera possible au niveau de la compilation de préciser le PLD cible. Exemple : Mon_decod device 'P16V8'; // cible PAL16V8

Pin : permet de préciser le nom des entrées et des sorties déclarations Pin : permet de préciser le nom des entrées et des sorties   [!]pin_id pin [pin#] [istype 'attributes'] ; On peut spécifier plusieurs noms sur une seule ligne : [!]pin_id , pin_id, pin_id pin [pin#, [pin#, [pin#]]] [istype 'attributes'];

Exemple : IN1, IN2, A1 pin 2, 3, 4; // entrées avec numéro de broche spécifié OUT1 pin 9 istype 'reg'; // sortie de bascule active à l’état haut ENABLE pin; // entrées dont le numéro de broche n’est pas spécifier (à faire au niveau du compilateur) !Chip_select pin 12 istype 'com'; // sortie combinatoire active à l’état bas. !S0..!S6 pin istype 'com'; // sorties combinatoires actives à l’état bas

Il est possible de préciser des valeurs de Autres déclarations : Il est possible de préciser des valeurs de constantes , de macros ou d’ensembles : A = 21; C=2*7; ADDR = [1,0,11]; LARGE = B & C; D = [D3, D2, D1, D0]; D = [D3..D0];

Les nombres La représentation des nombres peut être binaire, octale, décimale ou hexadécimale. Si rien n’est précisé, le compilateur adopte la base décimale.

Les opérateurs  Les opérateurs logiques : Les opérateurs arithmétiques :

Les opérateurs Les opérateurs relationnels : Les opérateurs relationnels donnent des résultats vrais (1) ou faux (0).

Les opérateurs Les opérateurs d’assignement : 2 types : combinatoire et séquentiel. = pour les opérations de logique combinatoire, dans ce cas le signal prend la valeur donnée sans retard. := pour les opérations de logique séquentielle, dans ce cas le signal prendra la valeur après le prochain front d’horloge. Les niveaux de précédence :

Les constantes surtout utilisées dans les vecteurs de tests

Les ensembles  Un ensemble est une collection de signaux ou de constantes qui constitue un vecteur. Exemple 1: Signal = [D2,D1,D0]; "déclaration de l’ensemble signal Signal = [1,0,1] & [0,1,1]; " résultat de signal égal à [0,0,1] Exemple 2: [A,B] = C & D // Ce qui est équivalent à : A = C & D; B = C & D; Exemple 3: [A1,B1] = [D1,D2] & [C3,C2]; // Ce qui est équivalent à : [A1,B1] = [D1 & C3, D2 & C2]; Exemple 4: X & [A,B,C]; // Ce qui est équivalent à : [X & A,X & B,X & C];  2 & [A,B,C]; //le nombre "2" est d’abord remplace par son équivalent binaire (0010)On obtient alors : [0 & A, 1 & B, 0 & C];

Exemple 5: Génération du CS pour la sélection des boîtiers de mémoire  Chip_Sel = !A7 & A6 & A5; //Cas classique Addr = [A7,A6,A5]; déclaration d’un ensemble Addr" même résultat qu’en   Chip_Sel = Addr == [0,1,1];   Chip_Sel = Addr == 3; " décimal 3 est égal à 011.(même résultat qu’en )Ce principe est très utile pour des variables de 16 bits ou plus. Exemple 6 : Génération du CS pour la sélection des boîtiers de mémoire   Addr = [a15..a0]; "déclaration d’un ensemble Addr 16 bits X = .X.; "simplification de la notation de .X.  Chip_Sel = Addr == [1,0,1,X,X,X,X,X,X,X,X,X,X,X,X];  Chip_Sel = (Addr >= ^HA000) & (Addr <= ^HBFFF);

V Fichier ABEL pour un PAL combinatoire : Pour un fonctionnement combinatoire les sorties ne dépendent que des entrées. Les sorties doivent être déclarées de type combinatoire par la directive. par exemple Q0 istype 'com' . La directive istype affecte uniquement les sorties; les autres broches sont automatiquement considérées comme des entrées. Certains PAL (ex P16L8) ont des sorties actives à l'état 0, c'est à dire que la sortie se fait par l'intermédiaire d'un inverseur; il faudra alors le préciser dans la directive istype de la façon suivante istype 'invert,com'. Si la sortie est active à l'état 1 l'argument est buffer par ex: Q0 istype 'buffer,com'. Si la sortie peut être indifféremment de type inversé ou non (cas du 16V8 en mode combinatoire) il est préférable de n'utiliser aucun argument (buffer ou invert); c'est le compilateur ABEL qui choisira le type permettant une optimisation de la structure interne. istype :

en utilisant les opérateurs suivants: V.1 Équations: Les sorties peuvent être définies par des équations booléennes des entré en utilisant les opérateurs suivants: = affectation (on affecte au terme de gauche l'équation définie à droite ! complémentation logique & ET logique # OU logique $ OU exclusif !$ N OU exclusif L'exemple ci-dessous est le fichier ABEL permettant de réaliser un décodage d'adresse pour un boîtier ROM placé de $2000 à $3000 et un boîtier RAM placé de $3000 à $4000 les sélection de boîtier étant actives à l'état 1.

module decodadr title 'décodage d'adresses‘ A12,A13,A14,A15 pin 2,3,4,5; csrom,csram pin 13,12 istype 'com'; equations csrom=!A15&!A14&A13&!A12; csram=!A15&!A14&A13&A12; end Il est aussi possible de décrire le fonctionnement sous forme comportementale. Ainsi l'équation Q=X & Y peut s'écrire when X= =1 & Y= =1 then Q =1; else Q = 0; les équations comportementales se prêtent mieux à des fonctionnements séquentiels .

q0,q1,q2,q3,q4,q5,q6,q7 pin 19,18,17,16,15,14,13,12 istype 'com'; V2 Tables de vérité: Pour un montage comportant un grand nombre de sorties il peut être préférable d'utiliser des tables de vérité plutôt que des équations ce qui permet de s'affranchir du travail fastidieux de recherche des équations avec les outils traditionnels tels que les tableaux de Karnaugh. L'exemple suivant présente un fichier ABEL permettant de réaliser un décodeur 3 vers 8 à sorties actives à l'état 1: module decod title 'décodeur 3 vers 8' a0,a1,a3 pin 2,3,4; q0,q1,q2,q3,q4,q5,q6,q7 pin 19,18,17,16,15,14,13,12 istype 'com'; entrees=[ a0,a1,a3]; on,off =1,0; truth_table (entrees-> [ q0 , q1 , q2 , q3 , q4 , q5 , q6 , q7 ]) 0 ->[ on , off , off , off , off , off , off , off ]; 1 ->[ off , on , off , off , off , off , off , off ]; 2 ->[ off , off , on , off , off , off , off , off ]; 3 ->[ off , off , off , on , off , off , off , off ]; 4 ->[ on , off , off , off , on , off , off , off ]; 5 ->[ off , off , off , off , off , on , off , off ]; 6 ->[ off , off , off , off , off , off , on , off ]; 7 ->[ off , off , off , off , off , off , off , on ]; End

VI Fichier ABEL pour un PAL séquentiel: Le fichier ABEL doit contenir les indications concernant la nature de lasortie (reg_d pour des sorties sur bascules D ou reg_jk pour des sorties sur bascules JK) et les entrées réalisant l'horloge des registres (les PAL sont majoritairement synchrones) la validation des sorties et la mise à 0 asynchrone (si elles existent). Cela est fait à l'aide des extensions qui doivent être définies dans la rubrique équation . VI.1 Les extensions: Les extensions caractérisent le fonctionnement des étages de sorties. AR Reset asynchrone CLK Horloge des registres de sortie D entrée D d'une bascule D J entrée J d'une bascule JK K entrée K d'une bascule JK OE Sortie trois états L'exemple ci-dessous montre un extrait de fichier ABEL pour lequel : - les sorties sont regroupées dans un vecteur appelé sortie . - les sorties se font sur les sorties directes (ou non inversées) des bascules D . - l'horloge des bascules est l'entrée appelée h . - la validation des sorties est l'entrée appelée oe . - la mise à 0 asynchrone est l'entrée appelé r .

VI.2 Description par des équations : On écrit les équations des entrées des bascules (D J K AR OE) en utilisant les extensions et les opérateurs déjà définis L'exemple du V1 montre l'écriture des équations d'un PAL séquentiel. Cette solution convient parfaitement lorsque la mise en équation est simple et rapide pour des structures complexes il est préférable de travailler avec des machines d'états. VI.3 Machines d'état: Une machine d'état est une représentation symbolique de l'enchaînement séquentiel des états de sortie d'un système synchrone; ainsi la machine d'état correspondant à un compteur Johnson 4 bits serait la suivante : état A état B état C état D 0001 0010 0100 1000

Le fichier ABEL serait le suivant: module johnson. title 'compteur Johnson 4 bits synchrone‘ h,en pin 2,3; q3,q2,q1,q0 pin 19,18,17,16 istype 'reg_d,invert'; out=[q3,q2,q1,q0]; A=1; B=2; C=4; D=8; equations out.clk=h; out.oe=en; state_diagram out state A: goto b; state B: goto C; state C: goto D; state D: goto A; End Dans l'exemple précédent le passage d'un état à un autre est inconditionnel. Un passage conditionnel utilise l'expression : if condition then nom_état else nom_état exemple : state X: if en then Y; else A; lorsque la machine d'état est en X si l'entrée en est à 1 alors on passe à l'état Y sinon on passe en A.

VI 4 Exemples : Les exemples ci-dessous ne font apparaître que la partie "utile" du fichier ABEL; ne figurent pas l'en-tête et les déclarations du brochage et du type de sortie. VI.21 Comparateur 4 bits : 2 mots d'entrée X et Y de 4 bits chacun et 3 sorties Sup (X supérieur à Y), Inf (X inférieur à Y) et Egal (X=Y). X=[X3..X0]; Y=[Y3..Y0]; equations Sup=(X>Y); Inf=(X<Y); Egal=(X==Y);

VI41 Compteur 4 bits avec mise à 0 asynchrone : 4 sorties regroupées dans un vecteur appelé out; r est l'entrée de mise à 0 asynchrone active à 1 et H l'entrée d'horloge. out=[q3..q0]; equations out.clk = H; when (r==1) then out : = 0; else out := out+1; VI42 Verrou type D (D latch) : D est l'entrée de donnée et LE l'entrée de verrouillage active à 1. equations When (LE==0) then Q :=D; else Q :=Q; VI43 Bascule D avec mise à 0 asynchrone : D est l'entrée de donnée, H l'entrée d'horloge et R l'entrée de mise à 0active à1. equations Q.clk = H; Q.ar = R; Q := D;

FIN