abell;

28
ABEL Advanced Boolean Equation Language

Upload: hamza-srh

Post on 08-Nov-2015

214 views

Category:

Documents


0 download

DESCRIPTION

ll

TRANSCRIPT

  • ABEL

    Advanced Boolean Equation Language

  • Gnralits

    ABEL est un langage de programmation de PLD.

    Cest un langage HDL (Hardware Description Language) moins puissant que VHDL.

    ABEL: applications de petites et moyennes importances implmenter 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 vrit ;

    state_diagram etat[ ;]

    diagramme dtat ;

    [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 complmentaire Addition device 'P16H8'; // optionnel, permet de spcifier le type de matriel cible : PAL16P8 " input pins A, B pin 3, 5; // la spcification du numro de broches est optionnelle " output pins SUM, Carry_out pin 15, 18 istype 'com'; // le compilateur fait la diffrence entre broches dentres et de sortie par le terme istype equations SUM = (A & !B) # (!A & B) ; // gnration des sorties en fonction des entres Carry_out = A & B; end ; Addition

  • lments syntaxiques

    Module : en rgle gnrale le nom du module a le nom du fichier source *.abl

    (pour certains compilateurs cest mme obligatoire). Il peut y avoir plusieurs

    modules dans un source.

    Title : permet de prciser la fonction du module (optionnel).

  • lments syntaxiques

    Device : optionnel. Cela permet dassocier au module un circuit associ (le module sera implmenter dans le

    circuit spcifi). Cependant pour garder le module

    indpendant du circuit (pour pouvoir rutiliser le module

    dans un autre circuit) il est prfrable de ne pas utiliser

    cette directive. Il sera possible au niveau de la

    compilation de prciser le PLD cible.

    Exemple : Mon_decod device 'P16V8'; // cible PAL16V8

  • dclarations

    Pin : permet de prciser le nom des entres et des sorties

    [!]pin_id pin [pin#] [istype 'attributes'] ;

    On peut spcifier 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; // entres avec numro de broche spcifi

    OUT1 pin 9 istype 'reg'; // sortie de bascule active ltat haut

    ENABLE pin; // entres dont le numro de broche nest pas spcifier ( faire au niveau du compilateur)

    !Chip_select pin 12 istype 'com'; // sortie combinatoire active ltat bas.

    !S0..!S6 pin istype 'com'; // sorties combinatoires actives ltat bas

  • dclarations

    Autres dclarations :

    Il est possible de prciser des valeurs de

    constantes , de macros ou densembles : A = 21;

    C=2*7;

    ADDR = [1,0,11];

    LARGE = B & C;

    D = [D3, D2, D1, D0];

    D = [D3..D0];

  • Les nombres

    La reprsentation des nombres peut tre binaire, octale, dcimale ou hexadcimale.

    Si rien nest prcis, le compilateur adopte la base dcimale.

    Bases Symboles Exemples

    Binaire (base 2) ^b ^b1101

    Octal (base 8) ^o ^o15

    Hexadcimal (base 16) ^h ^hD

    Dcimal (base 10) ^d ou rien 13

  • Les oprateurs

    Les oprateurs logiques :

    Oprateurs Descriptions Exemples

    ! Complment 1 ^b0010 = !^ b1101

    & ET (AND) 10=15&10

    # OU (OR) 12=8#4

    $ OU exclusif (XOR) 15=10$5

    !$ NON OU exclusif 0=10 !$5

  • Les oprateurs

    Les oprateurs arithmtiques :

    Oprateurs Description

    - Ngation ou soustraction

    + Addition

    * Multiplication

    / Division

    % Reste de la division

    >B Dcalage droite (de B bits)

  • Les oprateurs

    Les oprateurs relationnels :

    Les oprateurs relationnels donnent des

    rsultats vrais (-1) ou faux (0).

    Oprateurs Descriptions Exemples

    == Egalit A==B or 3==5 (false)

    != Diffrent A!=B or 3 != 5 (true)

    < Infrieur A= Suprieur et gal A>=B or !0 >= 5 (true)

  • Les oprateurs

    Les oprateurs dassignement : 2 types doprateurs dassignement : combinatoire et squentiel.

    = pour les oprations de logique combinatoire, dans ce cas le signal prend la valeur donne

    sans retard.

    := pour les oprations de logique squentielle, dans ce cas le signal prendra la valeur aprs le

    prochain front dhorloge.

  • Les oprateurs

    Les niveaux de prcdence :

    Niveau de priorit Description

    1 - !

    2 & > * / %

    3 + - # $ !$

    4 == != < =

  • Les constantes

    surtout utilises dans les vecteurs de tests

    Constantes Description

    .C. Impulsion dhorloge bas-haut-bas

    .K. Impulsion dhorloge haut-bas-haut

    .D. Front descendant dun signal dhorloge

    .U. Front montant dun signal dhorloge

    .X. Indiffrent

    .Z. sortie haute impdance

  • Les ensembles

    Un ensemble est une collection de signaux ou de constantes qui constitue un vecteur.

    Exemple 1:

    Signal = [D2,D1,D0];"dclaration de lensemble signal

    Signal = [1,0,1] & [0,1,1];

    " rsultat 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)

    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 dabord remplace par son

    //quivalent binaire (0010) .

    //On obtient alors :

    [0 & A, 1 & B, 0 & C];

  • Les ensembles (suite)

    Exemple 5: Gnration du CS pour la slection des botiers de mmoire

    Chip_Sel = !A7 & A6 & A5; //Cas classique

    Addr = [A7,A6,A5]; " dclaration dun ensemble Addr

    Chip_Sel = Addr == [0,1,1];" mme rsultat quen

    Chip_Sel = Addr == 3; " dcimal 3 est gal 011.(mme rsultat quen )

    Ce principe est trs utile pour des variables de 16 bits ou plus.

  • Les diffrentes solutions

    dimplmentation

    Combinatoire: Equations

    Table de vrit

    Squentiel Table de vrit

    Diagramme dtat

  • Equations

    utiliser le terme Equations avant de commencer

    quations laide des oprateurs

    Structure WhenThen 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 vrit

    Il existe plusieurs solutions :

    // table de vrit combinatoire

    TRUTH_TABLE ( in_ids -> out_ids )

    inputs -> outputs ;

    ou

    // table de vrit registre (tat suivant actif sur front montant dhorloge)

    TRUTH_TABLE ( in_ids :> reg_ids )

    inputs :> reg_outs ;

  • Les tables de vrit

    ou

    // possibilit en plus de prciser les sorties combinatoires fonctions des tats prsents

    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 vrit

    Les entres peuvent tre des signaux ou des ensembles de signaux. Un signal non

    spcifi est reprsent par la constante

    ".X.".

  • Les tables de vrit

    Exemple 1 combinatoire: half adder (Cf exemple donn page 1 dans lexemple)

    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 vrit

    En utilisant un ensembles IN = [A,B]; et OUT = [SUM,

    CARRY]; La table de vrit devient plus simple :

    TRUTH_TABLE (IN -> OUT )

    0 -> 0; 1 -> 2; 2 -> 2; 3 -> 3;

  • Les tables de vrit

    Exemple 2 combinatoire: On dsire faire un OU exclusif entre 2 variables avec une entre

    dactivation (EN). Cet exemple permet dillustrer les sorties non

    spcifies (.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 ;