Advanced Boolean Equation Language

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
La Logique séquentielle
« 1.7. Fonction mémoire et différents types de logiques »
LYCEE MAGHREB ARABE TECHNIQUE
Algèbre relationnelle
INTRODUCTION.
Les microprocesseurs A. Objectifs de la séquence:
Architecture de machines Eléments de logique
Cours Systèmes logiques
Circuits Logiques Programmables
Ing Mohamed MASMOUDI Cours VHDL Ing Mohamed MASMOUDI
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Décrire un circuit numérique avec VHDL
MACHINE DE MOORE SYNCHRONE SIMPLIFIÉE Professeur à l'UHP / ESIAL
Création d’un langage d’action pour un logiciel MDA
Gestion des Périphériques
Cours #6 Conception d’unités de contrôle
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Complément Le diagramme des classes
Électronique numérique Intervenants : Boitier V. / Perisse T.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Xpath XML Path language par Yves Bekkers
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Principes de programmation
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Cours #7 Vérification d’un modèle VHDL
Chapitre 3 Syntaxe et sémantique.
COMPOSANTS PROGRAMMABLES
Présentation de l’automate
1. Représentation des informations
Types de données fondamentaux
Jacques Nicolas INRIA /IRISA Rennes
Équations Logiques État Physique État Électrique État Logique L
Modélisation VHDL d’un chemin des données
Paradigmes des Langages de Programmation
Décodeurs et encodeurs : sujets de ce thème
Le VHDL : SOMMAIRE I Introduction II Éléments généraux du langage
- énergie bornée (tend vers 0 lorsque
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.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Implémentation d’un.
INTRODUCTION.
Synthèse et implémentation de circuits arithmétiques sur FPGA
Processeurs et chemins des données
La notion de type revisitée en POO
Composants logiques programmables
Chapitre 3 :Algèbre de Boole
Macros 16 pages de macros en parallèles Activation indépendante des macros Description des macros Une grille de programmation de 15x15 Programmation graphique.
Compteurs asynchrones
Les réseaux logiques programmables
Méthodologie de conception Outils de conception
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Chemin critique et fréquence maximale d’horloge
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Le problème du déphasage.
Algorithmique et programmation (1)‏
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Un survol du language C.
Synthèse et implémentation d’un circuit combinatoire
Chapitre 5 : Les circuits séquentiels
Introduction au VHDL - R.WEBER - Polytech'Orleans
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
Circuits Logiques Programmables
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Le VHDL Programmation des CPLD et FPGA avec Quartus II ENSET d'Oran / IUFM Aix Marseille - mai
Transcription de la présentation:

Advanced Boolean Equation Language ABEL Advanced Boolean Equation Language

Généralités ABEL est un langage de programmation de PLD. C’est un langage HDL (Hardware Description Language) moins puissant que VHDL. ABEL: applications de petites et moyennes importances à implémenter dans les PAL,GAL FPGA et CPLD.

Description du Langage module mod_name [ ;]   [title string] [ ;] [deviceID device deviceType ;] [declaration] [ ;] pin declarations ; other declarations ; equations [ ;] equations [" commentaires] truth_table (entree –>sortie)[ ;] table de vérité ; state_diagram etat[ ;] diagramme d’état ; [Test_Vectors (entree->sortie)] [ ;] vecteurs de tests ; end mod_name [ ;]

Exemple Half Adder A B SUM CARRY Half Adder 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) ; // génération des sorties en fonction des entrées Carry_out = A & B;  end  ; Addition

É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 un source. Title : permet de préciser la fonction du module (optionnel).

Éléments syntaxiques Exemple : 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

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

déclarations 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  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 d’opérateurs d’assignement : 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 opérateurs 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;

Les ensembles (suite) [A1,B1] = [D1,D2] & [C3,C2]; Exemple 3:   [A1,B1] = [D1,D2] & [C3,C2]; // Ce qui est équivalent à : [A1,B1] = [D1 & C3, D2 & C2]; Exemple 4: X & [A,B,C]; [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];

Les ensembles (suite) 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 Chip_Sel = Addr == [0,1,1];" même résultat qu’en  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.

Les ensembles (suite) Exemple 6 : Génération du CS pour la sélection des boîtiers de mémoire (suite)   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);

Les différentes solutions d’implémentation Combinatoire: Equations Table de vérité Séquentiel Diagramme d’état

Equations utiliser le terme Equations avant de commencer Équations à l’aide des opérateurs Structure « When…Then… Else…. » WHEN condition THEN element=expression; ELSE equation; Ou WHEN condition THEN equation;

Equations Exemples : SUM = (A & !B) # (!A & B) ; A0 := EN & !D1 & D3 & !D7; WHEN (A == B) THEN D1_out = A1; ELSE WHEN (A == C) THEN D1_out = A0; WHEN (A>B) THEN { X1 :=D1; X2 :=D2; }

Les tables de vérité Il existe plusieurs solutions : // table de vérité combinatoire TRUTH_TABLE ( in_ids -> out_ids ) inputs -> outputs ; ou // table de vérité à registre (état suivant actif sur front montant d’horloge) TRUTH_TABLE ( in_ids :> reg_ids ) inputs :> reg_outs ;

Les tables de vérité ou // possibilité en plus de préciser les sorties combinatoires fonctions des états présents TRUTH_TABLE ( in_ids :> reg_ids -> out_ids ) inputs :> reg_outs -> outputs ;   avec "->" pour les sorties combinatoires et ":>" pour les sorties de bascules.

Les tables de vérité Les entrées peuvent être des signaux ou des ensembles de signaux. Un signal non spécifié est représenté par la constante ".X.".

Les tables de vérité Exemple 1 combinatoire: half adder (Cf exemple donné page 1 dans l’exemple)   TRUTH_TABLE ( [ A, B] -> [SUM, CARRY] ) [ 0, 0 ] -> [0, 0 ] ; [ 0, 1 ] -> [1, 0 ] ; [ 1, 0 ] -> [1, 0 ] ; [ 1, 1 ] -> [1, 1 ] ;

Les tables de vérité En utilisant un ensembles IN = [A,B]; et OUT = [SUM, CARRY]; La table de vérité devient plus simple :   TRUTH_TABLE (IN -> OUT ) 0 -> 0; 1 -> 2; 2 -> 2; 3 -> 3;

Les tables de vérité Exemple 2 combinatoire: On désire faire un OU exclusif entre 2 variables avec une entrée d’activation (EN). Cet exemple permet d’illustrer les sorties non spécifiées (.X.)   TRUTH_TABLE ([EN, A, B] -> OUT ) [ 0, .X.,.X.] -> .X.; [ 1, 0 , 0 ] -> 0 ; [ 1, 0 , 1 ] -> 1 ; [ 1, 1 , 0 ] -> 1 ; [ 1, 1 , 1 ] -> 0 ;