Lenguaje Abel(Hdl)

26
 LENGUAJE ABEL(HDL) ABEL es una marca registrada de Data I/O Corporation es e! acr"nimo de Ad#anced Boo!ean E$pression Language% permite imp!ementar dise&os !"gicos en dispositi#os !"gicos programa'!es uede ser uti!i*ado para programar cua!+uier tipo de LD % por tanto% es un !engua,e independiente de! dispositi#o E! !engua,e ABEL se e,ecuta en un computador conectado a un programador de dispositi#os% independiente de! !engua,e% en e! +ue se inserta e! LD

description

leng

Transcript of Lenguaje Abel(Hdl)

Presentacin de PowerPoint

LENGUAJE ABEL(HDL)ABEL es una marca registrada de Data I/O Corporation y es el acrnimo de Advanced Boolean Expression Language, permite implementar diseos lgicos en dispositivos lgicos programables. Puede ser utilizado para programar cualquier tipo de PLD y, por tanto, es un lenguaje independiente del dispositivo. El lenguaje ABEL se ejecuta en un computador conectado a un programador de dispositivos, independiente del lenguaje, en el que se inserta el PLD.1ESTRUCTURA INTERNAA continuacin se presenta la estructura tpica de un programa en el lenguaje ABEL :modulenombre del mdulo[titlestring][deviceIDdevicedeviceType;]declaraciones de pinotras declaracionesequationsecuaciones[Test_Vectors]tested vectoresendnombre de mduloOperacin LgicaSmbolo ABELNotacin BooleanaNotacin ABEL* AND&ABA & B+ OR#A + BA # B/ NOT!!A:+: XOR$A " BA $ B:*: XNOR!$A " BA !$ BLa directiva@ALTERNATEle dice al compilador que reconozca un conjunto alterno de smbolos para denotar las operaciones lgicas; los cuales se presentan a continuacin:Ej:Y= (!A # B # !E # D) & (A # B # E)AsignacinDe Terminales, Variables Y ConstantesSon lasinstruccionesque se utilizan para definir y asignar terminales avariables, o asignar a variables operaciones con variables o constantes.

Ejemplos de asignaciones de terminales:PIN2 = a;/*asigna al terminal 2 la variable a*/PIN2 = !a;/*asigna al terminal 2 la variable a negada*/PIN[2,3,4,5,6,7,8,9]=[A0,A1,A2,A3,A4,A5,A6,A7];PIN[2..9] = [A0,A1,A2,A3,A4,A5,A6,A7];PIN[2..9] = [A0..A7];Ejemplos de asignaciones con variables intermedias:Las variables intermedias no tiene terminales asignados y sontilespara simplificar las ecuaciones que generan las salidas.X0 = A0&A1 # A1&A2;

ProgramacinNmerosLos nmeros pueden estar en cuatro diferentes bases: binario, octal, decimal y hexadecimal. La base predeterminada es la decimal. Se usan los siguientes smbolos (maysculas o minsculas permitidos) para especificar la base.

BASE NAMEBASESymbol.Binary2^bOctal8^oDecimal10^d (default)Hexadecimal16^hSpecified in ABELDecimal Value3535^h3553^b1015Ejemplo:SetsUn set es una coleccin de seales o constantes usadas para referenciar un grupo de seales por un nombre. Un set es conveniente para simplificar expresiones lgicas. Cualquier operacin que este aplicada a un set, es aplicada a cada elemento.

[D0,D1,D2,D4,D5][D0..D6]" rango incrementado[b6..b0]" rango decrementado[D7..D15][b1,b2,a0..a3]" rango entre un set ms largo[!S7..!S0]"rango decrementado de seales activas-bajasIndexando o accesando a un setindexado permite acceder a elementos dentro de un set. Usando valores numricos para indicar el set index. Los nmeros refieren a la posicin del bit en el set de inicio con 0 para el bit menos significativo del set. Aqu se presentan algunos ejemplos.D1 = [D15..D0]; "declaracin setX2 = [X3..X0]; "declaracin setX2 := D1[3..0]; "hace X2 igual a [D3, D2, D1, D0]X2 := D1[7..4]; "hace X2 igual a [D7, D6, D5, D4]Para acceder a un elemento del set, se usa la siguiente sintaxis:OUT = (X[2] == 1);

Operaciones SetMuchas de las operaciones pueden ser aplicadas a un set y son ejecutadas en cada elemento del set de acuerdo a las reglas del lgebra Booleana. Las operaciones son ejecutadas de acuerdo a lasprioridades de operacin; los operadores con la misma prioridad son ejecutados de izquierda a derecha (al menos que use parntesis).

Ejemplo 6:[b3,b2,b1,b0] = 2;"es equivalente a b3=0,b2=0,b1=1,b0=0.El nmero 2 es convertido a binario y completado con ceros (0010).

OperadoresHay cuatro tipos de operadores: lgico, aritmtico, relacional y de asignacin.a. Operadores LgicosLa tabla siguiente muestra operadores lgicos. Estos son ejecutados bit a bit.

Operador (default)DescripcinOperador alternado!NOT (complemento a uno)/&AND*#OR+$XOR: or exclusiva:+:!$XNOR: nor exclusiva:*:b. Operadores AritmticosLa siguiente tabla muestra los operadores aritmticos. Ntese que los ltimos cuatro operadores no estn permitidos para los sets. El signo menos puede tener un significado diferente: usado entre dos operandos indica substraccin (o suma a complemento a dos), mientras que usado con un operador indica el complemento a dos.

OperadorEjemploDescripcin--D1Complemento a dos (negacin)-C1-C2Substraccin+A+BAdicinLos siguientes operadores no son usados con los sets:*A*BMultiplicacin/A/BDivisin de enteros sin signo%A%BMdulos: residuo de A/BBIntercala A a la derecha por B bitsc. Operadores de RelacinEstos operadores producen un valor Booleano de verdadero (-1) o falso (0).

OperadorEjemploDescripcin==A==B or 3==5 (false)Igual!=A!=B or 3 != 5 (true)Diferente=B or !0 >= 5 (true)Mayor o igual qued. Operadores de asignacinEstos operadores son usados en una ecuacin para asignar el valor de una expresin a una seal de salida. Hay dos tipos de operadores de asignacin: combinacionales y de registro. En un operador de asignacin combinacional ocurre inmediatamente sin retardo. La asignacin con registro ocurre con el cambio del pulso de reloj asociado a la salida.

OperadorDescripcin=Asignacin Combinacional:=Asignacin de RegistroDescripcin LgicaUn diseo lgico puede ser descrito de la siguiente manera.EcuacionesTablas de la verdadDescripcin de estados.

EcuacionesUsar el comandoequationspara empezar la descripcin lgica. Equations especifica expresiones lgicas usando los operadores descritos antes, o por declaraciones "When-Then-Else".Las declaraciones "When-Then-Else" son usadas en ecuaciones para describir funciones lgicas. (Nota: "If -Then-Else" es usado en la seccin de los diagramas de estado para describir progresin de estados)El formato de declaracin "When-Then-Else" es el siguiente:WHEN condition THEN element=expression; ELSE equation; or WHEN condition THEN equation;

Tablas de verdadEl commando estruth-tabley la sintaxis es:TRUTH_TABLE ( in_ids -> out_ids )inputs -> outputs ;oTRUTH_TABLE ( in_ids :> reg_ids )inputs :> reg_outs ;oTRUTH_TABLE( in_ids :> reg_ids -> out_ids )inputs :> reg_outs -> outputs ; en donde "->" es para salidas combinacionales y :> para salidas registradas. La primera lnea de la tabla de verdad (entre parntesis) define las seales de entradas y salida. Cada lnea debe finalizar con punto y coma. Las entradas y salidas pueden ser simple seales o set's. Cuando se usan set's como entradas o salidas, se usa la notacin del set normal, ej seales dentro de corchetes y separadas por comandos. Las condiciones irrelevantes don't care se representan con X.Descripcin de estadoLa seccin de diagrama de estado contiene la descricin de estado para el diseo lgico. Esta seccin usa la sintaxis State_diagram y las declaraciones "If-Then-Else", "Goto", "Case" y "With". Usualmente se declara nombres de estado simblicos en la seccin de Declaracin, el cual hace que la lectura se ms fcil.Sintaxis deDeclaracin de estado:state_id [, state_id ...] STATE ;

Ejemplo 1

Implementar una compuerta OR y una compuerta AND de dos entradas en una GAL22V10.Name Ejem02 ;PartNo 00 ;Date 17/05/2013 ;Revision 01 ;Designer Julio ;Company UNIAJC ;Assembly None ;Location ;Device G22V10 ;/*Terminales de entrada de la compuerta AND*/PIN 2 = A0 ;PIN 3 = A1; /*Terminales de entrada de la compuerta OR*/PIN 4 = B0;PIN 5 = B1;/*Terminales de salida para las compuertas*/ PIN 23 = S0; /*Salida compuerta AND*/PIN 22 = S1 ;/*Salida compuerta OR*//*Operaciones Logicas*/ S0 = A1&A0; /*Compuerta AND*/ S1 = B1#B0; /*Compuerta OR*/

Ejemplo 3

Implementar un decodificador de binario a decimal con la GAL22V10

Name Ejem03 ;PartNo 00 ;Date 17/05/2013 ;Revision 01 ;Designer Julio ;Company UNIAJC ;Assembly None ;Location ;Device G22V10 ;/*Terminales de entrada */PIN [2..5] = A, B, C, D;/*Terminales de salida */PIN [13..20] = sa,sb,sc,sd,se,sf,sg,sdp;/*Declaraciones */FIELD entradas = [D,C,B,A];FIELD salidas = [sdp,sg,sf,se,sd,sc,sb,sa]; 25/*Ecuaciones booleanas */TABLE entradas => salidas {'b'0000 => 'b'00111111;'b'0001 => 'b'00000110;'b'0010 => 'b'01011011;'b'0011 => 'b'01001111;'b'0100 => 'b'01100110;'b'0101 => 'b'01101101;'b'0110 => 'b'01111101;'b'0111 => 'b'00000111;'b'1000 => 'b'01111111;'b'1001 => 'b'01100111;'b'1010 => 'b'00000000;'b'1011 => 'b'00000000;'b'1100 => 'b'00000000; 'b'1101 => 'b'00000000;'b'1110 => 'b'00000000; 'b'1111 => 'b'00000000}