Pràctica 2 :: Programació de Dispositius PLD amb Llenguatge ABEL

[última actualització: 18/10/2004]
En aquesta pràctica es demana la implementació de dues funcions (una combinacional i una altra de seqüencial) a través de la utilització del dispositiu programable del tipus GAL16V8. Concretament, les funcions a implementar són:
  1. Doble decodificador de 2 a 4, amb senyal d'habilitació independent per cadascun dels decodificadors, i amb senyal d'entrada per al control de polaritat de les sortides (també independent per cada un).

  2. Comptador ascendent/descendent de 3 bits, amb senyal de posta a zero.

Llenguatge de programació de hardware (HDL) ABEL

ABEL (Advanced Boolean Expression Language) és un llenguatge de programació de dispositius hardware, el qual a través d'un compil.lador transforma l'entrada d'un text (sota unes determinades característiques i sintaxi) a un format intel.ligible per a un dispositiu PLD (és a dir, ens programa els punts d'interconnexió). El diagrama de la Figura 1 ens mostra el procés de disseny a seguir amb el llenguatge ABEL. La part superior correspon a l'entrada d'un disseny independent de l'arquitectura, mentres que la part inferior mostra com realitzar tot el procés per un tipus de dispositiu determinat.
Figura 1: Procés de disseny amb ABEL.

El llenguatge ABEL agafa descripcions lògiques d'alt nivell contingudes en fitxers font, per convertir-los en fitxers de càrrega per al programador, segons formats i estàndards de programació predefinits. Abans de crear el fitxer que contindrà el mapa de fusibles per al disseny lògic amb què estiguem treballant, cal crear un fitxer font que contingui la descripció del disseny lògic: aquest fitxer és de text (ASCII), i ha de ser escrit segons els requeriments i sintaxi de llenguatge ABEL, amb una estructura semblant a la que reprodueix la Figura 2.

module nom del mòdul
title string
Identificació de dispositiu device Tipus de dispositiu
Declaracions de pins
equations
Equacions
end nom del mòdul
Figura 2: Estructura típica d'un programa en ABEL

L'estructura típica del llenguatge ABEL comprèn les següents característiques:
          
module Memory_Decoder
title `Memory Decoder PLD
J.Wakerly, Micro Systems Engineering'
MEMDEC device `P16V8';
@ALTERNATE
            
``Input pins
LARGE              pin 1;
A16, A17, A18, A19 pin 2, 3, 4, 5;
A20, A21, A22, A23 pin 6, 7, 8, 9;
/RTEST             pin 11;
IOSEL              pin 18;
            
``Output pins
/ROMCS             pin 12;
LOCAL              pin 13;
            
equations
            
ROMCS = LARGE * A23 * A22 * A21 * A20 * A19 * A18 * A17 * A16
      + /LARGE * A19 * A18 * A17 * A16
      + RTEST;
LOCAL = LARGE * A23 * A22 * A21 * A20 * A19 * A18 * A17 * A16
      + /LARGE * A19 * A18 * A17 * A16
      + RTEST
      + IOSEL;
                  
end Memory_Decoder          
          
Figura 3: Exemple de programa en ABEL: decodificador de memòria

És possible també incloure una sèrie de vectors de test, de forma que a l'hora de compil.lar es comprova si la descripció lògica realitzada verifica correctament tots els vectors de test. A més, el llenguatge ABEL té una sèrie de directives (comencem amb el símbol @) que permeten manipular d'una forma específica un conjunt d'equacions o símbols. A l'exemple anterior, la directiva @ALTERNATE indica al compil.lador que es farà servir un joc alternatiu de símbols per a les operacions lògiques, en la forma que es mostra a la taula.

Operació lògica @ALTERNATE Per defecte
AND * &
OR + #
NOT / !
XOR :+: $
XNOR :*: !$
Taula 1: Equivalència entre símbols per a les operacions lògiques.

Les extensions de punt (dot extensions) permeten referir específicament nodes i senyals interns com associats a un senyal d'entrada. Es tracta de senyals com ara el rellotge, el preset, el clear, entrades de registres, realimentacions, habilitacions de sortida, ... Una altra de les capacitats dels llenguatges de programació de dispositius hardware, i per extensió de l'ABEL, és la capacitat de treballar amb conjunts de senyals d'una forma idèntica (com si fossin un bus): és el concepte de set. Per a treballar amb aquests conjunts de senyals, a més dels operadors lògics d'assignació i aritmètics, s'introdueixen els operadors relacionals. Pel que fa a l'estructura d'una aplicació seqüencial amb ABEL, cal tenir en compte algunes consideracions:

Desenvolupament de la pràctica

Es tracta de realitzar la programació d'un dispositiu GAL16V8 a través del llenguatge ABEL-HDL, generant el fitxer .JED corresponent, i a través del programador universal, transferir la programació del dispositiu per a què implementi el disseny. L'estructura i patillatge d'aquest dispositiu és la que es veu a la figura 4, i es correspon exactament amb una estructura PAL amb un registre a la sortida, que aquí rep el nom de MacroCell. En aquest cas concret, s'utilitza un dispositiu d'AMD, de referència PALCE16V8Q-25, sobre el qual és possible trobar informació addicional accedint a les pàgines tècniques que el fabricant posa a disposició del públic (genèricament www.amd.com o bé concretament www.vantis.com/lit/docs/datasheets/pal_gal/p16v8.pdf per accedir directament a aquest dispositiu).

Figura 4: Estructura del dispositiu GAL16V8, i detall de la macrocel.la lògica de sortida.

El llenguatge de programació de PLDs ABEL 4.30 disposa d'un entorn integrat que ens facilita la tasca de disseny, compil.lació i generació de documents relatius a la implementació lògica que es vol dur a terme. Aquest entorn estè composat per un conjunt de menús desplegables que donen accés a les diferents utilitats (edició, compil.lació, llistats, generació de documentació, simulació lògica, ajudes, etc). S'accedeix a l'entorn integrat de treball amb la comanda abel4 [nom_de_fitxer], on nom_de_fitxer especifica l'arxiu ASCII que volem editar per a implementar el disseny lògic amb llenguatge ABEL. Si no s'especifica cap nom, l'entorn de treball s'inicia igualment, però sense accedir a cap disseny específic.
La metodologia de treball per a la realització d'aquesta pràctica es pot resumir en els següents apartats:

Entorn programador universal

Quan disposem de l'arxiu .JED (recordem que portarà el nom que hàgiu donat en el vostre programa a l'identificador de dispositiu de la paraula clau device), cal transferir el mapa de fusibles al dispositiu programable. Per això, accedirem al gravador universal de dispositius, i actuarem segons el següent esquema:

Comprovació del disseny

Per a realitzar la comprovació del disseny implementat (és a dir, que el circuit especificat a l'enunciat s'hagi implementat de forma correcta i que realitza la funció per a la qual ha estat dissenyat), utilitzarem la placa de proves dissenyada a aquest efecte. A la figura 5 es mostra quin és el diagrama esquemàtic d'aquesta placa, mentres que la taula 2 indica la correspondència entre els pins de la GAL i els interruptors SWi per a les entrades digitals, així com entre els pins de la GAL i els leds i entrades per als dos decodificadors 7-segments, per visualitzar les sortides.

Entrades
Switch Pin GAL
SW1 2
SW2 3
SW3 4
SW4 5
SW5 6
SW6 7
SW7 8
SW8 9
Sortides
Pin GAL Led Ent.Decodificador
12 8 A1
13 7 B1
14 6 C1
15 5 D1
16 4 A2
17 3 B2
18 2 C2
19 1 D2
Taula 2: Correspondencia entre els pins de la GAL i les entrades i sortides digitals de la placa de proves.

Figura 5: Diagrama esquemàtic de la placa de proves.

Qüestionari Pràctica 2A

És recomanable omplir-lo abans d'iniciar la primera sessió d'aquesta pràctica.
  1. Descriu quines serien les equacions lògiques (en sintaxi ABEL) per tal que les sortides del decodificador siguin actives a nivell alt.

  2. Posa les mateixes equacions per tal que les sortides siguin actives a nivell baix.

  3. Indica quina assignació de pins realitzes per als senyals necessaris en la implementació del doble decodificador, tenint en compte que les habilitacions han de ser actives a nivell baix.

  4. Com descriuries aquest mateix disseny utilitzant una taula de veritat, en lloc d'equacions lògiques?.

  5. Afegeix una entrada addicional per cadascun dels decodificadors, de manera que es pugui controlar la polaritat de les sortides. Utilitza qualsevol de les dues formes anteriors (equacions lògiques o taula de veritat) per realitzar-ne la seva descripciò lògica.

  6. Indica quins vectors de test s'han d'incloure en cadascun dels anteriors muntatges, per tal de verificar-ne el funcionament.

Qüestionari Pràctica 2B

És recomanable omplir-lo abans d'iniciar la primera sessió d'aquesta pràctica.
  1. Dibuixa el diagrama d'estats que realitza el comptador ascendent/descendet de 3 bits, amb senyal de posta a zero.

  2. Descriu aquest mateix diagrama d'estats en sintaxi ABEL a nivell baix.

  3. Implementa aquest mateix comptador utilitzant equacions lògiques en lloc del diagrama d'estats.
Inclou en totes les implementacions descrites els vectors de test necessaris per a la verificació del disseny.