Sunteți pe pagina 1din 31

1.

VHDL ESTRUCTURA Y SU ORGANIZACIN (2)


1.1 VHDL SU ESTRUCTURA(3)
1.2 IDENTIFICADORES..(10)
1.3 ARQUITECTURA (ARCHITECTURE).(18)
1.4 COMPARACIN ENTRE LOS ESTILOS DE
DISEO.(30)
BIBLIOGRAFIA.....(31)

1. VHDL ESTRUCTURA Y ORGANIZACON

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.

1.1 VHDL ESTRUCTURA


El lenguaje de descripcin en hardware VHDL se estructura en mdulos o unidades
funcionales, identificadores mediante una palabra reservada y particular de este
lenguaje (vase figura 1.2). En tanto, a su vez, cada mdulo tiene una secuencia de
instrucciones o sentencias, las cuales, en conjunto con las declaraciones de las
unidades involucradas en el programa, permiten la descripcin, la comprensin, la
evaluacin y la solucin de un sistema digital.
Al interior de la estructura de un programa, las unidades Entidad (Entity) y
Arquitectura (Architecture)-en conjunto-forman la columna vertebral de este
lenguaje. Por su parte, los mdulos restantes, no necesariamente utilizados en la
bsqueda de una solucin, sirven entre otras cosas para optimizar y generalizar la
aplicacin en futuros desarrollos, como se ver cuando la ocasin se presente. Sin
embargo, en este momento nuestra atencin se centra en describir la funcin de la
entidad y la arquitectura.

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.

La descripcin de este programa se muestra en el listado 1.1, donde los nmeros


de las lneas (1, 2, 3, 4,5) no son parte del cdigo y sern utilizadas como referencia
para explicar alguna seccin en particular. En tanto, las palabras en negritas estn
reservadas para el lenguaje de programacin, es decir, tienen un significado
especial para el programa.

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.

Aspectos importantes a considerar


Como en cualquier lenguaje de programacin, es importante hacer notar que VHDL
tambin sigue una sintaxis y una semntica en el cdigo de programacin, las
cuales es necesario respetar lo siguiente.
Punto y coma(;): Se utiliza para cerrar y finalizar declaraciones
Dos puntos (:): En este caso se usan como separador entre el nombre de
los puertos y los modos de entrada.
El parntesis: Despus del modo de sala out bit cierra la declaracin de los
puertos (port).
El uso de maysculas o las minsculas en la declaracin es irrelevante
para el compilador.
1.2 IDENTIFICADORES
Los identificadores son simplemente los nombres o las etiquetas que se usan para
hacer referencia a variables, constantes, seales, procesos, etc. Estos
identificadores pueden ser nmeros, letras del alfabeto y/o guiones bajos que
separan caracteres. Es importante resaltar que no existe una restriccin en cuanto
a su longitud. Todos los identificadores deben de seguir ciertas especificaciones o
reglas para que puedan ser compilados sin errores (vase tabla 1.1)

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:

En VHDL, el conjunto bits ordenados pueden considerarse como vectores de bits,


los cuales deben tomarse en cuenta en un grupo y no como bits individuales.
Asimismo, en VHDL la manera de describir una configuracin que use vectores
radica en la utilizacin de la sentencia bit_vector; as, la forma en la que se ordenan
se indica como ascendente to o como descendente downto. Por su parte, el
rango o el nmero de bits que utiliza el vector se representa en la notacin siguiente:
As, por ejemplo, la sentencia 3 downto 0 involucra un vector de 4 bits (3:0). Para
su ejemplificacin, consideremos la entidad proyecto y el cdigo de programacin
mostrado en la figura 1.14

La descripcin de este ejemplo es la siguiente.


En la lnea 3, las entradas Ay B se declaran como vectores de entrada de 4
bits ordenados de forma descendente (3:0).
En la lnea 4, la variable C se declara como un vector de entrada/salida de 4
bits ordenado de forma descendente (3:0).
En la lnea 5, la variable de salida S es un vector de 4 bits ordenados de
forma descendente; en esta lnea considrese el doble parntesis al final de
la instruccin. El primero es parte del rango del vector y el segundo marca el
cierre de la declaracin de los puertos (port).
Declaracin de entidades utilizando libreras y paquetes
Un aspecto importante en la programacin con VHDL radica en el uso de libreras y
paquetes que permiten declarar y almacenar estructuras lgicas, seccionadas o
completas, y que facilitan el diseo. Una librera (biblioteca) es un lugar al cual se
accede para emplear las unidades de diseo predeterminadas por el fabricante de
la herramienta (paquete), y que se aplican para agilizar el diseo, adems de que
tambin permiten almacenar el resultado obtenido de la complicacin de un diseo,
con el fin de que este pueda sr utilizado entro de uno o varios programas.
En VHDL se encuentran definidas diversas libreras; su cantidad depende de las
herramientas que el fabricante del software ha instalado. Por lo general, siempre
hay dos libreras: ieee y work Cypress Semiconductor Ver 5.2 (vase figura
1.17). Al interior de la librera ieee se ubica el paquete std_logic_1164, mientras que
en la librera work se localizan los paquetes numeric_std, std_arith y gates.

Un paquete es una unidad de diseo que permite desarrollar un programa en VHDL


de manera gil, debido a que en este se encuentran algoritmos preestablecidos
(sumadores, restadores, contadores, etc.) que ya tienen optimizado un determinado
comportamiento. Por esta razn el diseador no necesita caracterizar paso a paso
una nueva unidad de diseo si esta ya se ubica almacenada en algn paquete; en
este caso, solo basta llamarlo y especificarlo dentro del programa.
Por tanto, un paquete no es ms que una unidad de diseo formada por
declaraciones, programas, componentes y subprogramas que incluyen los diversos
tipos de datos (bit, booleano, std_logic) empleados en la programacin en VHDL, y
que por lo general forman parte de las herramientas en software. Cuando en el
diseo se utiliza algn paquete, es necesario llamar a la librera que lo contiene, lo
cual se llama a cabo a travs de la siguiente declaracin:
library ieee;
Esta declaracin permite el empleo de todos los componentes incluidos en la
librera ieee. En el caso de la librera de trabajo (work), su uso no requiere de la
declaracin library, dado que la carpeta work siempre est presente al desarrollar
un diseo.

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:

El trmino else-sino propicia el anlisis de la siguiente condicin en la tabla de


verdad: minitermino, m.
En la lnea 10 se asigna el valor de 1 cuando las combinaciones de entrada para
Ay B son A=0 and B=1. 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 (;).

En el caso de la salida F1, es posible observar si ningn esfuerzo que es ms


conveniente declarar la combinacin m3, es decir F1=0 when A=1 y B=1 sino 1;
lneas 12 y 13, respectivamente.

Como se puede observar, en este estilo de declaracin, el flujo de datos, es muy


fcil dirigir y describir el camino que los datos siguen dentro de la entidad. Otra
opcin de esta descripcin es apoyarse en los operadores lgicos (and, not, or, xor,
xnor, etc.) para obtener una solucin.

Para ejemplificar considrese otra vez la tabla de verdad de la entidad anterior, que
se presenta nuevamente en la figura 1.25

Las ecuaciones lgicas para las salidas F0 y F1 son:

Su declaracin utilizando los operadores lgicos incluidos en el lenguaje son:

En consecuencia, el programa queda como se muestra a continuacin:


Como se puede ver, el diseo que resulta de la utilizacin de los operadores lgicos
del algebra booleana o de la declaracin mediante la estructura When-else se utiliza
con mucha frecuencia en entidades o proyectos donde el diseador puede acceder
con facilidad al formato de tabla de verdad.
Operadores lgicos
Los operadores lgicos que se utilizan en la descripcin con ecuaciones booleanas
y que estn definidos dentro de los diferentes tipos de datos bit, boolean o
std_logic- son operadores: and, or, nand, xor, xnor, y not. Las operaciones que se
efecten entre estos (excepto not) deben realizarse con datos que tengan la misma
longitud o palabra de bits.
Los operadores lgicos presentan el siguiente orden y prioridad al momento
de ser compilados:
1) Expresiones entre parntesis
2) Complementos
3) Funcin and
4) Funcin or
Las operaciones xor y xnor son transparentes al compilador, el cual las interpreta
mediante la suma de productos correspondientes a su funcin.
Aspectos importantes por considerar
Se utiliza - una comilla para expresar un valor individual,
Se utiliza -doble comilla para describir un grupo de bits vector.
Como ejemplo del uso de operadores lgicos en VHDL, obsrvese la tabla 1.3.

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

A continuacin se muestra el cdigo que representa la descripcin del circuito.


Ntese que la declaracin de la entidad (entity) se encuentra descrita entre las
lneas 4 y 7; en tanto que de las lneas 8 a la 18 se desarrolla el algoritmo
(architecture) que describe el funcionamiento de la entidad. Para iniciar la
declaracin de la arquitectura (lnea 8), es necesario definir un nombre
arbitrario con el que esta declaracin de la arquitectura pueda ser referenciada.
En este caso, el nombre asignado es caja, adems de incluir a la entidad con
la cual est relacionada (funcional).
Por su parte, en la lnea 9 se observa el inicio (begin) de la seccin donde
se comienzan a declarar los procesos que rigen el comportamiento del
sistema.
Una declaracin funcional utiliza una nueva sentencia denominada process
est acompaada de una lista sensitiva entre parntesis (A,B), que hace
referencia a las seales que determinan el funcionamiento del proceso- el cual
debe entenderse como el hecho de que el algoritmo es sensible al cambio de
valor de estas variables-. En la lnea 11 inicia la ejecucin del proceso
mediante la palabra reservada begin.
Siguiendo con el anlisis, se puede advertir que de la lnea 12 a la 16 el
proceso se ejecuta mediante la declaracin del tipo if-then-else (si-entonces-
sino). Esto se interpreta como sigue (linea12): si el valor de la seal A es igual
a l valor de la seal B, entonces el valor de 1 se asigna a la variable C, sino
se asigna a C el valor de cero0.
En la lnea 16 se cierra el if de la lnea 12. Entonces, el proceso se termina
con la palabra reservada end process y la arquitectura se cierra de la forma
acostumbrada end caja.
Como se puede observar, la descripcin funcional se basa de manera
principal en el uso de procesos y de declaraciones secuenciales, las cuales
permiten de forma rpida el modelado de la funcin.
Con la finalidad de reforzar este tipo de programacin, considrese la figura
1.30, en la cual se ha detallado la compuerta OR, cuya funcin de transferencia
es bien conocida, adems de que puede distinguirse en la tabla de verdad que
se muestra en la figura 1.29. De esta manera, una descripcin funcional sera
de la forma siguiente:
A partir del texto anterior se distingue cmo la compuerta or solo produce el
valor cero f1=0 cuando a y b son iguales; en caso contrario, la salida es 1, f=1
lnea 14. Ntese que la lnea 11 tiene una descripcin muy similar al estilo flujo
de datos.

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.

De modo que los componentes xnor y and no se declaran, debido a que se


encuentran incluidos en el paquete gatespkg, el cual a su vez est contenido dentro
de la librera de trabajo (work), en la lnea 7.
En la lnea 8 se inicia con la declaracin de la arquitectura nombrada
estructural.
En la lnea 9 se declara signal x, que involucra las seales (x0 y x1), que se
declaran dentro de la arquitectura y no en la entidad, debido a que no representan
a una terminal (pin) y solo se usan para conectar bloques de manera interna a la
entidad.
La conectividad de los bloques o submodulos se describe de la lnea 11 a la 13.
Cada compuerta se maneja como un bloque lgico independiente (componente) del
diseo original, al cual se le asigna una variable temporal (U0, U1 y U2); en tanto,
la salida de los bloques U0, U1 se maneja como una seal.
De forma que la compuerta and2 recibe las dos seales provenientes de x
(x0 y x1), ejecuta la operacin y asigna el resultado a la salida c del circuito (lnea
13).
Es importante resaltar que en la lnea 9 se ha declarado la seal x como un vector
ascendente de tres bits: (x (0), x (1), x (2)).

1.4 COMPARACIN ENTRE LOS ESTILOS DE


DISEO
El estilo de diseo utilizado en la programacin depende de manera exclusiva del
diseador y de la complejidad del proyecto. Por ejemplo, un diseo puede
describirse mediante ecuaciones booleanas, pero si este es muy extenso quiz
sea ms apropiado hacerlo a travs de estructuras jerrquicas para dividirlo.
Ahora bien, si se requiere disear un sistema cuyo funcionamiento dependa solo
de sus entradas y sus salidas, es conveniente emplear la descripcin funcional, la
cual tiene la ventaja de requerir n nmero menor de instrucciones, adems de que
el diseador no necesita un conocimiento previo de la funcin de cada
componente que forma el circuito.

S-ar putea să vă placă și