Está en la página 1de 34

Programación HDL

ABEL
(Advanced Boolean Equations Language)

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Matriz lógica programable (PAL).
Introducción Matriz lógica genérica (GAL).

• PAL: Programmable Array Logic.


• GAL: Generic Array Logic.
ABEL: • FPGA :(Field Programmable Gate Array)
Advanced Boolean Equation Language

Lenguaje de descripción de hardware (HDL):


• Permite describir un circuito digital.
• Permite definir vectores de test para comprobar el funcionamiento del
programa.
• Permite generar el mapa de fusibles para programar los PLD´s
(disposisitivo lógico programable).
Lenguaje de Bajo Nivel:
• Muy cercano a la circuiteria que representa.
• Eficaz para describir sistemas digitales desde LSI (pequeña escala de
integración), MSI (GAL´s y los FPGA´s).
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Escala de integración para circuitos impresos

Escala de integración No. De componentes Aplicación típica


SSI: pequeña escala de Menos de 50 Compuertas lógicas y
integración biestables
MSI: Mediana escala de De 50 a menos de 100 Codificadores,
integración sumadores: Sistemas
combinacionales
LSI: Gran escala de De 100 a menos de 1000 Circuitos aritméticos
integración complejos, memorias.
VLSI: Muy alta escala de De 1000 a menos de 105 Microprocesadores,
integración microcontroladores
ULSI: Ultra alta escala de Mas de 106 Procesadores digitales y
integración microprocesadores
avanzados

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Introducción (cont).
En la Figura 1, se muestra la configuración de un PLD, el cual nos
permite construir funciones en sumas de productor y producto
de sumas, los cuales representan los mini-terminos y maxi-
terminos respectivamente de un sistema lógico, proveniente de
una tabla de verdad, por nombrar un ejemplo

Figura 1
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Estructura de un archivo fuente ABEL
Los elementos básicos que componen un archivo fuente de ABEL-
HDL (Módulo) se puede dividir en cinco secciones:

• Cabecera
• Declaraciones
• Descripción de Logic
• Vectores de prueba
• Fin

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Estructura de un archivo fuente ABEL
La sección de encabezado puede La sección de declaraciones puede constar de
constar de los siguientes elementos: los siguientes elementos:
• Módulo (requerido) • Declaración de palabras clave
• Interfaz (nivel inferior, opcional) • Interfaz y de bloque funcional de
• Título Declaraciones
• Declaración de señales (números de nodo
pasador y opcional)
• Declaración de constantes
• Declaración de Macro
• Declaración de librerías
• Declaración de dispositivos (uno por
módulo)

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Estructura de un archivo fuente ABEL
Encabezado Module Nombre_Ejemplo

U1 device ‘p22v10’;
Declaraciones V1, v2, p pin 2, 3, 4;
M pin 23; Entradas Modulo Salidas

Equations .
Descripción Logica M=!V1 & P # !V2&P; Representa
ción interna
Eléctrica

Vectores de test Test_vectors


([V1, V2, P] -> [M])
[.x., .x., 0]->[0];
[0 , .x., 1]->[1];
[1, 0, 1]->[1];

Final END Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Estructura de un archivo fuente ABEL
Formato del texto

Importante:
• Para las palabras claves da igual si se escriben mayúsculas o minúsculas
• Para los nombres definidos por el usuario hay que mantener el estilo de su
declaración, por lo que si hay diferencia entre mayúsculas y minúsculas (V1
diferente a v1)
• Las sentencias acaban en «;»

Comentarios :
• Empiezan por comillas
• Se extienden hasta las siguientes comillas o hasta el final de la línea

Encabezado y final:
• Las palabras clave «module» y «end» marcan los límites de un diseño

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Estructura de un archivo fuente ABEL
En la figura 2, se muestra las palabras clave , identificadas por la
programación ABEL.

Figura 2 Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Declaraciones
Declaración del Dispositivo.
Es opcional e identifica el PLD a utilizar:
Identificador DEVICE ‘cadena’

Cadena alfanumérica que empieza por ___ o una letra Caracteres entre comillas simples

Declaración de pines.
Es para identificar las terminales a utilizar en el PLD:
Id_pin1, id_pin2, ……… PIN n°pin1, n°pin2, …….

Lista de identificación para los pines Lista del n° de pin que se utilizará en el PLD

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Declaraciones
Declaración de constantes .
• Los números en ABEL siempre representan valores naturales.
• Igual ocurre con los operadores aritméticos relacionales.
• La base por defecto es decimal

Id constante, id constante2..... = expre1, expre2, ………

Lista de identificación para constantes lista de expresiones

En la figura 3, se presenta los tipos de datos que se manejan en ABEL, base numérica.
Ejemplo:
^b010001
^o21
^d17 ó 17
^h11

Figura 3
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
SIMBOL DESCRIPCIÓN OPERACI
Símbolo Operación O ÓN
- NEGACIÓN -A
! NOT (COMPLEM A 2)
- RESTA A-B
& AND
+ SUMA A+B
# OR LÓGICOS
<< DESPLAZAMIENTO A A<<B
$ XOR IZQUIERDA
ARITMÉTICOS
!$ XNOR >> DESPLAZAMIENTO A A>>B
DERECHA
* MULTIPLICACIÓN A*B

Operadores /
%
DIVISIÓN ENTRA
MÓDULO (RESTA DE A%B
A/B

A/B)
SÍMBOL DESCRIPCIÓ OPERACIÓ
O N N
== IGUAL A==B
RELACIONES
!= DIFERENTE A!=B

> MAYOR QUE A>B SÍMBO DESCRIPCIÓN


LO
>= MAYOR O A>=B = ASIGNACIÓN
IGUAL COMBINACIONAL
< MENOR A<B ASIGNACIÓN := ASIGNACIÓN
SECUENCIAL (EN EL
<= MENOR O A<=B SIGUIENTE FLANCO
IGUAL Ing. Marco Antonio Reyes González, Depto. DE RELOJ)
de Ingria. Eléctrica y Electrónica
Tabla de prioridad ABEL

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Ejemplos de prioridad en ABEL

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Conjuntos
Las señales o constantes se separan por comas
o por el operando de rango «..», encerrado por
corchetes «[..]».
– Ayudan a simplificar ecuaciones lógicas.
– A declarar conjunto.
Aset=[A2,A1,A0]; Bset=[Y2..Y0];
– y Operaciones con conjuntos.
Operación conjunto Operación completa
Aset & Bset [A2&B2, A1&B1, A0&B0]
Aset & B0 [A2&B0, A1&B0, A0&B0]
2&Aset [0&A2, 1&A1, 0&A0] Ing. Marco Antonio Reyes
González, Depto. de Ingria.
Aset=2 [A2=0, A1=1, A0=0] Eléctrica y Electrónica
Descripción Lógica
Ecuaciones.
– Palabra clave: equations
– Sentencia: when – then - else
– Extensión de punto: .oe, .clk, .aclr, .pin, etc.
Tablas
– Palabra Clave: truth_table
Diagramas de Estado
– Palabra clave: state_diagram
– Sentencias:
• If-then-else
• goto
• with-endwith
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Ecuaciones(equations)
Operaciones para asignación combinacional (=)
equations
Y=A&B;
Nota: Evitar realimentación combinacional.
Y=Y&B;

Operador para asignación secuencial(:=)


equations
Y:=A;
Y.clk=CK;
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Ecuaciones(equations)
Nota: El orden de las variables en el texto no
importa el orden.

equations equations
X:=X+1; Y:=Y+X;
Y:=Y+X; X:= X+1;
[X,Y].clk = ck;

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Ecuaciones(equations)
Sentencias : Estas equivalen a una ecuación o un sistema
combinacional.
equations equations
when cond1 then Y=(cond1)&(cond2)
y=exp1 #!(cond1)&(cond2)&(exp2)
else when cond2 then #!(cond1)&!(cond2)&(exp3);
y=exp2
else
y=exp3;

SEL=[S1,S0];
equations
When SEL==0 then Y=D0
else when SEL==1 then Y=D1
else when SEL==2 then Y=D2
else Y=D3;
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Extensión de punto
Se aplican a las variables de salida las cuales permiten:
– Manejar señales especiales de la estructura de salida (OE,
CLK, etc)
– Eliminar ambigüedad en la descripción.

Ing. Marco Antonio Reyes


González, Depto. de Ingria.
Eléctrica y Electrónica
Extensión de punto
Ejemplos de extensión de punto:

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Ejemplo: Contador ascendente/descendente módulo 8 con RESET asíncrono
Contar hacia arriba o hacia abajo, según el valor de la entrada up

module cont8
cont8 device ´p22v10’;
reloj, rst, up pin 1,2,3;
q2, q1, q0 pin 23, 22, 21;
cn=[q2, q1, q0];
equations
when up==0 then cn:=cn+1
else cn:=cn-1;
cn.aclr=rst;
cn.clk=reloj;
end
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Ejemplo: Contador módulo 13 con PRERESET síncrono y RESET asíncrono
Nota: la entrada PRERESET coloca al contador a su valor máximo

module cont13
cont13 device ´p22v10’;
reloj, rst, prt pin 1,2,3;
q3, q2, q1, q0 pin 23, 22, 21, 20;
cn=[q3, q2, q1, q0];
equations
when prt then cn:=12
else when (cn==12) then cn:=0;
else cn:=cn+1;
cn.clk=reloj;
cn.aclr=rst;
end Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Declaración y uso de tablas de verdad
Salidas = f (combinaciones de entrada)
Permite describir sistemas combinacionales (tabla
de verdad), y sistemas secuenciales (tabla de
estados).
Sistemas combinacionales Sistemas secuenciales

Nota:El valor de la salida para sistemas combinacionales de


entrada no especificadas se tomara como no importa.
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Ejemplo: Decodificador de BCD a 7 segmentos, utilizando tabla de verdad.
Entradas: código en BCD, salidas: display cátodo común
module BCD7SEG
D3, D2, D1, D0 PIN;
A,B,C,D,E,F,G PIN;
BCD=[D3..D0];
ON, OFF= 1, 0;
Truth_table
(BCD->[A,B,C,D,E,F,G])
0->[ON, ON, ON, ON, ON, ON, OFF];
1->[OFF, ON, ON, OFF, OFF, OFF, OFF];
.
.
9->[ON, ON, ON, ON, OFF, ON, ON];

end BCD7SEG
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Diagramas de estado
La programación HDL – ABEL nos permite programar maquinas
de estado, programando el diagrama de estados.
Palabra clave: state_diagram

Se recomienda realizar los siguintes pasos para programar una


maquina de estados (ME) en el lenguaje ABEL
– Definir las variables de estado
– Definir / decodificar los estados
– Definir la función de trancisión de estados, programando el diagrama
de estados state_diagram
– Definir la función de salida en el diagrama de estados o en la sección
de ecuaciones, state_diagram o equations respectivamente.

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Diagramas de estado (cont.)
La estructura en la programación del diagrama de estados es:

state_diagram reg_estados
state id_estado:
[ecuaiones;]
cond_trans;

Donde:
• reg_estado, identificador o conjunto de identificadores que
identifican los biestables de estado.
• Id_estado, identificador del estado actual.
• Ecuaciones, define las salidas para el estado actual.
• Cond_trans, condición de transición del estado que define:
– El estado siguiente: if-then-else y goto
– Opcionalmente ecuaciones de salida asociadas a las transiciones
entre estados: with-endwith.
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Diagramas de estado (cont.)
Transiciones de estado:
– Transiciones incondicionales S2

state_diagram ESTADO
state S2: goto S0

S0
– Transiciones condicionales.
S2 !E
state_diagram ESTADO
state S2: if E then S0;
E
else S2

S0

– Transiciones con with-endwith


S2 (!E)/Y=0
state_diagram ESTADO
state S2:
E/(Y=1)
if E then S0 with Y=1; endwith;
else S2 with Y=0; endwith;
S0

Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Diagramas de estado (cont.), mquína de MEALY
Detector … 001
module MLY_001
CK, RST, E, S pin;
Q1, Q0 pin istype ‘reg’;
EST=[Q1,Q0];
S0=[0,0];
S1=[0,1];
S2=[1,1];
state_diagram EST
state s0: if !E then s1
else s0;
state s1: if !E then S2
else S0;
state s1: if !E then S0
else S2;
equations
S=E & (EST==S2);
EST.clk=CK;
EST.aclr=RST;
end

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Diagramas de estado (cont.), mquína de MEALY

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Diagramas de estado (cont.), mquína de MEALY
con with - endwith
Detector … 001
module MLY_001
CK, RST, E, S pin;
Q1, Q0 pin istype ‘reg’;
EST=[Q1,Q0];
S0=[0,0];
S1=[0,1];
S2=[1,1];
state_diagram EST
state s0:
S=0;
if !E then s1
else s0;
state s1:
S=0
if !E then S2
else S0;
state s2:
if E then S0 with s=1;
endwith;
else S2 with S=0; endwith ;
equations
EST.clk=CK;
EST.aclr=RST;
end Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Vectores de test
Define los vectores de prueba para verificar la funcionalidad del
diseño.
Especifican las salidas esperadas en función de las entradas, similar a
las tablas de verdad.
Palabra clave: test_vectors
Constantes especiales:
• .x. no importa
• .z. alta impedancia
• .c. pulso de reloj
• .d. flanco descendente
• .u. flanco ascendente

Nota:
• .x. en simulación:
– Como entrada, escogerá un valor (0, 1)
– Como salida , dará lo mismo el valor que aparezca a la salida dependiendo de la función
correspondiente.
Ing. Marco Antonio Reyes González, Depto.
de Ingria. Eléctrica y Electrónica
Vectores de test

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica
Vectores de test

Ing. Marco Antonio Reyes González, Depto.


de Ingria. Eléctrica y Electrónica