MÉTODOS DE DISEÑO DE LÓGICA PROGRAMABLE

El proceso de diseño lógico con PLD se resume en tres grandes etapas:
1. DISEÑO LÓGICO
2. IMPLEMENTACION DEL DISEÑO
3. VERIFICACIÓN DEL DISEÑO.
DISEÑO LÓGICO
Dentro de la primera etapa, los pasos involucrados son los mismos que en cualquier
diseño digital, combinatorio o secuencial, y se pueden subdividir en los pasos
siguientes:
 Definir el problema.
 Generar un diagrama de bloques.
 Obtener tabla de verdad.
 Derivar ecuaciones lógicas que describen la operación del diseño.
IMPLEMENTACIÓN DEL DISEÑO
La implementación del diseño consiste en seleccionar y usar las herramientas, tanto de
hardware y software, necesarias para la traducción de los resultados a un mapa de
fusibles para la programación del chip. Esta fase consiste en:
 Selección del PLD.
 Hacer archivo de ecuaciones
 Correr el software, como por ejemplo el PALASM, ABEL, CUPL, etc. para generar
el archivo JEDEC (mapa de fusibles).
 Configurar programador universal.
 Programar chip.
VERIFICACIÓN DEL DISEÑO
La etapa final consiste en la verificación del diseño en la cual la correcta programación
del PLD es comprobada, por medio de técnicas de simulación. Los pasos de la
verificación son:
 Generación de vectores de prueba.
 Simulación del funcionamiento del pld en la computadora.
 Prueba funcional del dispositivo.
 Documentación del diseño.



TIPOS DE PROGRAMAS PARA PROGRAMACIÓN DE LÓGICA
PROGRAMABLE
OPAL (OPEN PROGRAMMABLE ARCHITECTURE LANGUAGE- LENGUAJE ABIERTO DE
ARQUITECTURAS PROGRAMABLES)
En este lenguaje, se ofrece al diseñador usar lenguaje de máquinas de estado,
ecuaciones booleanas multi-nivel, así como funciones de tabla de verdad, etc. Esto le
proporciona libertad para seleccionar la implementación que mejor se adapte a las
especificaciones del diseño.
Este software consiste de una serie de módulos que aceptan un formato como
entrada, y crea otro formato como salida. Los archivos creados por el OPAL usan las
extensiones para describir el formato.
Por ejemplo, el módulo OPL2PLA requiere un archivo “*.opl”, y genera un archivo PLA,
“*.pla”. Los nombres de los módulos son fáciles de recordar, porque ellos describen la
acción que el módulo realiza.
El paquete de software OPAL permite descripciones lógicas genéricas que serán
sintetizadas dentro de dispositivos específicos sin conocer a detalle la arquitectura del
dispositivo.
El OPAL, en lugar de solo proporcionar independencia del dispositivo, también
proporciona herramientas independientes.
Esto resulta en un alto aprovechamiento del sistema, el cual da al diseñador visibilidad
y control sobre cada paso del diseño lógico y proceso de implementación.

ABEL (ADVANCED BOOLEAN EXPRESSION LANGUAGE- LENGUAJE AVANZADO DE
EXPRESIONES BOOLEANAS)
ABEL es una marca registrada de Data I/O Corporation, permite implementar diseños
lógicos en dispositivos lógicos 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.
Aun cuando la mayoría de los PLD pueden programarse físicamente sólo con
expresiones de suma de productos, lenguajes como ABEL permiten que las ecuaciones
PLD se escriban casi en cualquier formato; el compilador manipula algebraicamente y
minimiza las ecuaciones para ajuste, si es posible, dentro de la estructura PLD
disponible.
Estructura interna
A continuación se presenta la estructura típica de un programa en el lenguaje ABEL y
un ejemplo del mismo:
Estructura:
module nombre del módulo
[title string]
[deviceID device deviceType;]
declaraciones de pin
otras declaraciones
equations
ecuaciones
[Test_Vectors]
tested vectores
end nombre de módulo
En la estructura se identifican las siguientes características:
Un archivo de programa comienza con el enunciado module, que asocia un nombre
(por ejemplo: Decodificador_de_Memoria) con el módulo del programa. Los
programas grandes pueden tener múltiples módulos, cada uno con su propio título
local, declaraciones y ecuaciones. El nombre del módulo puede ser cualquier
identificador válido.

Los identificadores deben comenzar con una letra o un guión, pueden contener hasta
31 letras, dígitos y guiones, y son distinguibles las minúsculas y mayúsculas.
El enunciado title especifica una cadena como un título que se insertará en los archivos
de documentación que sean creados por el compilador.
Una cadena es una serie de caracteres encerrados entre comillas simples.
La declaración device incluye un identificador de dispositivo (por ejemplo: `P16L8' para
un PAL16L8). El compilador usa el identificador del dispositivo en los nombres de los
archivos de documentación que genera, y usa el tipo de dispositivo para determinar si
éste puede en realidad realizar las funciones lógicas requeridas en el programa.
La directiva @ALTERNATE le dice al compilador que reconozca un conjunto alterno de
símbolos para denotar las operaciones lógicas; los cuales se presentan a continuación:







Por ejemplo, la siguiente expresión lógica:
Y= ( + B + + D) (A + B + E) en lenguaje ABEL sería:
Y= (!A # B # !E # D) & (A # B # E)
Los comentarios comienzan con una doble comilla y terminan con otra doble comilla o
el fin de la línea, lo que ocurra primero.
Las declaraciones de terminales le indican al compilador los nombres simbólicos
asociados con las terminales externas del dispositivo. Las señales cuyos nombres
tienen el prefijo NOT (/) son activas bajas en la terminal externa; las otras son activas
altas.
Otras declaraciones permiten al diseñador definir constantes y macros para simplificar
el diseño del programa y mejorar su legibilidad.
El enunciado equations indica qué ecuaciones lógicas definen señales de salida como
función de las señales de entrada que correspondan.
El enunciado end marca el fin del módulo.
Compilador
 Comprueba la sintaxis.
 Comprueba la suficiencia de patillas.
 Expande las ecuaciones.
 Reduce las ecuaciones a suma de productos según la arquitectura del PLD.
 Hace un chequeo de los vectores de test vs ecuaciones.
 Chequea los requerimientos impuestos por las ecuaciones en cuanto al número de
patillas, términos de producto con los disponibles en la PLD concreta.
 Finalmente determina el “patrón” necesario para programar la PLD.

CUPL (COMPILER UNIVERSAL PROGRAMMABLE LOGIC-COMPILADOR UNIVERSAL DE
LÓGICA PROGRAMABLE)
El lenguaje de programación CUPL se basa en ficheros con la extensión PLD, que con-
tienen la definición del programa que se desea que ejecute el dispositivo programable.
Cuando son abiertos, desde el programa WinCUPL, como “proyecto”, se abrirán
además los ficheros de simulación y compilación que tengan su mismo nombre. Si la
compilación se produce con éxito, y si se ha seleccionado un dispositivo físico concreto
(distinto de virtual), entonces se generarán una serie de ficheros, dependiendo de las
opciones de compilación elegidas. De entre ellos, destacamos:
Fichero de mapa de fusibles: Con extensión .JED, incluye la información necesaria
para que el programador de dispositivos lógicos pueda programar la PLD
correspondiente. La in-formación contenida, en ASCII, representa la matriz de
fusibles con lo que resulta, de alguna manera, legible.
Fichero de documentación: Con extensión .DOC incluye, según las opciones que
hayamos elegido, información de las ecuaciones expandidas y minimizadas, el
número de términos producto usado para cada variable, el mapa de fusibles, e
incluso el pin-out del dispositivo una vez programado.
En caso de simular el circuito, se generarán los ficheros con extensión .SI, en el que se
guardan los estímulos definidos, y el fichero .SO, en el que se almacena el resultado de
la simulación.
RESUMEN DE LAS CARACTERÍSTICAS DE LOS TIPOS DE PROGRAMAS
PALASM (PAL ASSEMBLER-ENSAMBLADOR DE PAL)
Creado por la compañía Advanced Micro Devices(AMD)
Desarrollado únicamente para aplicaciones con dispositivos PAL
Acepta el formato de ecuaciones booleanas
Utiliza cualquier editor que grabe en formato ASCII
OPAL
Desarrollado por National Semiconductors
Se aplica en dispositivos PAL y GAL
Formato para usar lenguaje de máquinas de estado, ecuaciones booleanas de distintos
niveles, tablas de verdad, o cualquier combinación entre ellas.
Disponible en versión estudiantil y profesional (OPAL Jr y OPAL Pro)
Genera ecuaciones de diseño partiendo de una tabla de verdad.
PLPL (PROGRAMABLE LOGIC PROGRAMMING LANGUAGE: LENGUAJE DE
PROGRAMACIÓN DE LÓGICA PROGRAMABLE)
Creado por AMD
Introduce el concepto de jerarquías en sus diseños.
Formatos múltiples (ecuaciones booleanas, tablas de verdad, diagramas de estado y
las combinaciones entre éstos)
Aplicaciones en dispositivos PAL y GAL.

ABEL
Creado por Data I/O Corporation
Programa cualquier tipo de PLD (Versión 5.0)
Proporciona tres diferentes formatos de entrada: ecuaciones booleanas, tablas de
verdad y diagramas de estados.
Es catalogado como un lenguaje avanzado HDL (lenguaje de descripción en hardware)

CUPL
Creado por AMD para desarrollo de diseños complejos.
Presenta una total independencia del dispositivo.
Programa cualquier tipo de PLD.
Facilita la generación de descripciones lógicas de alto nivel.
Al igual que ABEL, también es catalogado como HDL.

CAMPOS DE APLICACIÓN DE LA LÓGICA PROGRAMABLE

La lógica programable es una herramienta de diseño muy poderosa, que se aplica en el
mundo industrial y en proyectos universitarios en todo el mundo.
En la actualidad se usan desde los PLD más sencillos (como el GAL, PAL, PLA) como
reemplazos de circuitos LSI y MSI, hasta los potentes CPLD y FPGA, que tienen
aplicaciones en áreas como telecomunicaciones, computación, redes, medicina,
procesamiento digital de señales, multiprocesamiento de datos, microondas, sistemas
digitales, telefonía celular, filtros digitales programables, entre otros.
En la actualidad, los CPLD son muy utilizados a nivel industrial, ya que resulta fácil
convertir diseños compuestos por múltiples PLD sencillos en un circuito CPLD.














































































LENGUAJES DE DESCRIPCIÓN DE HARDWARE
Como se apreció en el método anterior de programación, no soluciona mucho el
problema de la complejidad a la hora de implementar un circuito ya que se emplea el
álgebra booleana en esencia. Lo que nos trae a la siguiente etapa los HLD (lenguajes de
descripción de hardware) cuyo objetivo es simplificar el trabajo aún más y realizar
tareas con mayor complejidad.
Como consecuencia de la creciente necesidad de integrar un mayor número de
dispositivos en un solo circuito integrado, se desarrollaron nuevas herramientas de
diseño en un solo circuito integrado, se desarrollaron nuevas herramientas que
auxilian al ingeniero a integrar sistemas muy completos. Esto permitió que en la
década de los 50 aparecieran los HDL como una opción de diseño para el desarrollo de
sistemas electrónicos elaborados. Por poseer una sintaxis parecida a la de un lenguaje
de alto nivel, éste tipo de descripción es muy aceptado por diseñadores.
Los HDL más utilizados son:
 ABEL, Advanced Boolean Expression Language.
 VHDL, Very High Hardware Description Language
 VERILOG
Una de las principales características de estos lenguajes radica en su capacidad para
describir en distintos niveles de abstracción (funcional, transferencia de registros y
lógico o nivel de compuertas). Dichos niveles sirven para clasificar modelos HDL según
el grado de detalle y precisión de sus descripciones.
Los niveles de abstracción descritos desde el punto de vista de simulación y síntesis del
circuito pueden definirse como sigue:
 Algorítmico: Se refiere a la relación funcional entre las entradas y salidas del
circuito o sistema, sin hacer referencia a la realización final.
 Transferencia de registros (RT): Consiste en la participación del sistema en
bloques funcionales sin considerar a detalle la realización final de cada bloque.
 Lógico o de compuertas: El circuito se expresa en términos de ecuaciones
lógicas o de compuertas.
Debido a una similitud con el lenguaje de programación Visual Basic y algunos otros, se
optó por VHDL, el cual nos proporciona una alta confiabilidad.





VHDL
En la actualidad, el lenguaje de descripción en hardware más utilizado a nivel industrial
es VHDL, que apareció la década de los ochenta como un lenguaje estándar, capaz de
soportar el proceso de diseño de sistemas electrónicos complejos, con propiedades
para reducir el tiempo de diseño y los recursos tecnológicos requeridos. El
departamento de la defensa de Estados Unidos creó el lenguaje VHDL; luego de varias
versiones revisadas, el IEEE (Instituto de Ingenieros Electrónicos y Eléctricos) publicó
en diciembre de 1987 el estándar IEEEstd.
Ventajas del desarrollo de circuitos integrados con VHDL
Ventajas de usar VHDL en un circuito integrado:
Notación formal. Los circuitos permite su uso en cualquier diseño electrónico.
Disponibilidad pública. Es un estándar no sometido a patente, por lo que
cualquiera puede utilizarla sin restricciones.
Independencia tecnológica de diseño. Se diseñó para soportar diversas
tecnologías. (PLD, FPGA, ASIC, etc.).
Independencia de la tecnología y proceso de fabricación. Se creó para que
fuera independiente de la tecnología y el proceso de fabricación del circuito.
Capacidad descriptiva en distintos niveles de abstracción. Consta con varios
niveles de detalla, desde la especificación hasta la implementación; se pueden
combinar a lo que se le conoce simulación multinivel.
Uso como formato de intercambio de información. Permite el intercambio de
información a o largo de todas las etapas del proceso.
Independencia de los proveedores. Permite que las descripciones sean
accesibles desde cualquier lugar.
Reutilización del código. Permite reutilizar los códigos en diversos diseños, sin
importar si es (CMOS, bipolar, etc.) o implementado en (FPGA, ASIC, etc.).
Facilitación de la participación en proyectos internacionales.

Desventajas del desarrollo de circuitos integrados con VHDL
Como se puede observar, VHDL presenta grandes ventajas; sin embargo, es necesario
mencionar también algunas desventajas que muchos diseñadores consideran
importantes:
En algunas ocasiones, el uso de una herramienta provista por alguna compañía en
especial tiene características adicionales al lenguaje, con lo que se pierde tin poco la
libertad de diseño. Como método alternativo, se pretende que entre diseñadores que
utilizan distintas herramientas exista una compatibilidad en sus diseños, sin que esto
requiera un esfuerzo importante en la traducción del código.
Debido a que VHDL es un lenguaje diseñado por un comité, presenta una alta
complejidad, ya que se debe dar gusto a las diversas opiniones de los miembros de
éste, por lo que resulta un lenguaje difícil de aprender para un novato.

REFERENCIAS
Libros:

VHDL El arte de programar sistemas digitales, David G. Maxinez y Jessica Alcalá. CECSA
primera edición, 2002.
Aplicaciones del diseño lógico programable. Tesis del Ing. Miguel Ángel Gutiérrez
Zamarripa. 1999.
Fundamentos de Lógica Digital con Diseño VHDL, Stephen Brow y Zvonko Vranesic,
McGraw Hill, 2da Edición 2006.
Páginas web:
http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/SisDig2-
Ses/UMD/Unidad%20I/UIndDel.htm
http://es.scribd.com/doc/23601525/Programacion-en-CUPL
http://www.iuma.ulpgc.es/~roberto/asignaturas/EI/transparencias/EI_ABEL.pdf
http://www.el.bqto.unexpo.edu.ve/~ltarazona/digitales/tema5A_4.pdf

RECURSOS EXTRA
 http://html.rincondelvago.com/lenguaje-de-programacion-abel.html