Programación de circuitos lógicos en VHDL

26
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ CENTRO REGIONAL DE AZUERO FACULTAD DE INGENIERÍA ELÉCTRICA LICENCIATURA EN INGENIERÍA ELECTROMECÁNICA Circuitos Lógicos Electrónicos Programación de Circuitos en VHDL Preparado por: Baule R; Edison 6-714-1956 Rodríguez F; Cheyn 6-714-364 Profesora: Dayra Peña Grupo 7IE141 Año Lectivo 2012

Transcript of Programación de circuitos lógicos en VHDL

Page 1: Programación de circuitos lógicos en VHDL

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

CENTRO REGIONAL DE AZUERO

FACULTAD DE INGENIERÍA ELÉCTRICA

LICENCIATURA EN INGENIERÍA ELECTROMECÁNICA

Circuitos Lógicos Electrónicos

Programación de Circuitos en VHDL

Preparado por:

Baule R; Edison 6-714-1956

Rodríguez F; Cheyn 6-714-364

Profesora:

Dayra Peña

Grupo

7IE141

Año Lectivo

2012

Page 2: Programación de circuitos lógicos en VHDL

INTRODUCCIÓN

Los circuitos lógicos electrónicos son aquellos que solo funcionan con 0 y 1, es decir en

notación binaria, en otras palabras los circuitos lógicos o digitales solo encienden si están

en 1, eléctricamente hablando cuando se alimenta con 5 V y apagados en 0 cuando no

están alimentados y van a tierra o ground.

En la clase de circuitos lógicos hemos aprendido a utilizar muchas herramientas teóricas,

empezando por los sistemas de numeración que nos permiten reescribir los bits ya sea en

hexadecimal, octal, entre otros. De igual manera hemos visto códigos como gray, ASCII,

etc.

Por otro lado hemos aprendido a utilizar las compuertas lógicas AND, OR, NOT, etc., que

nos permiten desarrollar los problemas planteados y obviamente son muy necesarias a la

hora de diseñar cualquier dispositivo en la vida real.

Una parte esencial del curso fue lo planteado anteriormente, el diseño de los mismos, con

herramientas como el mapa K, llevábamos cualquiera situación y con la numeración

binaria diseñábamos un circuito cualquiera que podría ser una alarma, un sumador.

En este laboratorio, hacemos una compilación 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 situación 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 programación VHDL que es la que nos permite

hacer estas situaciones teóricas y poder llevarlas a la vida real.

Page 3: Programación de circuitos lógicos en VHDL

OBJETIVOS

Aprender el lenguaje VHDL, y así poder familiarizarse y utilizarlo como material de apoyo en la elaboración de circuitos lógicos que se puedan aplicar a cualquier aplicación en la vida real.

Implementar lo aprendido teóricamente en clases, y verlo experimentalmente con la ayuda de la programación en VHDL.

Page 4: Programación de circuitos lógicos en VHDL

MARCO TEÓRICO

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 difíciles circuitos digitales y para estos utilizamos el VHDL.

VHDL significa (very-high-speed integrated circuits hardware description language) o lenguaje de descripción de hardware de circuitos integrados de muy alta velocidad.

Como indica su denominación es un lenguaje similar a ADHL o Verilog usado para describir circuitos internos y la programación de FPGAs. Estos lenguajes presentan un mismo objetivo y se diferencia del clásico C (o cualquiera parecido a este) por ser un lenguaje paralelo no secuencial.

El lenguaje se encuentra definido bloques también. Cada función 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 lógicos programables. Estas celdas son programadas individualmente para convertirse en pequeños bloques de construcción. Pueden ser compuertas simples (AND, OR y NOT, etc) o flip-flops.

Dentro del VHDL hay varias formas con las que podemos diseñar el mismo circuito y es tarea del diseñador elegir la más apropiada.

Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que más se parece a los lenguajes de software ya que la descripción 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 señales y con las instancias a otros componentes.

Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.

Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseño de jerarquía superior, al conectar los puertos de estas instancias con las señales internas del circuito, o con puertos del circuito de jerarquía superior.

Mixta: combinación de todas o algunas de las anteriores.

ESTRUCTURA DEL PROGRAMA

VHDL fue diseñado en base a los principios de la programación estructurada. La idea es definir la interfaz de un módulo de hardware mientras deja invisible sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la declaración de las entradas y salidas de un módulo mientras que la arquitectura (ARCHITECTURE) es la descripción detallada de la

Page 5: Programación de circuitos lógicos en VHDL

estructura interna del módulo o de su comportamiento. En la siguiente figura se ilustra el concepto anterior. Muchos diseñadores 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 diseño jerárquico, la arquitectura de la entidad de más 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 demás. 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 continuación 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 líneas. Los comentarios se escriben con 2 guiones (--) y termina al final de la línea. 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 mayúsculas o minúsculas, el ejemplo que sigue las utilizaremos en mayúsculas y negritas para identificarlas.

Ventajas:

Además de las ventajas ya reseñadas también es destacada por la capacidad del lenguaje para el manejo de proyectos de grandes dimensiones, las garantías 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 documentación delos sistemas.

Bibliotecas en este tipo de lenguajes

Una biblioteca en VHDL es un lugar en donde se guarda la información relacionada con un diseño determinado. Al comienzo de cada diseño el compilador crea automáticamente una biblioteca llamada WORK con este objetivo. Además de esta biblioteca particular existen otras bibliotecas de tipo general que contienen un conjunto de definiciones que pueden utilizarse en cualquier diseño. Un ejemplo de biblioteca general es la llamada Library IEEE, que contiene definiciones estándar para VHDL. Para utilizar una biblioteca general es necesario escribir su nombre al inicio del programa, por eso es muy común que en la primera línea de un diseño en VHDL aparezca escrito "Library IEEE", de ésta forma dicha biblioteca se hace visible para el diseño.

Historia Los estudios para la creación del lenguaje VHDL (VHSIC HDL) comenzaron en el año 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 compañías Intermetrics, IBM y Texas Instruments obtuvieron la concesión de un proyecto para la realización del mismo.

Page 6: Programación de circuitos lógicos en VHDL

MATERIALES

Programa XILINX.

Placa Spartan 3E con su cable USB.

Page 7: Programación de circuitos lógicos en VHDL

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 ubicación 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.

Page 8: Programación de circuitos lógicos en VHDL

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

Page 9: Programación de circuitos lógicos en VHDL

6. Llegamos finalmente a la ventana principal del programa, donde procederemos a incluir nuestra primera fuente, es decir el código 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.

Page 10: Programación de circuitos lógicos en VHDL

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

Page 11: Programación de circuitos lógicos en VHDL

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

11. A continuación obtendremos la pantalla siguiente en el cual ya hemos colocado los códigos.

12. Una hemos escrito el código VHDL para esta entidad, procedemos a realizar algunas operaciones sobre dicho código. 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

Page 12: Programación de circuitos lógicos en VHDL

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

12.3 Si el circuito es sintetizable entonces pasamos a simular el circuito. Esto se logra incluyendo una nueva fuente (source), en nuestro diseño. Hacer click derecho en el nombre de la fuente actual, (comp1) para que aparesca un menú abreviado (new source).

12.4 En la ventana que aparece que aparece a continuación 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.

Page 13: Programación de circuitos lógicos en VHDL

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

Page 14: Programación de circuitos lógicos en VHDL

12.6 Una vez que su código VHDL de simulación ha sido salvado seleccionamos la opción de simulation y damos doble click en SIMULATE BEHAVIORAL MODEL.

A continuación se puede ver una gráfica con los resultados de la simulación.

Page 15: Programación de circuitos lógicos en VHDL

12.7 El siguiente paso será asignar los puertos de entrada y salida del proyecto a los pines de la Spartan 3E que estén 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 botón Yes.

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

Page 16: Programación de circuitos lógicos en VHDL

Se iniciará el programa Plan Ahead 13.1 pero antes se mostrarán 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 pestaña IO/Ports, ver figura a continuación.

Page 17: Programación de circuitos lógicos en VHDL

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

página 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.

Page 18: Programación de circuitos lógicos en VHDL

Si tiene la Nexys2 a mano podrá observar que cada interruptor, pushbutton,LED, etc.,

tiene un nombre y una asignación 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.

Page 19: Programación de circuitos lógicos en VHDL

Con esta información ya podemos asignar los pines de la siguiente manera. Ver la figura

siguiente.

Page 20: Programación de circuitos lógicos en VHDL

A continuación cerramos el programa Plan Ahead. Ver figura siguiente.

El programa le pedirá salvar los cambios, presione el botón Save. Ver siguiente figura.

Page 21: Programación de circuitos lógicos en VHDL

En la ventana siguiente presione el botón OK para salir de plan Ahead. Ver siguiente

figura.

Ya es hora de generar el archivo de programación 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:

Page 22: Programación de circuitos lógicos en VHDL

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

Spartan.

Page 23: Programación de circuitos lógicos en VHDL

La Alarma

Figura 1. Simulación del circuito de la alarma.

Figura 2. Circuito de la alarma sintetizado.

Page 24: Programación de circuitos lógicos en VHDL

Figura 3. Simulación en el test bench.

Page 25: Programación de circuitos lógicos en VHDL

CONCLUSIONES

Luego de elaborado este informe, llegamos a las siguientes conclusiones:

1. Es a través de un lenguaje de programación VHDL que podemos llevar a la vida

real todas aquellas situaciones teóricas 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 través del conocimiento de circuitos digitales y electrónicos

que se puede llevar a la realidad, no sin antes programarlos a través de programas

informáticos, en nuestro caso Xilinx.

2. Para programar en Xilinx con lenguaje VHDL, no solo se debe tener

conocimientos informáticos, sino también de compuertas lógicas, sistemas de

numeración, mapa K, etc. Además es necesario saber circuitos electrónicos para

luego acoplar este circuito a transistores que amplifiquen la señal y pueda ser más

eficiente el diseño 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 diseñamos con las herramientas aprendidas

en clases, sin embargo fue en el laboratorio donde hicimos la práctica 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 diseñado en base a tres condiciones, el motor, la puerta y la lámpara.

Para diseñar circuitos digitales, siempre se necesita una variable sujeta a

condiciones para que la salida establecida cumpla con ciertos parámetros y

funcione de la manera que el diseñador desee para su futuro funcionamiento.

5. En VHDL podemos programar, ya sea con lógica negativa o con lógica positiva,

ambos resultados deben dar lo mismo, depende de la persona que programe el

circuito, sin embargo en nuestro caso, la mayoría de los diseños se hacen

habilitando el 1 o con lógica positiva.

6. La Spartan 3E es el dispositivo que tenemos a nuestra disposición para comprobar

lo que hemos hecho en el proceso de programación. En el caso de la alarma,

cuando se cumplía la condición el LED de la salida debía encender, la ubicación de

los LED (salida) y los interruptores (entrada) se programa con la ayuda del

FloorPlan, para establecer la posición de los mismos y luego se genera un .bit para

luego pasarlo a la Spartan.

Page 26: Programación de circuitos lógicos en VHDL

BIBLIOGRAFÍA

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