Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIN
En la actualidad, el lenguaje de programacin VHDL (HARDWARE DESCRIPTION
LANGUAGE) constituye una de las herramientas de programacin con mayor uso
en el ambiente industrial y en el mbito universitario, debido a la versatilidad con la
cual se pueden describir y sinterizar circuitos y sistemas digitales en la bsqueda
de soluciones de aplicacin inmediata.
El uso correcto del lenguaje hace obsoleto el diseo tradicional, que organiza
bloques lgicos de baja y mediana escala de integracin, compuertas, contadores,
registros, decodificadores, etctera. En otras palabras, para qu organizar diversas
estructuras lgicas en una determinada solucin, si esta se puede crear en una sola
entidad, la cual no solo proporciona una reduccin considerable de espacio fsico,
sino que adems tambin produce un resultado ms directo y menos susceptible a
los errores derivados de la conexin entre varios componentes.
El resultado la solucin- es susceptible de ser encapsulada en dispositivos
lgicos programables, llamados PLD (vase figura 1.1).
Al emplear dispositivos programables de muy bajo costo, conocidos por sus
siglas en ingls como GAL (Arreglos Lgicos Genricos), los cuales se utilizan con
mucha frecuencia en proyectos donde lo que se requiere de manera primordial es
la interconexin de algunos dispositivos convencionales como multiplexores,
comparadores, sumadores, etctera; estos chips pueden adquirirse de manera
individual y ser programados en grabadores convencionales.
En el caso de que la solucin requiera de un mayor nmero de componentes
lgicos o pins de salida, pueden utilizarse circuitos CPLD (por sus siglas en ingls;
Dispositivos Lgicos Programables Complejos), los cuales tambin se consiguen de
forma individual o como parte de un sistema de desarrollo. Por otro lado, si el
proyecto lo amerita, es posible utilizar los FPGAS(por sus siglas en ingls; Arreglos
de Compuertas Programables de Campo),recomendados para ser empleados y
programados dentro de un sistema de desarrollo y en aplicaciones con tendencias
hacia el desarrollo de sistemas completos dentro de un solo circuito integrado
SOC(System On Chip).
Las opciones que brinda el hardware para la integracin de la aplicacin
permiten introducir y utilizar el lenguaje en diversas materias cuyo nivel de
profundidad y diseo depende de los bloques lgicos por emplear; de esta manera
el diseo lgico y el de sistemas digitales, la robtica, la arquitectura de
computadoras y la algortmica, entre otras, son algunas de las reas donde VHDL
presenta una alternativa de diseo. Por ejemplo, en un curso de diseo lgico, quiz
lo ms recomendable sea utilizar el lenguaje y programar en dispositivos GAL; sin
embargo esta no es una condicin necesaria e indispensable, pues depende en
gran medida de la economa personal o institucional.
Como se ver ms adelante, los cambios en la programacin son irrelevantes
respecto de la utilizacin de diversas tecnologas de fabricacin de los chips. Por
tanto, quizs los aspectos que deben cuidarse con ms atencin son la
conceptualizacin y el entendimiento de la arquitectura interna del circuito; no es lo
mismo programar en Arreglos Lgicos que en FPGA cuyas arquitecturas internas
son muy diferentes.
ENTIDAD (ENTITY)
Una entidad bsicamente representa la caracterizacin del dispositivo fsico; es
decir, exhibe las entradas y las salidas del circuito (llamados pins) que el diseador
ha considerado pertinentes para integrar su idea o aplicacin, en la figura 1.3, se
puede observar con detalle la secuencia de desarrollo.
Con base en esta idea, una entity por la palabra reservada del programa-
constituye un bloque de diseo que puede ser analizado y programado como un
elemento individual, ya sea como una compuerta, un sumador o un decodificador,
entre otros, incluso ser considerado como un sistema a travs de su relacin entre
entradas y salidas, las cuales representan los puntos de observacin o de conexin
a elementos perifricos propios de la aplicacin.
En la figura 1.4 a), la entidad proporciona los pines de salida d3, d2, d1, d0 para
el control de un motor a pasos, mientras que en la figura 1.4 b), la entidad se conecta
a un visualizador de 7 segmentos.
Puertos de entrada-salida
Cada una de las seales de entrada y salida en una entidad es referida como un
puerto, el cual es equivalente a una terminal (pin) de un
smbolo esquemtico. Todos los puertos que son declarados
deben tener un nombre, un modo, y un tipo de dato.
Nombre
El nombre es utilizado como una forma de llamar al puerto;
el modo permite definir la direccin que tomara la
informacin, mientras que el tipo precisa que clase de
informacin se transmitir a travs del puerto. Por ejemplo,
en el caso de los puertos de la entidad representada en la
figura 1.5, aquellos que son de entrada estn indicados por
las variables a y b; mientras que el puerto de salida se representa por la variable
c. Por otra parte, el tipo de dato ser tratado ms adelante.
Modos
Como se mencion antes, un modo permite definir la direccin hacia donde el dato
es transferido. Un modo puede tener uno de cuatro valores: in (entrada), out
(salida), in/out (entrada/salida) y buffer (vase figura 1.6).
Modo in. Se refiere a las seales de entrada a la entidad. El modo in es
solo unidireccional y nicamente permite el flujo de datos hacia dentro de la
entidad.
Modo out. Indica las seales de salida de la entidad.
Modo in/out. Permite declarar a un puerto de forma bidireccional, es decir
como de entrada /salida, adems hace posible la retroalimentacin de
seales dentro o fuera de la entidad.
Modo buffer. Permite realizar retroalimentaciones dentro de la entidad; pero,
a diferencia del modo in/out, el puerto declarado se comporta como una
terminal exclusiva de salida.
Tipos de datos
Los tipos son los valores (datos) que el diseador establece para los puertos de
entrada y salida dente de una entidad, y que son asignados de acuerdo con las
caractersticas de un diseo en particular. Algunos de los tipos ms utilizados son
el bit, el cual tienen valores de 0 y 1 lgico; el tipo boolean (booleano) define valores
de verdadero o falso en una expresin; el bit_vector (vectores de bits), el cual
representa un conjunto de bits para cada variable de entrada y/o salida, y el tipo
integer (entero), que representa a un nmero entero.
Los anteriores son solo algunos de los tipos que maneja VHDL, aunque no son los
nicos.1 Los tipos de datos y su uso se introducirn conforme se vayan requiriendo
a lo largo del texto.
1
En el apndice A se listan los tipos de datos existentes en VHDL
Declaracin de entidades
Los mdulos elementales en el desarrollo de un programa dentro del lenguaje de
descripcin en hardware (VHDL) son la entidad y la arquitectura. La declaracin de
una entidad consiste en describir las entradas y salidas de un circuito identificado
como Entity (entidad); en otras palabras, la declaracin seala las terminales o los
pines de entrada y de salida con los que cuenta el circuito. Por ejemplo, considrese
la tabla de verdad que se muestra en la figura 1.7; como se puede observar, esta
tiene entradas, A, B y C y dos salidas, F0 y F1. En este caso, a la entidad se le ja
identificado con el nombre de TABLA, tal y como se muestra.
Ahora comencemos con el anlisis del cdigo lnea por lnea. As, la lnea 1 inicia
con dos guiones (- -), los cuales indican que el texto que est a la derecha es un
comentario; estos se usan nicamente con el fin de documentar el programa, ya
que todos los comentarios son ignorados por el compilador.
En la lnea 2 se empieza la declaracin de la entidad utilizando la palabra reservada
entity, seguida del identificador o nombre de la entidad Tabla (para este ejemplo)
y la palabra reservada is.
Los puertos de entrada y salida (port) son declarados en las lneas 3 y 4,
respectivamente; en este caso, los pines de entrada son A, B y C, mientras que los
puertos de salida estn representados por F0 y F1. Si se observa con atencin la
tabla de verdad en la figura 1.7 , es posible apreciar que en su descripcin solo se
utilizan valores lgicos ( 0 y 1); por tanto, es de suponer que el tipo de dato
empleado en la declaracin es un bit. Por ltimo, en la lnea 5 termina la declaracin
de entidad con la palabra reservada end, seguida del nombre de la entidad Tabla.
Es importante destacar que VHDL cuenta con una lista de palabras reservadas, las
cuales no pueden utilizarse como indicadores.
Declaracin de entidades utilizando vectores
La entidad Proyecto se muestra en la figura 1.13 a), y por comodidad nuevamente
se representa en la figura 1.13 b) mediante sus bits individuales: A3, A2, etctera.
La entidad puede esquematizarse mediante la sealizacin, que se muestra con
claridad en la figura 1.3 b), donde se indican, mediante un bus grupo de cables de
conexin-, los cuatro bits de entrada y/o salida de cada una de las variables
involucradas.
El acomodo de los bits vector- que componen el bus puede ser ordenado de forma
ascendente o descendente, por ejemplo para las entradas Ay B se escribira de la
siguiente manera:
Paquetes
El paquete std_logic_1164 (estndar logico_1164), que se encuentra dentro de la
librera ieee, contiene todos los tipos de datos comnmente utilizados en VHDL,
como: std_logic_vector, std_logic, std_signed, std_unsigned, entre otros.
La forma en que se accede a la informacin contenida dentro de un paquete
es mediante la sentencia use seguida del nombre de la librera y del paquete,
respectivamente; esto es:
Use nombre_libreria.nombre_paquete.all;
Por ejemplo:
Use ieee.std_logic_1164.all;
En este caso, ieee es la librera, std_logic_1164 es el paquete y all es la palabra
reservada, la cual indica que todos los componentes almacenados dentro del
paquete pueden ser utilizados.
A continuacin se listan algunos de los paquetes ms importantes al interior de las
libreras de VHDL, as como sus caractersticas principales.
El paquete numeric_std define funciones para la realizacin de operaciones
entre diferentes tipos de datos; en este, los tipos pueden representarse con
y sin signo(vase apndice C)
El paquete numeric_bit determina tipos de datos binarios con y sin signo.
El paquete std_arith define funciones y operadores aritmticos como: ms
(+), menos (-), divisin (/), multiplicacin (*), igual (=), mayor que (>), menor
que (<), entre otros (vase apndice F).
A reserva de ir introduciendo los diversos paquetes contenidos en VHDL, conforme
la programacin lo requiera, en lo sucesivo, se efectuara un uso extensivo de las
libreras y de los paquetes dentro de los programas desarrollados en el texto.
La librera de trabajo work es el lugar preestablecido por el software para almacenar
los programas que el usuario va realizando; por tanto, esta siempre se encuentra
presente en la compilacin de un diseo. As, mientras no sea especificada otra
librera, los diseos invariablemente se guardarn dentro de ella; por dicha razn no
requiere el uso de la declaracin library.
Operadores aritmticos. Como su nombre lo indica, estos periten realizar
operaciones del tipo aritmtico, tales como suma, resta, multiplicacin, divisin,
cambios de signo, valor absoluto y concatenacin. Dichos operadores generalmente
son utilizados en el diseo lgico para la descripcin de sumadores y restadores o
para las operaciones de incremento y decremento de datos. Los operadores
aritmticos predefinidos en VHDL se muestran a continuacin.
1.3 ARQUITECTURA(architecture)
Un arquitectura define el algoritmo o la estructura de solucin de una entidad, en
esta se describen las instrucciones o los procedimientos programa que deben
llevarse a acabo para obtener la solucin deseada por el diseador.
La gran ventaja que presenta VHDL con respecto a los compiladores
tradicionales de diseo PALASM, OPAL, PLP, ABEL, Y CUPL (vase apndice A),
entre otros disponibles para la programacin de Dispositivos Lgicos Programables,
es la extensa variedad de formatos con los que cuenta y que utiliza en la descripcin
de una entidad. Es decir, en VHDL es posible describir en diferentes niveles de
abstraccin, que van desde el uso de ecuaciones y estructuras lgicas, la
descripcin mediante la simbologa de la transferencia de registros RTL, hasta la
simplicidad que puede representar una caja negra sistema-, cuya interpretacin
funcin de transferencia, la relacin entre entradas y salidas, describe el
funcionamiento de la entidad.
No obstante, en VHDL no existe de manera formal un procedimiento de diseo.
Como ya se mencion, la versatilidad en la abstraccin y la descripcin de una
entidad permiten al usuario la tarea de planear la estrategia por utilizar para una
solucin en particular. Sin duda, la experiencia en programacin puede ser un factor
importante de diseo, sin embargo, VHDL posee una estructura de programacin
tan amigable que es muy fcil de entender, aun por personas que no han tenido
relacin con lenguaje de programacin.
De manera general y con base en cmo se presenta la entidad (entity), a
primera vista, en VHL se pueden distinguir los siguientes estilos de programacin:
Estilo por flujo de datos
Estilo funcional
Estilo estructural
Descripcin por flujo de datos
La descripcin por flujo de datos muestra con detalle la transferencia de informacin
entre las entradas y las salidas de una entidad. Este estilo, totalmente comprensible
para el usuario, se recomienda para quienes inician en la programacin de en
VHDL, en materias como Diseo Lgico, donde las tablas de verdad y las
ecuaciones lgicas son parte fundamental en la descripcin de un circuito lgico.
Para una mejor comprensin de la descripcin por flujo, considrese la tala
de verdad de la figura 1.21; como se puede observar la tabla tienen dos entradas,
A y B, y dos salidas F0 y F1. Para fines explicativos, tambin se h agregado el
minitermino correspondiente (m) a cada combinacin de entrada. Por ejemplo, el
minitermino m0 hace referencia a la combinacin cero de entrada A=0 y B=0.
A continuacin se realiza la descripcin del cdigo lnea por lnea. En las lneas 2 y
3 se escriben la librera y el paquete respectivamente. En tanto, de las lneas 4 y 7
se escribe la entidad. Como se puede ver, las entradas y las salidas se utilizaron de
manera individual; ntese que en estas se mezcl el uso de las letras maysculas
y minsculas, lo cual resulta irrelevante para el compilador.
En la lnea 7 se escribe la arquitectura identificada como flujo; la sentencia se lee:
-La arquitectura flujo asignada a la entidad tabla es-.
En la lnea 8 se inicia el programa con la declaracin begin. De modo que la lnea
9 se asigna a la variable F0 el valor lgico de uno (1), corresponde a la primera
combinacin de las entradas A=0 y B=0 de la siguiente tabla de verdad:
Es decir, asigna a la variable F0 el valor de uno (<= 1), cuando (when) la variable
A es igual a cero (0) y (and) cuando la variable B es igual a cero (0), sino (else).
La sentencia es la siguiente:
De nueva cuenta, la instruccin sino else analiza el siguiente rengln; en este caso,
la salida F0 para la combinacin m2, m3 son cero (0), lo que origina que en la lnea
11 termine la asignacin a la variable F0 con el punto y coma final (;).
Para ejemplificar considrese otra vez la tabla de verdad de la entidad anterior, que
se presenta nuevamente en la figura 1.25
Descripcin funcional
En una descripcin funcional lo ms importante es el conocimiento global del
sistema, razn por la cual las entidades diseadas bajo este estilo son
programadas como una caja negra; es decir, no importa la organizacin o la
estructura interna de la entidad, solo se requiere que el programa conozca lo
que espera obtener en la salida y la forma en que operan las pins de entrada.
Por ejemplo, considrese una entidad en la cual existe una salida C que adopta
el valor C=1 cuando las seales de entrada, A y B, son iguales; en caso contrario,
la salida C toma el valor de cero C=0. Entonces, la sntesis del problema sera
la siguiente
Descripcin estructural
Como su nombre lo indica, una descripcin estructural basa su comportamiento
en modelos lgicos ya establecidos (compuertas, sumadores, contadores,
proyectos especiales, etc.) Es importante destacar que estas estructuras pueden
ser diseadas por el usuario y guardadas para su posterior utilizacin o extradas
de los paquetes contenidos en las libreras de diseo del software que se est
utilizando, como se ver ms adelante.
En la figura 1131 se muestra una representacin esquemtica de una entidad que
cuenta con dos variables de entrada de 2 bits (a0, a1 y b0, b1. En su construccin
se han empleado dos compuertas nor exclusivas y una compuerta and.
Para ejemplificar, considrese que cada una de estas compuertas (modelos lgicos)
se encuentra dentro del paquete gates, del cual son extradas para estructurar el
diseo. Este paquete diseado con anterioridad (mismo que se describir con
detalle en los prximos captulos).
A fin de iniciar la programacin de una entidad de manera estructural, es
necesario la descomposicin lgica del diseo en pequeos submodulos
(jerarquizar), los cuales permiten analizar de manera prctica el circuito, ya que la
funcin de entrada/salida es conocida (vase figura 1.32). As la indicacin xnor2
considera una compuerta xnor de 2 entradas.
Es importante resaltar que una jerarqua en VHDL se refiere al hecho de
dividir en bloques y no a que un bloque tenga mayor peso que otro. Esta manera de
fragmentar el problema hace que la descripcin estructural una forma sencilla de
programar, la cual dentro del contexto del diseo lgico- es posible distinguir
cuando se analiza por separado alguna seccin de un sistema integral.
De acuerdo con nuestro ejemplo, se conoce la funcin de salida de las dos
compuertas xnor, por lo que al unirlas a la compuerta and, la salida c es solo el
resultado de la operacin and efectuada internamente a travs de las seales
signal x0 y x1.
El siguiente listado muestra el cdigo del programa de esta entidad, donde
desde la lnea 3 hasta la 6 se detalla la entidad denominada estructura, la cual
considera dos variables de entrada de dos bits cada una , a (0:1) y b(0:1), como
vector y la seal c individualmente.