Sie sind auf Seite 1von 5

3.1.1.

Lenguaje de Descripcin de Hardware


Un lenguaje de descripcin de hardware (HDL, Hardware Description Language) es un lenguaje de
programacin especializado que se utiliza para definir la estructura, diseo y operacin de circuitos
electrnicos, y ms comnmente, de circuitos electrnicos digitales. As, los lenguajes de descripcin
de hardware hacen posible una descripcin formal de un circuito electrnico, y posibilitan su anlisis
automtico y su simulacin.
Los lenguajes de descripcin de hardware se parecen mucho a otros lenguajes de programacin de
ordenadores tales como el C o Java: bsicamente consisten en una descripcin textual con expresiones,
declaraciones y estructuras de control. Sin embargo, una importante diferencia entre los HDL y otros
lenguajes de programacin est en que el HDL incluye explcitamente la nocin de tiempo.
Un lenguaje de descripcin de hardware permite documentar las interconexiones y el comportamiento
de un circuito electrnico, sin utilizar diagramas esquemticos.
El flujo de diseo suele ser tpico:
1. Definir la tarea o tareas que tiene que hacer el circuito.
2. Escribir el programa usando un lenguaje HDL. Tambin existen programas de captura de esquemas
que pueden hacer esto, pero no son tiles para diseos complicados.
3. Comprobacin de la sintaxis y simulacin del programa.
4. Programacin del dispositivo y comprobacin del funcionamiento.
Un rasgo comn a estos lenguajes suele ser la independencia del hardware y la modularidad o
jerarqua, es decir, una vez hecho un diseo ste puede ser usado dentro de otro diseo ms
complicado y con otro dispositivo compatible.
Lenguajes
*CUPL
*ABEL
*VHDL
*Verilog
*SystemC
*Schematic Capture
*CUPL
El CUPL (Compiler Universal for Programmable Logic), es un lenguaje de descripcin y simulacin.
Por medio de este se puede describir el funcionamiento de un circuito lgico (combinacional o
secuencial), por medio de sus ecuaciones lgicas, por diagramas de estados o tablas.
Despus de conocer las ecuaciones lgicas que rigen un circuito, o su diagrama de

estados, este puede llevarse a CUPL, compilarse y obtenerse un archivo .jed, que permite
por medio de un programador y de un software, programar un dispositivo PLD, con la funcin
que requiera el usuario. Por medio del CUPL, tambin se pueden hacer pruebas al circuito para
comprobar que el diseo sea optimo o si es el caso, hacer las correcciones necesarias.
CUPL tiene palabras y smbolos reservados, es decir, tienen un uso restringido dentro
del programa, por ejemplo no pueden hacerse uso del nombre del programa en ninguna variable.
Para lgica combinacional se tienen smbolos especiales que representan las funciones
lgicas bsicas not, and, or y xor.
*ABEL
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.
Un lenguaje de programacin PLD est respaldado por un procesador de lenguaje PLD denominado
compilador. La tarea del compilador es traducir un archivo de texto escrito en el lenguaje en un patrn
de fusibles para el PLD fsico. An cuando la mayora de los PLD pueden programarse fsicamente
slo 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 continuacin se presenta la estructura tpica de un programa en el lenguaje ABEL y un ejemplo del
mismo:
Estructura:
module nombre del mdulo
[title string]
[deviceID device deviceType;]
declaraciones de pin
otras declaraciones
equations
ecuaciones
[Test_Vectors]
tested vectores
end nombre de mdulo

En la estructura se identifican las siguientes caractersticas:


Un archivo de programa comienza con el enunciado module, que asocia un nombre (por
ejemplo: Decodificador_de_Memoria) con el mdulo del programa. Los programas grandes
pueden tener mltiples mdulos, cada uno con su propio ttulo local, declaraciones y
ecuaciones. El nombre del mdulo puede ser cualquier identificador vlido.
Los identificadores deben comenzar con una letra o un guin, pueden contener hasta 31 letras, dgitos y
guiones, y son distinguibles las minsculas y maysculas.
El enunciado title especifica una cadena como un ttulo que se insertar en los archivos de
documentacin que sean creados por el compilador.
Una cadena es una serie de caracteres encerrados entre comillas simples.
La declaracin 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
documentacin que genera, y usa el tipo de dispositivo para determinar si ste puede en realidad
realizar las funciones lgicas requeridas en el programa.
*VHDL
VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde VHSIC es el
acrnimo de Very High Speed Integrated Circuit y HDL es a su vez el acrnimo de Hardware
Description Language.
Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE
1076-1993) usado por ingenieros para describir circuitos digitales. Otros mtodos para disear circuitos
son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero stos no son
prcticos en diseos complejos. Otros lenguajes para el mismo propsito son Verilog y ABEL.
Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para
programar PLD (Programable Logic Device - Dispositivo Lgico Programable), FPGA (Field
Programmable Gate Array), ASIC y similares.
*Verilog
Verilog es un lenguaje de descripcin de hardware (HDL, del Ingls Hardware Description Language)
usado para modelar sistemas electrnicos. El lenguaje, algunas veces llamado Verilog HDL, soporta el
diseo, prueba e implementacin de circuitos analgicos, digitales y de seal mixta a diferentes niveles
de abstraccin.
Los diseadores de Verilog queran un lenguaje con una sintaxis similar a la del lenguaje de
programacin C, de tal manera que le resultara familiar a los ingenieros y as fuera rpidamente
aceptada. El lenguaje tiene un preprocesador como C, y la mayora de palabras reservadas de control
como "if", "while", etc, son similares. El mecanismo de formateo en las rutinas de impresin y en los
operadores del lenguaje (y su precedencia) son tambin similares.

A diferencia del lenguaje C, Verilog usa Begin/End en lugar de llaves para definir un bloque de cdigo.
Por otro lado la definicin de constantes en Verilog requiere la longitud de bits con su base. Verilog no
tiene estructuras, apuntadores o funciones recursivas. Finalmente el concepto de tiempo, muy
importante en un HDL, no se encuentra en C.
El lenguaje difiere de los lenguajes de programacin convencionales, en que la ejecucin de las
sentencias no es estrictamente lineal. Un diseo en Verilog consiste de una jerarqua de mdulos. Los
mdulos son definidos con conjuntos de puertos de entrada, salida y bidireccionales. Internamente un
mdulo contiene una lista de cables y registros. Las sentencias concurrentes y secuenciales definen el
comportamiento del mdulo, describiendo las relaciones entre los puertos, cables y registros. Las
sentencias secuenciales son colocadas dentro de un bloque begin/end y ejecutadas en orden secuencial,
pero todas las sentencias concurrentes y todos los bloques begin/end son ejecutadas en paralelo en el
diseo. Un mdulo puede contener una o ms instancias de otro mdulo para definir un subcomportamiento.
Un subconjunto de sentencias en el lenguaje es sintetizable. Si los mdulos en un diseo contienen slo
sentencias sintetizables, se puede usar software para convertir o sintetizar el diseo en una lista de
nodos que describe los componentes bsicos y los conectores que deben implementarse en hardware.
La lista de nodos puede entonces ser transformada en una forma describiendo las celdas estndar de un
circuito integrado, por ejemplo ASIC, o una cadena de bits para un dispositivo de lgica programable
(PLD) como puede ser una FPGA o un CPLD.
*SystemC
SystemC es frecuentemente descrito como un lenguaje de descripcin de hardware como son VHDL y
Verilog, pero es ms adecuado describirlo como un lenguaje de descripcin de sistemas, puesto que es
realmente til cuando se usa para modelar sistemas a nivel de comportamiento.
SystemC es un conjunto de bibliotecas y macros implementadas en C++ que hacen posible una
simulacin de procesos concurrentes con la sintaxis del lenguaje C++ ordinario. As los objetos
descritos pueden comunicarse durante una simulacin de tiempo real usando seales de cualquier tipo
ofrecido por C++, adems algunas otras ofrecidas por las libreras de SystemC y tambin otras
definidas por el usuario.
La metodologa de diseo es comenzar con un modelo de alto nivel escrito en C++ y aplicar un proceso
iterativo consistente en transformar el cdigo para usar slo los elementos que tengan su equivalente en
un lenguaje de descripcin de hardware.
*Schematic Capture
La captura esquematica es un paso mas en el ciclo de diseo asistido de sistemas electrnicos
(EDA), en el que el diagrama o esquema del circuito electrnico es creado por un diseador.
Esto se hace de manera interactiva con la ayuda de una herramienta de captura de esquemticos
tambin conocida como editor de esquematicos.

Un boceto en papel es el primer paso en el diseo de un circuito electrnico real, despus


este es ingresado en un ordenador a traves de un editor de esquemas.
A pesar de la complejidad de los componentes modernos, la captura esquemtica es mas fcil hoy
de lo que ha sido aos atras, esto es gracias a las herramientas software tipo CAD que han
facilitado grandemente su desarrollo.