You are on page 1of 81

Ingeniera deTelecomunicacin

INGENIERA DE TELECOMUNICACIN

ELECTRNICA DIGITAL II

Manualdeprcticas

ELECTRNICA DIGITAL II

Manual de prcticas

Susana Borromeo, Beatriz Romero rea de Tecnologa Electrnica Universidad Rey Juan Carlos

ii

iii

TABLA DE CONTENIDO

Captulo 1: Introduccin
Objetivos Metodologa de Diseo 1 2

Captulo2: Prctica guiada


Captura del diseo Captura de esquemas Descripcin mediante VHDL Simulacin Creacin del banco de pruebas con el HDL Bencher Simulacin con el ModelSim XE 6 6 17 19 19 23

Capitulo 3: Implementacin del diseo


Placa de prcticas: Pegasus de Digilent Ejemplo prctico Cdigo VHDL: Asignacin de pines Programacin de la FPGA Prctica propuesta 28 35 35 36 38 41

Enunciados de las prcticas


Practica 1: Ejemplos sencillos con VHDL: Diseo y simulacin Lgica Combinacional Demultiplexor de 3 a 8 Decodificador de 2 a 4 Codificador de 8 a 3 con prioridad ALU con dos nmeros de dos bits con dos operaciones lgicas y dos aritmticas Sumador binario completo de dos nmeros de 2 bits Lgica Secuencial Contador ascendente de 4 bits Divisor de frecuencia Contador de 4 bits con carga en paralelo 45 45 46 46 46 46 46 47 47 47 47

Contador de 4 bits ascendente/descendente Evaluacin de la prctica Prctica 2: Control de dos semforos. Va principal y va secundaria Prctica 3: Diseo de un sistema de alarma Prctica 4: Control de un montacargas de cuatro plantas Prctica 5: Cronmetro Digital

47 48 49 53 57 61 63

Bibliografa

ii

1
Introduccin

Captulo

Este manual no slo es una recopilacin de los enunciados de las prcticas de la asignatura de Electrnica Digital II de la carrera de Ingeniera de Telecomunicacin sino que en l se hace una descripcin tanto de la metodologa como de las herramientas necesarias para realizarlas. Los objetivos fundamentales de la asignatura son que el alumno se familiarice con el anlisis y diseo de sistemas secuenciales y que se introduzca en el modelado de circuitos digitales. Para cumplir este objetivo se ha elegido el VHDL [1],[2],[3] como lenguaje de descripcin de hardware. Este lenguaje es admitido por casi todas las herramientas de diseo que actualmente estn en el mercado. A lo largo de este curso se utilizar el paquete informtico ISE de XILINX Inc [4]. La Electrnica Digital abarca muchos aspectos (ver Figura 1) entre los que cabe destacar: el lgebra de Boole, los circuitos combinacionales, el anlisis y la sntesis de circuitos secuenciales, puertas lgicas, y familias lgicas, dispositivos y componentes lgicos, y la conversin D/A y A/D. En la asignatura de Electrnica Digital II se aborda el diseo, anlisis y sntesis de circuitos secuenciales, as como la implementacin de sistemas digitales sencillos en dispositivos de lgica programable y en particular en FPGAs (Field Programable Gate Array)1

Electrnica digital (Electrnica II) Electrnica digital (Electrnica II)


CDA

A+B=B+A
CAD
Figura 1. Electrnica Digital

Objetivos
Con estas prcticas se proponen un conjunto de ejercicios cuya ejecucin aportar al estudiante los conceptos bsicos para el diseo, simulacin e implementacin de sistemas digitales en dispositivos lgicos programables.
1

Matriz de puertas programable por campo.

Manual de Prcticas. Electrnica Digital II

Se persigue que el alumno se familiarice con los entornos de desarrollo y las herramientas CAD de diseo digital, as como que se asienten los conceptos bsicos de los lenguajes de descripcin de hardware, y en particular el VHDL, explicados con anterioridad en las clases tericas. Para conseguir estos objetivos se va a utilizar el paquete informtico ISE de XILINX Inc. Este paquete informtico est formado por un conjunto de herramientas que permiten disear circuitos digitales bien mediante esquemas lgicos o bien utilizando lenguajes de descripcin de hardware como VHDL o Verilog. Tambin permite simular el comportamiento de los circuitos diseados, y sintetizarlos sobre dispositivos lgicos programables de XILINX. Como placas de prcticas se van a utilizar la placas de desarrollo PEGASUS de DIGILENT [5]. En base a lo que se ha dicho en los prrafos anteriores la estructura del manual es la siguiente: Metodologa de diseo con dispositivos de lgica programable. Herramientas CAD de diseo: ISE de XILINX Inc y ModelSim XE, de Mentor Graphics. Placa de prcticas: PEGASUS de DIGILENT. Enunciados de las prcticas.

Metodologa de diseo
Para realizar las prcticas se har en primer lugar un estudio de la especificacin propuesta con el fin de determinar una posible solucin. A continuacin se realizar un estudio asistido por ordenador utilizando el paquete informtico ISE de XILINX Inc. Como ya se ha comentado anteriormente este paquete informtico est formado por un conjunto de herramientas que permiten disear circuitos digitales bien mediante esquemas lgicos o bien utilizando lenguajes de descripcin de hardware como VHDL o Verilog. Tambin permite simular el comportamiento de los circuitos diseados, y sintetizarlos sobre dispositivos lgicos programables de Xilinx. La metodologa que se sigue en el diseo y desarrollo de sistemas digitales basados en lgica programable es la que aparece esquematizada en la Figura 2. Los pasos a segur son los siguientes: Se introduce el diseo que se quiere simular en el entorno de captura de esquemas de la herramienta, llamado Xilinx ECS. La captura del diseo puede realizarse mediante esquemticos, utilizando lenguajes de descripcin de hardware, ecuaciones algebraicas o editores de diagramas de estados (ver Figura 3). Se crea un banco de prueba o testbench para comprobar el funcionamiento del circuito, mediante la herramienta HDL Bencher. Se simula el funcionamiento del circuito invocando a la herramienta de simulacin de circuitos digitales ModelSim XE, de Mentor Graphics [6].

Manual de Prcticas. Electrnica Digital II

Se comprueba que el funcionamiento del circuito sea el deseado. Para ello se analizan las formas de onda de las seales. En caso de que los resultados no sean los esperados, se debe revisar el diseo empezando por la especificacin de partida para localizar donde est el fallo, retocando entonces el esquema y repitiendo el ciclo de diseo.
Captura del diseo Captura del diseo Simulacin funcional Simulacin funcional Diseo fsico Diseo fsico Simulacin con retardos Simulacin con retardos Programacin Programacin Pruebas prototipo Pruebas prototipo Depuracin HW Depuracin HW
Introducir los datos sobre las caractersticas del circuito que se quiere construir Probar si la IDEA (y/o los primeros diseos) funcionan

Traducir el diseo a un circuito real Probar si el circuito funcionar a la velocidad requerida, una vez que se saben los retardos reales, y si lo hace igual que la idea Descargar la informacin de configuracin a la FPGA Probar el circuito REAL, en su entorno real de funcionamiento Detectar las causas de problemas y corregirlos

Figura 2. Metodologa de diseo con FPGAs

Captura del diseo Captura del diseo


Captura de Captura de esquemas esquemas Lenguaje Lenguaje descr. HW descr. HW Ecuaciones Ecuaciones algebraicas algebraicas Diagrama de Diagrama de estados estados
A a b c 0/1 0/1 B C 1/1

0 1

If c=0 then s<=a else s<=b

s=ac + bc

1/1

Traduccin

Sntesis

Sntesis sencilla

Sntesis sencilla

Lista de Conexiones (netlist)

Diseo fsico Diseo fsico

Figura 3. Captura del diseo

Comprobada la funcionalidad del diseo hay que traducirlo a un circuito fsico, a un circuito real. En nuestro caso se va a utilizar una FPGA de Xilinx. Con la herramienta de Xilinx cubrimos las etapas que van desde la captura del diseo a la programacin del dispositivo de lgica programable (Figura 4). Como veremos en captulos posteriores la herramienta tiene automatizadas las etapas entre la captura y la programacin de la FPGA.

Manual de Prcticas. Electrnica Digital II

Captura del diseo Captura del diseo


Mapeado Mapeado (Mapping) (Mapping) Emplazamiento Emplazamiento (Placement) (Placement) Conexionado Conexionado (Routing) (Routing) Clculo de Clculo de retardos retardos Configuracin Configuracin
Agrupar o descomponer los smbolos lgicos en los elementos fsicos que componen la FPGA (CLBs, IOBs, etc.) Colocar los CLBs resultantes en los CLBs disponibles de la FPGA, atendiendo a criterios de proximidad para reducir el tiempo de propagacin de las seales en el interior del circuito Gestionar los recursos de conexionado locales (vecino a vecino), de larga distancia (buses y matrices de conexin) o globales (relojes, resets, etc.) Estimacin de tiempos de propagacin en funcin de las puertas usadas, su carga y sus interconexiones, para poder realizar simulaciones precisas

Generar la secuencia de bits que configura el dispositivo adecuadamente

Programacin Programacin
Figura 4. Diseo fsico en FPGAs

Para ver como se realizan todos estos pasos, as como para aprender el manejo de las distintas funciones de las herramientas en el siguiente captulo se realizar un ejemplo sencillo como prctica guiada.

2
Prctica Guiada
El objetivo de esta prctica guiada es presentar a grandes rasgos el entorno de diseo que ofrece el paquete informtico ISE de XILINX Inc. En esta prctica se plantear el diseo de un bloque combinacional.
La herramienta consta de dos partes:

Captulo

La herramienta Xilinx-ISE (Integrated Software Environment) es una herramienta de diseo de circuitos profesional que nos va a permitir, entre otras funciones, la realizacin de esquemticos y su posterior simulacin.

Project Navigator: donde se realizar el diseo del circuito, bien mediante un esquemtico o bien utilizando un lenguaje de descripcin de hardware.

ModelSim: donde podr realizarse la simulacin del funcionamiento del circuito y de este modo comprobar si funciona segn las especificaciones establecidas.

El desarrollo de las prcticas se realizar siguiendo las etapas explicadas en el captulo anterior. En primer lugar, se estudiar la especificacin propuesta para determinar una posible solucin y a continuacin se har un estudio asistido por ordenador utilizando el paquete informtico ISE de XILINX Inc. Dentro de este estudio podemos distinguir los siguientes pasos: Introduccin del diseo que se quiere simular en el entorno de captura de esquemas de la herramienta, llamado Xilinx ECS. La captura del diseo puede realizarse mediante esquemticos o utilizando lenguajes de descripcin de hardware. Creacin de un fichero de test o estmulos (testbench) para comprobar el funcionamiento del circuito mediante la herramienta HDL Bencher. Simulacin del funcionamiento del circuito llamando a la herramienta de simulacin ModelSim XE, de Mentor Graphics. Comprobacin del funcionamiento del circuito.

Manual de Prcticas. Electrnica Digital II

Diseo de un multiplexor 2 a 1
La prctica consiste en el diseo de un multiplexor 2 a 1 con seal de habilitacin. Un multiplexor 2 a 1 tiene dos entradas de datos (X0, X1), una entrada de control (C), una seal de habilitacin (E) y una salida (Z).
E

X0 X1

0 1

La funcin de conmutacin del multiplexor 2 a 1 es la siguiente:


Z = E( C X 0 + C X1)

De acuerdo con la ecuacin anterior para implementar este circuito se necesitan las siguientes puertas lgicas: 2 puertas AND de 3 entradas, 1 puerta OR de 2 entradas y 1 inversor. La implementacin tambin se puede realizar con 3 puertas AND de 2 entradas, una puerta OR de 2 entradas y un inversor.

Captura del diseo


Captura de esquemas
La idea de las herramientas de captura de esquemas consiste en que se pueda reproducir de forma grfica aquello que haramos sobre el papel, dibujando dichas puertas y conectando todos los componentes entre s. Creacin de un proyecto de trabajo. Para comenzar un proyecto nuevo se empieza arrancando el programa Xilinx Project Manager, que se encuentra en Inicio=>Todos los Programas=>Xilinx ISE 7.1i=>Project Navigator. Para crear el nuevo proyecto, se abre File=>New Project. Nos aparecer un cuadro de dilogo como el siguiente:

Manual de Prcticas. Electrnica Digital II

En el men Top-Level Module Type hay que seleccionar Schematic y a continuacin pulsar en Siguiente. Saldr otro cuadro de dilogo en el que se pregunta por el tipo de dispositivo que se va a usar, y por las herramientas que se van a utilizar a lo largo del flujo de diseo. Hay que asegurarse de que en Simulator aparece Modelsim, y en Generated Simulation Language aparece VHDL. Una vez comprobado, pulsar Siguiente.

Aparecern a continuacin varios cuadros de dilogo, en los que no hay que cambiar nada, simplemente pulsar en Siguiente, y en el ltimo pulsar en Finalizar. Una vez creado el proyecto, hay que crear un nuevo diseo de esquemtico. Para ello hacer doble clic en Create New Source. Aparecer un cuadro de dilogo en donde debemos seleccionar el nombre del archivo (mux2a1) y el tipo de archivo (Schematic).
7

Manual de Prcticas. Electrnica Digital II

Una vez seleccionado el tipo de archivo y el nombre, pulsar en Siguiente y en el siguiente cuadro de dilogo pulsar en Finalizar. Una vez hecho esto se abrir el editor de esquemticos que tiene este aspecto:

En la parte de la izquierda hay dos pestaas etiquetadas como Options y Symbols. La primera de ellas permite cambiar ciertas opciones de comportamiento de la herramienta. En la pestaa Symbols se pueden seleccionar los componentes que queremos aadir al diseo. Al pinchar en ella presenta el siguiente aspecto, y desde ella se pueden seleccionar los componentes.

Manual de Prcticas. Electrnica Digital II

La columna derecha de Symbols est dividida en varios mens. Desde el primero de ellos, etiquetado como Categories, se puede escoger el tipo de elementos que se quiere usar, como puertas lgicas, comparadores, multiplexores, memorias, etc. Tambin aparece en la parte inferior una pestaa que nos proporciona informacin sobre cada uno de los smbolos. Para nuestra prctica usaremos como elementos puertas lgicas AND y OR que estn en la categora Logic. Para empezar con el diseo aadiremos las dos puertas AND de tres entradas (and3) y la puerta OR de dos entradas (or2). Para ello seleccionaremos la opcin Logic en Categories, y en Symbols buscaremos el componente and3. Una vez seleccionado pincharemos en el rea de diseo 2 veces para insertar 2 puertas. Una vez colocados los 2 componentes, se pulsa la tecla ESC para dejar de insertar componentes. Es conveniente hacer un zoom sobre la zona en la que vamos a trabajar para poder colocar mejor los componentes. Para hacer zoom sobre una zona hay que pinchar en el icono de la barra de herramientas y luego pinchar y dibujar un cuadrado sobre la zona donde queremos hacer el zoom. Una vez colocadas las dos puertas AND buscamos el componente or2, lo seleccionamos y lo insertamos en el esquemtico. Una vez colocado, se pulsa la tecla ESC. El aspecto del esquemtico debera ser el siguiente:

Manual de Prcticas. Electrnica Digital II

Ahora tenemos que colocar los puertos de entrada. Para colocar un puerto de entrada hay que pinchar en el icono de la barra de herramientas, y luego pinchar en las entradas de algn dispositivo. En el caso general colocamos inversores (en la opcin Logic en Categories, y en Symbols el componente inv) y pinchamos las entradas a cada una de las entradas de los inversores. Una vez colocados los 3 puertos de entradas, hay que pulsar ESC.

Hay que cambiar el nombre a los puertos de entrada y para ello se hace doble clic en cada uno de ellos y entonces aparecer la siguiente ventana donde debemos poner el nombre de la entrada en la casilla Value de la fila Name.
10

Manual de Prcticas. Electrnica Digital II

Ahora vamos a aadir 3 cables a cada una de las salidas de los inversores. Para ello hay que pinchar en el icono de la barra de herramientas, y luego pinchar y arrastrar en las salidas de cada uno de los inversores. Una vez colocados los 3 cables, vamos a ponerles nombre. Para ello hay que pinchar en el icono de la barra de herramientas. Nos saldr a la izquierda un men en el que debemos poner el nombre que queremos dar al cable.

Solamente hay que poner el nombre en la casilla Name y luego pinchar sobre el cable que queremos nombrar. Llamaremos a cada una de las salidas de los inversores NOT_a0, NOT_a1 y NOT_c
11

Manual de Prcticas. Electrnica Digital II

Como entrada del circuito tambin tenemos que aadir el ENABLE (E). Ahora que ya tenemos las entradas procedemos a implementar el resto del circuito. De la resolucin del problema sabemos que:
Z = E( C X 0 + C X1)

Es decir, para implementar las funciones necesitamos las dos puertas AND de tres 3 entradas (and3), y la puerta OR de dos entradas (or2) que ya tenemos en el esquemtico. A continuacin conectaremos un cable a cada una de las entradas de las puertas AND. Una vez colocados los cables les pondremos el nombre de la entrada que deben tener. Es MUY IMPORTANTE poner los nombres exactamente igual que los que pusimos a las entradas y a las salidas de las puertas inversoras. El hecho de poner a dos cables el mismo nombre hace que estos estn interconectados. Colocadas las puertas AND, los cables y los nombres de estos, hay que combinar las salidas de las puertas AND con la puertas OR. Por ltimo vamos a implementar las funcin de salida Z. Colocamos el puerto de salida conectados a la salida de la puerta OR mediante el icono , y le cambiamos el nombre igual que hicimos con los puertos de entrada. El esquema que obtendremos es similar al que aparece en la siguiente figura:

Una vez que tenemos el esquema completo del circuito vamos a simularlo para comprobar que funciona correctamente. Comprobacin del circuito Una vez terminado el diseo del circuito puede hacerse una simple comprobacin sobre el mismo para asegurarnos de que todas las conexiones estn bien hechas y que no hay cables sueltos o puertas sin conectar. Para ello desde el men principal se pincha en Tools y dentro de este men desplegable en Check Schematics. Aparecer una ventana que nos informar si hay algn Error o Warning. En nuestro caso como tenemos las salidas de los inversores sin conectar nos aparecern los siguientes Warnings:
12

Manual de Prcticas. Electrnica Digital II

Creacin de un smbolo Con el diseo realizado se podr hacer un nuevo componente, consistente en un caja negra, un bloque con el mismo nmero de entradas y salidas del circuito original diseado y con su funcionalidad. Este nuevo smbolo creado pasa a formar parte de la librera de componentes del proyecto y podr utilizarse como un componente ms. Para crearlo desde el men principal se pincha en Tools y dentro de este men desplegable en Symbol Wizard. Nos aparecer la siguiente ventana en la que marcaremos la opcin Using Schematic dentro del nombre que se dar al smbolo.

13

Manual de Prcticas. Electrnica Digital II

A continuacin aparecer la ventana en la que se especifican las entradas y salidas del smbolo.

En la siguiente ventana es posible especificar el tipo de fuente que se va a utilizar a la hora de crear el smbolo:

14

Manual de Prcticas. Electrnica Digital II

Pulsando Siguiente aparece el esquema del smbolo como caja negra con sus entradas y salidas:

Al pinchar en Finalizar el programa genera el smbolo y lo muestra en una hoja del editor de esquemticos:

15

Manual de Prcticas. Electrnica Digital II

Si nos fijamos en la parte inferior de la ventana del editor de esquemticos, podemos ver que hay dos pestaas una correspondiente al esquemtico del circuito que hemos realizado MUX2a1.sch y otra que se corresponde con el smbolo creado MUX2a1.sym. En el esquema del circuito original, si observamos la parte derecha de la ventana, (Categories), vemos que hay una nueva categora, que corresponde a la librera del proyecto que hemos abierto y donde se ha almacenado el smbolo creado. Al seleccionar esa categora, en la parte inferior (Symbols), encontramos el componente creado.

16

Manual de Prcticas. Electrnica Digital II

Descripcin utilizandoVHDL
Como ya se ha dicho con anterioridad la captura del diseo se puede realizar mediante esquemticos o mediante lenguajes de descripcin de hardware. El objetivo de este apartado es realizar el diseo del circuito propuesto (un multiplexor 2 a 1 con seal de habilitacin) utilizando como lenguaje de descripcin de hardware el VHDL. Creacin de un proyecto de trabajo Como ya se explic anteriormente para comenzar un proyecto nuevo se empieza arrancando el programa Xilinx Project Manager, que se encuentra en Inicio=>Todos los Programas=>Xilinx ISE 7.1i=>Project Navigator. Para crear el nuevo proyecto, se abre File=>New Project.

En este caso en el men Top-Level Module Type hay que seleccionar HDL y a continuacin pulsar en Siguiente. Saldr otro cuadro de dilogo en el que se pregunta por el tipo de dispositivo que se va a usar, y por las herramientas que se van a usar a lo largo del flujo de diseo. Asegurarse de que en Simulator aparece Modelsim, y en Generated Simulation Language aparece VHDL. Una vez comprobado, pulsar Siguiente. Una vez creado el proyecto, hay que crear un nuevo diseo en VHDL. Para ello se hace doble clic en Create New Source. Aparecer un cuadro de dilogo en donde debemos seleccionar el nombre del archivo (mux2a1) y el tipo de archivo (VHDL Module).

17

Manual de Prcticas. Electrnica Digital II

Una vez seleccionado el tipo de archivo y el nombre, pulsar Siguiente. En el siguiente cuadro de dilogo nos piden en nombre de la entidad (entity), el nombre de la arquitectura (architecture), as como el nombre, tipo ( in, out, inout) y el rango (MSB: bit ms significativo, LSB: bit menos significativo) de los puertos (port) de la entidad.

Al pulsar Siguiente en el cuadro de dialogo que aparece se resumen los datos del proyecto que se ha creado.

18

Manual de Prcticas. Electrnica Digital II

Al pulsar Finalizar aparecen los datos de la entidad y la arquitectura con los que se va a construir el esqueleto del cdigo VHDL donde vamos a disear nuestro circuito. En la parte derecha de la figura se tiene el esqueleto del cdigo VHDL.

Una vez que se ha realizado el cdigo VHDL se proceder a su simulacin siguiendo los pasos que se describen en el apartado siguiente.

Simulacin
Creacin del banco de pruebas con el HDL Bencher
Una vez que se ha revisado el circuito y est libre de errores habr que comprobar su correcto funcionamiento. Para ello habr que realizar una simulacin del circuito diseado. La etapa de verificacin funcional se va a realizar con la herramienta de simulacin ModelSim de Mentor Graphics Corporation. Para poder simular el circuito primero debemos crear un banco de pruebas (testbench) donde se introducen los valores que se
19

Manual de Prcticas. Electrnica Digital II

asignan a las entradas y en funcin de los cuales se obtendr una salida que deber coincidir con el valor esperado de acuerdo a la funcionalidad de nuestro circuito. Para crear el fichero de testbench se va a emplear una herramienta grfica del entorno de desarrollo de ISE. Para ello volvemos a la herramienta Project Navigator y creamos un nuevo fichero, haciendo doble clic en Create New Source. Nos saldr una ventana como la siguiente, donde debemos escoger como tipo de archivo Test Bench Waveform.

A continuacin aparecer una ventana para seleccionar a que fichero ir asociado el testbench, en nuestro caso como solo tenemos un diseo lo seleccionaremos y pincharemos en Siguiente.

En la siguiente ventana que aparecer se muestra informacin sobre los ficheros que se van a crear. No hace falta hacer nada, simplemente pinchar en Finalizar.

20

Manual de Prcticas. Electrnica Digital II

A continuacin aparecer una ventana como la siguiente:

Esta ventana permite establecer los parmetros temporales de la simulacin. Dependiendo de si nuestro circuito es secuencial (gobernado por un reloj) o combinacional seleccionaremos la opcin Single Clock o Combinatorial. Seleccionamos esta ltima ya que nuestro diseo es puramente combinacional. A continuacin configuramos dos parmetros: (a) cunto tiempo vamos a dejar desde que introducimos una entrada hasta que comprobamos si la salida es correcta (Wait to check), y (b) cunto tiempo esperamos para introducir una nueva entrada (Wait to Assign). Estos tiempos dependern del retardo combinacional de la entidad. En nuestro caso, consideramos el circuito ideal, es decir, que el reatado es cero, as que dejamos los valores por defecto, y pulsamos OK.. En la ventana del Project Navigator nos aparecer un grfico con las entradas y salidas del circuito y una escala de tiempos para ir escogiendo los valores de entrada en cada instante de tiempo. Podemos cambiar el orden en que aparecen las seales de entrada y salida pinchando en su nombre y arrastrando hasta la posicin donde queremos que estn.

21

Manual de Prcticas. Electrnica Digital II

Los cuadrados azules representan los instantes de tiempo en donde podemos cambiar los valores de las entradas haciendo clic sobre ellos. Para comprobar el buen funcionamiento del circuito crearemos una serie de entradas que cubran todos los posibles valores de entrada del circuito. Debe quedarnos un esquema como el siguiente:

Una vez introducidas las entradas, se graba el diseo pinchando en el icono

Ahora, para iniciar la simulacin, hay que seleccionar en la parte izquierda del Project Navigator: En la parte superior, el archivo de simulacin (mux2a1_tb)

22

Manual de Prcticas. Electrnica Digital II

En la parte inferior hacer doble click en Generate Expected Simulation Results. Una vez realizados estos pasos, el programa llamar al simulador y presentar los resultados en la propia pantalla del HDL Bencher. Deberamos ver en el HDL Bencher unos resultados como los siguientes:

Simulacin con el ModelSim XE


Con la herramienta ModelSim XE se va a realizar una simulacin del comportamiento del circuito (behavioral). En el Project Navigator seleccionamos mux2a1_tb(mux2a1_tb.tbw) en la ventana Sources in Project. En la ventana inferior Process for Sources mux2a1_tb en el men ModelSim Simulator hacer doble clik en Simulate Behavioral VHDL Model, en este momento se carga el programa ModelSimXE. Al arrancar el programa aparece la ventana ModelSim XE Starter.

23

Manual de Prcticas. Electrnica Digital II

Adems se arranca el programa de simulacin y aparecen una serie de ventanas. Los resultados de simulacin del circuito se muestran en la ventana de ondas (Wave-default):

En la ventana Wave-default habr que hacer un zoom para poder visualizar la salida del circuito:

24

Manual de Prcticas. Electrnica Digital II

Para insertar un cursor y que podamos ir recorriendo el grfico hay que pinchar en el Men Insert y seleccionar Cursor. En la primera columna aparecen todas las entradas y salidas del circuito y en la segunda columna los valores que tienen en un determinado instante. De esta manera podemos verificar el correcto funcionamiento del circuito diseado.

25

Manual de Prcticas. Electrnica Digital II

26

3
Implementacin del diseo
Implementacin en placa y programacin de la FPGA.
Cdigo HDL Esquemtico Sntesis Restricciones a la sntesis Netlist

Captulo

En el proceso de diseo, sntesis e implementacin de circuitos digitales en dispositivos de lgica programable se esquematiza en la Figura 5.

Implementacin

Restricciones en la implementacin BIT File

Figura 5. Proceso de diseo

El ISE de XILINX Inc nos proporciona las herramientas necesarias para poder ejecutar cada uno de estos pasos ( Figura 6).

27

Manual de Prcticas. Electrnica Digital II

Figura 6.Herramienta ISE de XILINX

En este capitulo se va a realizar un ejemplo sencillo para estudiar su implementacin en la FPGA de la placa de prcticas del curso. Antes de desarrollar el ejemplo prctico se describir brevemente la placa de prcticas.

Placa de prcticas: Pegasus de Digilent

Figura 7. Placa de prcticas: PEGASUS de Digilent

La placa que se va utilizar en las prcticas es el modelo PEGASUS de DIGILENT (Figura 7). Con ellas se consigue una plataforma de desarrollo basada en FPGAs de Xilinx

28

Manual de Prcticas. Electrnica Digital II

y que proporciona un conjunto de perifricos de uso comn tales como LEDs, pulsadores, displays de 7 segmentos o switches (interruptores). A continuacin se va a realizar una breve descripcin de la placa enfocada al empleo que se va a hacer de ellas en este curso. Para mayor informacin se puede consultar la pgina web del fabricante [5]. La placa PEGASUS es una placa basada en una FPGA Spartan 2 de Xilinx, y en particular en la XC2S50, que contiene 50K puertas. Adems incluye una memoria Flash XCF01S, 96 pines de entrada/salida, rutados a 3 conectores de expansin, 8 LEDs rojos, 4 displays de 7 segmentos, 4 pulsadores, 8 interruptores, un puerto PS/2 y otro VGA. La programacin de la FPGA puede realizarse mediante el estndar JTAG o mediante una memoria Flash.

Figura 8. PEGASUS: Diagrama de bloques

En la Figura 8 se muestra un diagrama de bloques de la placa y en la Figura 9 una fotografa en la que se han sealado cada uno de sus componentes.

29

Manual de Prcticas. Electrnica Digital II

Conectores de Expasin Memoria FLASH

Conector JTAG

FPGA Conector de Expansin Conector Alimentacin

Botn

Displays de 7 segmentos Reloj de 50 MHz Switches

Pulsadores

Figura 9 PEGASUS de Digilent

La placa tiene tres conectores de expansin cada uno de los cuales proporciona 32 pines de entrada y salida (ver Figura 10). Los tres conectores tiene la masa (GND) en el pin 1, VU en el pin 2 y la alimentacin de 5V en el pin 3. Los pines del 4 al 35 estn rutados a pines de entrada y salida de la FPGA y los pines del 36 al 40 estn reservado para las seales del JTAG y de los relojes.

Figura 10. PEGASUS: Conectores de expansin y jTAG

El pinout de los conectores de expansin es el que aparece en la Figura 11. Adems del nombre de la seal se muestra el pin de la FPGA al que est rutado. El nombre de las seales se ha realizado por analoga con los buses de un microprocesador de 8 bits: un bus de datos de 8 bits (pines de DB0DB7), un bus de direcciones de 6 bits (ADR0ADR5) y tres seales de control WE,OE, CS. Es importante sealar que para la realizacin de las
30

Manual de Prcticas. Electrnica Digital II

prcticas se utilizan estas seales y que esta notacin es simblica y a la hora de asignar los pines a la FPGA. Lo que hay que tener en cuenta es que las seales DB0DB7 son bidireccionales y el resto son tipo salida para la FPGA.

Figura 11.PEGASUS: pinout de los conectores de expansin

31

Manual de Prcticas. Electrnica Digital II

En la Figura 12 se adjunta los pines de la FPGA. Se puede comprobar la correspondencia con los valores que aparecen en la Figura 11.

Figura 12. Pines de la FPGA de la placa PEGASUS

Como se puede ver en la Figura 9 la placa tiene un LED que permite verificar que la configuracin de la FPGA se ha realizado correctamente. Tambin hay un botn o pulsador que puede ser utilizado como RESET externo.

32

Manual de Prcticas. Electrnica Digital II

Alimentaciones La placa utiliza una tensin de alimentacin de 5V. La alimentacin es conectada a la placa mediante un conector jack (ver Figura 9). Relojes La placa proporciona un reloj primario (GCK1) de 50 MHz conectado al pin 77 de la FPGA. Para la realizacin de las prcticas se utilizar como seal de reloj de la FPGA. Tambin es posible incorporar otro reloj (GLK2) que estara rutado al pin 182 de la FPGA. Displays de 7 segmentos La placa contiene 4 displays de 7 segmentos, tipo LED, en nodo comn, es decir, para activar cada uno de los segmentos se requiere un nivel de tensin bajo, es decir, 0V. Se trata de un display multiplexado de 4 bits, en el que cada dgito est conectado a un circuito comn de 4 nodos. Esto significa que para activar los 4 bits, es decir, para que cada uno de los cuatro dgitos aparezcan constantemente iluminado hay que realizar un controlador con una frecuencia de refresco de 1 KHz a 60 KHz, en la que cada dgito est iluminado del ciclo de refresco.

Figura 13. PEGASUS: Displays de 7 segmentos

LEDs La placa consta de 8 LEDs rojos de montaje superficial (SMD). El esquema de cada uno de los LEDs es el que aparece en la Figura 14 , en el que los nodos de los LEDs estn conectados a travs de una resistencia de 390 a Vdd (alimentacin). Adems en la placa hay un LED que indica el estatus de la programacin JTAG y otro que indica el estado de la placa.

Figura 14.PEGASUS: LEDs

Pulsadores El esquema de los 4 pulsadores o botones de la placa es el que aparece en la Figura 15.

33

Manual de Prcticas. Electrnica Digital II

Figura 15. PEGASUS:Pulsadores

Switches o interruptores El esquema de los 8 interruptores o switches de la placa se puede ver en la Figura 16.

Figura 16. PEGASUS: Interruptores

34

Manual de Prcticas. Electrnica Digital II

Ejemplo prctico
Disear un circuito que encienda alternativamente durante aproximadamente 2 segundos, los LEDs pares e impares de la placa. El primer paso es crear un nuevo proyecto al que denominaremos FPGA_luces. npl En todo proyecto, se van a tener dos tipos de ficheros: un fichero .vhd (main_luces.vhd) en el que est el cdigo VHDL y un fichero .ucf (main_luces.ucf) en el que se asignan las entradas y salidas a los pines de la FPGA.

Cdigo VHDL
A continuacin se adjunta el cdigo VHDL del circuito que se quiere implementar en la placa de prcticas. main_navidad.vhd
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity main_luces is Port ( clk : in std_logic; reset : in std_logic; led_out : out std_logic_vector(7 downto 0)); end main_luces; architecture Behavioral of main_luces is -- Seales signal cntClk: std_logic_vector(25 downto 0); signal ledout_aux: std_logic_vector(15 downto 0); begin --proceso que cuenta los pulsos del reloj process (Clk, reset) begin if (reset = '1') then cntClk <= (others => '0'); ledout_aux <= (others => '0'); elsif clk= '1' and clk'event then cntClk <= cntClk +1; if (cntClk(25) = '0') then ledout_aux <= "01010101"; else ledout_aux <= "10101010"; end if; end if; end process; led_out <= ledout_aux; end Behavioral;

Analizando el cdigo podemos distinguir un primer proceso en el que se genera un reloj, de aproximadamente 2 segundos a partir del reloj de la placa de 50 MHz. Se propone al alumno que deduzca cmo se generara la secuencia si en lugar de 2 segundos fueran 20 segundos.

35

Manual de Prcticas. Electrnica Digital II

Asignacin de pines
Para crear el fichero main_luces.ucf en el que se asignan las salidas de nuestra entidad a los pines de la FPGA nos basaremos en el manual de la placa en la que aparece que pines de la FPGA estn unido a los perifricos de la placa (Figura 12). Para crear el fichero de asignacin de pines (main_luces.ucf) hay que pinchar en Assign Package Pins Post-Translate dentro de Implement Design

Figura 17. Asignacin de pines

Al pinchar en Assign Package Pins Post-Translate aparecer una ventana en el que nos dice que no hay ningn fichero .ucf asociado al proyecto y si queremos que se cree.

36

Manual de Prcticas. Electrnica Digital II

Figura 18

Al pinchar en Si aparece una nueva pantalla (Xilinx PACE) con varias ventanas:

Figura 19. Xilinx PACE

La ventana en la que se asignan los pines es la que lleva por nombre Design Object ListI/O Pins.

37

Manual de Prcticas. Electrnica Digital II

Figura 20. Design Object List- I/O Pins.

De acuerdo con el manual de la placa los LEDS estn rutados a los pines 36,37,41,42,43, 44,45 y 46 y el reloj al pin 77. Como reset hemos elegido el botn serigrafiado como BTN3 rutado al pin 154. Programacin de la FPGA La programacin de la FPGA est basada en el estndar IEEE 1149.1 (JTAG o Boundary Scan) [7],[8].

Figura 21. Programacin de la FPGA

Para programar la placa de prcticas se conecta al PC mediante el cable JTAG y se pulsa doble clic en el icono ConfigureDevice (iMPACT). En la placa hay que quitar los tres jumpers serigrafiados con M0, M1 y M2.

38

Manual de Prcticas. Electrnica Digital II

En el caso de que no se haya producido ningn error aparece la siguiente ventana en la que hay que marcar la opcin Boundary-Scan Mode y a continuacin Siguiente:

En la siguiente pantalla la opcin que hay que elegir es Automatically connect to cable and identify Boundary-Scan chain y despus hay que marcar Finalizar.

39

Manual de Prcticas. Electrnica Digital II

Mediante el JTAG se identifican los dispositivos que hay en la cadena, en este caso la FPGA y la memoria Flash ROM. Cada dispositivo puede ser programado con el fichero de configuracin correspondiente, en el caso de la FPGA se trata de un fichero .bit. Una vez que ya hemos configurado la FPGA la tenemos que programar. Para ello marcamos en el dispositivo y con el botn derecho del ratn desplegamos el men y hacemos Clik en Program.

Si la FPGA se ha programado correctamente aparecer la siguiente pantalla:

40

Manual de Prcticas. Electrnica Digital II

Programacin de la FPGA desde la EPROM


La placa PEGASUS es una placa basada en una FPGA Spartan 2 de Xilinx, y en particular en la XC2S50, que contiene 50K puertas. Adems incluye una memoria Flash XCF01S. La programacin de la FPGA se puede realizar conectando la placa al PC mediante el cable JTAG y se pulsando doble clic en el icono ConfigureDevice (iMPACT). La FPGA est basada en memorias RAM (voltiles), lo cual significa que al quitar la alimentacin de la placa, se borrar la configuracin de la FPGA. Para evitarlo, la placa incorpora una memoria Flash (no voltil) , a travs de la cual se puede configurar la FPGA, evitando que cuando se quite la alimentacin tengamos que grabarla otra vez.
Memoria FLASH

Botn de programacin

Jumpers MODO de programacin

Figura 22. PEGASUS: Botn y

Para programar la FPGA desde la EPROM, tiene que estar puestos los tres jumpers serigrafiados con M0, M1 y M2. La programacin se hace automticamente al encender la placa o al pulsar el botn serigrafiado con PROG.
41

Manual de Prcticas. Electrnica Digital II

Los pasos a seguir son los siguientes: Generacin del fichero de configuracin de la EPROM Asignacin del fichero de programacin en la EPROM Programacin de la EPROM Programacin de la FPGA a travs de la EPROM

Generacin del fichero de configuracin de la EPROM Para generar el fichero de configuracin de la EPROM hay que pinchar en Generate PROM, ACE or JTAG File

Figura 23. Generacin del fichero de configuracin de la EPROM

Entonces aparecer la pantalla de la Figura 24 en la que hay que marcar la opcin de crear un fichero PROM (PROM File):

42

Manual de Prcticas. Electrnica Digital II

Figura 24

En la Siguiente pantalla (Figura 25) se marcan las opciones Xilin PROM y el formato del fichero (PROM File Format)

Figura 25

Al hacer clic en Siguiente aparece la ventana de la Figura 26 donde se aade (Add) el modelo de la EPROM de nuestra tarjeta (en este caso xcf01f).

43

Manual de Prcticas. Electrnica Digital II

Figura 26

Al dar al botn Siguiente aparece la pantalla de la Figura 27, donde se resumen los datos del fichero de configuracin.

Figura 27

A continuacin se aade le dispositivo que se va grabar a travs de la EPROM.

44

Manual de Prcticas. Electrnica Digital II

Figura 28

En la ventana de la Figura 28 hay que hacer clic en Add File. Entonces aparecer una ventana donde tendremos que elegir (marcando en Abrir) el fichero de configuracin de la FPGA que se ha creado en nuestro proyecto (recordemos que este fichero tiene una extensin .bit).

Figura 29

Al pinchar en Abrir (Figura 29), nos aparece la pantalla de la Figura 30 donde nos pregunta si queremos aadir otro dispositivo. En nuestro caso deberemos marcar la opcin NO.

45

Manual de Prcticas. Electrnica Digital II

Figura 30

Por ltimo para generar el fichero de fichero solo hay que marcar Finalizar en la siguiente pantalla (Figura 31) y hacer clic en la ventana donde pregunta si se quiere generar el fichero de la EPROM (Figura 32)

Figura 31

46

Manual de Prcticas. Electrnica Digital II

Figura 32

Asignacin del fichero de configuracin de la EPROM Para crear asignar el fichero de configuracin de la EPROM y grabarla se hace click en Configure Device (iMPACT):

Figura 33

Aparecer la ventana de la Figura 34. En esta ventana habr que pinchar en Mode y marcar Configuration Mode (Figura 35)

47

Manual de Prcticas. Electrnica Digital II

Figura 34

Mode: Configure Device

Figura 35

A continuacin en File hay que marcar Inicializa Chain (Figura 36).

48

Manual de Prcticas. Electrnica Digital II

Figura 36

Una vez identificados los dispositivos que hay en la placa se procede a asignarles los ficheros de configuracin y programarlos. Para ello es importante NO OLVIDAR QUE LOS JUMPERS DE MODO DEBEN ESTAR QUITADOS.

Figura 37

A continuacin se asigna el fichero de configuracin (extensin: .mcs) de la EPROM (Figura 38):


49

Manual de Prcticas. Electrnica Digital II

Figura 38

Programacin de la EPROM Para programar la EPROM hay que pinchar en el dispositivo y hacer clic en el botn derecho del ratn. En el men desplegable marcamos la opcin de Program (Figura 39)

Figura 39

En el men que aparece hay que elegir las opciones marcadas en la Figura 40.

50

Manual de Prcticas. Electrnica Digital II

Figura 40

Si al dar al botn de OK la EPROM se programa correctamente aparecer en pantalla el mensaje Programmig Suceded. (Figura 41)

Figura 41

51

Manual de Prcticas. Electrnica Digital II

Programacin de la FPGA desde la EPROM Para programar la Fuga desde la EPROM hay que colocar los jumpers de MODO y dar al botn serigrafiado con PROG.

Prctica propuesta
Disear un circuito que cada 2 segundos encienda un LED de manera correlativa, es decir que el LED encendido se vaya desplazando. Se recomienda utilizar un registro de desplazamiento

52

Manual de Prcticas. Electrnica Digital II

53

Manual de Prcticas. Electrnica Digital II

Enunciados de las prcticas

54

Manual de Prcticas. Electrnica Digital II

55

Manual de Prcticas. Electrnica Digital II

Prctica

Ejemplos sencillos con VHDL: Diseo y simulacin


El objetivo de esta prctica es el diseo en VHDL de circuitos digitales sencillos y su simulacin. Para ello se utilizar el ISE WebPack de Xilinx y como herramienta de simulacin el ModelSim XE, de Mentor Graphics.

Desarrollo de la prctica
Por cada uno de los ejercicios propuestos el alumno deber crear un proyecto distinto. En ese proyecto se realizar el diseo en VHDL (fichero *.vhd) y se simular el circuito diseado para comprobar su correcto funcionamiento. Se recuerda al alumno que para simular el circuito primero se debe crear un fichero de testbench. El tipo de archivo que se va a utilizar es un fichero de formas de onda (Test Bench Waveform).

Lgica Combinacional
A continuacin se proponen el diseo de cuatro circuitos combinacionales. Demultiplexor de 3 a 8 El alumno en la simulacin debe comprobar el correcto funcionamiento del diseo en todos los casos, entre ellos, debe verificar la funcionalidad del ENABLE.
DATAOUT (7:0) DATAIN ENABLE

DEMUX3a8

CONTROL (2:0)

56

Manual de Prcticas. Electrnica Digital II

Decodificador de 2 a 4 El alumno en la simulacin debe comprobar el correcto funcionamiento del diseo en todos los casos, entre ellos, debe verificar la funcionalidad del ENABLE.

DATAIN (1:0)

DATAOUT (3:0)

DECOD 2a4
ENABLE

Codificador de 8 a 3 con prioridad En un codificador con prioridad las salidas codifican en binario el nmero correspondiente a la entrada activa con mayor peso (la ms prioritaria de entre las que se encuentren activas). La seal de salida ACTIVO se activa (se pone a 1) cuando alguna de las entradas est activada.
DATAIN (7:0) DATAOUT (2:0)

COD8a3 Con prioridad


ACTIVO

ALU con dos nmeros de dos bits con dos operaciones lgicas y dos aritmticas La ALU debe ser capaz de realizar con nmeros A y B de dos bits las siguientes operaciones:
Cdigo de la entrada p1 p0 00 01 10 11 Salida
*

B
AB A plus B A-B

Donde significa la operacin lgica XOR, plus significa la suma aritmtica y A-B la resta aritmtica de dos nmeros binarios Sumador binario completo de dos nmeros de 2 bits

a cs

cOUT

+
s

cce IN

57

Manual de Prcticas. Electrnica Digital II

Lgica Secuencial
Contador ascendente de 4 bits El contador de 4 bits tiene una seal de Reset asncrono (RN) que cuando est activa (en este caso por nivel bajo) el contador se pone a cero. El alumno en la simulacin debe comprobar el correcto funcionamiento del diseo en todos los casos, entre ellos, debe verificar que en cualquier momento de la cuenta si el Reset (RN) vale cero el contador se inicializa.
RN

SAL (3:0)

Contador de 4 bits
CLK

Divisor de frecuencia Disear un circuito que nos divida la frecuencia de entrada por 16.

RN CLK1

Divisor de frecuencia
CLK16

Contador de 4 bits con carga en paralelo Este circuito tiene adems de la seal de Reset (RN) asncrono, activa por nivel bajo, una seal de CARGA sncrona. Cuando la seal de CARGA se activa, habilita la carga en paralelo de un dato de 4 bits en el contador para contar a partir de l.
RN DATO (3:0)

CARGA CLK

Contador de 4 bits con carga en paralelo

SAL (3:0)

En la simulacin el alumno debe comprobar el correcto funcionamiento del reset asncrono y de la funcin de carga en paralelo. Contador de 4 bits ascendente/descendente Se trata de disear un circuito tal que si la seal de UP est activa el circuito realiza la cuenta de forma ascendente y si la seal se desactiva se realiza la cuenta de forma descendente.

58

Manual de Prcticas. Electrnica Digital II

RN

UP

SAL (3:0)

Contador de 4 bits
CLK

Evaluacin de la prctica
El alumno deber entregar por cada uno de los ejercicios propuestos la carpeta del proyecto en la que se incluyen todos los fichero asociados a ese proyecto, entre ellos los ficheros *.vhd y los de simulacin *.tbw. Tambin se ha de entregar una breve memoria en la que se adjuntar el cdigo VHDL y las simulaciones explicando cmo se ha comprobado el correcto funcionamiento del diseo.

59

Manual de Prcticas. Electrnica Digital II

Prctica

Control de dos semforos.

Va principal y va secundaria
El objetivo de esta prctica es el diseo en VHDL de un circuito que controle las luces de dos semforos que regulan el trfico en la interseccin de dos vas, una principal (semforo 1) y otra secundara (semforo 2). El sistema no tiene botones externos que puedan pulsar los peatones. Para la implementacin del sistema se utilizarn los LEDs de la placa de prcticas.

Desarrollo de la prctica
Se desea disear un circuito que controle las luces de dos semforos que regulan el trfico en la interseccin de dos vas, una principal (semforo 1) y otra secundara (semforo 2). Las luces de cada uno de los semforos conmutarn siguiendo la secuencia VERDEMBAR-ROJO. El sistema no tiene botones externos que puedan pulsar los peatones. La secuencia de funcionamiento de los semforos es la siguiente: Semforo1 en VERDE Semforo 2 en ROJO: 16 ciclos. Semforo1 en MBAR Semforo 2 en ROJO: 4 ciclos. Semforo1 en ROJO Semforo 2 en ROJO: 1 ciclo. Semforo1 en ROJO Semforo 2 en VERDE: 4 ciclos. Semforo1 en ROJO Semforo 2 en MBAR:2 ciclos. Semforo1 en ROJO Semforo 2 en ROJO: 1 ciclo. El desarrollo de la prctica se va a dividir en varios hitos: diseo del autmata, realizacin del circuito en VHDL e implementacin en las placas de prcticas.

60

Manual de Prcticas. Electrnica Digital II

Diseo del autmata


Para realizar el diseo del autmata hay que considerar que se tiene una nica entrada que es la seal de cambio de un estado a otro (si vale 0 se mantiene en el estado actual y si su valor es 1 pasa al estado siguiente) y como salidas se tienen las seales de activacin de las luces de los semforos. El alumno ha de realizar el diseo del autmata, es decir, debe realizar el diagrama de estados y la tabla de transicin de estados. Se considerar que se trata de una mquina de Moore y que se va a implementar con biestables D.

Cdigo VHDL
El alumno tiene que realizar el diseo del sistema propuesto en VHDL. Para ello se van a dar algunas sugerencias: Como semforos se van a utilizar los LEDs de la placa PEGASUS. Para facilitar la asignacin de pines se aconseja que como salida de la entidad se utilice el vector de los 8 LEDs, activndose en cada estado los que sean necesarios para simular el funcionamiento de los dos semforos. El reloj de la FPGA es de 50 MHz. Se sugiere utilizar el cdigo del ejemplo prctico del captulo 3, en el que se utilizaba un contador de 26 bits para generar el reloj del sistema. Para generar la temporizacin y por lo tanto la seal de cambio se propone utilizar un contador de 5 bits que utilice como reloj el generado en el punto anterior. Se recuerda que los procesos se ejecutan de forma concurrente y que la comunicacin entre procesos se hace a travs de seales. Los puertos de entrada (IN) slo pueden ser ledos en la arquitectura y a los puertos de salida (OUT) slo se les puede asignar valor en la arquitectura. Para asignar valores dentro de los procesos se han de utilizar seales que han de definirse en la zona declarativa. A continuacin se muestra el esqueleto del cdigo VHDL que se pide:

61

Manual de Prcticas. Electrnica Digital II

library ieee ; library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.std_logic_arith.all;

entity practica2 is entity practica2 is port( clk : in std_logic; port( clk : in std_logic; reset : in std_logic; reset : in std_logic; led_out : out std_logic_vector(7 downto 0)); led_out : out std_logic_vector(7 downto 0)); end practica2 end practica2

architecture Moore of practica2 is architecture Moore of practica2 is ---- Zona declarativa de estados y seales; Zona declarativa de estados y seales; begin begin --proceso que genera una seal de reloj de 2s aa partir --proceso que genera una seal de reloj de 2s partir --del reloj de 50 MHz --del reloj de 50 MHz --proceso que genera la seal de cambio (temporizacin) --proceso que genera la seal de cambio (temporizacin) --proceso secuencial Mq de estados --proceso secuencial Mq de estados ... ... --proceso combinacional Mq de estado --proceso combinacional Mq de estado end Moore; end Moore;

Implementacin en las placas PEGASUS de DIGILENT


Para la implementacin del sistema se utilizarn los LEDs de la placa. Programacin de la FPGA Para generar el fichero *.ucf de asignacin de pines de la FPGA se va a utilizar el mismo que el empleado en el ejemplo prctico del captulo 3.

62

Manual de Prcticas. Electrnica Digital II

63

Manual de Prcticas. Electrnica Digital II

3
Mquina de estados
LEDs ALARMA LUMINOSA ALERTA REPOSO

Prctica

Diseo de un sistema de alarma


Se desea disear un sistema de alarma y simular su funcionamiento utilizando los botones y LEDs de la placa de prcticas.

Desarrollo de la prctica
Se desea disear un sistema de alarma como el que aparece en la Figura 42.

SENSOR TON TOFF

T2

Circuito de Temporizacin

Figura 42. Esquema del sistema de alarma

El sistema de alarma tiene como entradas dos pulsadores TON y TOFF y una seal S que se activa cuando alguno de los sensores de presencia est activo. Las salidas del sistema son ocho LEDs luminosos que se activarn cuando se aplica un 0 lgico a su entrada, mantenindose apagados en caso contrario. Adems el sistema de alarma cuenta con un circuito temporizador cuya salida T2 se pone a 1 si la seal de T (seal de salida de la mquina de estados) se ha mantenido de forma continuada durante 16 ciclos de su reloj de entrada CLK, volviendo a 0 en cuanto baja la seal de entrada T. El sistema debe actuar como sigue: Si se pulsa en cualquier momento la tecla TOFF el sistema pasar al estado de REPOSO. En dicha situacin no se atienden a los sensores y nicamente se encender un LED(LED7) para indicar el estado.

64

Manual de Prcticas. Electrnica Digital II

Si se pulsa TON, el sistema pasa al estado de ALERTA donde los LEDs continan apagados pero si se atiende a los sensores. Si se activa algn sensor se pasa al estado de ALARMA. Se activar el sensor LED6 para indicar el estado En la situacin de alarma (en la que se encendern los LEDs 7 y 6) el sistema esperar 16 ciclos antes de pasar al estado de ALARMA LUMINOSA en la que los LEDs que se mantendrn encendidos son del 0 al 5.

Cdigo VHDL
El alumno tiene que realizar el diseo del sistema propuesto en VHDL. Para ello se sugiere que se sigan los siguientes pasos: Definir la entidad del sistema Modelar con un proceso secuencial y con otro combinacional la mquina de estados. Se tratar como una mquina de Moore cuyas entradas son TON, TOFF, S y T2 cuyas salidas son los 6 LEDs y la seal T El reloj de la FPGA es de 50 MHz. Se sugiere utilizar el cdigo del ejemplo prctico del captulo 3, en el que se utilizaba un contador de 26 bits para generar el reloj del sistema.. El sistema tambin debe contar con un proceso que registre los botones, de forma que el botn TON slo se atienda (se registre) en el estado REPOSO, la seal S slo se atienda en el estado ALERTA y la seal T2 slo se registre en el estado ALARMA. Se recomienda realizar un proceso para cada una. A continuacin se muestra el esqueleto del cdigo VHDL que se pide:

65

Manual de Prcticas. Electrnica Digital II

library IEEE; library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity practica3 is entity practica3 is port ( port ( );); end practica3; end practica3;

architecture Behavioral of practica3 is architecture Behavioral of practica3 is ---- Zona declarativa de estados y seales Zona declarativa de estados y seales begin begin --proceso que genera un reloj mas lento (visible al ojo) --proceso que genera un reloj mas lento (visible al ojo) ---- proceso secuencial de la maquina de estados proceso secuencial de la maquina de estados ---- proceso combinacional de la maquina de estados proceso combinacional de la maquina de estados ---- proceso que modela el bloque de temporizacion proceso que modela el bloque de temporizacion ---- proceso que registra los botones proceso que registra los botones end Behavioral; ; end Behavioral

Implementacin en las placas PEGASUS de DIGILENT


Para generar el fichero *.ucf de asignacin de pines de la FPGA hay que considerar que los pulsadores TON y TOFF se corresponden con los botones de la placa PEGASUS serigrafiados como BTN0, BTN1. La seal S, de activacin de los sensores se simula con el botn de la placa PEGASUS serigrafiado como BTN3. Al pulsar el botn se genera un 1 lgico.Los LEDs de la placa se corresponden con los LEDs serigrafiados desde el LED0LED7 y son activos por nivel bajo.

Prctica Opcional
Implementar un nuevo diseo con la misma funcionalidad explicada en los apartados anteriores, pero en la que adems se utilice uno de los displays de 7 segmentos de la placa para visualizar la cuenta descendente de 15 a 0 que se realiza en el proceso de temporizacin que se activa cuando se pasa al estado de ALARMA.

66

Manual de Prcticas. Electrnica Digital II

67

Manual de Prcticas. Electrnica Digital II

Prctica

Control de un montacargas

de cuatro plantas
Se desea disear un circuito que controle un montacargas de 4 plantas. Como entradas externas al sistema tenemos 4 pulsadores, uno por planta y como salida un display de 7 segmentos que indica en cada momento en que planta est el montacargas.

Desarrollo de la prctica
Con esta prctica se propone el diseo en VHDL de un sistema secuencial sencillo, en el que se tienen entradas externas con las que el usuario puede interactuar con el sistema. La implementacin se va hacer en las placas de desarrollo PEGASUS de DIGILENT. En la prctica se van a manejar perifricos de uso comn como son displays de 7 segmentos, y pulsadores. Se desea disear un circuito que controle un montacargas de 4 plantas. Como entradas externas al sistema tenemos 4 pulsadores, uno por planta y como salida un display de 7 segmentos que indica en cada momento en que planta est el montacargas. Los pulsadores de planta se corresponden con los botones de la placa PEGASUS serigrafiados como BTN0, BTN1, BTN2, BTN3. El display donde se visualiza la planta en la que est el ascensor es el situado ms a la derecha de los cuatro que tiene la placa (ver Figura 43).

Figura 43. Placa PEGASUS 68

Manual de Prcticas. Electrnica Digital II

El esquema del sistema que se quiere disear es el que aparece en la Figura 44

P0

P1

P2

P3

Sube

Comparador

Parado Baja

Circuito de CONTROL

Posicin del montacargas

Figura 44. Esquema del sistema de control del montacargas

El sistema contar con un circuito que compara la posicin del montacargas con el piso desde el que se est llamando. En funcin del resultado de la comparacin se le dar al montacargas la orden de subir, bajar o mantenerse parado. Como ya se ha comentado con anterioridad la posicin en la que se encuentra el montacargas se visualiza en el display de 7 segmentos.

Diseo del circuito de control


Como paso intermedio y para mayor comprensin del sistema a disear el alumno debe realizar el diseo del bloque correspondiente al circuito de control (ver Figura 44).Se tratar como una mquina de Moore que se implementar con biestables D. Para definir las entradas (sube, parado o baja) se recomienda codificarlas con dos bits. Como salida se consideran, la activacin de los segmentos del display de 7 segmentos y la posicin del montacargas, la cual tambin se recomienda codificarla con dos bits, ya que tenemos cuatro posibles situaciones: planta 0, planta 1, planta 2 y planta 3.

Cdigo VHDL
El alumno tiene que realizar el diseo del sistema propuesto en VHDL. Para ello se van a dar algunas sugerencias: El reloj de la FPGA es de 50 MHz. Se sugiere utilizar el cdigo del ejemplo prctico del captulo 3, en el que se utilizaba un contador de 26 bits para generar el reloj del sistema. Adems de los procesos secuencial y combinacional con los que se modela el circuito de control, el sistema ha de contar con un proceso en el que en funcin de la posicin del montacargas y la planta desde la que se ha llamado se genera la seal que le indica al montacargas si sube, baja o se mantiene parado (proceso que modela el bloque comparador del esquema de la Figura 44). Para facilitar este proceso, se va a utilizar la funcin conv_integer, la cual convierte un vector (en este caso el que me indica la posicin del montacargas) a un entero (integer). El sistema tambin debe contar con un proceso que registre los botones, de forma que slo cuando el ascensor est parado se lee el estado del botn.

69

Manual de Prcticas. Electrnica Digital II

Se recuerda que los procesos se ejecutan de forma concurrente y que la comunicacin entre procesos se hace a travs de seales. Los puertos de entrada (IN) slo pueden ser ledos en la arquitectura y a los puertos de salida (OUT) slo se les puede asignar valor en la arquitectura. Para asignar valores dentro de los procesos se han de utilizar seales que han de definirse en la zona declarativa. A continuacin se muestra el esqueleto del cdigo VHDL que se pide:
library IEEE; library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity practica4 is entity practica4 is port (reset : : in std_logic; port (reset in std_logic; clk : : in std_logic; clk in std_logic; boton : : in std_logic_vector (3 downto 0); boton in std_logic_vector (3 downto 0); display : : out std_logic_vector(0 to 6)); display out std_logic_vector(0 to 6)); end practica4; end practica4;

architecture Behavioral of practica4 is architecture Behavioral of practica4 is ---- Zona declarativa de estados y seales Zona declarativa de estados y seales begin begin --proceso que registra la variable botn . . Solo cuando --proceso que registra la variable botn Solo cuando --el ascensor esta parado se lee el estado del botn. --el ascensor esta parado se lee el estado del botn. --proceso que genera un reloj mas lento (visible al ojo) --proceso que genera un reloj mas lento (visible al ojo) --Conversin de la posicin del montacargas (representada --Conversin de la posicin del montacargas (representada --por la seal posicin) aa un entero --por la seal posicin) un entero intascensor<= conv_integer (posicion); intascensor<= conv_integer (posicion); ---proceso que genera la seal de control (sube, baja, para) ---proceso que genera la seal de control (sube, baja, para) --dependiendo de donde este el ascensor y del botn --dependiendo de donde este el ascensor y del botn --desde donde se llama --desde donde se llama ---- proceso secuencial del circuito de control proceso secuencial del circuito de control ---- proceso combinacional del circuito de control proceso combinacional del circuito de control end Behavioral; ; end Behavioral

Implementacin en las placas PEGASUS de DIGILENT


Para generar el fichero *.ucf de asignacin de pines de la FPGA se recuerda al alumno que el pinout de la FPGA de la placa PEGASUS se adjunta en la Figura 12 de este documento.

70

Manual de Prcticas. Electrnica Digital II

71

5
Diseo de un cronmetro digital
El objetivo de esta prctica es el diseo de un cronmetro digital y su implementacin en la placa de prcticas, haciendo uso de los displays de 7 segmentos y de uno de los pulsadores .

Prctica

Desarrollo de la prctica
En esta placa se implementar un cronmetro con precisin de un segundo. El sistema tendr como entradas un botn de inicio/parada del cronmetro, un botn de Reset que resetea el reloj a cero y el reloj del sistema. La cuenta del cronmetro se visualizar en dos de los displays de 7 segmentos de la placa.

Inicio/parada Reset CLK

Cronmetro Digital
Figura 45. Cronmetro Digital

Cdigo VHDL
El alumno tiene que realizar el diseo del sistema propuesto en VHDL. Para ello se sugiere que se sigan los siguientes pasos: Generar un reloj de 1 Hz a partir del reloj del sistema ( 50 MHz) Disear un contador-divisor por 60. Disear, utilizando una mquina de estados, un sistema de control que teniendo como entradas los botones de inicio/parada y Reset genere las seales de habilitacin y de inicializacin del contador- divisor mdulo 60. Generar la lgica de control para activar los displays de las unidades y de las decenas de segundo del cronmetro.

72

Manual de Prcticas. Electrnica Digital II

Implementacin en las placas PEGASUS de DIGILENT


Para implementar el cronmetro digital se emplear como botn de inicio/parada el serigrafiado como BTN0 y como botn de reset el BTN3. La visualizacin del valor del cronmetro se har en los displays AN0 y AN1. El pinout de la FPGA de la placa PEGASUS se adjunta en la Figura 12 de este documento.

73

Manual de Prcticas. Electrnica Digital II

BIBLIOGRAFA

[1] VHDL: Lenguaje Estndar de Diseo Electrnico. L.Ters, Y.Torroja, E.Villar, S.Olcoz. MacGraw-Hill,1998. [2] VHDL. Anlisis and Modeling of Digital Systems. Z. Navabi. MacGrawHill,1998 [3] HDL Chip Design: A Practical Guide for Designing, Synthesizing & Simulating Asics & Fpgas Using Vhdl or Verilog, D.J.Smith. Doone Publicatiions, 1996 [4] http://www.xilinx.com/ [5] http://www.digilentinc.com/info/Pegasus.cfm [6] http://www.model.com/ [7] http://www.ieee.org/portal/site [8] http://www.jtag.com/main.php

74

You might also like