Herramienta Didáctica Sistemas Embebidos II

download Herramienta Didáctica Sistemas Embebidos II

of 36

Transcript of Herramienta Didáctica Sistemas Embebidos II

  • 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

  • 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

  • 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.