Está en la página 1de 26

UNIVERSIDAD TECNOLGICA DE PANAM CENTRO REGIONAL DE AZUERO FACULTAD DE INGENIERA ELCTRICA

LICENCIATURA EN INGENIERA ELECTROMECNICA

Circuitos Lgicos Electrnicos Programacin de Circuitos en VHDL

Preparado por: Baule R; Edison Rodrguez F; Cheyn 6-714-1956 6-714-364

Profesora: Dayra Pea

Grupo 7IE141

Ao Lectivo 2012

INTRODUCCIN Los circuitos lgicos electrnicos son aquellos que solo funcionan con 0 y 1, es decir en notacin binaria, en otras palabras los circuitos lgicos o digitales solo encienden si estn en 1, elctricamente hablando cuando se alimenta con 5 V y apagados en 0 cuando no estn alimentados y van a tierra o ground. En la clase de circuitos lgicos hemos aprendido a utilizar muchas herramientas tericas, empezando por los sistemas de numeracin que nos permiten reescribir los bits ya sea en hexadecimal, octal, entre otros. De igual manera hemos visto cdigos como gray, ASCII, etc. Por otro lado hemos aprendido a utilizar las compuertas lgicas AND, OR, NOT, etc., que nos permiten desarrollar los problemas planteados y obviamente son muy necesarias a la hora de disear cualquier dispositivo en la vida real. Una parte esencial del curso fue lo planteado anteriormente, el diseo de los mismos, con herramientas como el mapa K, llevbamos cualquiera situacin y con la numeracin binaria disebamos un circuito cualquiera que podra ser una alarma, un sumador. En este laboratorio, hacemos una compilacin de algunos circuitos simulados en clases con la ayuda de un programa llamado Xilinx. Son tres los circuitos simulados, el caso de una compuerta OR, la situacin de un granjero y un BCD de 7 segmentos. En todos debimos utilizar conceptos aprendidos en clases, mapa K, compuertas y sobre todo lo aprendido en el laboratorio, la programacin VHDL que es la que nos permite hacer estas situaciones tericas y poder llevarlas a la vida real.

OBJETIVOS Aprender el lenguaje VHDL, y as poder familiarizarse y utilizarlo como material de apoyo en la elaboracin de circuitos lgicos que se puedan aplicar a cualquier aplicacin en la vida real. Implementar lo aprendido tericamente en clases, y verlo experimentalmente con la ayuda de la programacin en VHDL.

MARCO TERICO Existe un lenguaje definido por IEEE (Institute of Electrical and Electronics Engineers) que ayuda a los ingenieros para elaborar y describir de mejor forma los tan difciles circuitos digitales y para estos utilizamos el VHDL. VHDL significa (very-high-speed integrated circuits hardware description language) o lenguaje de descripcin de hardware de circuitos integrados de muy alta velocidad. Como indica su denominacin es un lenguaje similar a ADHL o Verilog usado para describir circuitos internos y la programacin de FPGAs. Estos lenguajes presentan un mismo objetivo y se diferencia del clsico C (o cualquiera parecido a este) por ser un lenguaje paralelo no secuencial. El lenguaje se encuentra definido bloques tambin. Cada funcin que deseamos, es a nivel superior definida por una entidad donde se especifica las entradas y salidas del bloque. Un FPGA no es como un microcontrolador, en realidad es un conjunto masivo de celdas o bloques lgicos programables. Estas celdas son programadas individualmente para convertirse en pequeos bloques de construccin. Pueden ser compuertas simples (AND, OR y NOT, etc) o flip-flops. Dentro del VHDL hay varias formas con las que podemos disear el mismo circuito y es tarea del diseador elegir la ms apropiada.

Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que ms se parece a los lenguajes de software ya que la descripcin es secuencial. Estas sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos son ejecutados en paralelo entre s, y en paralelo con asignaciones concurrentes de seales y con las instancias a otros componentes. Flujo de datos: describe asignaciones concurrentes (en paralelo) de seales. Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseo de jerarqua superior, al conectar los puertos de estas instancias con las seales internas del circuito, o con puertos del circuito de jerarqua superior. Mixta: combinacin de todas o algunas de las anteriores.

ESTRUCTURA DEL PROGRAMA VHDL fue diseado en base a los principios de la programacin estructurada. La idea es definir la interfaz de un mdulo de hardware mientras deja invisible sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la declaracin de las entradas y salidas de un mdulo mientras que la arquitectura (ARCHITECTURE) es la descripcin detallada de la

estructura interna del mdulo o de su comportamiento. En la siguiente figura se ilustra el concepto anterior. Muchos diseadores conciben la Entity como una funda de la arquitectura dejando invisible los detalles de lo que hay dentro (architecture). Esto forma la base de un sistema de diseo jerrquico, la arquitectura de la entidad de ms nivel (top level) puede usar otras entidades dejando invisible los detalles de la arquitectura de la identidad de menos nivel. En la figura las entidades B, E y F no utilizan a otras entidades. Mientras que la entidad A utiliza a todas las dems. A la pareja entidad - arquitectura se le llama modelo. En un fichero texto VHDL la entidad y la arquitectura se escriben separadas, por ejemplo a continuacin se muestra un programa muy simple en VHDL de una compuerta de 2 entradas. Como en otros programas VHDL ignora los espacios y saltos de lneas. Los comentarios se escriben con 2 guiones (--) y termina al final de la lnea. En la figura siguiente se muestra la estructura de un modelo en VHDL. SINTAXIS PARA LA DECLARACION DE LA ENTIDAD VHDL define muchos caracteres especiales llamados palabras reservadas. Aunque las palabras reservadas no son sensibles a las maysculas o minsculas, el ejemplo que sigue las utilizaremos en maysculas y negritas para identificarlas. Ventajas: Adems de las ventajas ya reseadas tambin es destacada por la capacidad del lenguaje para el manejo de proyectos de grandes dimensiones, las garantas que comporta su uso cuando, durante el ciclo de mantenimiento del proyecto, hay que sustituir componentes o realizar modificaciones en los circuitos, y el hecho de que, para muchas organizaciones contratantes, sea parte indispensable de la documentacin delos sistemas. Bibliotecas en este tipo de lenguajes Una biblioteca en VHDL es un lugar en donde se guarda la informacin relacionada con un diseo determinado. Al comienzo de cada diseo el compilador crea automticamente una biblioteca llamada WORK con este objetivo. Adems de esta biblioteca particular existen otras bibliotecas de tipo general que contienen un conjunto de definiciones que pueden utilizarse en cualquier diseo. Un ejemplo de biblioteca general es la llamada Library IEEE, que contiene definiciones estndar para VHDL. Para utilizar una biblioteca general es necesario escribir su nombre al inicio del programa, por eso es muy comn que en la primera lnea de un diseo en VHDL aparezca escrito "Library IEEE", de sta forma dicha biblioteca se hace visible para el diseo. Historia Los estudios para la creacin del lenguaje VHDL (VHSIC HDL) comenzaron en el ao 1981, bajo la cobertura de un programa para el desarrollo de Circuitos Integrados de Muy Alta Velocidad (VHSIC), del Departamento de Defensa de los Estados Unidos. En 1983 las compaas Intermetrics, IBM y Texas Instruments obtuvieron la concesin de un proyecto para la realizacin del mismo.

MATERIALES Programa XILINX. Placa Spartan 3E con su cable USB.

PROCEDIMIENTO Pasos para Programar en VHDL 1. Iniciar el programa de Xilinx 2. Una vez se inicia el programa, dar click en la herramienta File (new project). 3. En la ventana que se abre se debe colocar el nombre apropiado al proyecto y seleccionar la ubicacin donde guardar dicho proyecto. Verificar donde dice top-level source type aparezca HDL, luego presione NEXT.

4. En el cuadro que sigue debe llenar los campos tal y como se muestra. Luego dar click en NEXT.

5. Se muestra un resumen del proyecto dar click en FINISH.

6. Llegamos finalmente a la ventana principal del programa, donde procederemos a incluir nuestra primera fuente, es decir el cdigo VHDL.

7. Haga click derecho sobre xc3s500e-4fg320 y seleccione new source.

8. Aparece este cuadro. En el mismo se debe escoger el tipo de archivo fuente, en este caso VHDL MODULE y ponerle un nombre apropiado, presionar next.

9. En el cuadro que aparece ahora se debe especificar los puertos del dispositivo as como la direccin del mismo ya sea entrada (in) o salidas (out).

10. Aparece un cuadro de resumen del cual no hay nada que hacer solo dar click en FINISH.

11. A continuacin obtendremos la pantalla siguiente en el cual ya hemos colocado los cdigos.

12. Una hemos escrito el cdigo VHDL para esta entidad, procedemos a realizar algunas operaciones sobre dicho cdigo. 12.1 Verificar la sintaxis para ver si no hay errores de escritura. Damos doble click donde dice check syntax en la ventana de process a la izquierda de nuestra pantalla

12.2

12.3

12.4

Podemos ver el esquema del circuito sintetizado por la herramienta xilix. Para esto hacemos doble click donde dice VIEW RTL SCHEMATIC O VIEW TECNOLOGY SCHEMATIC. Si el circuito es sintetizable entonces pasamos a simular el circuito. Esto se logra incluyendo una nueva fuente (source), en nuestro diseo. Hacer click derecho en el nombre de la fuente actual, (comp1) para que aparesca un men abreviado (new source). En la ventana que aparece que aparece a continuacin escogemos VHDL test bench a la derecha le ponemos un nombre a la fuente y damos click en nexs.
Sale otra ventana le damos nexs. La pantalla siguiente simplemente es un resumen del archivo fuente, solo dar en finish.

12.5

Se muestra en pantalla un cdigo VHDL. Ese cdigo hay que modificarlo de tal modo que quede igual o parecido al siguiente cdigo.

12.6

Una vez que su cdigo VHDL de simulacin ha sido salvado seleccionamos la opcin de simulation y damos doble click en SIMULATE BEHAVIORAL MODEL.

A continuacin se puede ver una grfica con los resultados de la simulacin.

12.7

El siguiente paso ser asignar los puertos de entrada y salida del proyecto a los pines de la Spartan 3E que estn disponibles. Esto se logra haciendo doble clic sobre FloorplanArea/IO/Logic (PlanAhead) tal y como se muestra abajo.

Se muestra la siguiente ventana en la cual presionamos el botn Yes.

Se iniciar el programa Plan Ahead 13.1 pero antes se mostrarn algunos mensajes como el mostrado abajo. Tan solo debe cerrar estos cuadros.

Se iniciar el programa Plan Ahead 13.1 pero antes se mostrarn algunos mensajes como el mostrado abajo. Tan solo debe cerrar estos cuadros.

Ahora estamos en la ventana principal del programa Plan Ahead. En la parte inferior de dicho programa haga clic en la pestaa IO/Ports, ver figura a continuacin.

Se mostrar entonces la ventana de los puertos. Esta ventana le debe quedar de la siguiente manera:

Para asignar los pines de forma adecuada, debemos conocer bien nuestra Spartan3E, en este caso la Nexys 2 que es la que estamos usando en este proyecto. En la siguiente pgina se muestra una imagen de esta placa. Observe que consta de siete Interruptores, cuatro PushButtons, siete LEDs, cuatro 7-segmentos y varios conectores y pines para conectarse con el mundo exterior.

Si tiene la Nexys2 a mano podr observar que cada interruptor, pushbutton,LED, etc., tiene un nombre y una asignacin de pin. Por ejemplo el interruptor SW0 es G18, el LED LD0 es J14 y as sucesivamente. La siguiente figura nos puede ayudar a identificar estos pines si no tenemos la Spartan a manos.

Con esta informacin ya podemos asignar los pines de la siguiente manera. Ver la figura siguiente.

A continuacin cerramos el programa Plan Ahead. Ver figura siguiente.

El programa le pedir salvar los cambios, presione el botn Save. Ver siguiente figura.

En la ventana siguiente presione el botn OK para salir de plan Ahead. Ver siguiente figura.

Ya es hora de generar el archivo de programacin que enviaremos a la Spartan mediante un cable USB. Hacer doble clic en Generate Programming File. Esperar a que termine el proceso.

Si todo va bien debe aparecer debajo el siguiente mensaje:

Se debe haber creado el archivo ffd.bit que es el que necesitamos para programar la Spartan.

La Alarma

Figura 1. Simulacin del circuito de la alarma.

Figura 2. Circuito de la alarma sintetizado.

Figura 3. Simulacin en el test bench.

CONCLUSIONES Luego de elaborado este informe, llegamos a las siguientes conclusiones: 1. Es a travs de un lenguaje de programacin VHDL que podemos llevar a la vida real todas aquellas situaciones tericas que vemos en nuestro diario vivir, es decir una persona que tenga una idea por ejemplo de hacer una alarma que est sujeta a condiciones, es a travs del conocimiento de circuitos digitales y electrnicos que se puede llevar a la realidad, no sin antes programarlos a travs de programas informticos, en nuestro caso Xilinx. 2. Para programar en Xilinx con lenguaje VHDL, no solo se debe tener conocimientos informticos, sino tambin de compuertas lgicas, sistemas de numeracin, mapa K, etc. Adems es necesario saber circuitos electrnicos para luego acoplar este circuito a transistores que amplifiquen la seal y pueda ser ms eficiente el diseo que se requiere. 3. Fueron tres los circuitos simulados en clases, el caso de una compuerta OR, el caso de un jardinero y la alarma, ambos los diseamos con las herramientas aprendidas en clases, sin embargo fue en el laboratorio donde hicimos la prctica y con el uso de la Spartan 3E pudimos ver su funcionamiento. 4. En el informe presentado, hacemos captura de pantalla del caso de la alarma, este circuito fue diseado en base a tres condiciones, el motor, la puerta y la lmpara. Para disear circuitos digitales, siempre se necesita una variable sujeta a condiciones para que la salida establecida cumpla con ciertos parmetros y funcione de la manera que el diseador desee para su futuro funcionamiento. 5. En VHDL podemos programar, ya sea con lgica negativa o con lgica positiva, ambos resultados deben dar lo mismo, depende de la persona que programe el circuito, sin embargo en nuestro caso, la mayora de los diseos se hacen habilitando el 1 o con lgica positiva. 6. La Spartan 3E es el dispositivo que tenemos a nuestra disposicin para comprobar lo que hemos hecho en el proceso de programacin. En el caso de la alarma, cuando se cumpla la condicin el LED de la salida deba encender, la ubicacin de los LED (salida) y los interruptores (entrada) se programa con la ayuda del FloorPlan, para establecer la posicin de los mismos y luego se genera un .bit para luego pasarlo a la Spartan.

BIBLIOGRAFA Material de apoyo dado en clases (Tutorial de VHDL).