LENGUAJE ABEL
• ABEL ( Advanced Boolean Equation Language)
es un lenguaje de descripción de harware (HDL,
Hardware Descripción Language) que fue
diseñado por Data I/O Corporation en 1984
para describir e implementar diseños digitales
sobre dispositivos lógicos programables PLD,
(Programmable Logia Devices).
• Posteriormente aparecieron otros lenguajes
similares al ABEL como son el CUPL o PALASM
y otros de mayor complejidad como el VHDL o
Verilog, capaces de describir sistemas de mayor
entidad.
1
Herramientas para la programción
de DLP
Flujo de diseño
2
Estructura del lenguaje ABEL
• Todos los diseños deben tener una cabecera y un final
• Todos los diseños empiezan con una sentencia
MODULE y terminan con una sentencia END.
• Para evitar errores de compilación, el nombre dado al
módulo debe coincidir con el nombre del fichero *.abl en
el que se almacena la información.
• La sentencia TITLE es opcional y se usa para identificar
el diseño a efectos de documentación. “Va seguida de
una cadena de caracteres ASCII encerrados entre
comillas simples”.
• La sentencia END marca el final del módulo. Puede ir
seguida por el nombre del módulo, a efectos de
documentación.
3
Declaraciones
• Esta sección incluye :
– La declaración del dispositivo
– La declaración de los pines
– La declaración de constantes
– La declaración de conjuntos
• Declaración de Dispositivo. Es opcional y se utiliza para especificar
el PLD que se va a programar. El identificador es simplemente una
descripción y puede ser el que se desee. El dispositivo se
especifica en la cadena que se pone a continuación, que empieza
por P para las PAS y las GAL.
Identificador device cadena ;
Ej.:
U1 device ‘P22V10’;
(en este programa ????)
Declaración de Pines
• Declaración de Pines: Define los identificadores
que se usarán en el archivo ABEL para los pines
del diseño y los asocia con los números de
pines del encapsulado del dispositivo. El asignar
números de pines es opcional. Si no se ponen,
las herramientas de síntesis elegirán los
adecuados.
id_pin1, id_pin2,.... pin nº_pin1, nº_pin2....;
Ej.:
A, B, C pin 3, 4, 5 ;
4
Declaración de Pines
• Se pueden asociar atributos a los pines de salida con la palabra
clave istype seguida de una cadena de caracteres. Esta cadena de
caracteres contiene una o varias palabras clave separadas por
comas, que indican a la herramienta de síntesis características
especiales de la salida. Los atributos más utilizados son los
siguientes:
– ‘com’ indica que la salida es combinacional
– ‘reg’ indica que la salida es registrada
– ‘buffer’ indica que se utiliza la configuración activa en alto de la
estructura de salida, es decir, que tenemos un buffer no inversor
conectado a la salida
– ‘inver’ indica que se utiliza la configuración activa a nivel bajo de la
estructura de salida, es decir, que tenemos un buffer inversor
conectado al pon de salida.
Ej: X,Z pin 27, 26 istype ‘com, invert’
Declaración de nodos
• También se pueden declarar señales
internas del circuito, no conectadas a
ningún pin de salida, mediante la palabra
clave node.
• Utiliza la misma sintaxis que para la
declaración de pines, pero sin los
números de pin.
5
Declaración de constantes y
conjuntos
• Se pueden definir constantes y conjuntos para
simplificar la descripción ABEL de un diseño
• Ej.:
ASET = [A2, A1, A0]
BSET = [B2, B1, B0]
ASET & BSET [A2&B2], [A1&B1], [A0&B0]
ASET & B0 [A2&B0], [A1&B0], [A0&B0]
2 & ASET [0&A2], [1&A1], [0&A0]
ASET = 2 A2=0; A1=1; A0=0;
DPE IES “Juan de la Cierva” (Madrid)
Declaración de constantes y
conjuntos
• La declaración de conjuntos permite simplificar
la descripción lógica tratando una serie de
señales como un grupo.
• Un conjunto es una lista de señales o
constantes separadas por comas o por el
operador de rango (..), encerrada entre
corchetes.
• Ej.: DATO = [D7, D6, D5, D4. D3, D2, D1, D0];
Que también puede declararse con el operador de
rango
DATO = [D7..D0]
6
Operadores
• Hay 4 tipos de operadores:
– Lógicos
– Aritméticos
– Relaciónales
– Asignación
Operadores Lógicos
Operador Descripción Ecuación en Símbolo
ABEL_HDL
! NOT !A A A
# OR A#B A A+B
B
7
Operadores Aritméticos
• En expresiones numéricas siempre devuelven un valor
natural.
• En el contexto de una descripción lógica, una expresión
con operadores aritméticos se convierte en un circuito
combinacional mediante el proceso de síntesis lógica.
• Como en ABEL los números siempre representan
enteros positivos, la negación es el complemento a 2,
que devuelve un entero positivo.
• Restar dos operandos consiste en sumar el primer
operando con el complemento a 2 del segundo.
Operadores Aritméticos
Operador Descripción Ecuación enABEL_HDL
- Negación (complemento a 2) -A
- Resta A-B
+ Suma A+B
* (1) Multiplicación A*B
/ (1) División (Entera) A/B
% (1) Módulo: resto de A/B A%B
<< (1) Desplazamiento a la Izquierda A<<B
>> (1) Desplazamiento a la derecha A>>B
(1) Estos operadores no se pueden usar con conjuntos. Están restringidos a operaciones con señales
o números.
8
Operadores relacionales
• Los operandos relacionales se utilizan para comparar
operandos en una expresión. El resultado de la
comparación es siempre un único bit, que puede valer 1
(verdadero) o 0 (falso).
Operador Descripción Ejemplo
== Igual a A == B
!= Distinto de A!=B
> Mayor que A>B
< Menor que A<B
>= Mayor o igual que A>=B
<= Menor o igual que A<=B
DPE IES “Juan de la Cierva” (Madrid)
Operadores de asignación
• Se utilizan en ecuaciones para asignar el valor
de una expresión a una señal de salida, sea
nodo interno o pin.
Operador Descripción Ejemplo
= Asignación combinacional Z=B&C
:= Asignación Secuencial Q1:=D1
9
Operadores de asignación
• La asignación combinacional tiene efecto
inmediatamente sin ningún retraso.
• La asignación secuencial se realiza en el
siguiente flanco activo de reloj asociado con la
salida, es decir, modela una asignación a través
de un biestable síncrono.
• En una sentencia como Q1:= Q1 + 1, Q1 en el
lado de la derecha es el valor actual, antes del
flanco de reloj, de Q1 y en el lado izquierdo
representa el valor futuro, después del flanco.
Prioridad Operadores
1 - (complemento a 2), !
2 &, <<, >>, *, /, %
3 +, - (resta), #, $, !$
4 relacionales
DPE IES “Juan de la Cierva” (Madrid)
10
Descripción Lógica
• ABEL permite definir el comportamiento de un
diseño lógico mediante:
– Ecuaciones (palabra clave equations).
– Tablas de verdad (palabra clave truth_table).
– Diagrama de estados (palabra clave state_diagram).
• Las ecuaciones son útiles para circuitos
combinacionales y secuenciales, cuando el
circuito a describir sigue algún patrón o hay
alguna regularidad.
Descripción Lógica
• Las tablas de verdad se pueden usar para circuitos
combinacionales y secuencales. Son útiles en circuitos
sin orden o regularidad aparente, como el caso de un
decodificador del tipo BCD-7segmentos. También para
funciones parcialmente especificadas, es decir, que
tienen condiciones donde no importa su valor.
11
Ejemplo de descripción mediante
ecuaciones
• Una prensa, ubicada en una línea de ABC P L
producción, se pone en marcha
mediante la actuación simultánea de 000 0 0
tres pulsadores P1,P2 y P3, de un solo
contacto cada uno. Si se pulsan sólo 001 0 1
dos cualesquiera, la máquina funciona,
pero se activa una señal luminosa que 010 0 1
indica una manipulación incorrecta. Por
otra parte, cuando se actúe sobre un 011 1 1
solo pulsador, también se encenderá el
piloto luminoso, pero no se pondrá en 100 0 1
marcha la prensa.
101 1 1
P = ABC + ABC + ABC + ABC
110 1 1
L = ABC + ABC + ABC + A BC + ABC + ABC
111 1 0
DPE IES “Juan de la Cierva” (Madrid)
12
Vectores de Prueba
• Esta sección es opcional y define los
vectores de prueba que se utilizarán para
comprobar la correcta funcionalidad del
diseño.
• La sintaxis es idéntica a la utilizada en las
tablas de verdad combinacionales, salvo
por la palabra clave de la cabecera, que
en este caso es TEST_VECTORS.
Vectores de Prueba
• ABEL posee algunas constantes especiales
predefinidas que se utilizan en la sección de
vectores de prueba.
.X. Indiferente
.Z. Alta impedancia
.C. Pulso de reloj
.U. Flanco ascendente de reloj
.D. Flanco descendente de reloj
13
Vectores de Prueba
Funciones simplificadas
B
ABC P L C
000 0 0 A 00 01 11 10
001 0 1 0 0 0 1 0
1 0 1 1 1
010 0 1
P = AC + AB + BC
011 1 1
B
100 0 1 A
C
00 01 11 10
101 1 1 0 0 1 1 1
110 1 1 1 1 1 0 1
111 1 0 L = AB + AC + BC
DPE IES “Juan de la Cierva” (Madrid)
14
Simplificación de las funciones
• Dentro del proceso de compilación efectúa
un proceso de minimización de la función
partiendo de la Tabla de Verdad, las
ecuaciones obtenidas se presentan en el
archivo reporte y son las mismas que
obtuvimos al simplificar por medio del
mapa de Karnaugh.
• L = (!A & B) # (A&!C )#(!B&C);
• P = ( A & B ) # (A & C) # (B & C );
15
Definición mediante Tablas de
verdad
16
Directivas Importantes
• Las directivas no son órdenes propiamente dicho si no
que son ordenes para la herramienta de compilación del
fichero, que tienen influencia en la ecuaciones lógicas
resultantes.
– @DCSET: Permite utilizar como indiferentes las combinaciones
no expecificadas en las tablas de verdad, etc. al minimizar las
ecuaciones lógicas resultantes.
– @DCSTATE: Permite utilizar como indiferentes los estados y las
transiciones no especificadas en un grafo de estados, al
minimizar las ecuaciones lógicas resultantes. A continuación de
esta directiva hay que poner @DCSET para que tenga efecto.
– @ONSET: Anula la dircetiva @DCSET y no permite, por tanto,
el uso de las combinaciones indiferentes.
– @RADIX: Cambia la base por defecto. Por ejemplo @RADIX 2
cambia de base decimal a base binaria.
Operadores relacionales
• Los operandos relacionales se utilizan para comparar
operandos en una expresión. El resultado de la
comparación es siempre un único bit, que puede valer 1
(verdadero) o 0 (falso).
Operador Descripción Ejemplo
== Igual a A == B
!= Distinto de A!=B
> Mayor que A>B
< Menor que A<B
>= Mayor o igual que A>=B
<= Menor o igual que A<=B
DPE IES “Juan de la Cierva” (Madrid)
17
Declaración mediante ecuaciones
relacionales
18
Maquina de estados descripción
mediante ecuaciones
Y=0 Y=0
Y=0
Y=1 Y=1
I0/000 I1/001 I2/010
Y=1
Y=1
Y=0
I6/110 I3/011
Y=0
Y=1
Y=1
Y=0
Y=0
0 0 0 0 0 1 0 0 1
Q2(t )
Q1(t )
0 0 1 0 1 0 0 1 0
Q3(t ) 00 01 11 10
0 1 0 0 1 1 0 1 1
0 1 1 1 0 0 1 0 0 0 1 0 0 1
1 0 0 1 0 1 1 0 1 1 1 0 X 0
1 0 1 1 1 0 1 1 0
1 1 0 0 0 0 0 0 0 D1 = Q2 Q 1 + Q3 Q1
Q2(t ) Q2(t )
Q1(t ) Q1(t )
Q3(t ) 00 01 11 10 Q3(t ) 00 01 11 10
0 0 0 1 0 0 0 1 0 1
1 1 1 X 0 1 0 1 X 0
D3 =Q 3 Q2 + Q2 Q1 D 2 = Q2 Q1 + Q 3Q2 Q1
19
Maquina de estados descripción
mediante ecuaciones
Cronograma de simulación
20
Maquina de estados descripción
mediante Tabla de verdad
21
Contador modulo 8 mediante
diagrama de estados
Bibliografía
• Aplicaciones y problemas de electrónica digital.
Autores: Jose Ignacio Atigas Maestre; Luís
Ángel Barragán Pérez y Carlos Orrite Uruñuela.
Editado por Prensas Universitarias de Zaragoza.
• Fundamentos de Sistemas Digitales. Autor: T.L.
Floyd. Editado por Pretince Hall
• Dispositivos Lógicos Programables. Autores:
Enrique Mandado; Luís Jacobo Álvarez y Mª
Dolores Valdés. Editado por Thomson
22
DPE IES “Juan de la Cierva” (Madrid)
23