Вы находитесь на странице: 1из 36

1

CORPORACIN UNIVERSIDAD DE LA COSTA CUC.
















HERRAMIENTA DIDCTICA PARA EL APRENDIZAJE DE LA
LGICA PROGRAMABLE

SISTEMAS EMBEBIDOS II















FACULTAD DE INGENIERA.
INGENIERA ELECTRNICA.





2

Contenido
Preconceptos. ................................................................................................................................. 6
Herramientas CAD-EDA. ........................................................................................................ 6
I. Lenguajes de descripcin de circuitos. .................................................................... 7
II. Diagramas esquemticos ............................................................................................ 7
III. Grafos y diagramas de flujo. .................................................................................... 7
IV. Simulacin de eventos. ............................................................................................... 8
V. Simulacin funcional ...................................................................................................... 8
VI. Simulacin digital. ......................................................................................................... 8
VII. Simulacin elctrica. .................................................................................................. 8
VIII. Diseo de PCBs. ......................................................................................................... 8
IX. Diseo de circuitos integrados. ................................................................................ 8
X. Diseo con dispositivos programables. Estas herramientas facilitan la
programacin de dispositivos, ya sean PALs, PLDs, CPLDs o FPGAs. .............. 8
Diseo Botton-up. .................................................................................................................... 8
Diseo Top-Down. .................................................................................................................... 9
Ventajas del Diseo Top-Down. .................................................................................... 10
Lenguajes Descriptores de Hardware............................................................................. 11
Ventajas de los HDLs. ....................................................................................................... 12
VHDL Very High Speed Integrated Circuit Hardware Description Language. ..... 12
Descripcin estructural y comportamental. ................................................................. 13
Ventajas:................................................................................................................................ 13
Elementos sintcticos del VHDL. ...................................................................................... 14
Comentarios: ........................................................................................................................ 14
Identificadores: ................................................................................................................... 14
Nmeros ................................................................................................................................. 14
Caracteres: ........................................................................................................................... 14
Cadenas: ................................................................................................................................ 14
Cadenas de bits: ................................................................................................................. 14
Operadores. .............................................................................................................................. 14
Operadores varios. ............................................................................................................. 15
Operadores aritmticos .................................................................................................... 15
3

Operadores de desplazamientos. ................................................................................. 15
Operadores relacionales. ................................................................................................. 16
Tipos de datos. ........................................................................................................................ 16
Tipos escalares. ................................................................................................................... 16
Tipos compuestos. ............................................................................................................. 17
Subtipos de datos. ................................................................................................................. 18
Entidad y arquitectura. ......................................................................................................... 19
Entidad (Entity). .................................................................................................................. 19
Arquitectura (Architecture). ........................................................................................... 20
Elementos en VHDL. .............................................................................................................. 21
Constantes. ........................................................................................................................... 21
Variables. ............................................................................................................................... 22
Seales. .................................................................................................................................. 22
Estilos de descripcin en VHDL. ........................................................................................ 22
Flujo de datos. ..................................................................................................................... 22
Comportamental. ................................................................................................................ 23
Sentencia de espera: Wait. ............................................................................................ 23
Sentencias condicionales: if, then, else. ................................................................... 24
Sentencia de seleccin: case. ........................................................................................ 24
Bucle: loop. ........................................................................................................................... 24
Estructural............................................................................................................................. 25
Mquinas de estado. ......................................................................................................... 26
Subprogramas, paquetes y libreras. .............................................................................. 26
Subprogramas. .................................................................................................................... 27
Libreras, paquetes y unidades. ........................................................................................ 29
Elementos: ............................................................................................................................ 29
Lgica Programable. .................................................................................................................. 30
Lgica Programable Vs Lgica Standard ....................................................................... 31
Lgica estndar. .................................................................................................................. 31
Circuitos Digitales Implementados Mediante Dispositivos Lgicos
Programables (PLDs). ....................................................................................................... 32
Estructura de los PLD. .......................................................................................................... 32
4

Matriz de Interconexiones ............................................................................................... 33
Tipos de PLD. ........................................................................................................................... 33
Dispositivo de arreglo de lgica programable. ........................................................ 34
Dispositivo lgico de arreglo programable PAL. ..................................................... 34
Dispositivo lgico programable complejo CPLD. .................................................... 35
Red de compuertas lgicas programables FPGA. ................................................... 36
























5

Tabla de ilustraciones.
Ilustracin 1 Ciclo de diseo del hardware. ....................................................................... 7
Ilustracin 2 Metodologa de diseo Botton up ................................................................ 9
Ilustracin 3 Filtro FR. .............................................................................................................. 10
Ilustracin 4 Entidad de diseo Jerrquico. ..................................................................... 19
Ilustracin 5 Arquitectura en base a la entidad. ............................................................ 20
Ilustracin 6 Sumador completo de un bit, con entradas (s1, s2, cin) y salidas
(suma, cout) ................................................................................................................................. 21
Ilustracin 7 Diseo comportamental de un FlipFlop con reset asncrono. ......... 23
Ilustracin 8 Ejemplo del uso de sentencia wait. .......................................................... 24
Ilustracin 9 Ejemplo uso del case...................................................................................... 24
Ilustracin 10 Ejemplo del bucle loop. ............................................................................... 25
Ilustracin 11 Ejemplo de contadores en cascada. ....................................................... 25
Ilustracin 12 Ejemplo mquina de estado. .................................................................... 26
Ilustracin 13 Electronic logic components. .................................................................... 31
Ilustracin 14 Acrnimos. ....................................................................................................... 31
Ilustracin 15 Circuito digital. Implementacin con lgica estndar. .................... 32
Ilustracin 16 Matriz de interconexiones. ......................................................................... 33
Ilustracin 17 Ejemplo de un PLD. ...................................................................................... 34
Ilustracin 18 Diagrama PLA. ................................................................................................ 34
Ilustracin 19 Diagrama PAL.................................................................................................. 35
Ilustracin 20 Estructura interna de un CPLD. ............................................................... 35
Ilustracin 21 Estructura general de una red de compuertas lgicas
programables. .............................................................................................................................. 36
Ilustracin 22 Estructura de la configuracin por bloques de una FPGA. ............ 36











6

Preconceptos.

En este apartado encontrars definiciones que te sern tiles para el desarrollo de la
temtica propuesta en este curso.

Estos preconceptos te quedarn an ms claros una vez conozcas los siguientes
apartados:

Herramientas CAD-EDA.
Diseo Botton-up.
Diseo Top-Down.
Lenguajes Descriptores de Hardware.


Herramientas CAD-EDA.

El concepto de herramientas CAD-EDA. CAD son las siglas de Computer Aided Design,
o diseo asistido por computadora el cual constituye todo un proceso de trabajo utilizando
tcnicas de anlisis apoyadas en grficos mediante sofisticadas herramientas de software
las cuales facilitan el estudio de los problemas asociados con el diseo en cuestin. El
concepto CAD se relaciona con el dibujo como parte importante en el proceso de diseo,
pero adems, el diseo de un circuito debe cumplir con los requerimientos especificados
por el equipo de diseo, por las normas de calidad existentes, los costos, etc. por lo que las
herramientas CAD intervienen en todas las fases del diseo; ya que no slo son importantes
por acelerar el desarrollo del sistema al permitir que varias personas puedan trabajar
simultneamente en distintas etapas del diseo sino que, adems, es posible verificar el
funcionamiento del circuito mediante la simulacin del sistema.

Todo esto simplifica la tarea del equipo de diseo y conduce a la conclusin del prototipo
en menos tiempo. EDA, Electronic Design Automation, es el nombre que se le da a todas
las herramientas de hardware y software en el diseo de sistemas electrnicos; porque no
slo el software es importante, tambin lo es el hecho de que las computadoras cada da
son ms veloces y de mayor capacidad de procesamiento, lo cual influye en el proceso de
diseo de circuitos electrnicos. El diseo de hardware tiene un problema fundamental,
que no existe en desarrollo de software, y es el alto costo del ciclo de diseo de desarrollo
del prototipo, el cual incluye pruebas, correccin de fallas y si es necesario reinicio del ciclo
de diseo, ya que el costo del prototipo generalmente suele ser bastante elevado. Se
impone la necesidad de reducir este ciclo de diseo para no incluir la fase de desarrollo del
prototipo ms que al final del proceso, evitando la repeticin de varios prototipos que es lo
que encarece el ciclo. Para ello se introduce la fase de simulacin y verificacin de circuitos
utilizando herramientas EDA, de tal forma que no sea necesario implementar fsicamente
un prototipo para comprobar el funcionamiento del circuito.

En el ciclo de diseo de circuitos, las herramientas EDA estn presentes en todas las fases.
Primero en la fase de generacin del sistema que puede representarse mediante un
diagrama esquemtico, a bloques o de flujo. Se encuentran tambin en la fase de
simulacin y comprobacin de circuitos, donde diferentes herramientas permiten verificar el
funcionamiento del sistema. Estas simulaciones pueden ser de eventos, funcionales,
digitales o elctricas, de acuerdo al nivel de simulacin requerido. Despus estn las
herramientas EDA utilizadas en la sntesis y programacin de circuitos digitales en
7

dispositivos lgicos programables. Existen adems, las herramientas EDA orientadas a la
fabricacin de circuitos. En el caso del diseo de hardware estas herramientas sirven para
la realizacin de PCBs (Printed Circuit Boards o Placas de Circuito Impreso), o para
desarrollar circuitos integrados de aplicacin especfica conocidos como ASICs
(Application Specific Integrated Circuits).


Ilustracin 1 Ciclo de diseo del hardware.

A continuacin se mencionan las principales caractersticas y finalidad de algunas
herramientas EDA que intervienen en el diseo de circuitos.

I. Lenguajes de descripcin de circuitos. Son lenguajes mediante los cuales es posible
describir el funcionamiento y estructura de un circuito elctrico o digital. La descripcin
puede ser mediante bloques donde se muestra la arquitectura del diseo, o de
comportamiento, es decir, se describe el funcionamiento del circuito en vez de especificar
los elementos de los que est compuesto.

II. Diagramas esquemticos. Es la forma clsica de describir un diseo electrnico y la
ms extendida, ya que era la nica usada antes de la aparicin de las herramientas de EDA.
La descripcin est basada en un plano, donde se muestran los diferentes componentes
utilizados en el circuito.

III. Grafos y diagramas de flujo. Es posible describir un circuito o sistema mediante
diagramas de flujo, mquinas de estados, etc. En este caso sera una descripcin grfica
y adems sera comportamental, porque no es una descripcin mediante componentes.
8


IV. Simulacin de eventos. Estas herramientas se usan para la simulacin de circuitos a
grandes rasgos. En esta simulacin, los componentes ms importantes son elementos de
alto nivel como discos duros, buses de comunicaciones, memorias RAM etc.

V. Simulacin funcional. Bajando al nivel de compuertas digitales se puede realizar una
simulacin funcional de las mismas. Este tipo de simulacin comprueba la operacin de
circuitos digitales a partir del comportamiento lgico de sus elementos con el fin de
comprobar el funcionamiento en conjunto del circuito mediante unos estmulos dados.
Similar a lo que se realiza en un laboratorio.

VI. Simulacin digital. Esta simulacin, tambin exclusiva de los circuitos digitales, es
como la anterior con la diferencia de que se tienen en cuenta los retardos de propagacin
de cada compuerta. Es una simulacin muy cercana al comportamiento real del circuito y
prcticamente garantiza el funcionamiento correcto del mismo. En las herramientas EDA
este tipo de simulacin se conoce como anlisis temporal o timing.

VII. Simulacin elctrica. Es la simulacin de ms bajo nivel donde las respuestas del
sistema se verifican al nivel de transistor. Sirven tanto para circuitos analgicos como
digitales y su respuesta es prcticamente idntica a la realidad ya que se prueban retardos
de tiempo, niveles de voltaje, disipacin de potencia, etc.

VIII. Diseo de PCBs. Con estas herramientas es posible realizar el trazado de pistas para
la fabricacin de placas de circuitos impresos.

IX. Diseo de circuitos integrados. Son herramientas EDA que sirven para la realizacin
de circuitos integrados. Las capacidades grficas de estas herramientas permiten la
realizacin de las diferentes mscaras que intervienen en la realizacin de stos.

X. Diseo con dispositivos programables. Estas herramientas facilitan la
programacin de dispositivos, ya sean PALs, PLDs, CPLDs o FPGAs.


Diseo Botton-up.

El termino Diseo Bottom-Up (diseo de abajo hacia arriba) se aplica al mtodo de diseo
mediante el cual se realiza la descripcin del circuito o sistema que se pretende realizar,
empezando por describir los componentes ms pequeos del sistemas para, ms tarde,
agruparlos en diferentes mdulos, y estos a su vez en otros mdulos hasta llegar a uno solo
que representa el sistema completo que se pretende realizar. En la figura se muestra esta
metodologa de diseo.
9


Ilustracin 2 Metodologa de diseo Botton up

Esta metodologa de diseo no implica una estructuracin jerrquica de los elementos del
sistema. Esta estructuracin, al contrario de lo que ocurre en el diseo Top-Down que se
ver despus, se realiza una vez realizada la descripcin del circuito, y por tanto no resulta
necesaria.

En un diseo Bottom-Up se empieza por crear una descripcin, con esquemas por ejemplo,
de los componentes del circuito. Estos componentes pertenecen normalmente a una librera
que contiene chips, resistencias, condensadores, y otros elementos que re-presentan
unidades funcionales con significado propio dentro del diseo. Estas unidades se las puede
conocer por el nombre de primitivas puesto que no es necesario disponer de elementos de
ms bajo nivel para describir el circuito que se pretende realizar.

En general, esta forma de desafiar no es muy buena, ya que es un flujo de diseo bastante
ineficiente. Para diseos muy grandes, como los actuales, no se puede esperar unir miles
de componentes a bajo nivel y pretender que el diseo funcione adecuada-mente. El hecho
de unir un nmero elevado de componentes entre s sin una estructura ms elevada que
permita separarlos en bloques hace que sea complejo el anlisis del circuito, lo que provoca
dificultades a la hora de detectar fallos en el circuito, anomalas de funcionamiento, etc. Con
esto, la probabilidad de cometer errores de diseo se hace ms elevada. Para poder
encontrar errores de diseo, o saber si el circuito realizara la funcin para la que ha sido
diseado, es necesario perder mucho ms tiempo en lo que es la definicin, diseo y
anlisis en alto nivel para ver entonces si funciona como deseamos.


Diseo Top-Down.

El diseo Top-Down es, en su ms pura forma, el proceso de capturar una idea en un alto
nivel de abstraccin, e implementar esa idea primero en un muy alto nivel, y despus ir
hacia abajo incrementando el nivel de detalle, segn sea necesario. Esta forma de disear
se muestra grficamente en la figura inicial, donde el sistema inicial se ha dividido en
diferentes mdulos, cada uno de los cuales se encuentra a su vez subdividido hasta llegar
a los elementos primarios de la descripcin.

10

Los aos 80 trajeron una revolucin en las herramientas para el diseo por ordenador.
Aunque esto no modifico la forma de disear s que mejoro la facilidad de hacerlo. As,
mediante el software disponible por ordenador, se podan disear circuitos ms complejos
en comparativa, cortos periodos de tiempo (aunque se siguiera utilizando el diseo Bottom-
Up).


Ilustracin 3 Filtro FR.

Pero hoy en da, nos encontramos en un marco en que es necesario hacer diseos ms y
ms complicados en menos tiempo. As, se puede descubrir que el flujo de diseo Bottom-
Up es bastante ineficiente. El problema bsico del diseo Bottom-Up es que no permite
acometer con xito diseos que contengan muchos elementos puesto que es fcil
conectarlos de forma errnea. No se puede esperar unir miles de componentes de bajo
nivel, o primitivas, y confiar en que el diseo funcione adecuadamente.

Bajo esta metodologa de diseo, un problema en principio muy complejo, es dividido en
varios subproblemas que a su vez pueden ser divididos en otros problemas mucho ms
sencillos de tratar. En el caso de un circuito esto se traduccin en la divisin del sistema
completo en mdulos, cada uno de los cuales con una funcionalidad determinada. A su vez,
estos mdulos, dependiendo siempre de la complejidad del circuito inicial o de los mdulos,
se pueden dividir en otros mdulos lista llegar a los componentes bsicos del circuito o
primitivas.

Ventajas del Diseo Top-Down.

Incrementa la productividad del diseo. Este flujo de diseo permite especificar
funcionalmente en un nivel alto de abstraccin sin tener que considerar la implementacin
del mismo a nivel de puertas lgicas. Por ejemplo se puede especificar un diseo en VHDL
y el software utilizado generara el nivel de puertas directa-mente. Esto minimiza la cantidad
de tiempo utilizado en un diseo.
Incrementa la reutilizacin del diseo. En el proceso de diseo se utilizan tecnologas
genricas. Esto es, que no se fija la tecnologa a utilizar lista pasos posteriores en el
proceso. Esto permite reutilizar los datos del diseo nicamente cambiando la tecnologa
de implementacin. As es posible crear un nuevo diseo de uno ya existente.
11

Rpida deteccin de errores. Como se dedica ms tiempo a la definicin y al diseo, se
encuentran muchos errores pronto en el proceso de descripcin del circuito.


Lenguajes Descriptores de Hardware.

Los lenguajes de descripcin de hardware (HDLs) son utilizados para describir la
arquitectura y comportamiento de un sistema electrnico los cuales fueron desarrollados
para trabajar con diseos complejos. Comparando un HDL con los lenguajes para el
desarrollo de software vemos que en un lenguaje de este tipo un programa que se
encuentra en un lenguaje de alto nivel (VHDL) necesita ser ensamblado a cdigo mquina
(compuertas y conexiones) para poder ser interpretado por el procesador. De igual manera,
el objetivo de HDL es describir un circuito mediante un conjunto de instrucciones de alto
nivel de abstraccin para que el programa de sntesis genere (ensamble) un circuito que
pueda ser implementado fsicamente. La forma ms comn de describir un circuito es
mediante la utilizacin de esquemas que son una representacin grfica de lo que se
pretende realizar.

Con la aparicin de herramientas EDA cada vez ms complejas, que integran en el mismo
marco de trabajo las herramientas de descripcin, sntesis, simulacin y realizacin;
apareci la necesidad de disponer de un mtodo de descripcin de circuitos que permitiera
el intercambio de informacin entre las diferentes herramientas que componen el ciclo de
diseo. En principio se utiliz un lenguaje de descripcin que permita, mediante sentencias
simples, describir completamente un circuito. A estos lenguajes se les llam Netlist puesto
que eran simplemente eso, un conjunto de instrucciones que indicaban las interconexiones
entre componentes de un diseo.

A partir de estos lenguajes simples, que ya eran autnticos lenguajes de descripcin
hardware, se descubri el inters que podra tener el describir circuitos utilizando un
lenguaje en vez de usar esquemas. Sin embargo, se siguieron utilizando esquemas puesto
que desde el punto de vista del ser humano son mucho ms sencillos de entender, aunque
un lenguaje siempre permite una edicin ms rpida y sencilla. Conforme las herramientas
de diseo se volvieron ms sofisticadas, y la posibilidad de desarrollar circuitos digitales
mediante dispositivos programables era ms viable, apareci la necesidad de poder
describir los circuitos mediante un lenguaje de alto nivel de abstraccin. No desde un punto
de vista estructural, sino desde el punto de vista funcional. Este nivel de abstraccin se
haba alcanzado ya con las herramientas de simulacin, ya que para poder simular partes
de un sistema era necesario disponer de modelos que describieran el funcionamiento de
bloques del circuito o de cada componente si fuera necesario.

Estos lenguajes estaban sobre todo orientados a la simulacin, por lo que poco importaba
que el nivel de abstraccin fuera tan alto que no fuera sencillo una realizacin o sntesis a
partir de dicho modelo. Con la aparicin de tcnicas para la sntesis de circuitos a partir de
lenguajes de alto nivel de abstraccin, se comenzaron a utilizar los lenguajes de simulacin
para sintetizar circuitos. Que si bien alcanzan un altsimo nivel de abstraccin, su
orientacin era bsicamente la de simular, por lo que los resultados de una sntesis a partir
de descripciones con estos lenguajes no eran siempre las ms ptimas. Adems, los
lenguajes de descripcin de hardware al formar parte de las herramientas EDA permiten el
trabajo en equipo. As, al estructurar el desarrollo del proyecto, cada integrante del equipo
de diseo puede trabajar en subproyectos antes de integrar todas las partes del sistema.
12

Ventajas de los HDLs.

La metodologa de diseo que utiliza un HDL posee varias ventajas sobre la metodologa
tradicional de diseo a nivel compuerta. Algunas de estas ventajas son listadas a
continuacin.

Es posible verificar el funcionamiento del sistema dentro del proceso de diseo sin
necesidad de implementar el circuito.
Las simulaciones del diseo, antes de que ste sea implementado mediante
compuertas, permiten probar la arquitectura del sistema para tomar decisiones en
cuanto a cambios en el diseo.
Las herramientas de sntesis tienen la capacidad de convertir una descripcin hecha
en un HDL, VHDL por ejemplo, a compuertas lgicas y, adems, optimizar dicha
descripcin de acuerdo a la tecnologa utilizada.
Esta metodologa elimina el antiguo mtodo tedioso de diseo mediante
compuertas, reduce el tiempo de diseo y la cantidad de errores producidos por el
armado del circuito.
Las herramientas de sntesis pueden transformar automticamente un circuito
obtenido mediante la sntesis de un cdigo en algn HDL, a un circuito pequeo y
rpido. Adems, es posible aplicar ciertas caractersticas al circuito dentro de la
descripcin para afinar detalles (retardos, simplificacin de compuertas, etc.) en la
arquitectura del circuito y que estas caractersticas se obtengan en la sntesis de la
descripcin.
Las descripciones en un HDL proporcionan documentacin de la funcionalidad de
un diseo independientemente de la tecnologa utilizada.
Un circuito hecho mediante una descripcin en un HDL puede ser utilizado en
cualquier tipo de dispositivo programable capaz de soportar la densidad del diseo.
Es decir, no es necesario adecuar el circuito a cada dispositivo porque las
herramientas de sntesis se encargan de ello.

Una descripcin realizada en un HDL es ms fcil de leer y comprender que los netlist o
circuitos esquemticos.


VHDL Very High Speed Integrated Circuit Hardware Description
Language.

VHDL, viene de VHSIC (Very High Speed Integrated Circuit) Hardware Description
Language. VHDL es un lenguaje de descripcin y modelado diseado para describir la
funcionalidad y la organizacin de sistemas hardware digitales, placas de circuitos, y
componentes.

VHDL fue desarrollado como un lenguaje para el modelado y simulacin lgica dirigida por
eventos de sistemas digitales, y actualmente se lo utiliza tambin para la sntesis
automtica de circuitos.

VHDL es un lenguaje con una sintaxis amplia y flexible que permite el modelado estructural,
en flujo de datos y de comportamiento hardware. VHDL permite el modelado preciso, en
13

distintos estilos, del comportamiento de un sistema digital conocido y el desarrollo de
modelos de simulacin.

Uno de los objetivos del lenguaje VHDL es el modelado. Lo cual implica el desarrollo de un
modelo para simulacin de un circuito o sistema previamente implementado cuyo
comportamiento se conoce.

Otro de los usos de VHDL es la sntesis automtica de circuitos. En el proceso de sntesis,
se parte de una especificacin de entrada con un determinado nivel de abstraccin, y se
llega a una implementacin ms detallada, menos abstracta. Por tanto, la sntesis es una
tarea vertical entre niveles de abstraccin, del nivel ms alto en la jerarqua de desafo se
va hacia el ms bajo nivel de la jerarqua.

Descripcin estructural y comportamental.

Existen dos formas de describir un circuito. Por un lado se puede describir un circuito
indicando los diferentes componentes que lo forman y su interconexin, de esta manera
tenemos especificado un circuito y sabemos cmo funciona; esta es la forma habitual en
que se han venido describiendo circuitos y las herramientas utilizadas para ello han sido
las de captura de esquemas y las descripciones netlist.

La segunda forma consiste en describir un circuito indicando lo que hace o como funciona,
es decir, describiendo su comportamiento. Naturalmente esta forma de describir un circuito
es mucho mejor para un diseador puesto que lo que realmente lo que interesa es el
funcionamiento del circuito ms que sus componentes.

Estructural: VHDL puede ser usado como un lenguaje de Netlist normal y
corriente donde se especifican por un lado los componentes del
sistema y por otro sus interconexiones.

Comportamental: VHDL se puede utilizar para la descripcin funcional de un circuito.
Esto es lo que lo distingue de un lenguaje de Netlist. Sin necesidad de
conocer la estructura interna de un circuito es posible describirlo
explicando su funcionalidad.

A continuacin se muestran algunas ventajas del lenguaje VHDL.

Ventajas:

VHDL permite disear, modelar, y comprobar un sistema desde un alto nivel de
abstraccin bajando hasta el nivel de definicin estructural de puertas.

Circuitos descritos utilizando VHDL, siguiendo unas guas para sntesis, pueden
ser utilizados por herramientas de sntesis para crear implementaciones de
diseos a nivel de puertas.

Al estar basado en un estndar (IEEE Std 1076-1987) los ingenieros de toda la
industria de diseo pueden usar este lenguaje para minimizar errores de
comunicacin y problemas de compatibilidad.

14

VHDL permite diseo Top-Down, esto es, permite describir (modelado) el
comportamiento de los bloques de alto nivel, analizndolos (simulacin), y refinar
la funcionalidad de alto nivel requerida antes de llegar a niveles ms bajos de
abstraccin de la implementacin del diseo.

Modularidad: VHDL permite dividir o descomponer un diseo hardware y su
descripcin VHDL en unidades ms pequeas.


Elementos sintcticos del VHDL.

VHDL posee elementos sintcticos, tipos de datos y estructuras como cualquier otro tipo de
lenguaje. El hecho de que sirva para la descripcin hardware lo hace diferente de un
lenguaje convencional. Una de estas diferencias es probablemente la posibilidad de
ejecutar instrucciones a la vez de forma concurrente.

Algunos de estos elementos sintcticos se muestran a continuacin:

Comentarios: Cualquier lnea que empieza por dos guiones "" es un comentario.

Identificadores: Son cualquier cosa que sirve para identificar variables, seales, nombres
de rutina, etc. Puede ser cualquier nombre compuesto por letras incluyendo el smbolo de
subrayado "_". Las maysculas y minsculas son consideradas iguales, as que JOSE y
Jos representan el mismo elemento. No puede haber ningn identificador que coincida
con alguna de las palabras clave del VHDL.

Nmeros: Cualquier nmero se considera que se encuentra en base 10. Se admite la
notacin cientfica convencional para nmeros en coma flotante. Es posible poner nmeros
en otras bases utilizando el smbolo del sostenido "#". Ejemplo: 2#11000100# y 16#C4#
representan el entero 196.

Caracteres: Es cualquier letra o carcter entre comillas simples: JlJ, J3J, JtJ.

Cadenas: Son un conjunto de caracteres englobados por comillas dobles: "Esto es una
cadena".

Cadenas de bits: Los tipos bit y bit vector son en realidad de tipo carcter y matriz de
caracteres respectivamente. En VHDL se tiene una forma elegante de definir nmeros con
estos tipos y es mediante la cadena de bits. Dependiendo de la base en que se especifique
el nmero se puede poner un prefijo B (binario), O (octal), o X (hexadecimal). Ejemplo:
B"1110100i", 0"126", X"FE".


Operadores.

Las expresiones en VHDL son prcticamente iguales a como pudieran ser en otros
lenguajes de programacin o descripcin, por lo que se expondrn brevemente los
existentes en VHDL y su utilizacin.

15

Operadores varios.

& (Concatenacin).
Concatena matrices de manera que la dimensin de la matriz resultante es la suma de las
dimensiones de las matrices sobre las que opera: punto<=x&y mete en la matriz punto la
matriz x en las primeras posiciones, y la matriz y en las ultimas.

Operadores aritmticos

** (Exponencial).
Sirve para elevar un nmero a una potencia: 4**2 es 42. El operador de la izquierda puede
ser entero o real, pero el de la derecha solo puede ser entero.

ABS () (valor absoluto).
Como su propio nombre indica esta funcin devuelve el valor absoluto de su argumento
que puede ser de cualquier tipo numrico.

* (Multiplicacin).
Sirve para multiplicar dos nmeros de cualquier tipo (los tipos bit o bit vector no son
numricos). / (divisin). Tambin funciona con cualquier dato de tipo numrico.

MOD (modulo).
Calcula en mdulo de dos nmeros. Exactamente se define el modulo como la operacin
que cumple: a=b*N+(a MOD b) donde N es un entero. Los operandos solo pueden ser
enteros. El resultado toma el signo de b.

REM (resto).
Calcula el resto de la divisin entera y se define como el operador que cumple: a=(a/b)*b+(a
REM b), siendo la divisin entera. Los operandos solo pueden ser enteros. El resultado
toma el signo de a.

+ (Suma y signo positivo).
Este operador sirve para indicar suma, si va entre dos operandos, o signo, si va al principio
de una expresin. La precedencia es diferente en cada caso. Opera sobre valores
numricos de cualquier tipo.

(Resta y signo negativo).
Cuando va entre dos operandos se realiza la operacin de sustraccin, y si va delante de
una expresin le cambia el signo. Los operandos pueden ser numricos de cualquier tipo.

Operadores de desplazamientos.

SLL, SRL.
(Desplazamiento lgico a izquierda y a derecha)Desplaza un vector un numero de bits a
izquierda (SLL) o derecha (SRL) rellenando con ceros los huecos libres. Se utiliza en
notacin infija de manera que el serial a la izquierda del operador es el vector que se quiere
desplazar y el de la derecha es un valor que indica el nmero de bits a desplazar. Por
ejemplo dato SLL 2 desplaza a izquierda el vector dato, es decir, lo multiplica por 4.
16


SLA, SRA
Desplazamiento aritmtico a izquierda y derecha.

ROL, ROR
(Rotacin a izquierda y a derecha), Es como el de desplazamiento pero los huecos son
ocupados por los bits que van quedando fuera.

Operadores relacionales.

Devuelven siempre un valor de tipo booleano (TRUE o FALSE). Los tipos con los que
pueden operar dependen de la operacin:

=, /= (igualdad)
El primero devuelve TRUE si los operandos son iguales y FALSE en caso contrario. El
segundo indica desigualdad, as que funciona justo al revs. Los operandos pueden ser de
cualquier tipo con la condicin de que sean ambos del mismo tipo.

<><=)>)>= (menor mayor)
Tienen el significado habitual. La diferencia con los anteriores es que los tipos de datos que
pueden manejar son siempre de tipo escalar o matrices de una sola dimensin de tipos
discretos.

Operadores lgicos.

NOT, AND, NAND, OR, NOR y XOR. El funcionamiento es el habitual para este tipo de
operadores. Actan sobre los tipos bit, bit vector y boolean. En el caso de realizarse estas
operaciones sobre un vector, la operacin se realiza bit a bit, incluyendo la operacin NOT.


Tipos de datos.

Como en cualquier lenguaje, VHDL tiene dos grupos de tipos de datos. Por un lado estn
los escalares, con los que se pueden formar el otro grupo que son los compuestos.

Tipos escalares.

Son tipos simples que contienen algn tipo de magnitud. Veamos a continuacin los tipos
escalares presentes en VHDL:

Enteros: Son datos cuyo contenido es un valor numrico entero. La forma es que se
definen estos datos es mediante la palabra clave RANGE, es decir, no se dice que un dato
es de tipo entero, sino que se dice que un dato est comprendido en cierto intervalo
especificando los lmites del intervalo con valores enteros.

Ejemplos:
TYPE byte IS RANGE 0 TO 255; TYPE index IS RANGE 7 DOWNTO 1;
TYPE integer IS -2147483647 TO 2147483647; Predefinido en el lenguaje

17

Este ltimo tipo viene ya predefinido en el lenguaje aunque no es muy conveniente su
utilizacin, especialmente pensando en la posterior sntesis del circuito.

Fsicos: Como su propio nombre indica se trata de datos que se corresponden con
magnitudes fsicas, es decir, tienen un valor y unas unidades.

Ejemplo:
TYPE longitud IS RANGE 0 TO 1.0e9
UNITS
um;
mm=1000 um;
m=1000 mm;
in=25.4 mm;
END UNITS;

Hay un tipo fsico predefinido en VHDL que es time. Este tipo se utiliza para indicar
retrasos y tiene todos los submltiplos, desde f s (femtosegundos), hasta hr (horas).
Cualquier dato fsico se escribe siempre con su valor seguido de la unidad: 10 mm, 1 in,
23 ns.

Reales: Conocidos tambin como coma flotante, son los tipos que definen un nmero real.
Al igual que los enteros se definen mediante la palabra clave RANGE, con la diferencia de
que los limites son nmeros reales.

Ejemplos:
TYPE nivel IS RANGE 0.0 TO 5.0;
TYPE real IS RANGE -Ie38 TO Ie38; Predefinido en el lenguaje

Enumerados: Son datos que pueden tomar cualquier valor especificado en un conjunto
finito o lista. Este conjunto se indica mediante una lista encerrada entre parntesis de
elementos separados por comas.

Ejemplos:
TYPE nivel lgico IS (nose, alto, bajo, Z);
TYPE bit IS CO','1'); Predefinido en el lenguaje

Hay varios tipos enumerados que se encuentran predefinidos en VHDL. Estos tipos son:
severity-level, boolean, bit y character.

Tipos compuestos.

Son tipos de datos que estn compuestos por los tipos de datos escalares vistos
anteriormente.

Matrices: Son una coleccin de elementos del mismo tipo a los que se accede mediante
un ndice. Su significado y uso no difiere mucho de la misma estructura presente en casi
todos los lenguajes de programacin. Los hay mono dimensionales (un ndice) o
multidimensionales (varios ndices). A diferencia de otros lenguajes, las matrices en VHDL
pueden estar enmarcadas en un rango, o el ndice puede ser libre teniendo la matriz una
dimensin terica infimita.

18

Ejemplos:

TYPE word IS ARRAY (31 D0WNT0 0) OF bit;
TYPE transformada IS ARRAY (1 TO 4, 1 TO 4) OF real;
TYPE positivo IS ARRAY (byte RANGE 0 TO 127) OF integer;
TYPE string IS ARRAY (positive RANGE <>) OF character; Predefinido en VHDL
TYPE bit vector IS ARRAY (natural RANGE <>) OF bit; Predefinido en VHDL
TYPE vector IS ARRAY (integer RANGE <>) OF real;

Este ltimo ejemplo, y los dos anteriores, muestran una matriz cuyo ndice no tiene rango
sino que sirve cualquier entero. Ms tarde, en la declaracin del dato, se podr poner los
lmites de la matriz: SIGNAL cosa: vector (1 TO 20); Los elementos de una matriz se
acceden mediante el ndice. As dato (3) es el elemento 3 del dato. De la misma manera se
puede acceder a un rango: datobyte <= datoword (2 TO 9). Tambin pueden utilizar en las
asignaciones lo que se conoce como agregados o conjuntos (aggregate) que no es ms
que una lista separada por comas de manera que al primer elemento de la matriz se le
asigna el primer elemento de la lista, y as sucesivamente.

Veamos algunos ejemplos:

semforo<= (apagado, encendido, apagado); dato<= (datohigh, datolow); bus<=
(0THERS=>'Z');

Quiz el que se entiende menos es el ltimo donde se ha empleado la palabra OTHERS
para poner todos los bits del bus a ' Z', de esta forma ponemos un ventor a un valor sin
necesidad de saber cuntos bits tiene la serial.

Registros: Son equivalentes al tipo registro o record de otros lenguajes.

Ejemplo:
TYPE trabajador IS RECORD
nombre:
string;
edad:
integer;
END RECORD;

Para referirse a un elemento dentro del registro se utiliza la misma nomenclatura que en
Pascal, es decir, se usa un punto entre el nombre del registro y el nombre del campo:
persona.nombre="Jos"

Subtipos de datos.

VHDL permite la definicin de subtipos que son restricciones o subconjuntos de tipos
existentes. Hay dos tipos.

El primero son subtipos obtenidos a partir de la restriccin de un tipo escalar a un rango.

Ejemplo:
SUBTYPE raro IS integer RANGE 4 TO 7;
SUBTYPE dgitos IS character RANGE '0' TO '9';
19

SUBTYPE natural IS integer RANGE 0 TO entero_mas_alto; Predefinido en VHDL
SUBTYPE positive IS integer RANGE 1 TO entero_mas_alto; Predefinido en VHDL

El segundo tipo de subtipos son aquellos que restringen el rango de una matriz.

Ejemplo:
SUBTYPE id IS string (1 TO 20);
SUBTYPE word IS bit vector (31 D0WNT0 0);

Los subtipos sirven adems para crear tipos resueltos que es una clase especial de tipos
que se explicara en detalle en la seccin 10.1.

La ventaja de utilizar un subtipo es que las mismas operaciones que Servan para el tipo
sirven igual de bien para el subtipo. Esto tiene especial importancia por ejemplo cuando
se describe un circuito para ser sintetizado, ya que si utilizamos integer sin ms, esto se
interpretara como un bus de 32 lneas (puede cambiar dependiendo de la plataforma) y lo
ms probable es que en realidad necesitemos muchas menos. Otro caso se da cuando
tenemos una lista de cosas y les queremos asignar un entero a cada una, dependiendo
de las operaciones que queramos hacer puede resultar ms conveniente definirse un
subtipo a partir de integer que crear un tipo enumerado.


Entidad y arquitectura.

Entidad (Entity).

La entidad modela al circuito, componente o sistema externamente definiendo a este
mediante un nombre y sus conexiones que vienen siendo las entradas y salidas del circuito
(puertos). La entidad puede ser reutilizada por otros diseos, teniendo en cuenta slo esta
interfaz y manteniendo oculta la implementacin concreta del sistema. Permite realizar
diseos jerrquicos en VHDL (diseo jerrquico: conjunto de mdulos interconectados entre
s). Ver figura 4.



Ilustracin 4 Entidad de diseo Jerrquico.

20

Los puertos definen las entradas y salidas del mdulo, y en el momento del diseo se
deben tener en cuenta los siguientes parmetros:
Puertos de Entrada (in):
1. Las seales de entrada slo pueden ser ledos.
2. No es permitido asignarles ninguna conexin.
Puertos de salida (out):
1. Las seales de salida pueden cambiar y es posible asignarles valores.
2. No pueden leerse.
3. No es vlido asignarlos como argumentos (condiciones).

Adems existen otro tipo de puertos que se definen como inout, los cuales operan
bidireccionalmente, es decir; permiten realizar operaciones de lectura y escritura.

Arquitectura (Architecture).

La arquitectura es la vista interna del mdulo, es decir; define la funcionalidad de la entidad
que representa describiendo un conjunto de operaciones sobre las entradas de la entidad,
que a su vez definen los valores de las salidas en todo momento. La arquitectura siempre
est referida a una entidad concreta, pero una misma entidad puede tener diferentes
arquitecturas. La descripcin de la arquitectura se observa en la figura 5.


Ilustracin 5 Arquitectura en base a la entidad.

Despus de definir las interfaces de la entidad, otras entidades pueden utilizar a la primera
como un subcircuito, al mismo tiempo que todas estn siendo desarrolladas, es decir, estn
siendo detalladas en su funcionamiento. Este concepto de vistas externas e internas es
propio de VHDL y permite segmentar un sistema en bloques. As, una entidad es relativa
a otras entidades a travs de sus conexiones y comportamiento. Por lo que es posible
experimentar cada entidad con diferentes arquitecturas sin necesidad de cambiar el resto
del diseo. Y obviamente cada entidad puede ser reutilizada en otros sistemas aunque no
hayan sido diseadas especficamente para estos. Un modelo de hardware de VHDL es
mostrada en el siguiente ejemplo.

La estructura del circuito se muestra en la ilustracin 6, las condiciones de funcionamiento
se muestra en la Tabla 1.

21


Tabla 1 Funcionamiento del sumador completo.



Ilustracin 6 Sumador completo de un bit, con entradas (s1, s2, cin) y salidas (suma, cout)

Una entidad en VHDL, que ya es todo un diseo, posee una o ms conexiones hacia los
sistemas que la rodean. Una entidad puede estar compuesta de otras entidades, de
procesos y por componentes, todos ellos trabajando concurrentemente. Cada entidad est
definida por su arquitectura la cual se forma de instrucciones en VHDL, ya sean aritmticas,
asignaciones a seales o de simples instalaciones de componentes.

Los procesos en VHDL son utilizados para modelar tanto circuitos secunciales como
combinacionales utilizando un estilo de descripcin secuencial. Para interconectar
procesos distintos se utilizan elementos llamados seales que no son otra cosa que simples
cables (lgicos).


Elementos en VHDL.

Un elemento en VHDL contiene un valor de un tipo especificado. Hay tres tipos de
elementos en VHDL, las constantes, las variables, y las seales.

Constantes.

Una constante es un elemento que se inicializa a un determinado valor que no puede ser
cambiado una vez inicializado, sino que se conserva para siempre. Las constantes se
declaran de la siguiente manera:

constant numero: std_logic:=1;

22

Variables.

Una variable en VHDL, es similar al concepto de variable en otros lenguajes, se diferencia
de una constante, en que su valor puede ser alterado en cualquier instante. A las variables
tambin se les puede asignar un valor inicial. Una forma de declarar una variable es la
siguiente:

variable contador: natural: = 0;

En el ejemplo anterior, a la variable se le ha asignado un valor constante. Otra forma de
declarar una variable es:

variable aux: bit vector (31 downto 0);

En este caso a la variable se le ha dado una dimensin (31 downto 0) y un tipo (bit vector),
pero su valor ser asignado posteriormente.

Seales.

Una seal posee una fuente (driver) y uno ms destinos (receptores) y un tipo de dato que
le proporciona caractersticas de interconexin. Por ejemplo, una seal que se define como
tipo bit puede manejar los valores binarios 0 y 1 solamente, en tanto que una seal que
se define como bit vector puede manejar ms de una posicin binaria.

Las seales se diferencian de las variables y las constantes, en que las seales guardan
valores, que pueden ser adquiridos en la ejecucin del programa, y hace uso de ellos en el
momento adecuado (cuando se le llame), independientemente del proceso en el cual se
realice el llamado, es decir; la seal pudo haber sido inicializada en un proceso, pero su
contenido puede ser empleado en otro.


Estilos de descripcin en VHDL.

En VHDL, La forma de disear circuitos se divide en tres categoras de acuerdo a su
complejidad: flujo de datos, comportamental, y estructural. Estos estilos de diseo se
detallan a continuacin.

Flujo de Datos.
Comportamental.
Sentencia de espera: wait.
Sentencias condicionales: if, then, else.
Sentencia de seleccin: case.
Bucle: loop.
Estructural.
Maquinas de Estado.

Flujo de datos.

En este estilo, el diseo del circuito no es complicado por lo que basta con describir como
fluyen los datos travs de la entidad, de las entradas hacia las salidas. La operacin del
23

sistema est definida en trminos de un conjunto de transformaciones de datos
expresadas como instrucciones concurrentes.

Comportamental.

El diseo es un poco ms complicado ya que requiere de varias decisiones antes de definir
los datos de salida correctos. Por lo que se requiere de una descripcin algortmica del
funcionamiento del circuito para facilitar el diseo del sistema. En VHDL esto se obtiene
expresando el funcionamiento del diseo mediante una estructura PROCESS la cual se
compone de instrucciones secunciales.

Adems de la estructura process, existen otras estructuras de ejecucin serie. A
continuacin se describen algunas de las ms utilizadas en VHDL.



Ilustracin 7 Diseo comportamental de un FlipFlop con reset asncrono.

Sentencia de espera: Wait.

Como se explic anteriormente, los process se ejecutan de forma secuencial. Sin embargo,
a menos que se especifique, los process no pararan de ejecutarse, lo que se convierte en
un problema, especialmente en las etapas de simulacin.

Para controlar la ejecucin de estos procesos, se introduce lo que se conoce como la lista
sensible (compuesta por seales inherentes al proceso). La adicin de esta lista, conlleva
la inclusin de una sentencia de espera, para que detenga la ejecucin del process, hasta
que cambie algunas de las seales de la lista sensible. Una posible sentencia para tal fin,
es la sentencia wait, la cual, como su nombre lo indica detiene la ejecucin hasta que se
cumple una condicin o evento especificado en la propia sentencia.



24

Ejemplo:


Ilustracin 8 Ejemplo del uso de sentencia wait.

Sentencias condicionales: if, then, else.

Su descripcin y comportamiento es muy similar al que se le otorga en otros lenguajes o
herramientas.

La sentencia if, se utiliza para evaluar condiciones.

La sentencia then, se emplea para indicar el procedimiento a seguir una vez evaluada la
condicin.

Y la sentencia else, se emplea para indicar el proceso a seguir en caso de que la condicin
evaluada no se cumpla.

La funcionalidad de las tres sentencias, se ve expresada en el ejemplo mostrado
anteriormente para la sentencia wait.

Sentencia de seleccin: case.

Es una estructura que permite ejecutar unas sentencias u otras dependiendo del resultado
de una expresin.

Un ejemplo se describe a continuacin:


Ilustracin 9 Ejemplo uso del case.

Bucle: loop.

El loop es slo eso, un bucle repetitivo, que ejecuta las instrucciones contenidas dentro de
l.
25


Para la ejecucin del loop, es necesario fijar un ndice o indicador que seale el nmero de
veces que se ejecutara el loop.

Para evitar que se ejecute infinitamente, los ndices se usan con la instruccin for, pero los
loop, tambin pueden limitarse mediante la instruccin while, el cual establece una
condicin para ejecutar el bucle.

Ejemplo del bucle loop:


Ilustracin 10 Ejemplo del bucle loop.
Estructural.

Una descripcin estructural se utiliza en circuitos que requieren de ms de una funcin,
hablando en trminos de hardware, para realizar la finalidad del sistema. Para ello es
necesario segmentar el sistema en subcircuitos o componentes para facilitar el diseo.

Cada componente es caracterizado en particular ya sea utilizando una descripcin de flujo
de datos o comportamental. La entidad donde se describen las interconexiones de estos
componentes recibe el nombre de descripcin estructural (las interconexiones se hacen a
travs de seales).

Lo que ha hecho que VHDL sea en un tiempo tan corto el lenguaje de descripcin de
hardware ms utilizado por la industria electrnica, es su independencia con la metodologa
utilizada por cada diseador, su capacidad de descripcin a diferentes niveles de
abstraccin, y en definitiva la posibilidad de poder reutilizar en diferentes aplicaciones un
mismo cdigo.

Descripcin estructural, ejemplo de contadores en cascada.

Ilustracin 11 Ejemplo de contadores en cascada.
26

Mquinas de estado.

Otra forma de describir un circuito en VHDL, es a travs de mquinas de estado, sin que
sea independiente de las anteriores, ya que de hecho, su implementacin se da dentro de
un proceso generalmente. La mquina de estado est definida por dos funciones, una
calcula el estado siguiente en que se encontrara el sistema y la otra calcula la salida.

El estado siguiente se calcula en general, en funcin de las entradas y del estado presente,
la salida se calcula como una funcin del estado presente y las entradas.

Las mquinas de estado pueden ser de dos tipos, asncronas y sncronas. Las mquinas
asncronas son para casos muy particulares, y su operacin depende nicamente del
estado actual de las entradas.

Por otro lado las mquinas sncronas, son de uso ms general, y su salida, adems de
depender de las seales de entrada, depende del estado actual del reloj del sistema.

Ejemplo.


Ilustracin 12 Ejemplo mquina de estado.


Subprogramas, paquetes y libreras.

En descripciones complejas de un circuito o programa, se hace necesaria una organizacin
que permita al diseador trabajar con grandes cantidades de informacin.

Una herramienta muy til son los subprogramas, los cuales hacen ms legibles los
programas.

27

Por otro lado, y a un nivel ms elevado, se pueden agrupar subprogramas, definiciones de
tipos, etc. en estructuras por encima de la propia descripcin; esto es lo que forma los
paquetes que a su vez, junto con otros elementos de configuracin, etc. formaran las
libreras.

Subprogramas.
Paquetes y Libreras.

Subprogramas.

Un subprograma es una funcin o procedimiento que contiene una porcin de cdigo.

Las funciones y procedimientos en VHDL son estructuras muy parecidas entre si aunque
existen algunas pequeas diferencias. Estas diferencias se muestran a continuacin:

Una funcin siempre devuelve un valor, mientras que un procedimiento solo puede
devolver valores a travs de los parmetros que se le pasen.

Los argumentos de una funcin son siempre de entrada, por lo que solo se pueden
leer dentro de la funcin. En el procedimiento pueden ser de entrada, de salida o de
entrada y salida con lo que se pueden modificar.

Las funciones, como devuelven un valor, se usan en expresiones mientras que los
procedimientos se juntan como una sentencia secuencial o concurrente.

La funcin debe contener la palabra clave RETURN seguida de una expresin
puesto que siempre devuelve un valor, mientras que en el procedimiento no es
necesario.

Una funcin no tiene efectos colaterales, pero un procedimiento s, es decir, puede provocar
cambios en objetos externos a l debido a que se pueden cambiar las seales aunque no
se hubieran especificado en el argumento. Es decir, en los procedimientos se permite
realizar asignaciones sobre seales declaradas en la arquitectura y por tanto externas al
procedimiento.

Caractersticas de los subprogramas.

Declaracin de procedimientos y funciones.

Las declaraciones de procedimiento y funcin se encuentran a continuacin:

Procedimientos:

PROCEDURE nombre (parmetros) IS
Declaraciones BEGIN
Instrucciones
END nombre;

28

Funciones:

FUNCTION nombre (parmetros) RETURN tipo IS
Declaraciones BEGIN
Instrucciones -- incluye RETURN
END nombre;

La lista de parmetros es opcional y si no hay parmetros tampoco es necesario usar los
parntesis. Su significado es el mismo en procedimientos que en funciones. Esta lista no
es ms que el conjunto de parmetros que se le pasan al subprograma, y se declaran de
forma muy parecida a como se declaraban los puertos en una entidad; primero se pone el
tipo de objeto que es, es decir, una seal, una variable o una constante, a continuacin se
pone el nombre del objeto, y despus dos puntos seguidos por el tipo de puerto, que ser
IN, OUT o INOUT. Al igual que en la entidad, el tipo IN solo se puede leer, el tipo OUT solo
se puede escribir, y el tipo INOUT se puede escribir y leer. Por ltimo se pone el tipo de
objeto que es.

En la declaracin de los parmetros hay cosas que se pueden omitir. Si por ejemplo el
puerto es de tipo IN entonces no hace falta poner la palabra CONSTANT delante puesto
que se sobreentender que es una constante, de hecho, y si no se pone nada ms, se
entender que los objetos son de tipo IN. Para el resto de tipos, y si no se especifica otra
cosa, se entender que son de tipo VARIABLE.

En los procedimientos se pueden utilizar los tres tipos de objetos (constantes, variables y
seales), y los tres tipos de puerto (IN, OUT e INOUT). Sin embargo, en las funciones solo
se admiten los objetos de clase constante o serial, y como tipo de puerto solo se admite el
IN ya que los parmetros no pueden ser modificados en una funcin. En la funcin no se
admite la variable puesto que la clase constante ya juega el mismo papel. No es aconsejable
el uso de seales como parmetros puesto que pueden llevar a confusin dada la especial
forma en que estos objetos se asignan, sin embargo su uso es posible y hay que tener
especial cuidado en el uso de los atributos ya que algunos atributos no estn permitidos en
el interior de funciones; este es precisamente el caso de 'STABLE, 'QUIET,
'TRANSACTION y 'DELAYED.

En el caso de las funciones se debe especificar, adems, el tipo del objeto que devuelve la
funcin. Como las funciones siempre devuelven algo, esto implica adems, que debe existir
una instruccin RETURN en el interior del cuerpo de la funcin, y adems esta instruccin
debe estar seguida por una expresin que es precisamente lo que se devuelve. El uso del
RETURN en procedimientos es posible pero no debe llevar una expresin puesto que los
procedimientos no devuelven nada. Si se usa en procedimientos simplemente interrumpe
la ejecucin del procedimiento y vuelve.
Las declaraciones dentro de una funcin o procedimiento pueden incluir las mismas que
incluira un PROCESS ya que se trata tambin de bloques de ejecucin serie. Por lo tanto,
y al igual que sucede en un proceso, no se pueden declarar seales en una funcin o
procedimiento. Naturalmente, todo lo que se declara en esta parte solo es visible

Llamadas a subprogramas.

La forma de invocar un subprograma es relativamente simple, se pone el nombre seguido
por los argumentos entre parntesis, si los tiene, y eso es todo. A las funciones solo se las
29

puede invocar como parte de una expresin, mientras que los procedimientos se ejecutan
como si fueran una sentencia, secuencial o concurrente.

Sobrecarga de operadores.

La sobrecarga de funciones permite que puedan existir funciones con el mismo nombre,
siendo la diferencia el tipo de datos que devuelven o el tipo de datos de sus argumentos.

Esto es especialmente til cuando se desea ampliar la cobertura de algunos operadores
predefinidos. En principio no es necesario indicar que se est sobrecargando una funcin,
en tiempo de ejecucin, el intrprete del programa elegir una funcin u otra dependiendo
de los tipos de datos que se estn utilizando en ese momento.

Lo normal es que la sobrecarga se emplee en operadores. Los operadores, a diferencia de
las funciones normales, siguen una notacin que adems no necesita de parntesis. En
VHDL se pueden definir tambin este tipo de operadores de la misma manera que una
funcin normal, pero poniendo el nombre de la funcin entre comillas dobles. A continuacin
se ver un ejemplo donde se sobrecarga la operacin suma para que funcione tambin
sobre bit vector de 8 bits de definidos como un tipo byte.


Libreras, paquetes y unidades.

Una librera es un conjunto de recursos (algoritmos) prefabricados, que pueden ser
utilizados por el programador para realizar determinadas operaciones.

Elementos:

Paquetes:

PACKAGE y PACKAGE BODY

Configuracin:

CONFIGURATION

Paquetes: PACKAGE Y PACKAGE BODY.

Un paquete es una coleccin de declaraciones de tipo, constantes, subprogramas, etc.,
normalmente con la intencin de implementar algn servicio en particular o aislar un grupo
de elementos relacionados. De esta manera se pueden hacer visibles las interfaces de
algunos elementos como funciones o procedimientos estando ocultos las descripciones de
estos elementos. Los paquetes estn separados en dos partes, una es la parte de
declaraciones y la otra es la de cuerpo. La parte de cuerpo, donde estaran por ejemplo
algunas definiciones de funciones y procedimientos, puede ser omitida si no hay ninguno
de estos elementos. A continuacin se muestra la declaracin de paquetes y de cuerpos de
los paquetes:

Declaracin de paquetes:

30

PACKAGE nombre IS Declaraciones
END nombre;
Declaracin del cuerpo:

PACKAGE BODY nombre IS declaraciones, instrucciones, etc.
END nombre;


Configuracin: CONFIGURATION.

La forma en que cada componente se le asocia una entidad se especifica en una unidad
especial del lenguaje que se llama configuracin. La forma en la cual se define este bloque
es mediante la palabra clave CONFIGURATION:

CONFIGURATION nombre OF la_ entidad IS
Declaraciones
Configuracin
END nombre;

En las declaraciones lo normal es utilizar clusulas de tipo USE para definir tipos y dems,
aunque se pueden definir directamente.

En la parte de configuracin se especifican las constantes genricas para bloques y
componentes, aparte de otros elementos pertenecientes a bloques y elementos. La forma
es que se especifican las caractersticas de estos elementos en una configuracin es
mediante el uso de FOR, y es un poquito diferente segn sea bloque o componente.

Lgica Programable.

La Lgica Programable, en su definicin ms bsica puede expresarse como el conjunto de
dispositivos y tcnicas que permiten la implementacin de sistemas digitales, los cuales pueden ser
alterados mediante un proceso de programacin. El proceso de programacin de los Dispositivos
Lgicos Programables, es desarrollado mediante el uso de herramientas de Diseo Asistido por
computador.

Podemos distinguir:

Lgica Programable Vs Lgica Standard
Lgica Standard
Circuitos Digitales Implementados Mediante Dispositivos Lgicos Programables (PLDs)
Estructura de los PLD
Matriz de Interconexiones
Tipos de PLD

31





Lgica Programable Vs Lgica Standard



Ilustracin 13 Electronic logic components.


Ilustracin 14 Acrnimos.

Lgica estndar.

La solucin obtenida es totalmente rgida.
El menor cambio puede significar un rediseo total.
Obliga a mantener un amplio repertorio de componentes

32


Ilustracin 15 Circuito digital. Implementacin con lgica estndar.

Circuitos Digitales Implementados Mediante Dispositivos Lgicos Programables
(PLDs).

Los PLD, son circuitos integrados con compuertas lgicas, conexiones internas y puertos
de comunicacin. Estas conexiones se pueden alterar mediante un proceso de
programacin, modificando por ende las caractersticas de funcionamiento del dispositivo.

El trmino programacin se refiere al procedimiento de hardware que permite configurar al
dispositivo. Por medio de los programas de usuario se busca que el arreglo desarrolle una
funcin lgica especfica describiendo el comportamiento que ha de asumir el dispositivo.
Esta descripcin se puede lograr por medio de ecuaciones Booleanas, tablas de verdad,
mquinas de estado, formas de onda, descripciones de circuitos y por HDLs.

Las principales ventajas al implementar un sistema digital mediante PLDs, son:

No Implica grandes costos en el desarrollo de prototipos: Debido a que los
diferentes sistemas son implementados mediante un proceso de programacin,
cualquier modificacin que este deba sufrir, se limitara solo a la descripcin que se
realiza mediante la herramienta CAD, sin necesidad de re implementar un montaje
fsico.

Menor uso de Componentes: Adems de las interfaces requeridas para cada
aplicacin, solo se empleara en cada caso el PLD, sin necesidad de cables, y otros
componentes propios de la lgica Standard.

Reconfiguracin Rpida y Remota: muchos de los PLD disponibles hoy da, cuentan con
la posibilidad de configuracin remota mediante puertos Ethernet y USB que permiten
interconexin con otros sistemas.


Estructura de los PLD.

Antes de entrar al estudio de los diferentes tipos de PLD, es necesario adentrarse en el
estudio de las estructuras que componen a cada uno de ellos, como son: Matrices de
33

compuertas AND (fijas o programables), matrices de compuertas OR (fijas o programables),
Matriz de Conexiones y registros.

Matriz de Interconexiones

Es una red de conductores distribuidos en filas y columnas que forman puntos de
interseccin. La matriz define qu entradas del dispositivo sern conectadas al arreglo AND
y cules salidas de ste se conectan al arreglo OR. La programacin establece o rompe
estas interconexiones.


Ilustracin 16 Matriz de interconexiones.

Tipos de PLD.

Entre los dispositivos lgicos programables ms comunes, encontramos:

Dispositivo de Arreglo de Lgica Programable PLA
Dispositivo Lgico de Arreglo Programable PAL
Dispositivo Lgico Programable Complejo CPLD
Red de Compuertas Lgicas Programables FPGA

34


Ilustracin 17 Ejemplo de un PLD.


Dispositivo de arreglo de lgica programable.

Contienen ambos trminos OR y AND programables.
La entrada est compuesta por un arreglo de compuertas AND que se programan
para generar trminos de producto de las variables de entrada.
Los trminos producto se conectan a las compuertas OR para proporcionar la suma
de productos requerida a la salida


Ilustracin 18 Diagrama PLA.
Dispositivo lgico de arreglo programable PAL.

Los PALs son dispositivos de matriz programable, cuya arquitectura interna consiste de
trminos AND programables que alimentan trminos OR fijos. Son de muy fcil
programacin.

35


Ilustracin 19 Diagrama PAL


Dispositivo lgico programable complejo CPLD.

Extiende el concepto de un PLD a un nivel mayor de integracin, est conformado por
mltiples Bloques Lgicos, cada uno similar a un PAL. Se necesita una Matriz Programable
de Interconexiones para comunicar los Bloques Lgicos entre s y con el mundo exterior.


Ilustracin 20 Estructura interna de un CPLD.

36



Red de compuertas lgicas programables FPGA.

Se caracterizan por un arreglo de clulas programables comunicadas unas con otras
mediante canales de conexin verticales y horizontales, rodeada de celdas perifricas de
I/O, como se detallan en las graficas.


Ilustracin 21 Estructura general de una red de compuertas lgicas programables.



Ilustracin 22 Estructura de la configuracin por bloques de una FPGA.

Вам также может понравиться