You are on page 1of 38

Universidad Nacional de Ingeniera Jessica Arelys Leiva Lpez

DISEO DIGITAL BASADO EN FPGA


ELECTRNICA DIGITAL I
Universidad Nacional de Ingeniera | Jessica Leiva

Contenido
Recomendaciones generales........................................................................................ 5 Elaboracin del reporte ............................................................................................. 5 Lista de materiales .................................................................................................... 5 Laboratorio 1. Introduccin al entorno ISE de Xilinx ................................................... 6 1.1 1.2 1.3 1.4 Objetivos......................................................................................................... 6 Introduccin .................................................................................................... 6 Actividades previas ......................................................................................... 6 Desarrollo de la prctica ................................................................................. 6 Creacin de un proyecto en Project Navigator ......................................... 6

1.4.1

1.4.2 Asignacin de los pines en la tarjeta Basys2 .............................................. 11 1.4.3 Programacin del chip de FPGA ................................................................. 14 1.5 Actividades propuestas ................................................................................. 15 Prctica ................................................................................................. 15 Actividades de aprendizaje .................................................................... 15

1.5.1 1.5.2

Laboratorio 2. Simulacin de un circuito digital ........................................................... 16 2.1 2.2 2.3 2.4 2.5 Objetivo ........................................................................................................ 16 Introduccin .................................................................................................. 16 Actividades previas ....................................................................................... 16 Desarrollo de la prctica ............................................................................... 16 Actividades propuestas ................................................................................. 20 Prctica ................................................................................................. 20 Actividades de aprendizaje .................................................................... 20

2.5.1 2.5.2

Laboratorio 3. Estructura de mdulos ......................................................................... 21 3.1 3.2 3.3 3.4 Objetivo ........................................................................................................ 21 Introduccin .................................................................................................. 21 Actividades previas ....................................................................................... 21 Desarrollo de la prctica ............................................................................... 22 Crear un nuevo proyecto ISE. ............................................................. 22 Implementar el diseo en FPGA ............................................................ 23

3.4.1 3.4.2 3.5

Actividades propuestas ................................................................................. 23 Prctica ................................................................................................. 23 Actividades de aprendizaje .................................................................... 23 2

3.5.1 3.5.2

Laboratorio 4. Sumador de dos bits ............................................................................ 24 4.1 4.2 Objetivo ........................................................................................................ 24 Introduccin .................................................................................................. 24 Universidad Nacional de Ingeniera | Jessica Leiva

4.3 4.4 4.5

Actividades previas ....................................................................................... 24 Desarrollo de la prctica ............................................................................... 24 Actividades propuestas ................................................................................. 26 Prctica ................................................................................................. 26 Actividades de aprendizaje .................................................................... 26

4.5.1 4.5.2

Laboratorio 5. Decodificador de BCD a 7 segmentos .................................................. 27 5.1 5.2 5.3 5.4 5.5 Objetivo ........................................................................................................ 27 Introduccin .................................................................................................. 27 Actividades previas ....................................................................................... 28 Desarrollo de la prctica ............................................................................... 28 Actividades propuestas ................................................................................. 29 Prctica ................................................................................................. 29 Actividades de aprendizaje .................................................................... 30

5.5.1 5.5.2

Laboratorio 6. Multiplexores ........................................................................................ 31 6.1 6.2 6.3 6.4 6.5 Objetivo ........................................................................................................ 31 Introduccin .................................................................................................. 31 Actividades previas ....................................................................................... 31 Desarrollo de la prctica ............................................................................... 31 Actividades propuestas ................................................................................. 33 Prctica ................................................................................................. 33 Actividades de aprendizaje .................................................................... 33

6.5.1 6.5.2

Laboratorio 7. Registros .............................................................................................. 34 7.1 7.2 7.3 7.4 7.5 Objetivo ........................................................................................................ 34 Introduccin .................................................................................................. 34 Actividades previas ....................................................................................... 34 Desarrollo de la prctica ............................................................................... 34 Actividades propuestas ................................................................................. 35 Prctica ................................................................................................. 35 Actividades de aprendizaje .................................................................... 35

7.5.1 7.5.2

Laboratorio 8. Contadores .......................................................................................... 36 8.1 8.2 8.3 8.4 8.5 Objetivo ........................................................................................................ 36 Introduccin .................................................................................................. 36 Actividades previas ....................................................................................... 36 Desarrollo de la prctica ............................................................................... 36 Actividades propuestas ................................................................................. 37 Prctica ................................................................................................. 37 Universidad Nacional de Ingeniera | Jessica Leiva 3

8.5.1

8.5.2

Actividades de aprendizaje .................................................................... 38

Universidad Nacional de Ingeniera | Jessica Leiva

Recomendaciones generales
El desarrollo de las prcticas incluidas en las siguientes guas de laboratorio para electrnica digital requiere del manejo adecuado del equipo y los materiales de laboratorio para garantizar la seguridad del usuario y de los instrumentos de laboratorio. Los usuarios deben seguir las siguientes recomendaciones: 1. Leer atentamente la prctica de laboratorio antes de comenzar la sesin. 2. Todas las prcticas requieren de conocimiento terico previo de los modelos de los circuitos digitales a realizar. En este caso los estudiantes deben realizar las actividades previas indicadas en cada gua de laboratorio, en caso de incumplir se negar el acceso al laboratorio sin reposicin de la prctica. 3. Prestar atencin a las indicaciones del instructor durante la sesin de laboratorio. 4. Respetar las normas de seguridad del laboratorio. 5. Utilizar el equipo y los materiales suministrados de acuerdo con los manuales y las instrucciones del docente. 6. Consultar al instructor si tiene dudas o inquietudes. El instructor debe tener conocimiento previo del uso del equipo (software y hardware) a utilizar en las prcticas de laboratorio. As mismo debe orientar el correcto desarrollo de las prcticas. Los estudiantes deben mostrar los resultados obtenidos en cada prctica de laboratorio. Adems, el estudiante deber presentar el algoritmo o pseudocdigo de las prcticas a desarrollarse cuando as se requiera o cuando el instructor lo indique. La inasistencia a la prctica de laboratorio impide al estudiante la entrega del informe correspondiente a esa prctica.

Elaboracin del reporte


El estudiante debe entregar un reporte de la prctica realizada justo al inicio de la siguiente prctica. Este reporte se presenta de acuerdo al nmero de estudiante por puesto de laboratorio y debe contener los siguientes puntos: a. b. c. d. e. f. g. Introduccin Objetivos Desarrollo Actividades propuestas Conclusiones Observaciones Bibliografa

Lista de materiales
Por cada prctica y por cada puesto de laboratorio, los materiales a utilizar es: Cantidad 1 1 1 Descripcin Computadora Kit de desarrollo Basys2 Digilent Software Xilinx ISE Webpack v12.2 5

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 1. Introduccin al entorno ISE de Xilinx


1.1 Objetivos
Familiarizar al usuario en el uso del ambiente de software integrado Xilinx ISE v12.2 y el kit de desarrollo Basys2 mediante la creacin de un programa de lgica combinacional.

1.2

Introduccin

Los circuitos digitales presentan dos estados, un estado se aproxima a cero volts (low) y el otro estado suministra el voltaje (high) y se pueden procesar en nmeros binarios, en este caso 1 o 0. Los circuitos digitales pueden estar conectados entre s por medio de las compuertas digitales como son: OR, NOR, AND, exclusivamente OR, exclusivamente NOR y NAND. En esta prctica de laboratorio se implementan las compuertas bsicas: AND, OR y XOR introduciendo al estudiante en el Ambiente de Software Integrado Xilinx mediante la creacin del primer circuito digital en el lenguaje de descripcin de hardware Verilog y su verificacin en la tarjeta de FPGA Basys 2. El programa consiste en describir tres salidas c, d y e como la combinacin lgica de las entradas a y b. As, c = a + b, d = a * b y e = a b.

1.3

Actividades previas
Completar la tabla de las compuertas bsicas AND, OR y XOR con las ecuaciones descritas anteriormente. Entradas a 0 0 1 1 b 0 1 0 1 c Salidas d

1.4

Desarrollo de la prctica

1.4.1 Creacin de un proyecto en Project Navigator Cada vez que realiza un nuevo diseo es necesario crear un proyecto nuevo: en cada proyecto se crea automticamente una carpeta donde se almacenan todos los archivos de entrada de diseo y los archivos generados durante la ejecucin de los pasos intermedios de compilacin y verificacin. 1. Abrir Xilinx-ISE. 2. Cerrar cualquier programa que est abierto (File Close Project). 3. Abrir un nuevo proyecto (File New Project). Escribir el nombre del proyecto y presionar en la pestaa Next.

Universidad Nacional de Ingeniera | Jessica Leiva

4. Asegurar que las propiedades del proyecto son iguales a la de la figura y presionar la pestaa Next.

5.

En la siguiente ventana, clic en la pestaa Finish.

Universidad Nacional de Ingeniera | Jessica Leiva

6. Crear una nueva fuente. En la ventana Sources clic derecho en la carpeta y seleccionar New Source y presionar Next.

7.

Elegir la opcin Verilog Module, en File name escribir Compuertas y presionar Next.

Universidad Nacional de Ingeniera | Jessica Leiva

8.

En la siguiente ventana definimos las entradas y salidas del mdulo. Las variables a y b estn definidas como entradas (input) y las variables c, d y e como salida (output).

9. Clic en todas las dems opciones: Next Finish. 10. En la ventana Sources verificar que aparezca el dispositivo y el mdulo principal.

11. En la ventana de edicin aparece el mdulo creado y por defecto aparece el nombre, con las entradas, salidas y con el final del mdulo. Escribir despus de la declaracin de entradas y salidas las lneas con definidas con la sentencia assign.

Universidad Nacional de Ingeniera | Jessica Leiva

12. Guardar los cambios realizados en el paso anterior. 13. Seleccionar el mdulo principal en la ventana Sources. En Processes, elegir Synthesize-XST en el ms desplegable, clic derecho en la opcin Check Syntax y elegir Rerun All.

14. En la ventana Console, verificar que aparezca el siguiente mensaje.

Nota: El proceso verifica que no haya errores de sintaxis, de haberlo hay que corregir.

10

Universidad Nacional de Ingeniera | Jessica Leiva

1.4.2 Asignacin de los pines en la tarjeta Basys2 1. Clic derecho en Compuertas.v y elegir New Source...

2.

Elegir la opcin Implementation Constraints File, en File Name escribir Compuertas, clic en Next Finish.

3.

En la ventana Sources, verificar que la nueva fuente que acabamos de crear aparece debajo del mdulo principal.

4.

Seleccionar Compuertas.ucf, en Processes clic en el ms desplegable y presionar doble clic en la opcin Edit Constraints (Text).

11

5.

Aparecer un editor de texto en blanco en la ventana principal

Universidad Nacional de Ingeniera | Jessica Leiva

6.

Escribir los siguiente net net net net net "a" "b" "c" "d" "e" loc loc loc loc loc = = = = = "L3" ; "P11"; "P7" ; "M11"; "M5" ;

Estas lneas significan la localizacin de las entradas y las salidas en la tarjeta Basys2. Las entradas son los switches

y las salidas las visualizaremos con los leds.

12

Universidad Nacional de Ingeniera | Jessica Leiva

7.

Seleccionar en la ventana Sources el mdulo principal Compuertas.v, en la ventana Processes elegir Generate Programming File y doble clic en la opcin Rerun All.

8.

Verificar que aparezca el smbolo en los procesos que seleccionamos en el paso anterior de la ventana Processes.

9.

Asegurar que en la ventana Console aparezca el siguiente mensaje:

El mensaje significa que no se produjeron errores para la implementacin del archivo .bit 13

Universidad Nacional de Ingeniera | Jessica Leiva

1.4.3 Programacin del chip de FPGA 1. Conectar el kit de entrenamiento Basys2 mediante el cable USB a la computadora, elegir las opciones para que la computadora lo instale automticamente. 2. Buscar en el Inicio todos los programas Digilent

3. Si el kit est conectado correctamente se indicar en la siguiente ventana. 4. En la pestaa Browse buscar el archivo Compuertas.bit en el directorio que guardamos a la hora de crear el proyecto (ver en la parte superior de ISE) y pulsar Program.

14 5. Activar a y b (los switches SW1 y SW0) y comprobar que los LEDs correctamente (LD2 como OR, LD1 como AND, y LD0 como XOR). actan

Universidad Nacional de Ingeniera | Jessica Leiva

1.5

Actividades propuestas

1.5.1 Prctica Llene la tabla de verdad segn las ecuaciones dadas y realice la descripcin de las combinaciones lgicas en un programa de Verilog. Consulte la seccin de simbologa en el manual de ayuda del lenguaje. Verifique en ISE que la sintaxis del programa es correcta utilizando los pasos descritos en la gua de laboratorio 1. Entradas x y z Salidas

1.5.2

Actividades de aprendizaje 1. Introduzca una nueva variable (x), de tal manera que las salidas sean una and de tres entradas, una or de tres entradas, qu sucede con los valores de salidas? 2. En una compuerta and de 2 entradas; si en una de sus entradas recibe un 0 y en la otra un 1, Cul es su salida? 3. Si una compuerta Nand recibe las mismas seales de entrada de la pregunta anterior, Cul es su salida?

Anote las conclusiones de su trabajo, siga las recomendaciones de su instructor y entregue el reporte en tiempo y forma.

15

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 2. Simulacin de un circuito digital


2.1 Objetivo
Utilizar la herramienta de simulacin de ISE Xilinx v12.2 para la verificacin y comportamiento esperado de un circuito digital de lgica combinacional.

2.2

Introduccin

La metodologa de diseo es similar a la de cualquier sistema digital. Primero hay que tener una descripcin del circuito a realizar. Tradicionalmente en las ingenieras se realizan planos o esquemas para esta descripcin. La descripcin del circuito se realiza a travs del lenguaje de descripcin de hardware Verilog. Con esta descripcin se pueden realizar simulaciones del circuito, para comprobar que lo diseado trabaja correctamente, de lo contrario se modifica la descripcin (esquemas o programa) hasta que la simulacin sea satisfactoria. En esta prctica se realiza la simulacin del circuito del laboratorio 1 que consista en visualizar el comportamiento en el kit Basys2. Analizaremos la forma de onda generada a partir de los estmulos de tiempo y de la combinacin de las entradas.

2.3 2.4

Actividades previas Desarrollo de la prctica

Haber realizado el Laboratorio 1.

El Ejercicio_1 realizado en el laboratorio 1, lo utilizaremos para comprobar que funciona correctamente en el simulador del software ISim. 1. 2. Abrir ISE Project Navigator Open Project Ejercicio_1. Aadir una nueva fuente al mdulo principal Compuertas.v.

3.

Elegir la opcin Verilog Test Fixture. En File name: escribir Compuertas_prueba y clic en Next.

16

Universidad Nacional de Ingeniera | Jessica Leiva

4.

En Design, escoger en modo Simulation.

5.

Aparece en la ventana principal lo siguiente:

17

Universidad Nacional de Ingeniera | Jessica Leiva

6.

Aadir las siguientes lneas despus del cometario // Add stimulus here y antes de la sentencia end #100 b = #100 a = b = #100 b = 1; 1; 0; 1;

7.

Seleccionar Compuertas_prueba.v en la ventana Sources.

8.

Clic derecho en Behavioral Check Sintax Processes Rerun All.

Aparece la siguiente ventana, clic en Yes.

9.

Verificar que aparezca un en Behavioral Check Sintax, elegir la opcin Simulate Behavioral Model y clic derecho en Run. 18

Universidad Nacional de Ingeniera | Jessica Leiva

10. Aparece la ventana ISim Simulator, donde se muestra la forma de onda de los estmulos agregados en el paso 6. Utilizar la herramienta Zoom to Full View para ver la vista completa de la simulacin, que se encuentra a la derecha en la barra de herramientas del panel de simulacin.

La figura anterior muestra tres ventanas: Source Files que contiene los archivos asociados al proceso de simulacin, Objects muestra las variables asociadas al archivo seleccionado en la ventana Source File, en este caso las variables a, b, c, d y e del archivo fuente compuertas_prueba.v. Y la tercera ventana es Wave Window donde se visualiza la configuracin de las formas de onda, que contienen la lista de las seales y su forma de onda1.

11. Mover la lnea amarilla sobre las formas de onda (de color verde) y ver en Value que los valores de las seales cambian. Comprobar que las formas de onda de la figura anterior corresponden a las tablas de verdad de las compuertas bsicas del Laboratorio 1. 19

Ms informacin? Visita http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_2/plugin_ism.pdf

Universidad Nacional de Ingeniera | Jessica Leiva

2.5

Actividades propuestas

2.5.1 Prctica De los ejercicios propuestos del reporte de laboratorio 1 realizar la simulacin en ISE utilizando los pasos de la gua de laboratorio 2. Recuerde que hay tres entradas (x, y, z) y dos salidas (a, b) y que la relacin de las variables es:

El reporte debe incluir: Tabla de verdad de las variables. Descripcin de las ecuaciones con compuertas lgicas. Descripcin de las ecuaciones en Verilog. Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. Resultados de la simulacin. Resumir en 150 palabras lo aprendido de esta asignacin. Utilice las grficas generadas para complementar su trabajo. Redacte su informe de manera objetiva y sin ambigedades. 2.5.2 1 2 Actividades de aprendizaje Explique por qu es til simular un sistema o un circuito. Considera importante simular un circuito electrnico descrito con programacin? Cuando hacemos la simulacin de un circuito, es necesario especificar la magnitud del retardo entre las seales de entrada y las seales de salida? Justifique su repuesta. Qu sucede si cambia los tiempos de temporizacin? Cambiar #100 a #50 en el programa que Ud hizo en la prctica de laboratorio 2.

20

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 3. Estructura de mdulos


3.1 Objetivo
Comprender la estructura de mdulos en el lenguaje Verilog y la forma de conexin hacia otros mdulos mediante un ejemplo de lgica combinacional.

3.2

Introduccin

En el lenguaje Verilog un sistema digital est compuesto por la interconexin de un conjunto de mdulos. Estos son unidades lgicas donde se puede especificar la descripcin de un circuito digital, sea sencillo o complejo, de tal manera que puedan utilizarse para construir diseos de mayor complejidad, creando lo que se denomina un diseo con jerarqua. El mandato module del lenguaje Verilog se utiliza para la definicin de mdulos. En esta prctica aprenderemos la estructura bsica de un mdulo y la forma en cmo se conecta a otros mdulos. La estructura ms bsica de un mdulo es la siguiente:

module <nombre del modulo> ( <variables> ); //inicio <declaraciones de variables> <funcionalidad del mdulo> sndmodule //final del mdulo

La figura anterior muestra un mdulo (cajita en azul) que puede contener algn circuito digital en su interior, en la descripcin con Verilog (derecha) el nombre del mdulo es FA cuyas entradas son las variables a, b y cin y como salidas las variables cout y sum. Note que al final de module despus de declarar las variables de entradas y salidas cierra la sentencia con el signo ; (punto y coma). En el mandato endmodule se omite el punto y coma. Tome en cuenta estas recomendaciones de sintaxis para evitar errores.

3.3

Actividades previas
Tabla de verdad del mdulo ANDOR (Figura 1). A B C F 21

Universidad Nacional de Ingeniera | Jessica Leiva

3.4

Desarrollo de la prctica

3.4.1 Crear un nuevo proyecto ISE. En esta prctica vamos a crear un mdulo llamado ANDOR con 3 entradas (A, B y C) y 1 salida (F), despus usaremos dos veces este mismo mdulo en otro mdulo superior llamado LOGIC.

Importante!!!
Seguir las instrucciones del laboratorio 1 para crear un nuevo proyecto en ISE. 1.1 Cerrar cualquier proyecto que est abierto y crear un proyecto nuevo. Llamarlo LOGIC. El mdulo superior LOGIC debe tener 5 entradas ( J, K, L, M, N) y dos salidas (P, Q).

U1

U2

Figura 1. Diagrama de los mdulos ANDOR y LOGIC 1.2 El programa se describe a continuacin:

module LOGIC (J, K, L, M, N, P, Q); input J, K, L, M, N; output P, Q; ANDOR U1 (.A(J), .B(K), .C(L), .F(P)); ANDOR U2 (.A(P), .B(M), .C(N), .F(Q)); endmodule module ANDOR (A, B, C, F); input A, B, C; output F; assign F = ( A & B) | C;
Universidad Nacional de Ingeniera | Jessica Leiva 22

endmodule
1.3 Guardar los cambios y correr el programa. 3.4.2 Implementar el diseo en FPGA 3.5 Aadir un archivo .ucf al mdulo principal siguiendo los pasos del laboratorio 1. 3.6 En el editor de texto, escribir las siguientes asignaciones:

net net net net net net net

"J" "K" "L" "M" "N" "P" "Q"

loc loc loc loc loc loc loc

= = = = = = =

"G3" ; "B4" ; "K3" ; "L3" ; "P11"; "P6" ; "P7" ;

3.7 Correr el programa para comprobar si la sintaxis es correcta. 3.8 Comprobar el funcionamiento del circuito en la tarjeta de FPGA.

3.5

Actividades propuestas

3.5.1 Prctica Dado un sistema combinacional de 7 variables (d, e, f, g, h, i, j) donde: 1. d, e, f forman una compuerta EXNOR de tres entradas y su salida es g. 2. g, h forman una compuerta NAND de dos entradas y su salida es i. 3. g, h, i forman una cajita que puede contener una compuerta EXNOR de tres entradas y una salida j. Cuntos mdulos se podran implementar en este sistema? Realice la descripcin de este circuito en Verilog. El reporte debe incluir: Tabla de verdad de las variables. Descripcin de las ecuaciones con compuertas lgicas. Descripcin de las ecuaciones en Verilog. Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. Realizar la simulacin del ejercicio del laboratorio 3. 3.5.2 1 2 Actividades de aprendizaje Indague acerca del diseo con jerarqua en el lenguaje Verilog. Resuma en un prrafo. Cules son los tipos de datos en Verilog que puede contener un mdulo? Describa brevemente cada uno de ellos y su funcin en el programa.

23

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 4. Sumador de dos bits


4.1 Objetivo
Verificar el funcionamiento de un sumador completo de dos bits comparando diseos jerrquicos en el lenguaje Verilog.

4.2

Introduccin

Las computadoras digitales efectan diversas tareas de procesamiento, entre esas funciones estn las operaciones aritmticas. La operacin ms bsica es la suma de dos dgitos binarios y que consiste en cuatro posibles resultados: 0 0 1 1 + + + + 0 1 0 1 = = = = 0 1 1 10

Las primeras tres operaciones producen una suma de un dgito pero cuando ambos bits sumando son 1, la suma binaria consta de dos dgitos, donde el bit ms significativo se denomina acarreo. En esta prctica de laboratorio implementaremos un sumador binario completo de dos entradas y la salida con su respectivo acarreo. Adems veremos dos niveles diferentes para describir la operacin de este sumador. El primero es el nivel de compuertas donde se describe el circuito tal y como se encontr la solucin a travs de compuertas lgicas. El segundo es el nivel de flujo de datos empleando enunciados de asignacin continua donde se describe la funcin que hace el circuito, en este caso sumar dos bits.

4.3

Actividades previas

Disear un sumador binario completo de dos entradas (a y b) con su respectivo acarreo de entrada y acarreo de salida. Debe incluir la tabla de verdad, las ecuaciones lgicas derivadas de la tabla de verdad y el diagrama con compuertas lgicas.

Cin

4.4

Desarrollo de la prctica

1. Crear un nuevo proyecto en ISE llamado adder. 2. El programa de un sumador completo en Verilog es el siguiente:

module adder ( input a, b, cin, output cout, s );


Universidad Nacional de Ingeniera | Jessica Leiva

24

wire n1, xor and and and or

n2, n3; (s, a, b, cin); (n1, a, b); (n2, a, cin); (n3, b, cin); (cout, n1, n2, n3);

endmodule
3. Para la implementacin en la tarjeta use los siguientes pines

net net net net net

"A" "B" "Cin" "Cout" "S"

loc loc loc loc loc

= = = = =

"K3"; "L3"; "P11"; "M11"; "M5";

El programa anterior describe el circuito especificando las compuertas y como se conectan entre s. La palabra wire se utiliza para conexiones internas. Como en el programa hay variables auxiliares internas n1, n2, n3 (que no son entrada ni salida) tienen que declararse como un tipo de dato alambre. Existen otras formas de describir el comportamiento de un circuito, por ejemplo usando el modelado de flujo de datos que utiliza asignaciones continuas y la palabra assign. En el siguiente programa la lgica del circuito se describe con un solo enunciado que usa los operadores de suma y concatenacin. El smbolo (+) especifica la suma binaria de a, b y cin. La salida deseada es la concatenacin del acarreo de salida cout y la suma s. La concatenacin de operandos se expresa entre llaves, separando los operandos con comas. As, {Cout, S} representa el resultado total del sumador.

module adder ( input [3:0] A, B, Cin, output [2:0] Cout, S ); assign {Cout, S} = endmodule ( A + B + Cin );

4. Implementar este diseo con los mismos nets del paso 3. 5. Comprobar que funciona correctamente verificando si las salidas corresponden a los valores de la tabla de verdad.

25

Universidad Nacional de Ingeniera | Jessica Leiva

4.5

Actividades propuestas

4.5.1 Prctica Un Restador completo realiza la resta entre dos bits, considerando que se ha prestado un 1 de un estado menos significativo. Disee este circuito con las entradas A, B y C donde estas denotan el minuendo, el sustraendo y el bit prestado respectivamente. Las salidas D y P representan a la diferencia y el prstamo del restador. El reporte debe incuir: Tabla de verdad de las variables de entrada y salida. Descripcin de las ecuaciones con compuertas lgicas. Descripcin del circuito en Verilog. Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. Comprobacin del funcionamiento mediante simulacin en ISim. En una pgina adjunte sus resultados y conclusiones de este ejercicio. 4.5.2 Actividades de aprendizaje 1. Indague si existen otras formas de diseo jerrquico en Verilog. Disee el sumador completo con la forma que encuentre en su investigacin y compruebe su funcionamiento en ISE. 2. Podra realizarse un circuito sumador/restador en un mismo diseo con compuertas lgicas de tal forma que se pueda seleccionar que la operacin deseada sea suma o resta? Y en Verilog? Proponga una solucin a este reto con un algoritmo que satisfaga esta necesidad.

26

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 5. Decodificador de BCD a 7 segmentos


5.1 Objetivo
Comprender el funcionamiento de un decodificador de hexadecimal a 7 segmentos para que el estudiante utilice este mdulo en prcticas posteriores.

5.2

Introduccin

El display de 7 segmentos es un componente que se utiliza para la representacin de caracteres en muchos dispositivos electrnicos. El principal componente de este diseo ser un decodificador de hexadecimal a 7 segmentos que es un circuito combinacional utilizado para tomar una entrada hexadecimal de cuatro bits y proporcionar las salidas que pasaran corriente a travs de los segmentos apropiados para desplegar visualmente el digito decimal. La figura 1 muestra la arquitectura interna de un display de 7 segmentos Los dgitos de la tarjeta son de tipo LED. Cada segmento es un LED uno de cuyos terminales es comn para todos los segmentos: existen versiones de ctodo comn y de nodo comn. Para encender un segmento de un display ctodo en comn tienes que poner este segmento en 1. Pero si el display es del tipo nodo en comn, tienes que poner un 0 en cada segmento que Figura 1 quieres encender. Para iluminar un dgito concreto en esta tarjeta es necesario aplicar un 0 a la lnea de control pertinente.Tabla 1 Cdigo hex display abcdefg 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 b 1100 C 1101 d 1110 E 1111 F

27

Universidad Nacional de Ingeniera | Jessica Leiva

5.3

Actividades previas

Disear un decodificador de hexadecimal a 7 segmentos. Incluya la tabla de verdad con las ecuaciones lgicas y el diagrama con compuertas. Completar en la tabla 1 la seal de los segmentos abcdefg para activar el cdigo correspondiente a cada nmero hexadecimal.

5.4

Desarrollo de la prctica

1. Crear un nuevo proyecto en ISE. 2. Nombrar el mdulo como hex7seg. 3. El programa de un decodificador de hexadecimal a 7 segmentos en Verilog es el siguiente:

module hex7seg( input wire [3:0] x, output reg [6:0] a_to_g, output wire [3:0] an, output wire dp ); assign an = 4'b0111; assign dp = 1; always @(*) case(x) 0: a_to_g = 7'b000_0001; 1: a_to_g = 7'b100_1111; 2: a_to_g = 7'b001_0010; 3: a_to_g = 7'b000_0110; 4: a_to_g = 7'b100_1100; 5: a_to_g = 7'b010_0100; 6: a_to_g = 7'b010_0000; 7: a_to_g = 7'b000_1111; 8: a_to_g = 7'b000_0000; 9: a_to_g = 7'b000_0100; 'hA: a_to_g = 7'b000_1000; 'hb: a_to_g = 7'b110_0000; 'hC: a_to_g = 7'b011_0001; 'hd: a_to_g = 7'b100_0010; 'hE: a_to_g = 7'b011_0000; 'hF: a_to_g = 7'b011_1000; default : a_to_g = 7'b000_0001; endcase endmodule
28 El programa hex7seg muestra el uso de la sentencia case para disear el mismo decodificador 7 segmentos con compuertas lgicas ahora en el lenguaje Verilog. La sentencia case implementa directamente los valores de la tabla de verdad (tabla 1). Universidad Nacional de Ingeniera | Jessica Leiva

Por ejemplo la lnea 2:a_to_g = 7'b001_0010; asigna un valor binario de 7 bit, 1001100, a un arreglo binario de 7 bit, a_to_g, cuando la entrada hexadecimal x[3:0] es igual a 2 (0010, en binario). 4. Implemente el circuito en la tarjeta y verifique con la tabla 1 los nmeros que se muestran en el primer display de 7 segmentos.

net net net net net net net net

"x[3]" "x[2]" "x[1]" "x[0]" "an[3]" "an[2]" "an[1]" "an[0]"

loc loc loc loc loc loc loc loc

= = = = = = = =

"B4" ; "K3" ; "L3" ; "P11"; "K14"; "M13"; "J12"; "F12";

net "dp" loc = "N13"; net net net net net net net "a_to_g[0]" "a_to_g[1]" "a_to_g[2]" "a_to_g[3]" "a_to_g[4]" "a_to_g[5]" "a_to_g[6]" loc loc loc loc loc loc loc = = = = = = = "M12" "L13" "P12" "N11" "N14" "H12" "L14" ; ; ; ; ; ; ;

5.5

Actividades propuestas

5.5.1 Prctica En la prctica de laboratorio 5 se implement un diseo de un decodificador de BCD a 7 segmentos. Disee un circuito que muestre en el display la suma de dos nmeros de 2 bits cada uno. El reporte debe incluir: Tabla de verdad de las variables de entrada y salida. Descripcin de las ecuaciones con compuertas lgicas. Descripcin del circuito en Verilog. Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. Comprobacin del funcionamiento mediante simulacin en ISim. En una pgina adjunte sus resultados y conclusiones de este ejercicio. 29

Universidad Nacional de Ingeniera | Jessica Leiva

5.5.2 Actividades de aprendizaje 1. Por qu solamente podemos visualizar uno de los cuatro displays disponibles en la tarjeta? Explique brevemente. 2. Se podran modificar las letras de los dgitos hexadecimales, es decir qu tengo que hacer para visualizar las letras G, H, J, L, P, U? en el display. 3. Cul de los siguientes incisos describe mejor la funcin de un decodificador? a. Un decodificador convierte un nmero decimal al equivalente binario que le corresponda. b. Un decodificador convierte un nmero binario en una salida especfica que representa un digito o carcter particular. c. Los decodificadores se utilizan para evitar la operacin inadecuada de los sistemas digitales. d. Los decodificadores son CI especiales que se usan para hacer posible que una marca de computadoras establezcan una comunicacin entre s.

30

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 6. Multiplexores
6.1 Objetivo
Comprender el concepto de multiplexor mediante la implementacin de un diseo en Verilog.

6.2

Introduccin

Un multiplexor es un circuito lgico que acepta varias entradas de datos digitales y solo uno de ellos, el que hayamos seleccionado, es el que aparece en la salida. Es decir, que es un circuito que nos permite seleccionar que datos pasan a travs de dicho componente. Una aplicacin comn en computadoras es el multiplexor entre registros del microprocesador y su unidad aritmtico lgica. En el interior de los microprocesadores se pueden encontrar multiplexores de 8 bits, que tuene varias entradas de datos de 8 bits. Sin embargo, se puede trabajar con multiplexores que tengan 4 bits, 2 bits o hasta 1 bit por cada entrada.

Entradas

MUX

Salida

Seleccin Dentro de un multiplexor hay que destacar 3 tipos de seales: los datos de entrada, las entradas de seleccin y la salida. En esta prctica de laboratorio se pretende que se entienda el concepto bsico de un multiplexor descrito en Verilog.

6.3

Actividades previas

En una granja hay cuatro tuberas por las que circulan distintos fluidos. Dos transportan agua potable a diferentes partes de la casa y las siguientes dos se utilizan para regar los cultivos. Existe una llave de paso con cuatro posiciones y dos selectores para dar paso a la tubera 0, 1, 2 3. Disee un circuito combinacional lo ms simplificado posible de tal manera que seleccione una tubera a la vez.

31

6.4

Desarrollo de la prctica

1. Crear un nuevo proyecto en ISE. 2. Nombrar el mdulo como mux4. Universidad Nacional de Ingeniera | Jessica Leiva

3. El programa de un multiplexor de 4 entradas en Verilog es el siguiente:

module mux4( input a, b, c, d, input [1:0] sel, output reg out ); always @(*) case(sel) 0: out = 1: out = 2: out = 3: out = default: endcase endmodule

a; b; c; d; out = 1'bx;

Para expandir un multiplexor con programacin en Verilog utilizaremos la sentencia parameter que define el ancho del bus (constante) del multiplexor. En este caso hemos descrito que las entradas a y b tienen 3 bits cada uno y la salida out tambin es de 3 bits.

module muxN #(parameter (input wire input wire input wire output reg );

N = 3) [N-1:0] a, [N-1:0] b, sel, [N-1:0] out

always @(*) if(sel == 0) out = a; else out = b; endmodule


4. Realizar el archivo .ucf. 5. Implementar el diseo en la tarjeta Basys2.

32

Universidad Nacional de Ingeniera | Jessica Leiva

6.5

Actividades propuestas

6.5.1 Prctica En el reporte de laboratorio 4 se propuso el diseo de un circuito sumador/restador donde se seleccionara la operacin de suma o resta. Disee un circuito lgico que cumpla con las especificaciones: El diseo en Verilog debe ser modular, es decir construido en base a mdulos. Adems de las operaciones de suma y resta, el circuito debe contener las operaciones de multiplicacin y comparacin. Mostrar en los displays de 7 segmentos el resultado de la operacin seleccionada. El mnimo nmero de bits que pueden contener las entradas es 2. El reporte debe incluir: Tabla de verdad de las variables de entrada y salida. Descripcin de las ecuaciones con compuertas lgicas. Descripcin del circuito en Verilog. Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. La verificacin del circuito en el kit Basys2 se programar por equipo de trabajo. El instructor dar a conocer los horarios. 6.5.2 Actividades de aprendizaje Encierre en un crculo el tem que describa mejor el enunciado siguiente: 1. El multiplexado de seales digitales por lo general se requiere cuando a. Se mueven datos internos dentro de un microprocesador. b. Se mueven datos entre la memoria y los registros de almacenamiento. c. Se mueven datos a travs de lneas de transmisin de larga distancia. d. a y b 2. Las lneas de salida de un multiplexor estn bajo control de: a. La lnea de entrada de satos b. Las compuertas AND internas c. La compuerta OR interna d. Las lneas de seleccin de entrada de datos

33

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 7. Registros
7.1 7.2 Objetivo Introduccin
Comprender el funcionamiento del registro de desplazamiento universal.

Los registros son circuitos digitales secuenciales que consisten en un grupo de flipflops capaces de almacenar n bits de informacin binaria. Adems de los flip-flops, los registros pueden tener compuertas combinacionales para realizar ciertas tareas de procesamiento. Entre los registros de uso general estn los registros de desplazamiento que son capaces de desplazar informacin binaria en una direccin dentro del mismo registro o a la entrada o a la salida del mismo. La capacidad de almacenamiento de un registro es el nmero total de bits que puede contener. En esta prctica de laboratorio analizaremos un registro de desplazamiento universal llamado as porque permite desplazamiento bidireccional (derecha-izquierda y viceversa). El registro de desplazamiento ms general tiene estas caractersticas: Un control de despeje (clear) para reiniciar el registro. Una entrada de reloj (clock) para sincronizar las operaciones. Un control de desplazamiento a la derecha (shift-right) para habilitar la operacin de desplazamiento a la derecha, y las lneas de entrada y salida en serie asociadas al desplazamiento a la derecha. Un control de desplazamiento a la izquierda (shift-left) para habilitar la operacin de desplazamiento a la izquierda, y las lneas de entrada y salida en serie asociadas al desplazamiento a la izquierda. Un control de carga en paralelo (parallel-load) para habilitar la transferencia en paralelo y las n lneas de entrada asociadas a la transferencia en paralelo. n lneas de salida en paralelo. Un control de estado que deja la informacin del registro como est, en presencia del reloj.

7.3

Actividades previas

Disee un registro de desplazamiento bidireccional con carga paralela con flip-flops tipo D que contenga dos entradas de seleccin s1 y s0. Incluya la tabla de verdad, las ecuaciones lgicas y el diagrama de compuertas.

7.4

Desarrollo de la prctica

1. Crear un nuevo proyecto en ISE. 2. Nombrar el mdulo como shftreg. 3. El programa del registro universal en Verilog es el siguiente:

module shftreg( input s1, s0, input lftin, rgtin, input clk, clr, input [3:0] Pin,
Universidad Nacional de Ingeniera | Jessica Leiva

34

output reg [3:0] A ); always @(posedge clk or posedge clr) if (clr) A = 4'b0101; else case ({s1,s0}) 2'b00: A = A; 2'b01: A = {rgtin, A[3:1]}; 2'b10: A = {A[2:0], lftin}; 2'b11: A = Pin; endcase endmodule
En el programa anterior hay dos entradas de seleccin, dos entradas en serie, una entrada en paralelo de cuatro bits y una salida en paralelo de cuatro bits. El bloque always describe las cinco operaciones que es posible efectuar con el registro. La entrada clr pone a cero el registro asincrnicamente con una seal positiva. Las cuatro operaciones con reloj del registro se determinan a partir de los valores de las dos entradas de selccin del enunciado case ( se concatenan en un vector de dos bits despus de la palabra clave case). El desplazamiento se especifica con la concatenacin de la entrada en serie y tres flip-flops. Por ejemplo, el enunciado A = {rgtin, A[3:1]}; especifica una concatenacin de la entrada en serie para desplazamiento a la derecha (rgtin) y los flip-flops A3, A2 y A1 para formar un nmero de cuatro bits que se transfieren a A[3:1]. Esto produce una operacin de desplazamiento a la derecha. 4. Realizar el archivo .ucf. 5. Implementar el diseo en la tarjeta Basys2.

7.5

Actividades propuestas

7.5.1 Prctica Disee un registro de desplazamiento de cuatro bits con carga paralela. Hay dos entradas de control: desplazar y cargar. Cuando desplazar = 1, el contenido del registro se desplaza una posicin. Se transfieren nuevos datos al registro cuando cargar = 1 y desplazar = 0. Si ambas entradas de control son 0, el contenido del registro no cambia. 7.5.2 Actividades de aprendizaje 1. De los registros, qu diferencia hay entre transferencia en serie y en paralelo? Explique cmo convertir datos de serie a paralelo y datos de paralelo a serie. Qu tipo de registro se necesita? 2. El contenido de registros de cuatro bits es inicialmente 1101. El registro se desplaza seis veces a la derecha, siendo la entrada en serie 101101. Qu contiene el registro despus de cada desplazamiento?

35

Universidad Nacional de Ingeniera | Jessica Leiva

Laboratorio 8. Contadores
8.1 Objetivo
Desarrollar las habilidades necesarias para el diseo de contadores mediante lgica programable.

8.2

Introduccin

Contar es una operacin humana bsica, generalmente estamos contando dinero, los das, las horas, etc. Un circuito contador digital hace lo mismo, cuenta las veces que se repite determinado evento. Este laboratorio realizaremos un contador digital que cuenta las veces de una seal de reloj (clk). Un contador digital corresponde a una mquina secuencial que recibe pulsos de una seal llamada reloj, cuenta los flancos de bajada (o de subida) de la misma seal y entrega dicha cuenta, en binario, por las salidas. La seal clr se utiliza para poner a cero dicha cuenta. La cantidad mxima que se alcance a contar depender del nmero de bit de salida que se dispongan.

8.3

Actividades previas
Diagrama de estado Tablas de estado del sistema

Disear un contador de 3 bits, debe incluir:

8.4

Desarrollo de la prctica

1. Crear un Nuevo Proyecto en ISE. 2. Crear un mdulo en Verilog. 3. El programa del registro universal en Verilog es el siguiente:

module counter( input wire clk, input wire clk, output reg [2:0] q ); always @ (posedge clk or posedge clr) begin if (clr == 1) q <= 0; else q <= q + 1; end endmodule
36 4. Comprobar que la sintaxis es correcta. 5. Crear un archivo Verilog Text Fixture para realizar una prueba. 6. Comprobar que los estados coinciden con los de la tabla del trabajo previo. Universidad Nacional de Ingeniera | Jessica Leiva

7. Crear un archivo .ucf para describir los pines de entrada y salida en la tarjeta Basys 2. 8. Implementar el diseo en la FPGA. Es fcil cambiar los estados de un contador simplemente cambiando el arreglo de la variable q. Como alternativa, utilizamos un parmetro (en ingls parameter) para un contador de N-bit donde definimos los estados del contador.

module Contador #(parameter N=4) (input wire clr, input wire clk, output reg [N-1:0] q ); always @ (posedge clk or posedge clr) begin if (clr == 1) q <= 0; else q <= q + 1; end endmodule
Realice los cambios correspondientes en el proyecto que tiene en ISE e implemente las modificaciones del programa en la tarjeta.

8.5

Actividades propuestas

8.5.1 Prctica Disee un contador de M-bits que cuente en orden ascendente y descendente. El reporte debe incluir: Tabla de verdad de las variables de entrada y salida. Descripcin de las ecuaciones con compuertas lgicas. Descripcin del circuito en Verilog. 37

Universidad Nacional de Ingeniera | Jessica Leiva

Verificacin del programa en ISE. Utilice las capturas de pantalla (tecla: PRTSC) para explicar el procedimiento. Comprobacin del funcionamiento mediante simulacin en ISim. 8.5.2 Actividades de aprendizaje Encierre en un crculo el tem que describa mejor el enunciado siguiente: 1. Los contadores sncronos (paralelos) eliminan los problemas de retrasos que se presentan en los contadores asncronos (rizo) ya que: a. Se aplican pulsos de entrada de reloj slo a la primera y a la ltima etapa. b. Se aplican pulsos de entrada de reloj slo a la primera y a la ltima etapa. c. Se aplican pulsos de entrada de reloj slo a la ltima etapa. d. Se aplican pulsos de entrada de reloj simultneamente a cada etapa. e. Los pulsos de entrada de reloj no se emplean para activar ninguna de las etapas del contador. Cul de las siguientes afirmaciones es verdadera? a. Los eventos asncronos no ocurren al mismo tiempo. b. Los eventos asncronos estn controlados por un reloj. c. Los eventos sncronos no necesitan que los controle un reloj. d. Slo los eventos asncronos necesitan un reloj de control.

2.

38

Universidad Nacional de Ingeniera | Jessica Leiva

You might also like