pract xilinx92

94
Departamento de Tecnología Electrónica Diseño digital con esquemáticos y Felipe Machado Sánchez Norberto Malpica González de Vega

Upload: alexander-garay

Post on 30-Nov-2015

54 views

Category:

Documents


3 download

TRANSCRIPT

Diseo digital con esquemticos y FPGA. v1.8

Felipe Machado Snchez

Norberto Malpica Gonzlez de Vega

Susana Borromeo Lpez

Diseo digital con esquemticos y FPGA. v1.8

Departamento de Tecnologa Electrnica

1

Diseo digital con esquemticos y FPGA. v1.8 - - 04/06/2008

ndice

ndice .................................................................................................................................................................................. 1

1. Introduccin..................................................................................................................................................................... 3

2. Encender un LED ............................................................................................................................................................ 4

2.1. Diseo del circuito ............................................................................................................................................................................ 5

2.2. Sntesis e implementacin del circuito............................................................................................................................................ 10

2.3. Programacin de la FPGA .............................................................................................................................................................. 11

3. Puertas lgicas, interruptores y pulsadores .................................................................................................................. 15

3.1. Diseo del circuito .......................................................................................................................................................................... 15

3.2. Simulacin del circuito .................................................................................................................................................................... 17

3.3. Sntesis e implementacin del circuito............................................................................................................................................ 20

4. Decodificador de 2 a 4 .................................................................................................................................................. 21

4.1. Diseo del decodificador ................................................................................................................................................................ 21

4.2. Comprobacin del diseo ............................................................................................................................................................... 23

4.3. Implementacin del diseo ............................................................................................................................................................. 24

4.4. Creacin de un bloque.................................................................................................................................................................... 24

5. Decodificador de 3 a 8 .................................................................................................................................................. 27

5.1. Diseo del decodificador con bloques ............................................................................................................................................ 28

6. Decodificador de 4 a 16 ................................................................................................................................................ 30

6.1. Diseo del decodificador con bloques prediseados ..................................................................................................................... 31

6.2. Comprobacin del diseo ............................................................................................................................................................... 33

7. Convertidor de hexadecimal a 7 segmentos ................................................................................................................. 35

7.1. Diseo del convertidor de hexadecimal a 7 segmentos ................................................................................................................ 35

7.2. Implementacin .............................................................................................................................................................................. 39

8. Codificadores ................................................................................................................................................................ 42

8.1. Codificador de 4 a 2 sin prioridad ................................................................................................................................................... 42

8.2. Codificador de 4 a 2 con prioridad, lnea activa y habilitacin........................................................................................................ 42

8.3. Codificador de 4 a 2 con conversin a 7 segmentos...................................................................................................................... 44

9. Extensin de la capacidad de un codificador ................................................................................................................ 46

9.1. Codificador de 8 a 3 a partir de codificadores de 4 a 2 .................................................................................................................. 46

9.2. Inclusin del convertidor a siete segmentos ................................................................................................................................... 47

9.3. Codificador mayores ....................................................................................................................................................................... 47

10. Comparadores ............................................................................................................................................................ 48

10.1. Comparador de un bit ................................................................................................................................................................... 48

10.2. Comparador de dos bits ............................................................................................................................................................... 48

10.2.1. Diseo del comparador ....................................................................................................................................................... 50

11. Comparadores en cascada ......................................................................................................................................... 51

12. El multiplexor............................................................................................................................................................... 55

12.1. Especificaciones ........................................................................................................................................................................... 55

12.2. Diagrama de bloques del circuito ................................................................................................................................................. 55

12.3. Diseo........................................................................................................................................................................................... 57

13. El sumador .................................................................................................................................................................. 60

13.1. Especificaciones ........................................................................................................................................................................... 60

13.2. Diseo........................................................................................................................................................................................... 60

14. Sumador/restador ....................................................................................................................................................... 63

14.1. Especificaciones ........................................................................................................................................................................... 63

14.2. Diagrama de bloques.................................................................................................................................................................... 63

14.2.1. Bloque sumador/restador .................................................................................................................................................... 64

14.2.2. Bloque de visualizacin ....................................................................................................................................................... 66

14.3. Diseo........................................................................................................................................................................................... 68

14.4. Comprobacin del diseo ............................................................................................................................................................. 69

15. Unidad aritmtico lgica .............................................................................................................................................. 71

15.1. Especificaciones ........................................................................................................................................................................... 71

15.2. Diagrama de bloques.................................................................................................................................................................... 71

15.3. Diseo........................................................................................................................................................................................... 74

15.3.1. Multiplicador por 2 ............................................................................................................................................................... 74

15.3.2. Circuito comparador, "mayor" ............................................................................................................................................. 75

15.3.3. Circuito operacin lgica AND ............................................................................................................................................ 75

15.3.4. Multiplexor de 4 entradas datos con habilitacin ................................................................................................................ 76

15.3.5. Codificador con prioridad de 4 entradas ............................................................................................................................. 77

15.3.6. Componente de mayor jerarqua......................................................................................................................................... 78

15.4. Implementacin y comprobacin .................................................................................................................................................. 78

16. Elementos de memoria ............................................................................................................................................... 79

16.1. Especificaciones ........................................................................................................................................................................... 79

16.2. Diseo........................................................................................................................................................................................... 79

16.3. Implementacin ............................................................................................................................................................................ 79

17. Interruptor con pulsador .............................................................................................................................................. 81

17.1. Ideas ............................................................................................................................................................................................. 81

Departamento de Tecnologa Electrnica

2

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

17.1.1. Conectando el pulsador a la entrada del biestable T .......................................................................................................... 81

17.1.2. Conectando el pulsador al reloj del biestable T .................................................................................................................. 81

17.2. Circuito detector de flanco ............................................................................................................................................................ 82

17.3. Solucin al cronograma ................................................................................................................................................................ 83

18. Parpadeo de un LED................................................................................................................................................... 84

18.1. Especificaciones ........................................................................................................................................................................... 84

18.2. Diseo........................................................................................................................................................................................... 84

19. Reloj digital.................................................................................................................................................................. 87

19.1. Especificaciones ........................................................................................................................................................................... 87

19.2. Contador de 10 segundos ............................................................................................................................................................ 87

19.2.1. Bloque segundero ............................................................................................................................................................... 87

19.2.2. Bloque de mayor jerarqua .................................................................................................................................................. 89

19.3. Reloj digital con segundos y minutos ........................................................................................................................................... 89

19.3.1. Implementacin ................................................................................................................................................................... 90

19.3.2. Solucin............................................................................................................................................................................... 91

ndice

Departamento de Tecnologa Electrnica

3

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

1 HYPERLINK http://gtebim.es http://gtebim.es

2 Herramienta gratuita que se puede descargar en HYPERLINK http://www.xilinx.com http://www.xilinx.com

3 HYPERLINK http://www.digilentinc.com http://www.digilentinc.com

1. Introduccin

El objetivo de esta prcticas guiadas es introducir al alumno en el diseo con esquemticos mediante el uso de herramientas CAD (computer aided design). Estas prcticas parten de un nivel elemental y se pretende que puedan ser seguidas como complemento en un curso bsico de electrnica digital. Estas prcticas se han desarrollado en el departamento de Tecnologa Electrnica1 de la Universidad Rey Juan Carlos.

Estas prcticas consistirn en un grupo de ejercicios con los que aprenderemos a programar una FPGA utilizando la herramienta gratuita de diseo electrnico digital ISE-WebPACK de Xilinx2. En las prcticas de este curso realizaremos diseos con esquemticos: puertas lgicas, bloques combinacionales y secuenciales. Una vez que hayamos realizado el diseo en la herramienta, lo sintetizaremos y lo implementaremos en la FPGA. La sntesis es la tarea que transforma un diseo desde un nivel de descripcin a otro nivel de descripcin ms bajo. En nuestro caso, el diseo lo tendremos en esquemticos y la herramienta lo transformar en una descripcin que indica las conexiones internas y configuracin de la FPGA para que funcione de la misma manera a como funcionara nuestro diseo original en esquemticos. Por suerte, la sntesis la realiza la herramienta automticamente, durante la sntesis nosotros nos ocuparemos de supervisar el proceso, analizando los errores y advertencias (warnings) que aparezcan.

Antes de implementar el diseo en la FPGA es recomendable simular el diseo para comprobar que funciona correctamente. Es ms fcil detectar errores de diseo mediante simulacin, que en la placa. Imagina que has implementado el diseo en la FPGA y que sta no hace nada. Para descubrir el fallo tendras que usar un polmetro o un osciloscopio y comprobar los niveles de tensin de los pines. Adems con el inconveniente de que slo tienes accesibles los puertos de entrada y salida, y no las seales internas del diseo. Mediante la simulacin puedes comprobar todas las seales (internas y externas) y directamente de un vistazo, sin recurrir a medidas elctricas.

Una vez que tenemos el diseo verificado por simulacin, lo implementaremos en la FPGA. La herramienta de diseo crear un fichero de configuracin (con extensin .bit). Este fichero contiene la informacin de la implementacin de nuestro diseo en la FPGA. Para programar la FPGA, en nuestro caso, utilizaremos un cable JTAG, que es un cable que cumple un protocolo de depuracin y programacin: Boundary Scan.. Este cable se conecta al puerto paralelo de nuestro ordenador.

Una vez programada la FPGA, nuestro diseo estar implementado en la FPGA y por lo tanto estar funcionando. Dependiendo del diseo implementado, interactuar con el exterior de distinta manera y podremos comprobar su correcto funcionamiento.

Para las prcticas utilizaremos la placa Pegasus de Digilent3, que contiene una FPGA de Xilinx de modelo Spartan-II XC2S200 con encapsulado PQ208. Esta FPGA tiene 200000 puertas lgicas equivalentes y 140 pines disponibles para el usuario. Con esta capacidad podemos hacer diseos digitales bastante grandes.

La placa Pegasus contiene distintos perifricos que nos facilitarn la tarea del diseo, como por ejemplo: 8

LED, 4 displays de 7 segmentos, 4 botones, 8 interruptores, un puerto PS/2 (para ratn o teclado), y puerto

VGA (para conectar un monitor), y varios puertos de expansin. En la figura 1.1 se muestra la placa Pegasus, y en la que se sealan varios de sus componentes. La foto de la placa no coincide exactamente con la versin de la placa que tenemos en el laboratorio y hay algunos componentes que no estn en el mismo lugar, aunque s todos los que se han sealado.

1. Introduccin

Departamento de Tecnologa Electrnica

LD0

LD1

LD2

LD3

LD4

LD5

LD6

LD7

46

45

44

43

42

41

37

36

LED

PIN

390

4

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.1: Conexin de los LED de la placa Pegasus

Viendo el esquema elctrico de la figura 2.1 podemos deducir que si ponemos un '1' lgico en el pin 46 de la

FPGA encenderemos el LED, ya que con un '1' lgico la FPGA pondr 3,3 voltios en ese pin (que es el nivel

'0' Apagado

Spartan-II

'1' Encendido

Figura 1.1: Placa Pegasus de Digilent

A medida que vayamos avanzando con la prctica iremos aprendiendo la funcionalidad de la placa. An as se puede consultar en la pgina web de la asignatura HYPERLINK http://gtebim.es/docencia/EDI (http://gtebim.es/docencia/EDI) el manual de la placa (en ingls), y una versin resumida de dicho manual en espaol.

Bueno, es hora ya de empezar con las practicas ...

2. Encender un LED

Cuando nos enfrentamos por primera vez a disear mediante una metodologa y herramientas nuevas, lo ms aconsejable es empezar con ejemplos lo ms sencillos posibles. Y a partir de stos se ir aumentando la complejidad del diseo. Son muchas cosas las que pueden fallar, tanto en el uso de las herramientas de diseo como en la placa de la FPGA. Por consiguiente, si de primeras probamos con un diseo complejo, en caso de que no funcione correctamente no sabremos si es el diseo que est mal o es algn paso que no hemos realizado bien.

De manera similar, los informticos realizan un programa llamado "Hello world" (hola mundo), que es un programa muy sencillo que simplemente saca por pantalla dicho texto. Nosotros, como no tenemos pantalla, encenderemos un LED. Tambin podramos usar el display de 7 segmentos, pero su uso es algo ms complicado y lo que queremos es la mayor sencillez.

Ya hemos visto que la placa Pegasus tiene 8 LED disponibles para utilizar, cada uno de estos LED van conectados a distintos pines de la FPGA, de los 140 pines que hay disponibles. La conexin de los LED se muestra en la figura 2.1. En ella se indican qu pines de la FPGA estn conectados a los LED. Por ejemplo el LED nmero 0, est conectado al pin 46. Para facilitar esta identificacin, la placa lleva impresos la identificacin del LED y el pin asociado de la FPGA. As, podemos ver cmo al lado del LED 0 (LD0) de la placa est el nmero 46 entre parntesis. Podemos apreciar que esto se cumple para casi todos los componentes: pulsadores, interruptores, ...

Interruptores

Pulsadores

LED

Display

7 segmentos

PS/2

Jumpers de

configuracin

Alimentacin

VGA

Memoria

Flash

FPGA

Conector JTAG

Conector

de expansin

2. Encender un LED

Departamento de Tecnologa Electrnica

de expansinFla

D7 s

5

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.2: Ventana para la creacin de nuevo proyecto

Una vez que hemos rellenado los tres recuadros pinchamos en Next. Ahora nos aparece la ventana de seleccin del dispositivo (figura 2.4). En Product Category ponemos All. En la familia ponemos Spartan2, que es, como ya hemos dicho, la FPGA que tenemos en la placa de Pegasus. Los siguientes datos los podemos obtener a partir de la observacin del texto del encapsulado de la FPGA, que se muestran en la figura 2.3. Hay que observar los valores que tiene la FPGA de nuestra placa, ya que en algunas el tipo es XC2S200 y en otras es XC2S50. Lo mismo sucede con la velocidad, en algunas es 5 y otras 6.

(C:/practica/edi/tunombre). Respecto al nombre y a la ruta, no es conveniente trabajar desde un

dispositivo de memoria USB, ni tampoco incluir en la ruta o el nombre ni acentos ni ees, ni caracteres extraos, lo ms conveniente es limitarse a caracteres alfanumricos, y usar el guin bajo en vez del espacio. Para el ltimo recuadro de la ventana, donde pone Top-Level Source Type seleccionaremos Schematic, ya que nuestro diseo lo haremos mediante esquemticos.

elproyecto

guardaremos

donde

ruta

indicamosla

led0,

llamaremos

lo

que

proyecto,

Nos puede aparecer una ventana con el Tip of the day que son indicaciones que hace la herramientas cada vez

que la arrancamos. Si las leemos habitualmente podemos ir aprendiendo poco a poco. Pinchamos en Ok, con lo que se cierra dicha ventana.

Normalmente la herramienta abre el ltimo proyecto que se ha realizado. As que lo cerramos pinchando en:

FileClose Project.

Para empezar a crear nuestro nuevo proyecto, pinchamos en FileNew Project... y nos saldr la ventana New

Project Wizard Create New Project como la mostrada en la figura 2.2. En ella pondremos el nombre del

de tensin de ese pin de la FPGA). Por el contrario, si ponemos un '0' lgico en el pin 45, mantendremos

apagado el LED 1 (LD1), puesto que no circular corriente por l.

As pues, ste ser el objetivo del primer ejercicio, poner un '1' en el pin 46 y un '0' en el pin 45. Si despus de programar la FPGA el LED 0 se enciende y el LED 1 se apaga habremos cumplido el objetivo. Con el resto de pines que van a los otros LED no haremos nada, en teora, hacindolo as no deberan lucir, ya que por defecto la FPGA pone resistencias de pull-down en los pines no configurados, y una resistencia de pull-down pone la salida a tierra.

2.1. Diseo del circuito

El diseo del circuito lo haremos con la herramienta ISE-Foundation o con ISE-WebPack de Xilinx, esta ltima es la versin gratuita que se puede descargar en la pgina web de Xilinx. Esta prctica est referida a la versin9.2,debidoaqueexistennuevasversiones,puedesdescargarestaversinen: HYPERLINK http://www.xilinx.com/ise/logic_design_prod/classics.htm http://www.xilinx.com/ise/logic_design_prod/classics.htm

Para arrancar el programa pincharemos en el icono de Xilinx o bien, desde:

InicioTodos los programasXilinx ISE 9.2iProject Navigator

2. Encender un LED

Departamento de Tecnologa Electrnica

6

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.4: Ventana para la seleccin del dispositivo del nuevo proyecto

En las dos siguientes ventanas pinchamos en Next sin rellenar nada y en la ltima pinchamos en Finish.

Ya tenemos el proyecto creado y ahora nos disponemos a crear nuestro diseo. Para ello creamos una nueva fuente pinchando en ProjectNew Source.

Esto har saltar a una nueva ventana que nos pedir que seleccionemos el tipo de fuente que queremos crear. Como estamos trabajando en esquemticos, seleccionamos Schematic, y nombramos al fichero led0. Este paso se muestra en la figura 2.5. Posteriormente pinchamos en Next y en la siguiente ventana en Finish.

Mirar en la FPGA

Mirar en la FPGA

Figura 2.3: Interpretacin del texto del encapsulado de la FPGA

Para la seleccin de la herramienta de sntesis no tenemos alternativa, y para el simulador en esta prctica no es importante y lo dejamos en ISE Simulator (VHDL/Verilog). En el lenguaje de descripcin de hardware preferido (Preferred Language) se deja el VHDL. Al terminar pinchamos en Next.

5C

velocidad rango de operacin

C: comercial

cdigo de lote

cdigo de fecha

XC2S200

PQ208

tipo de dispositivo

encapsulado

2. Encender un LED

Departamento de Tecnologa Electrnica

XC2S200

PQ208

5C

Seleccionar led0.sch

7

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.6: Seleccin de la ventana del fichero led0.sch

Ahora veremos el plano donde podremos dibujar el esquemtico. En la figura 2.7 se muestra la apariencia de la herramienta. En ella se han movido las subventanas para tener una disposicin ms cmoda. Muvelas de manera que queden de una forma similar a la figura 2.7. Esta operacin no siempre es fcil de realizar y a

veces las subventanas se resisten a ser movidas. Otra opcin es pinchar en WindowTile Vertically. Luego, para

dejarlo como muestra la figura 2.7, habra que maximizar la subventana del plano donde se dibuja el

circuito, y seleccionar la pestaa de opciones y la pestaa de smbolos.

Figura 2.5: Seleccin del tipo de nueva fuente

Si al terminar el proceso la herramienta nos muestra la siguiente imagen, debemos seleccionar el fichero que hemos creado (led0.sch) como se muestra en la figura 2.6. Tambin se puede pinchando en Windowled0.sch

2. Encender un LED

Departamento de Tecnologa Electrnica

Seleccionar led0.sch

Plano donde dibujaremos el circuito

Smbolos

Fuentes

Opciones

Procesos

8

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Si por error hemos incluido un smbolo ms de una vez, para borrarlo vamos al modo seleccin (tecla Esc) y

pinchamos encima del smbolo que queramos eliminar. ste cambiar a color rojo, y entonces o bien lo

borramos con la tecla Supr, o bien pinchamos con el botn derecho del ratn y del men seleccionamos Delete. Como podrs apreciar viendo dicho men, tambin puedes copiar y cortar de la misma manera que se hace en Windows.

.

la tecla de escape (Esc) o bien pulsar el icono de la flechita que est en la barra de herramientas

Figura 2.7: Apariencia de la herramienta para empezar a realizar el esquema del circuito

En la figura 2.7 se han sealado algunas pestaas que utilizaremos durante el proceso de diseo y a las que se har referencia durante el ejercicio. As que familiarzate con sus nombres y vuelve a esta figura si durante la prctica no sabes a qu pestaa nos estamos refiriendo. Si quieres, pincha en ellas para ver el aspecto que tienen.

La ventana de opciones permite cambiar el comportamiento de la herramienta al dibujar el esquemtico. La ventana de smbolos nos permite dibujar las puertas lgicas y los distintos componentes de nuestro diseo. En la ventana de fuentes se muestran los ficheros de nuestro diseo (en este caso slo hay uno: led0.sch). Y por ltimo, en la ventana de procesos se indica a la herramienta los comandos que se quieren ejecutar.

Para empezar a disear volvemos a la ventana de smbolos. En ella, seleccionamos la categora General y tomamos el smbolo vcc. Una vez que los hemos seleccionado podemos apreciar que el puntero del ratn cambia de forma cuando lo situamos en el plano del circuito. Si pinchamos en cualquier parte del plano se situar el smbolo correspondiente a Vcc, que es la fuente de alimentacin, y por tanto, en electrnica digital es un '1' lgico (ver la figura 2.8). A veces la herramienta tarda un poco en situarlo, as que no desesperes y no pinches varias veces con el ratn, pues colocaras varias Vcc por tu circuito.

Cuando hayas colocado tu fuente de alimentacin, seguramente la veas un poco pequea. Para ampliar la zona puedes pinchar en ViewZoomZoom In (o bien pulsar F8).

Siempre que se haya seleccionado un smbolo, al pinchar con el ratn en el mapa del circuito se aade dicho smbolo. Esto puede resultar incmodo ya que podemos estar aadiendo componentes sin querer. Para quitar esta opcin y tener en cursor del ratn en modo de seleccin (con su flechita habitual) basta con pulsar

2. Encender un LED

Departamento de Tecnologa Electrnica

Procesos

Procesos

Opciones

Fuentes

Smbolos

Plano donde dibujaremos el circuito

Plano donde dibujaremos el circuito

Smbolos

Opciones Fuentes

9

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.10: Esquema final de nuestro circuito

Figura 2.9: El 1-lgico conectado al puerto LD0

Ahora realizaremos el mismo proceso para conectar el puerto LD1 a un 0-lgico. Para ello, primero situamos el smbolo de tierra en el mapa del circuito. En la ventana superior de smbolos mantenemos la seleccin General y en la ventana inferior seleccionamos gnd (del ingls ground : tierra). Situamos la tierra en el mapa del circuito y posteriormente, de la misma manera que hicimos anteriormente, la conectamos a otro puerto de salida. Este puerto de salida lo llamaremos LD1, haciendo referencia al LED nmero 1 de la placa.

posteriormente seleccionando el smbolo y pinchando con el botn derecho del ratn. Ahora, con el ratn te

pones encima del final del cable del smbolo de la fuente (VCC) y encima de l pinchas con el ratn. Aparecer el smbolo del puerto, con un nombre similar a XLXN_1. Seguramente est vertical, para ponerlo horizontal, seleccinalo (habiendo pulsado antes la tecla Esc) y pulsa CTRL+R para rotarlo y CTRL+M para voltearlo, tambin lo puedes hacer pinchando con el botn derecho del ratn.

Como el nombre dado por la herramienta nos dice poco del puerto, le pondremos un nuevo nombre que nos ayude a identificar el puerto. Para ello, seleccionamos el puerto y pinchando con el botn derecho del ratn, seleccionamos la opcin Rename Port. En el cuadro de dilogo escribiremos LD0, que hace referencia al LED 0 de la placa.

Hasta ahora, el aspecto de nuestro circuito debera ser el siguiente:

de la barra de herramientas. Vers que la ventana de opciones cambia, en ella puedes

tipo de puerto y cambiar la orientacin del smbolo dibujado. Esto lo puedes cambiar

en el icono

determinar el

Figura 2.8: Creacin de un nivel lgico alto: '1'

Ahora conectaremos dicho '1' lgico a un puerto de salida, para ello pincha en AddI/O Marker, o bien pincha

2. Encender un LED

Departamento de Tecnologa Electrnica

10

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.11: Seleccin para la asignacin de pines

Ahora nos aparecer la herramienta Xilinx PACE. En ella podemos distinguir tres subventanas, la de la derecha, tiene 2 pestaas en su parte inferior, en una se muestra la arquitectura de la FPGA y en la otra la asignacin de los pines (ver figura 2.12).

En la subventana de la parte inferior izquierda hay una tabla con los nombres de nuestros puertos: LD0 y LD1. En una columna se indica la direccin de los puertos (ambos de salida: output). Y en la siguiente columna (Loc) debemos indicar el pin de la FPGA con el que queremos unir nuestros puertos. Ten cuidado porque aqu hay un fallo de la herramienta, ya que si pinchas en las celdas de dicha columna aparece un men desplegable con los bancos de la FPGA (los pines se organizan en bancos), pero en estas celdas hay que indicar los pines y no los bancos. As que pinchamos en dichas celdas y ponemos nosotros mismos el pin que queremos conectar. As, para el puerto LD0 conectamos el pin 46, para ello escribimos P46 (el mismo nmero que indica la placa aadindole una P). Para el puerto LD1 le asignamos el pin P45.

Ya tenemos nuestro primer diseo hecho. Le damos a guardar (es algo que deberas hacer de vez en cuando),

y procederemos a implementarlo en la FPGA. Fjate que cuando no has guardado, el nombre del circuito que est en la pestaa del esquemtico tiene un asterisco.

2.2. Sntesis e implementacin del circuito

Ahora selecciona la ventana de procesos y la ventana de fuentes (Sources). En la ventana de fuentes verifica que el componente y el fichero que hemos creado est seleccionado: led0(led0.sch). Pincha en l una vez si no estuviese seleccionado.

Aunque a los puertos de salida les hayamos dado unos nombres referidos a los LED que vamos a utilizar, la herramienta no sabe qu pines queremos utilizar. Para indicarle a la FPGA qu pines vamos a utilizar y con qu puertos de nuestro diseo los vamos a conectar deberemos lanzar la herramienta PACE. Esto lo hacemos desde la ventana de procesos, en ella despliega la seccin que dice User Constraints, pincha dos veces en Assign Package Pins (figura 2.11). Posteriormente nos saldr una ventana de aviso que nos indica que para este proceso se requiere aadir al proyecto un fichero del tipo UCF. Este tipo de ficheros son los que se usan para definir las conexiones de los pines de la FPGA con los puertos de nuestro diseo, y por tanto pinchamos en Yes.

2. Encender un LED

Departamento de Tecnologa Electrnica

11

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

2.3. Programacin de la FPGA

Si hemos llegado hasta aqu, ya habremos generado el fichero de programacin de la FPGA (que tiene extensin .bit). Ahora veremos los pasos que hay que dar para programarla.

Lo primero que tenemos que hacer es quitar los tres jumpers de configuracin: M0, M1 y M2 del conector J4, (ver situacin en la figura 1.1). Para no perder las caperuzas conctalos a un slo conector dejando el otro al aire como se muestra a la derecha de la figura 2.14.

Figura 2.13: Aspecto de la subventana de procesos una vez que se ha sintetizado e implementado el diseo

correctamente. En la ventana de la derecha, en el proceso de sntesis ha habido advertencias (warnings) que no siempre son importantes, y por eso tiene un smbolo triangular de color amarillo

Figura 2.12: Herramienta PACE para la asignacin de pines

Le damos a guardar y nos saldr una ventana que nos pregunta por el formato del fichero que guardar esta informacin. Aunque nos es indiferente, seleccionamos la primera opcin "XST Default ", pinchamos en OK, cerramos la herramienta PACE y volvemos al ISE.

En la ventana de procesos, tenemos ordenados los pasos que debemos tomar: "Synthesize-XST" , "Implement Design" y "Generate Programming File". As que con este orden, vamos a ir pinchando dos veces en cada uno de ellos hasta que veamos que se pone una signo verde de correcto en ellos. Cuando se ponga en verde, pinchamos en el siguiente (puede salir en amarillo si indicando que hay advertencias -warnings- que muchas veces no son importantes). En realidad, si se ejecuta el ltimo paso sin haber ejecutado los anteriores, la herramienta realiza todo el proceso.

Cuando tengamos todos los pasos correctamente ejecutados, la subventana de procesos debera mostrar el aspecto de la figura 2.13. Si es as, ya estamos en disposicin de programar la FPGA. Puede ser que aparezca algn warning y que el proceso de sntesis tenga un smbolo amarillo triangular. Los warnings se pueden ver en la ventana de design summary. De todos modos, en muchas ocasiones estas advertencias no son relevantes.

2. Encender un LED

Departamento de Tecnologa Electrnica

+

12

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Esto arrancar la herramienta iMPACT, que nos mostrar un ventana en la que se ofrecen varias opciones,

dejamos la opcin que hay por defecto "configure devices using Boundary-Scan (JTAG)" y "Automatically connect to a cable and identify Boudary-Scan chain". Aceptamos pinchando en Finish.

Lo que hemos hecho es decirle a la herramienta que identifique los componentes que hay en la placa por medio del protocolo Boundary-Scan (JTAG). Despus de esto la herramienta procede a identificar a la placa y debera encontrar dos componentes: la FPGA y la memoria flash. La FPGA la identifica como xc2s200 y la memoria como xcf02s. A continuacin nos pedir los ficheros de programacin para cada uno de los componentes (figura 2.15).

. Y pinchamos dos veces en "Configure Device (iMPACT)".

signo + dentro:

Figura 2.14: Jumpers y su conexin

Cuando estos jumpers estn conectados, la FPGA se programa desde la memoria flash de la placa, en la que se guarda un fichero de configuracin para la FPGA. La Spartan-II es un tipo de FPGA voltil, esto es, requiere estar alimentada para mantener su configuracin. Por tanto, cuando la apagamos se borra lo que hayamos programado. Para evitar tener que programar la FPGA desde el ordenador cada vez que encendamos nuestro sistema electrnico, se pone una memoria flash que la programa automticamente. Si esto no fuese posible, este tipo de FPGA perdera casi toda su utilidad, ya que no seran autnomas y prcticamente slo valdran para hacer pruebas en el laboratorio.

Como nosotros estamos haciendo pruebas, queremos programar la FPGA desde el ordenador y no desde la memoria flash, as que desconectamos los tres jumpers.

Ahora hay que conectar el cable JTAG al puerto paralelo del ordenador y conectar el otro extremo del cable al conector JTAG de la placa (conector J2, ver figura 1.1). No debes conectarlo de cualquier manera, de las dos posibilidades que hay, hazlo de forma que los nombres de las seales de la placa coincidan con los nombres de las seales del cable. Esto es: TMS con TMS, TDI con TDI, ... , y VDD con VDD o con VCC (ste es el nico caso en que pueden no coincidir exactamente, depende del conector).

A continuacin conectamos el cable de alimentacin de la placa y lo enchufamos a la red elctrica (y cuando lo desenchufes fjate en que no se quede enchufado el adaptador de la clavija plana americana a clavija redonda europea). Al enchufar la placa vers que se enciende el LED LD8.

Ya tenemos todo preparado para programar la FPGA y probar nuestro diseo. Volvemos al ordenador, al programa ISE. Dentro de "Generate Programming File" desplegamos el men pinchando el cuadradito con el

Representacin:

su caperuza est perdida y pisoteada por el suelo del labo

jumper

desconectado

jumper desconectado

sin perder su caperuza

jumper

conectado

2. Encender un LED

Departamento de Tecnologa Electrnica

13

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.16: Orden para programar la FPGA

Figura 2.15: iMPACT: componentes detectados y asignacin de un fichero de configuracin

Para la FPGA hay que asignar el fichero led0.bit, sabremos que est asignando el fichero a la FPGA porque sta tendr color verde y adems la extensin del fichero es .bit (para las memorias es otro). Seleccionamos el fichero y pinchamos en Open. Inmediatamente nos saldr una advertencia (Warning) que habla sobre el Startup Clock, esto no nos afecta y pulsamos en Ok.

Ahora nos pide el fichero de configuracin de la memoria. Como no vamos a programarla, pulsamos en

Cancel.

En la ventana central del iMPACT tenemos los dos componentes. Pinchando en cualquiera de ellos, los seleccionamos y se pondrn de color verde. Si pinchamos en la FPGA (xc2s200 xc2s50) con el botn derecho del ratn, nos saldr un men. Puede pasar que al pinchar no salga y que aparezca de nuevo la ventana de la figura 2.15, eso es que se ha quedado el puntero del ratn enganchado; para evitarlo, pincha con el botn izquierdo en cualquier parte de la ventana fuera de los smbolos de los chips y vuelve a intentarlo. Ahora, en el men que aparece podemos asignar un fichero de configuracin diferente o programar la FPGA (figura 2.16). Y esto es lo que vamos hacer, pinchamos en Program, y le damos a Ok a la siguiente ventana sin cambiar nada (si disemos a Verify dara un error de programacin).

2. Encender un LED

Departamento de Tecnologa Electrnica

14

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 2.17: Programacin realizada con xito

Ahora miramos la placa y debera haber tres LED encendidos:

LD8: que indica que la placa est encendida

LD9: que indica que se ha programado la FPGA

LD0: que es el LED que hacemos encender nosotros con el diseo de la FPGA

El LED LD1 deber estar apagado, pues lo hemos puesto a un '0' lgico. Y el resto de LED tambin estarn apagados debido a las resistencias de pull-down que la FPGA pone en los puertos sin conectar.

Con esto hemos terminado el primer ejercicio. Hemos comprobado que la placa y la herramienta funcionan, y ya podemos probar otros diseos ms complejos.

Despus de la orden de programar la FPGA, aparece un cuadro que muestra la evolucin y, si todo ha salido

bien, la herramienta nos avisar de que hemos tenido xito en la programacin mostrando un aviso como el de la figura

2. Encender un LED

Departamento de Tecnologa Electrnica

0,1F

PIN puls

59BTN0

58BTN1

57BTN2

154 BTN3

4,7k

SW0

SW1

SW2

SW4

SW5

SW6

SW7

89

88

87

86

84

83

82

81

inter

PIN

rup

SW3

4,7k

pulsador

PIN

15

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 3.3: Implementacin de la puerta AND

De manera similar conectaremos los interruptores SW2 y SW3 con la entrada de una puerta OR, y su salida la conectaremos a LD1, obteniendo algo similar a la figura 3.4.

Figura 3.2: Ejemplos de la nomenclatura de las puerta lgicas

Lo primero que haremos es aadir una puerta AND (and2) en el mapa y conectamos sus entradas y salidas con puertos (AddI/O Marker). Los puertos de entrada los llamaremos SW0 y SW1, que se correspondern con

los interruptores 0 y 1. Y el puerto de salida lo renombraremos como LD0, que ser el LED nmero cero. Quedando como muestra la figura 3.3.

AND de 3 entradas con

dos de ellas negadas

AND de 2 entradas con

una de ellas negada

AND de 2 entradas

and2b1

and2

and3b2

3.1. Diseo del circuito

Creamos un nuevo proyecto (FileNew Proyect...) llamado swt0 con las mismas caractersticas que el anterior.

Creamos una nueva fuente de tipo esquemtico llamada swt0.sch. Y tendremos una pantalla similar a la de

la figura 2.7.

Como vamos a realizar el circuito con puertas lgicas, en la subventana de categoras (Categories) dentro de la ventana de smbolos, seleccionamos el elemento Logic. Veremos como en la subventana de smbolos (Symbols) aparecen nombres relativos a puertas lgicas (and12, and16, and2, or2, ...) el nmero indica el nmero de entradas de la puerta y si hay alguna b indica que tiene una entrada negada. La figura 3.2 muestra ejemplos de esta nomenclatura.

Figura 3.1: Esquema elctrico de las conexiones de los interruptores y pulsadores en la placa Pegasus

Para los pulsadores, cuando estn pulsados transmiten un 1-lgico a la entrada y cuando no estn pulsados ponen 0 voltios a la entrada. Observa que los pulsadores tienen un pequeo circuito con resistencias y un condensador, esto es para eliminar los rebotes que se producen al pulsar y as enviar una seal sin ruido.

4,7k

ruptor

3,3V

Spartan-II

3,3V

Spartan-II

3. Puertas lgicas, interruptores y pulsadores

En este ejercicio vamos disear un circuito sencillo con el que podamos interactuar. Para ello usaremos como entradas del circuito los interruptores y pulsadores de la placa. Adems incluiremos alguna lgica interna.

A partir de ahora no se va a realizar una explicacin tan detallada como la del primer ejercicio, si durante la ejecucin de este ejercicio has olvidado algn paso, repasa lo explicado en el ejercicio anterior.

Analizando las conexiones de los interruptores (figura 3.1) vemos que cuando el interruptor est hacia arriba transmite un 1-lgico a la entrada de la FPGA. En la placa, a la derecha del interruptor SW0 se indica que hacia arriba son 3,3V y hacia abajo son 0V.

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

16

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 3.8: Diseo final del ejercicio

LD1,

LD2 y LD3). Y deber tener el

Nuestro diseo final tiene 3 entradas (SW0, SW1 y BRN0) y 4 salidas (LD0,

siguiente aspecto:

Figura 3.7: Conexin final del buffer e inversor

seleccionado este comando, veremos que en la ventana de opciones aparecen las opciones para situar los

cables. En ella seleccionamos la primera opcin: Use the Autorouter to add one o more line segments between the

points you indicate. Y posteriormente pinchamos al cable que est entre la salida del puerto BTN0 y la entrada del inversor; sin soltar el botn del ratn, nos dirigimos a la entrada del buffer. Puede pasar que la herramienta d un mensaje que diga: The pin 'I' is already connected to a net. Only one net is allowed to connect to a pin. Con esto quiere decir que slo se puede conectar un cable a un pin. Pero lo que s se puede hacer es conectarlo al cable que une el pin con la entrada del inversor. Puede ser que tengas poco espacio entre el pin y la entrada del inversor. Para alargar ese cable, puedes seleccionar y arrastrar el pin de entrada a la izquierda. Ahora ser ms fcil conectar la entrada del buffer con el cable.

, o bien tecleando CTRL+W. Una vez que hemos

implementan pinchando en AddWire, o bien con el icono

Figura 3.6: Buffer que queremos conectar a la misma entrada (BTN0) que la del inversor

Para conectar la entrada del buffer al puerto de entrada BTN0 necesitamos un cable. Los cables los

Figura 3.5: Implementacin de un inversor

Adems queremos conectar la entrada del pulsador BTN0 a LD3. Como no podemos conectar directamente el puerto de entrada BTN0 al puerto de salida LD3, los conectamos mediante un buffer. Para ello, en la subventana de categoras (Categories) seleccionamos Buffer. Para el smbolo seleccionamos buf y lo situamos encima del inversor (fjate que el smbolo es el mismo pero sin la bolita a la salida, por eso no invierte). Conectamos la salida del buffer al LED LD3.

Figura 3.4: Implementacin de la puerta OR

Ahora conectaremos un inversor al pulsador BTN0 y su salida la conectaremos a LD2:

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

17

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 3.10: Creacin de una fuente para la simulacin

Tal como se muestra en la figura 3.10, seleccionamos el tipo de fichero como Test Bench Waveform. Lo nombramos tb_swt0 y pinchamos en Next. Test Bench significa "banco de pruebas", y eso es lo que queremos hacer, un banco de pruebas que demuestre que el diseo funciona como queremos. Waveform significa

Figura 3.9: Seleccin de los ficheros fuente segn el tipo de actividad que se vaya a realizar

Como ahora queremos simular el circuito para comprobar su funcionamiento, seleccionamos Sources for: "Behavioural Simulation" . Como resultado de esta seleccin, la ventana de procesos cambia. Por lo tanto, si en cualquier momento ves que la ventana de procesos no est como piensas que debera estar, comprueba que has seleccionado el men de fuentes adecuado. Por ejemplo, puede pasar que quieras sintetizar el diseo y no aparezca el comando, entonces mira qu opcin tienes seleccionada.

Ahora crearemos un nuevo fichero para simular nuestro diseo. Mediante un cronograma, este fichero indicar al simulador qu valores toman las entradas en funcin del tiempo. En la ventana de procesos pinchamos dos veces en Create New Source. Y nos saldr una ventana como la de la figura 3.10, que es similar a la que ya vimos en la figura 2.5.

Seleccin de fuentes para:

- Sntesis/Implementacin

- Simulacin comportamental

- Simulacin post-rutado

Para comprobar que hemos hecho la conexin bien podemos pinchar en ToolsCheck Schematic, y revisamos

la ventana inferior (Console) para ver si ha detectado algn error o advertencia.

Grabamos el esquemtico: FileSave (esto deberas hacerlo regularmente).

Debido a que es un diseo pequeo podramos probar el circuito directamente en la placa, sin embargo vamos a simularlo antes para aprender el proceso.

3.2. Simulacin del circuito

Una vez que hemos terminado el esquemtico y lo hemos grabado, seleccionamos la ventana de fuentes

(Sources) y la ventana de procesos (Processes).

En la parte superior de la ventana de fuentes, vemos que indica Sources for: "Synthesis/Implementation" (ver figura 3.9). El men desplegable permite seleccionar el tipo de ficheros fuente con los que se quiere trabajar: para simulacin o para sntesis. Es importante conocer esta opcin, debido a que nos puede ocurrir que no veamos un fichero que hemos creado a causa de tener seleccionada una opcin que no lo muestra. Por ejemplo, los ficheros para simulacin no se vern en caso de tener seleccionada la opcin de sntesis.

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

Eje temporal

Puertos de entrada

Puertos de salida

Valores de las seales en el tiempo

18

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 3.12: Ventana de los cronogramas de las seales de simulacin

Figura 3.11: Opciones de la temporizacin de la simulacin

Y as llegamos a una ventana como la de la figura 3.12 en la que en la vertical se muestran los puertos de entrada y salida, y en la horizontal un eje de tiempos. En medio de estos dos ejes tendremos los valores de las seales segn el tiempo en que estemos.

"forma de onda", as que nuestro banco de pruebas lo definiremos con las formas de onda de los puertos de

entrada (ahora veremos cmo y por qu).

La siguiente ventana nos pide que seleccionemos el diseo que vamos a probar con el banco de pruebas. En nuestro caso solo hay uno: swt0. Y as que pinchamos en Next y en la siguiente ventana en Finish.

Surgir una ventana que nos pide mucha informacin (figura 3.11). Como nuestro circuito no tiene reloj ni elementos de memoria (ya los estudiaremos en el tema 7) es un circuito combinacional, y por tanto, en el apartado de Clock Information, seleccionamos Combinatorial (or internal clock). Adems, deseleccionamos la casilla GSR (FPGA) y el resto de opciones las dejamos como estn y pinchamos en Finish.

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

Puertos de salida

Valores de las seales en el tiempo

Eje temporal

Puertos de entrada

Eje temporal

Puertos de entrada

Puertos de salida

Valores de las seales en el tiempo

Puertos de salida

Valores de las seales en el tiempo

Eje temporal

Puertos de entrada

0

0

0

1

00

01

10

11

0-100ns

100-200

200-300

300-400

LD0

SW0 SW1

tiempo

0

1

1

1

00

01

10

11

0-100ns

100-200

200-300

300-400

LD1

SW2 SW3

tiempo

0

1

1

0

0

1

0-200ns

200-400

LD3

LD2

BTN0

tiempo

19

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

4 UUT indica el componente que se est comprobando, es el acrnimo del ingls: Unit Under Test

Figura 3.14: Valores en los puertos de entrada para la simulacin

Para simularlo, en la ventana de fuentes (Sources) el fichero tb_swt0.tbw debe estar seleccionado, y en la ventana de Procesos, dentro de Xilinx ISE Simulator, pincharemos dos veces en Simulate Behavioral Model. Esto dar la orden para llevar a cabo la simulacin, y finalmente obtendremos los resultados de la simulacin en el cronograma (figura 3.15). Las seales se pueden haber descolocado y las volvemos a colocar en el mismo orden. Ahora debemos comprobar que los valores a las salidas se corresponden con los valores que esperamos (los de la figura 3.13).

Para comprobar el buen funcionamiento de LD0 vemos que est a '1' slo cuando SW0 y SW1 estn a '1'. Esto es as porque es una AND. Para la LD1, como es una OR, valdr '1' cuando SW2 o SW3 sean '1'. Y por ltimo, vemos que LD2 y LD3 tienen valores complementarios, ya que LD2 invierte el valor de BTN0 y LD1 lo asigna directamente. As pues, se cumple lo que habamos esperado en la figura 3.13.

Figura 3.13: Asignacin de valores a los puertos de entrada de modo que cubran todas las posibilidades de la tabla de

verdad

Asignando los valores de la figura 3.13 obtendremos un cronograma como el mostrado en la figura 3.14. Cuando lo tengamos hecho lo grabamos y comprobaremos cmo aparece en la ventana de fuentes: tb_swt0.tbw, y cmo dentro de l est nuestro diseo4: UUT swt0(swt0.sch).

LD2: NOT

LD1: OR

LD0: AND

Ahora nosotros tenemos que asignar los valores de los puertos de entrada, para que a partir de ellos el

simulador calcule los de salida. Inicialmente, la ventana asigna a todos los puertos de entrada el valor '0'. Nosotros vamos a asignar diversos valores para comprobar el funcionalidad de nuestro circuito en distintos casos.

Antes de asignar los valores, vamos a agrupar las seales entre s, para comprobar de manera ms fcil los resultados de la simulacin. SW0 y SW1 van a las entradas de una puerta AND cuya salida es LD0. As que las vamos a poner juntas. Esto se hace pinchando en el nombre del puerto y arrastrndolo hasta donde queramos. Hacemos lo mismo con el resto: SW2, SW3 y LD1 juntas; y por ltimo BTN0 junto con LD2 y LD3.

Pinchando en los recuadros azules del cronograma de los puertos de entrada modificamos su valor. El ancho de estos cuadrados se define en la ventana de la figura 3.11, nosotros los dejaremos con su valor por defecto.

Como tenemos un diseo pequeo, los valores de las entradas que vamos a asignar cubrirn todas las posibilidades para cada puerta. As, haremos que las entradas SW0 y SW1, de la puerta AND, tomen todos los valores de la tabla de verdad. En la figura 3.13 se muestran los valores que se quieren asignar a los puertos de entrada y los intervalos de tiempo en que se asignarn. Tambin se muestra los valores que deben salir (los valores de los LED) y que ms adelante comprobaremos si coinciden con los de la simulacin.

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

20

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 3.15: Resultados de la simulacin

Despus de haber comprobado la funcionalidad del circuito, nos disponemos a implementarlo en la FPGA

3.3. Sntesis e implementacin del circuito

Los pasos que debemos tomar son casi los mismos que los que tomamos en el ejemplo anterior. Aunque ahora, como venimos de la simulacin, lo primero que tienes que hacer es seleccionar en la ventana de fuentes las fuentes para sntesis: Sources for: "Synthesis/Implementation" (ver figura 3.9). Debemos tambin activar la ventana de procesos, que es donde le indicaremos a la herramienta que comandos de sntesis debe ejecutar (recuerda la figura 2.7).

Antes de dar la orden de sintetizar debes asignar los pines de la FPGA. Ahora tenemos ms pines que asignar. Repite el mismo proceso y asigna los pines conforme a la numeracin de la placa (si se te ha olvidado, vuelve a mirarte el ejercicio anterior).

Ya podemos sintetizar e implementar el circuito y pasarlo a la placa. Si todo ha salido bien, podrs comprobar que los LED de la placa se enciende en funcin del estado de los interruptores y el pulsador 0.

Departamento de Tecnologa Electrnica

3. Puertas lgicas, interruptores y pulsadores

0001

0010

0100

1000

00

01

10

11

1

1

1

1

0000

XX

0

S3 S2 S1 S0

A1 A0

E

21

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.3: Inversores con nombre a la salida

Para el negado de A1 lo llamamos N_A1, y el negado de A0 lo llamamos N_A0. Para colocarlo nos ponemos al

final del cable y pinchamos encima. Para colocar el segundo, cambiamos el nombre y repetimos la operacin.

Llegados a este punto, deberamos tener:

). Y en la ventana de opciones, en el apartado Name ponemos el nombre del cable.

(tambin hay un icono

dejamos al aire: pinchamos en un punto ms alejado a la derecha y pulsamos la tecla ESC. El extremo del

cable tendr un cuadradito rojo que indica que sin conectar (al aire).

Vamos a nombrar los terminales de cada cable que hemos dejado al aire. Seleccionamos AddNet Name

). El otro lado del cable lo

Ahora conectamos un cable a la salida de cada inversor (mediante el icono

Figura 4.2: Inversores colocados a las entradas para formar los trminos mnimos

4.1. Diseo del decodificador

Si nos fijamos en la tabla de verdad del decodificador (figura 4.1), considerando que E=1, podemos ver que cada una de las salidas S0, S1, S2 y S3, se corresponde con un trmino mnimo de A1 y A0. Por ejemplo, la salida S0 es el trmino mnimo 0 (m0=A1 A0 ); la salida S1 es el trmino mnimo 1 (m1=A1 A0), y de manera similar para el resto.

Luego slo tendremos que aadir la habilitacin y obtendremos las salidas.

Empecemos a disear: primero creamos un nuevo proyecto llamado decod2a4 en el directorio C:/practica/edi/tunombre. Recuerda no poner tildes ni ees, y mejor si no pones espacios. El proyecto debe tener las mismas caractersticas de los proyectos anteriores. Creamos tambin una nueva fuente con el mismo nombre y de tipo esquemtico (Schematic). Ya tendremos que tener el plano vaco de nuestro circuito.

Ya que el decodificador implementa todos los trminos mnimos, necesitaremos todas las entradas negadas y afirmadas (no negadas). Como los puertos no se pueden colocar solos (se deben conectar a las patas de algn componente), empezamos colocando los dos inversores de las entradas A1 y A0. Y posteriormente les conectamos los puertos de entrada (figura 4.2).

Figura 4.1: Decodificador de 2 a 4 y su tabla de verdad

E

A0

A1

S0

S1

S2

S3

DECOD 2a4

4. Decodificador de 2 a 4

En este ejercicio implementaremos un decodificador de 2 a 4 como los que hemos visto en clase. Un decodificador de 2 a 4 recibe dos entradas que estn codificadas en binario y segn que nmero est codificado activa la salida correspondiente a ese nmero. Por ejemplo, si el nmero de la entrada es 102, activar la salida 2, ya que 102 es dos en binario. Adems, los decodificadores suelen tener una seal de habilitacin (enable) que en caso de no estar activa, todas las salidas estarn tambin inactivas independientemente del valor del resto de entradas.

Por tanto, nuestro decodificador ser un bloque como el mostrado en la figura 4.1, cuya tabla de verdad tambin se muestra.

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

22

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.5: Trminos mnimos del decodificador

Aade tambin los nombres de cada uno de los trminos mnimos (como se ve en la figura 4.5). Para facilitar la tarea, puedes empezar por m0, y si seleccionas dentro de la ventana de opciones, en el apartado que indica After naming the branch or net marcas la opcin: Increase the name; el ndice de trmino mnimo se incrementar por s solo.

Ahora slo nos queda incluir la seal de habilitacin. Cuando sta es cero, las salidas son cero, por tanto se puede aadir al final de cada trmino mnimo mediante una puerta AND. Recuerda que la puerta AND

Figura 4.4: Inversores y las cuatro puertas AND para formar los trminos mnimos

Ahora vamos a conectar las entradas de cada una de las puertas. La puerta de arriba ser la del trmino mnimo cero (m0) y la de abajo m3. Para unir los cables de los puertos de entrada (negados o no) con las

entradas de las puertas usamos el comando AddNet y dejamos la opcin por defecto: Use the Autorouter to add

one or more line segments between the points you indicate. Al unir los cables veremos que en las uniones se forma

un cuadradito que indica la conexin entre cable. Al terminar de unir los cables tendremos un circuito como

el siguiente. Si te equivocas, usa CTRL+Z para deshacer la ltima unin.

A continuacin incluiremos 4 puertas AND de dos entradas que se encargarn de crear los 4 trminos

mnimos. Por ahora simplemente las creamos una debajo de la otra, y conectamos un cable a la salida de cada una de ellas.

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

E Habilitacin

E='0' Salida inhabilitada

E='1' Salida habilitada

23

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.7: Esquema de puertas del decodificador

Antes de seguir, debemos guardar el fichero (CRTL+S) y comprobar si todas las conexiones estn bien hechas: ToolsCheck Schematic. Debemos ver los errores o advertencias que puedan aparecer en la consola

(ventana de abajo). Si hubiese algn error, debemos comprobar qu cable o componente se trata, moverlo para ver si realmente est conectado y conectarlo bien. Vuelve a comprobar el esquemtico (ToolsCheck

Schematic) cuantas veces haga falta hasta que no tengas errores, y el final guarda el fichero.

4.2. Comprobacin del diseo

Antes de implementarlo en la placa vamos a ver si est bien diseado. Para ello seguimos los mismos pasos que en el apartado 3.2:

Seleccionamos en la ventana de fuentes (Sources) la opcin de Behavioural Simulation

En la ventana de procesos pinchamos en Create New Source

Seleccionamos el tipo: Test Bench Waveform, y nombramos el fichero tb_decod2a4

En la ventana de las opciones del cronograma (figura 3.11) indicamos que es un diseo combinacional y deseleccionamos GSR (FPGA), que est dentro Global Signals. Para terminar pinchamos en Finish.

Introducimos en el cronograma los valores de las entradas y guardamos el fichero del banco de pruebas

Damos la orden de simular Simulate Behavioral Model.

Comprobamos si los valores a las salidas son correctos.

Como slo tenemos 3 entradas, introduciremos las 8 combinaciones posibles. stas se muestran en la figura

4.8.

Figura 4.6: Puerta AND como habilitacin

Aadimos las puertas y las conectamos con la seal de habilitacin. El circuito debera quedarnos como la siguiente figura

S0

S0=m0

S0='0'

m0

E='1'

m0

E='0'

m0

E

acta como una compuerta en el sentido que si E='0' la salida vale '0' (inhabilitada) y si E='1' la salida vale lo

que la otra entrada (ver figura 4.6).

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

24

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.9: Cronograma de la simulacin

Podemos ver que los resultados de la simulacin son correctos. Cuando E='0' no hay ninguna salida activa, y cuando E='1' se van activando las distintas salidas segn cambian las entradas.

4.3. Implementacin del diseo

Ahora pasamos a implementarlo en el FPGA, si no te acuerdas, repasa lo visto en el apartado 2.2. Aqu te recordamos los pasos principales:

Como venimos de la simulacin, lo primero que tienes que hacer es seleccionar en la ventana de fuentes las fuentes para sntesis: Sources for: "Synthesis/Implementation" (ver figura 3.9).

Activa la ventana de procesos, que es donde le indicaremos a la herramienta que comandos de sntesis debe ejecutar (recuerda la figura 2.7).

Asigna los pines de la FPGA. Asigna el puerto A0 al interruptor SW0, el puerto A1 al interruptor SW1, y la habilitacin a el interruptor SW7. Los 4 LED de salida asgnalos consecutivamente.

Sintetiza e implementa el diseo

Comprueba que funciona como debe funcionar

4.4. Creacin de un bloque

Si hemos llegado hasta aqu significa que nuestro diseo funciona bien, tanto en simulacin como fsicamente en la placa, ahora vamos a crear un mdulo que integre este codificador para que cada vez que lo necesitemos implementar en diseos ms grandes, no tengamos que crear todo el esquema de puertas sino que conectaremos un bloque como el de la figura 4.1. Sera similar a un componente MSI (Medium Scale Integration) como los chips disponibles para diseo con componentes discretos. Por ejemplo los decodificadores 74LS138 y 74LS139.

Esto nos permitir subir el nivel de abstraccin y disear con bloques lgicos en vez de con puertas, lo que har que podamos disear de manera ms rpida y con menos probabilidad de equivocarnos, ya que cada uno de los bloques estn probados y sabemos que funcionan correctamente.

Volvemos a la vista del mapa del circuito: dentro de la ventana de fuentes pinchamos dos veces en el decodificador (decod2a4) o bien seleccionndolo directamente en la pestaa de la ventana grande.

Para crear el mdulo (Xilinx lo llama smbolo) pinchamos en ToolsSymbol Wizard, lo que har que aparezca una ventana (figura 4.10) que nos preguntar para qu componente vamos a crear un smbolo. En la opcin Pin Name Source, seleccionamos Using Schematic, y aparecer el nico esquemtico que hemos creado en este proyecto: decod2a4.

Figura 4.8: Valores introducidos en el cronograma para la simulacin del decodificador

Despus de la simulacin, los resultados de las salidas son:

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

25

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.11: Determinacin de la posicin de los pines del smbolo

Pinchando en Next la siguiente ventana nos preguntan por las distancias y los tamaos del smbolo. Lo dejamos como est, o bien, si lo prefieres de otra manera, puedes modificarlo a tu gusto. Volvemos a pinchar en Next, y tendremos una ventana con el smbolo de nuestro decodificador (figura 4.12). Si nos gusta pinchamos en Finish.

Figura 4.10: Seleccin del componente para el que vamos a crear un smbolo

Pinchamos en Next y aparecer una ventana con las entradas y salidas del mdulo. En ella podemos cambiar el lugar donde aparecern (derecha o izquierda) y el orden. Ponemos el mismo orden de la figura 4.11.

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

Smbolo

Esquema en puertas

26

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 4.13: Smbolo del decodificador en el editor de esquemticos

Ahora podremos utilizar este smbolo en otros diseos. En esto va a consistir el prximo ejercicio.

Figura 4.12: Aspecto final del smbolo de nuestro decodificador

Por ltimo tendremos el decodificador en el editor de esquemticos (figura 4.13), en donde hay una pestaa para acceder al esquema en puertas.

4. Decodificador de 2 a 4

Departamento de Tecnologa Electrnica

Smbolo

Esquema en puertas

Esquema en puertas Smbolo

Smbolo

Esquema en puertas

00000001

00000010

00000100

00001000

00010000

00100000

01000000

10000000

000

001

010

011

100

101

110

111

1

1

1

1

1

1

1

1

00000000

XXX

0

S7 S6 S5 S4 S3 S2 S1 S0

A2 A1 A0

E

0000

0000

XXX

0

S3 S2 S1 S0

S7 S6 S5 S4

A2 A1 A0

E

0001

0010

0100

1000

0000

0000

0000

0000

00

01

10

11

0

0

0

0

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

A1 A0

A2

E

0000

0000

0000

0000

0001

0010

0100

1000

00

01

10

11

1

1

1

1

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

A1 A0

A2

E

DECOD 3a8

27

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 5.2: Tabla de verdad del decodificador de 3 a 8 dividida segn el valor de E y A2

Por tanto, podemos usar dos decodificadores de 2 a 4, uno para las seales S3 a S0, que se activar cuando E=1 y A2=0 ; esto es EA2 ; y otro decodificador para las seales S7 a S4, que se activar cuando E=1 y A2=1 (EA2). La salida S0 de este ltimo decodificador de 2 a 4 ir a la salida S4 del decodificador de 3 a 8, y as sucesivamente con el resto de seales.

todas '0'

igual que decod2a4

A2 = '1'

misma

secuencia

igual que decod2a4

todas '0'

A2 = '0'

todas '0'

Figura 5.1: Esquema del decodificador de 3 a 8 y su tabla de verdad

Si analizamos la tabla de verdad y la dividimos en tres partes segn los valores de E y A2 (figura 5.2), podemos ver que:

Cuando E=0, el circuito est inactivo

Cuando E=1, y A2=0, las seales S7 a S4 estn inactivas, y las seales S3 a S0 se comportan igual que el decodificador de 2 a 4.

Cuando E=1, y A2=1, las seales S3 a S0 estn inactivas, y las seales S7 a S4 se comportan igual que el decodificador de 2 a 4.

E

A0

A1

A2

S0

S1

S2

S3

S4

S5

S6

S7

5. Decodificador de 3 a 8

Hemos realizado el decodificador de 2 a 4, utilizando dos interruptores encendamos uno de los cuatro primeros LED. Ahora vamos a construir un decodificador que encienda uno de los 8 LED, utilizaremos para ello los tres primeros interruptores.

Aunque este ejercicio ya se ha explicado en clase, vamos a repasarlo un poco. En la figura 5.1 se muestra el bloque final que queremos obtener y la tabla de verdad. La tabla de verdad es muy similar a la del codificador de 2 a 4 (figura 4.1).

Podramos hacer el ejercicio de la misma manera que el decodificador de 2 a 4, sin embargo, si lo hacemos uniendo dos decodificadores de 2 a 4 lograremos disearlo de manera mucho ms rpida y entendible. Es difcil de entender el funcionamiento de un diseo grande en puertas, mientras que si lo hacemos con bloques es ms claro.

5. Decodificador de 3 a 8

Departamento de Tecnologa Electrnica

Smbolos del proyecto

Smbolo del decodificador de 2 a 4

Decodificador de 2 a 4

28

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 5.4: Implementacin del decodificador de 2 a 4 en el nuevo decodificador

Figura 5.3: Fichero fuente que vamos a aadir

Despus de esto tendremos en nuestra ventana de fuentes (Sources) el componente decod2a4.

Al importar decod2a4.sch se ha importado su esquemtico, pero no el smbolo que habamos creado para l. As que volvemos a crear el smbolo repitiendo los pasos del apartado 4.4.

Ahora crearemos una nueva fuente: pincha dos veces en el comando "Create New Source" de la ventana de

procesos. Seleccionamos que es de tipo Schematic y la llamamos decod3a8.

Como resultado tendremos el editor de esquemticos vaco (el plano de nuestro nuevo diseo), y veremos que en la ventan de fuentes tenemos dos diseos: el decod2a4 que acabamos de aadir y el nuevo decod3a8 que vamos a disear.

Seleccionamos la pestaa de la ventana de smbolos, y vemos que en la seccin de categoras (Categories), la primera de ellas corresponde a nuestro proyecto, y si la seleccionamos aparece el smbolo que hemos creado: decod2a4. Esto se muestra en la figura 5.4.

Intenta realizarlo t mismo, y si no te sale puedes ver la solucin en la figura 5.5. A continuacin vamos a

disearlo.

5.1. Diseo del decodificador con bloques

Aunque lo podramos crear en el mismo proyecto que el anterior, vamos a crear un nuevo proyecto. Ya sabes como se hace. Lo nombraremos decod3a8. Una vez que hemos indicado las caractersticas del proyecto

estaremos en la ventana principal, y pincharemos en ProyectAdd Copy of Source.... Con ello vamos a aadir

una copia del decodificador que ya hemos hecho a este nuevo proyecto. Vamos a hacer una copia para evitar

estropear el diseo original. Despus de ejecutar el comando aparecer una ventana que nos pedir el nombre del fichero que queremos aadir. Vamos al directorio del anterior proyecto y sealamos el fichero

..\decod2a4\decod2a4.sch y pinchamos en Abrir. Nos surgir una ventana como la de la figura 5.3.

5. Decodificador de 3 a 8

Departamento de Tecnologa Electrnica

Decodificador de 2 a 4

Smbolo del decodificador de 2 a 4

Smbolos del proyecto

Smbolos del proyecto

Smbolo del decodificador de 2 a 4

Decodificador de 2 a 4

Decodificador de 2 a 4

Smbolo del decodificador de 2 a 4

Smbolos del proyecto

29

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 5.6: Conexin de los puertos del diseo con los pines de la FPGA

Una vez implementado, comprueba que funciona correctamente y compralo con los valores de la tabla de verdad y la simulacin.

Figura 5.5: Esquema final del decodificador de 3 a 8

Fjate en lo rpido que lo has podido disear y lo simple del circuito, y compralo con lo que te hubiese supuesto haberlo hecho todo en puertas lgicas.

Antes de pasar al siguiente paso, guarda el diseo (CTRL+S) y comprueba que el diseo es correcto

(ToolsCheck Schematic).

Si quieres puedes simularlo, siguiendo los pasos descritos en los apartados 3.2 y 4.2.

Ahora asigna los pines de la FPGA de manera similar al ejemplo anterior

En el mapa del circuito aadimos dos referencias a decod2a4, que como ya hemos dicho, un decodificador es

para las 4 primeras salidas y el otro para el resto.

Ahora realizamos las conexiones entre los decodificadores decod2a4 y las entradas y salidas del nuevo decodificador decod3a8. Incluyendo tambin las seales de habilitacin de cada uno de ellos, usando para ello puertas AND. Nota que para la habilitacin del decodificador superior, la puerta AND debe tener la entrada de A2 negada. El circuito final se muestra en la figura 5.5.

5. Decodificador de 3 a 8

Departamento de Tecnologa Electrnica

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

00 0 0

00 0 0

00 0 0

00 0 0

0001

0010

0100

1000

0 0

0 1

1 0

1 0

1 1

1 1

1 1

1 1

1

1

1

1

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

00 0 1

00 1 0

01 0 0

10 0 0

0000

0000

0000

0000

0 0

0 1

1 0

1 1

1 0

1 0

1 0

1 0

1

1

1

1

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

00 0 0

00 0 0

00 0 0

00 0 0

0000

0000

0000

0000

0 0

0 1

1 0

1 1

0 1

0 1

0 1

0 1

1

1

1

1

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

00 0 0

00 0 0

00 0 0

00 0 0

0000

0000

0000

0000

0 0

0 1

1 0

1 1

0 0

0 0

0 0

0 0

1

1

1

1

0 0 0 0

0 0 0 0

00 0 0

0000

X X

X X

0

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

A3 A2

E

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

X X

0 X X

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

E A3 A2

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0

0 1

1 0

1 1

0 0

0 0

0 0

0 0

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

A3 A2

E

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0

0 1

1 0

1 1

0 1

0 1

0 1

0 1

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

A3 A2

E

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0

0 1

1 0

1 1

1 0

1 0

1 0

1 0

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

A3 A2

E

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0

0 1

1 0

1 0

1 1

1 1

1 1

1 1

1

1

1

1

S3 S2 S1 S0

S7 S6 S5 S4

S11 S10 S9 S8

S15 S14 S13 S12

A1 A0

A3 A2

E

DECOD4a16

decod 1

decod 4

decod 2 decod 3

30

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 6.2: Tabla de verdad del decodificador de 4 a 16 dividida segn el valor de E y de A3 y A2

todas '0'

igual que decod2a4

A3 = '1' misma A2 = '1' secuencia

decod 3

activo cuando

A3 = '1' A2 = '1'

todas '0'

todas '0'

igual que decod2a4

A3 = '1' A2 = '0'

decod 2

activo cuando

A3 = '1' A2 = '0'

todas '0'

igual que decod2a4

todas '0'

A3 = '0' A2 = '1'

decod 1

activo cuando

A3 = '0' A2 = '1'

igual que decod2a4 para las entradas A1 y A0

todas '0'

A3 = '0' A2 = '0'

decod 0

activo cuando

A3 = '0' A2 = '0'

todas '0'

E = '0':

Inhabilitado

Figura 6.1: Bloque del decodificador de 4 a 16, y su tabla de verdad

En la tabla de verdad de la figura 6.1 vemos que las seales de salida se han agrupado de cuatro en cuatro. En la figura 6.2 se han separado estos grupos, ms el caso en que E='0'. Podemos ver que para cada grupo se puede utilizar un decodificador de 2 a 4 como el que ya hemos diseado. Todos los decodificadores tendrn las mismas entradas A1 y A0. La nica diferencia est en las salidas a las que se conecta cada decodificador y la habilitacin. Por ejemplo, el primer decodificador tendr como salidas S0, S1, S2 y S3 y slo estar habilitado cuando A3='0' y A2='0'; el segundo decodificador estar habilitado cuando A3='0' y A2='1'. Y de manera similar para el tercer y cuarto decodificador (como lo muestra la figura).

E

A3

A1

A2

A0

S0

S1

S2

S3

S4

S5

S6

S7

S8

S9

S10

S11

S12

S13

S14

S15

6. Decodificador de 4 a 16

Y cmo haramos un decodificador de 4 a 16 con decodificadores de 2 a 4? el proceso es muy similar al anterior. La figura 6.1 muestra este decodificador y su tabla de verdad. sta se puede dividir en 4 partes, una por decodificador.

6. Decodificador de 4 a 16

Departamento de Tecnologa Electrnica

0 0

0 1

1 0

1 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0

0 1

1 0

1 1

0 0

0 1

1 0

1 1

0 0

0 1

1 0

1 1

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

0 0 0 1

0 0 1 0

0 1 0 0

1 0 0 0

00 0 1

00 1 0

01 0 0

10 0 0

0001

0010

0100

1000

0001

0010

0100

1000

00

01

10

11

1

1

1

1

0000

XX

0

E3 E2 E1 E0

A3 A2

E

31

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 6.3: Tabla de verdad de las seales de habilitacin de los 4 decodificadores

Con estas indicaciones (adems de lo visto en clase) ya podemos disear el decodificador de 4 a 16.

6.1. Diseo del decodificador con bloques prediseados

Vamos a crear un nuevo proyecto en C:/practicas/edi/tunombre llamado sieteseg. Quizs te preguntes por qu no lo llamamos decod4a16, esto es porque aunque en este ejercicio vamos a hacer el decodificador de 4 a

16, en el siguiente ejercicio y trabajando en el mismo proyecto vamos a usar el visualizador (display) de siete

segmentos.

Creamos una nueva fuente (ProjectNew Source) de tipo esquemtico (Schematic) llamada decod4a16. Para crear el decodificador de 4 a 16 vamos a emplear decodificadores de 2 a 4, igual que hicimos en el ejercicio 5.

Sin embargo para este ejercicio, en vez de utilizar el decodificador que diseamos en el ejercicio 4 utilizaremos un decodificador disponible en la biblioteca de smbolos de Xilinx.

Si no tenemos en pantalla el plano para dibujar el circuito (el editor de esquemticos) pinchamos dos veces en decod4a16.sch en la ventana de fuentes (Sources). Seleccionamos la ventana de smbolos y la de opciones (recuerda la figura 2.7).

Ahora seleccionamos el decodificador de 2 a 4 disponible en la herramienta: en la ventana de smbolos en la subventana de categoras (Categories) seleccionamos Decoder. Y en la subventana de abajo llamada Symbols seleccionamos d2_4e. Este componente es un decodificador de 2 a 4 con una funcionalidad exactamente igual a la del que ya realizamos en el ejercicio 4. Las caractersticas del componente seleccionado, incluyendo su tabla de verdad, se pueden consultar pinchando el botn que dice Symbol Info.

Si te fijas, hay ms componentes, incluso hay un decodificador de 4 a 16, pero no lo usaremos, ya que en tal caso, este ejercicio ya estara hecho.

Como vamos a necesitar 5 decodificadores, cuatro para las salidas y uno para la habilitacin, colocamos 4 componentes alineados verticalmente y el que decodifica las habilitaciones a la izquierda de ellos (figura

6.4).

Ningn decodificador habilitado

decodificador 0 habilitado decodificador 1 habilitado decodificador 2 habilitado decodificador 3 habilitado

As que usaremos cuatro decodificadores de 2 a 4 para las 16 salidas. Adems necesitaremos crear la lgica

que se encargue de habilitar cada decodificador. Si nos fijamos en las seales A3 y A2 de la tabla de verdad, y de cmo habilitan a cada decodificador, podemos extraer la tabla de verdad de la figura 6.3. En ella se ponen las seales de habilitacin de cada decodificador (E3, E2, E1, E0) en funcin de la habilitacin general (E) y las entradas A3 y A2. Podemos ver que la tabla de verdad se corresponde con la tabla de verdad de un decodificador de 2 a 4 (figura 4.1), as que para las seales de habilitacin de los cuatro decodificadores usaremos otro decodificador de 2 a 4.

Seales de habilitacin de los 4 decodificadores

6. Decodificador de 4 a 16

Departamento de Tecnologa Electrnica

32

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 6.5: Diseo final del decodificador de 4 a 16

Una vez que lo hayas realizado, grbalo y comprueba que todo est bien conectado (ToolsCheck Schematic). Date cuenta de lo rpido que se puede disear usando bloques y lo tedioso que hubiese sido realizar este decodificador enteramente con puertas lgicas.

Figura 6.4: Seleccin de los decodificadores de 2 a 4 disponibles en el ISE

Realizamos la conexiones entre ellos, como vimos en la figura 6.2, las entradas de los decodificadores de la derecha son las mismas (A0 y A1) y a stos conectamos las salidas. Las entradas del decodificador que se encarga de las habilitaciones son A2 y A3. El diseo final se muestra en la figura 6.5. Observa la seal de habilitacin E, si sta es 0 hace que todas las salidas del decodificador de la izquierda valgan 0, y por tanto inhabilita los 4 decodificadores de la derecha, haciendo que todas las salidas valgan 0. Si E='1' se habilitar un nico decodificador dependiendo del valor de A2 y A3.

6. Decodificador de 4 a 16

Departamento de Tecnologa Electrnica

33

Diseo digital con esquemticos y FPGA. v1.8 - 04/06/2008

Figura 6.7: Valores introducidos en el cronograma para la simulacin del decodificador de 4 a 16

Una vez introducidos los valores en el cronograma:

Guardamos el fichero del banco de pruebas

Habiendo seleccionando el fichero tb_decod4a16 en la ventana de fuentes, desde la ventana de procesos damos la orden de simular: Simulate Behavioral Model (dentro de Xilinx ISE Simulator)

El resultado de la simulacin