Programación HDL ABEL (Advanced Boolean Equations Language) Ing. Marco Antonio Reyes González, Depto. de Ingria. Eléct
Views 214 Downloads 5 File size 3MB
Programación HDL
ABEL (Advanced Boolean Equations Language)
Ing. Marco Antonio Reyes González, Depto. de Ingria. Eléctrica y Electrónica
Introducción ABEL: Advanced Boolean Equation Language
Matriz lógica programable (PAL). Matriz lógica genérica (GAL). • PAL: Programmable Array Logic. • GAL: Generic Array Logic. • FPGA :(Field Programmable Gate Array)
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 integración
Menos de 50
Compuertas lógicas y biestables
MSI: Mediana escala de integración
De 50 a menos de 100
Codificadores, sumadores: Sistemas combinacionales
LSI: Gran escala de integración
De 100 a menos de 1000
Circuitos aritméticos complejos, memorias.
VLSI: Muy alta escala de integración
De 1000 a menos de 105
Microprocesadores, microcontroladores
ULSI: Ultra alta escala de integración
Mas de 106
Ing. Marco Antonio Reyes González, Depto. de Ingria. Eléctrica y Electrónica
Procesadores digitales y microprocesadores avanzados
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 maxiterminos 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 ABELHDL (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 constar de los siguientes elementos: • Módulo (requerido) • Interfaz (nivel inferior, opcional) • Título
La sección de declaraciones puede constar de los siguientes elementos: • Declaración de palabras clave • Interfaz y de bloque funcional de 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
Declaraciones
Descripción Logica
Vectores de test
Final
Module
Nombre_Ejemplo
U1 device ‘p22v10’; V1, v2, p pin 2, 3, 4; M pin 23; Equations M=!V1 & P
Entradas
Modulo
Salidas
. #
!V2&P;
Representa ción interna Eléctrica
Test_vectors ([V1, V2, P] -> [M]) [.x., .x., 0]->[0]; [0 , .x., 1]->[1]; [1, 0, 1]->[1];
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 alfanumérica que empieza por ___ o una letra
Declaración de pines. Es para identificar las terminales a utilizar en el PLD: Id_pin1, id_pin2, ……… PIN
Lista de identificación para los pines
‘cadena’
Caracteres entre comillas simples
n°pin1, n°pin2, …….
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.....
Lista de identificación para constantes
=
expre1, expre2, ………
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
Símbolo
SIMBOL O
Operación
!
NOT
&
AND
#
OR
$
XOR
!$
XNOR
LÓGICOS
SÍMBOL O
DESCRIPCIÓ N
OPERACI ÓN
-
NEGACIÓN (COMPLEM A 2)
-A
-
RESTA
A-B
+
SUMA
A+B
>B
*
MULTIPLICACIÓN
A*B
/
DIVISIÓN ENTRA
A/B
%
MÓDULO (RESTA DE A/B)
A%B
ARITMÉTICOS
Operadores
DESCRIPCIÓN
OPERACIÓ N
==
IGUAL
A==B
!=
DIFERENTE
A!=B
>
MAYOR QUE
A>B
SÍMBO LO
>=
MAYOR O IGUAL
A>=B
=
ASIGNACIÓN COMBINACIONAL
[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 …
– Transiciones condicionales.
S0
state_diagram ESTADO state S2: if E then S0; else S2 …
S2
!E
E S0
– Transiciones con with-endwith state_diagram ESTADO state S2: if E then S0 with Y=1; endwith; else S2 with Y=0; endwith; …
S2
(!E)/Y=0
E/(Y=1) 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; equations EST.clk=CK; EST.aclr=RST; end
endwith ;
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