Practica 18
Practica 18
Practica 18
OBJETIVOS
Realizar un circuito digital que sume, de forma secuencial, dos nmeros de 3 bits en binario natural. Al finalizar la prctica, el alumno ha de ser capaz de: Analizar y trocear proyectos grandes en partes ms pequeas (divide y vencers) Disear circuitos secuenciales complejos de varios niveles en la jerarqua. Reutilizar bloques de otras prcticas. Integrar distintos bloques en un mismo proyecto. Depurar errores en proyectos de cierta envergadura.
MATERIAL
Ordenador personal con Quartus II, Tarjeta de desarrollo de lgica programable DE1 de Altera.
DURACIN
2 sesiones.
INTRODUCCIN
En esta prctica, el alumno va a implementar un sumador secuencial completo de 3 bits. Su estructura es como la mostrada en la Figura 1. Consta de un bloque sumador, que es el que realiza la operacin de suma; y de un bloque de control, basado en una mquina secuencial, que es el que gestiona cmo se realiza la operacin. El funcionamiento del sistema (sumador secuencial) es el siguiente: Existe una entrada llamada Reset_n, activa a nivel bajo, que sirve para inicializar todos los bloques del sistema.
Por otra parte, los nmeros a operar son A[2..0] y B[2..0], y se validan al activar la seal Run_n (activa a nivel bajo), a modo de Enter. Al cabo de unos ciclos de reloj, el resultado de la operacin A+B se mostrar en la salida S[3..0] y se activar la seal Suma_Ok para indicar que el proceso ha finalizado. El proceso se puede repetir tantas veces como se quiera activando la seal Run_n para validar los nmeros A y B.
2 Prctica 18
La estructura del bloque sumador se muestra en la Figura 2. Como se puede observar est formado por: Registro P/S. Son dos registros de desplazamiento de 3 bits con entrada en paralelo y salida en serie. Se emplean para almacenar los nmeros A y B al comienzo del proceso. Sumador 1 bit. Es un sumador completo de 1 bit. Registro S/P. Es un registro de desplazamiento de 3 bits con entrada serie y salida en paralelo. Se emplea para almacenar el resultado de la suma. El bloque de control de la Figura 1 es una mquina de estados que gestiona todas las seales del bloque Sumador, es decir, indica cundo hay que cargar los nmeros A y B en los registros, cundo hay que operar cada pareja de bits y cundo se ha terminado de operar los nmeros. A continuacin, el desarrollo de la prctica se divide en dos sesiones.
3 Prctica 18
DESCRIPCIN
En esta primera sesin se va a disear, capturar y simular en Quartus II el bloque de control de un sumador secuencial de 3 bits. Las caractersticas del bloque (seales de entrada y salida), el funcionamiento del mismo y los pasos a realizar para su desarrollo se describen a continuacin.
FUNCIONAMIENTO
El funcionamiento del bloque de control se muestra en la Figura 3. El rayo de la figura indica que la duracin de la seal Run_n es indeterminada, pues viene de un pulsador de la placa.
Adems de las seales de salida que se indican, al alumno puede serle til en la depuracin aadir ms salidas para mostrar, por ejemplo, el estado actual de la mquina de estados.
4 Prctica 18
Tal y como se muestra en el diagrama de tiempos anterior, el proceso de suma no arranca hasta que la seal Run_n pasa de nivel bajo a nivel alto. Esto significa que la mquina de estados ya incorpora un detector de flanco entre sus estados. Para evitar problemas, la duracin de Carga_Desplaza y de Suma_Ok es de 1 ciclo de reloj, y la de Desplaza_Suma es de 3 ciclos de reloj.
DESARROLLO PRCTICO
DISEO Realizar los siguientes pasos de diseo: Dibujar el diagrama de transicin de estados de una mquina de estados tipo Moore, que se comporte segn el funcionamiento mostrado en la Figura 3, Escribir la tabla de transicin y de excitacin de los flip-flops tipo D, Calcular los diagramas de Karnaugh y obtener las ecuaciones lgicas de las entradas a los flip-flops y de las salidas del bloque, Dibujar los circuitos lgicos necesarios para implantar las ecuaciones lgicas anteriores. CAPTURA DEL ESQUEMA Crear un proyecto nuevo en D:\temp\practica18_I que se llame Control_Sumador y elegir el dispositivo EP2C20F484C7 de la familia Cyclone II como dispositivo de lgica programable. Capturar el circuito obtenido en el apartado de diseo y guardarlo con el nombre Control_Sumador.bdf. Para capturar la mquina de estados hay que emplear flip-flops tipo D (el componente se denomina dff) y las puertas lgicas del tipo que se quiera. SIMULACIN Compilar el proyecto y verificar su funcionamiento mediante simulacin. Cuando el funcionamiento sea correcto, segn lo mostrado en la Figura 3, mostrar el resultado al profesor.
5 Prctica 18
DESCRIPCIN
En esta segunda sesin se va a disear y capturar en Quartus II el bloque sumador de un sumador secuencial de 3 bits (ver Figura 1); se va a integrar con el bloque de control realizado en la primera sesin; y se va simular el funcionamiento del sumador secuencial completo. Las caractersticas del bloque (seales de entrada y salida) y los pasos a realizar para su desarrollo se describen a continuacin.
DESARROLLO PRCTICO
DISEO Disear los siguientes bloques con las caractersticas que se indican.
6 Prctica 18
REGISTRO DE DESPLAZAMIENTO S/P DE 3 BITS Disear un registro de desplazamiento de 3 bits con carga serie y salida en paralelo. El desplazamiento debe ser hacia la derecha, es decir, el bit que entra en el registro es el MSB. Emplear flip-flops tipo D con enable. El bloque tiene cuatro entradas: - Reset_n, activa a nivel bajo, que inicializa a 0 el contenido del registro. - Reloj, de 50 MHz, que es el reloj de funcionamiento del sistema. - Entrada_Serie, por donde entra el bit al registro. - Desplaza, para desplazar a la derecha el contenido del registro. El bloque tiene tres salidas: - S[2..0] que es el contenido del registro. En la Figura 4 se muestra el bloque en Quartus II.
REGISTRO DE DESPLAZAMIENTO P/S DE 3 BITS Disear un registro de desplazamiento de 3 bits con carga en paralelo y salida serie. El desplazamiento debe ser hacia la derecha, es decir, el bit a la salida del registro es el LSB. Al desplazar, el relleno del registro ser con 0. Emplear flip-flops tipo D (sin enable). El bloque tiene siete entradas: - Reset_n, activa a nivel bajo, que inicializa a 0 el contenido del registro. - Reloj, de 50 MHz, que es el reloj de funcionamiento del sistema. - Entrada_Paralelo[2..0] que es el contenido que se carga en el registro. - Carga_Desplaza, a nivel alto, para cargar el contenido Entrada_Paralelo[2..0] en el registro y, a nivel bajo, para desplazar a la derecha el contenido del registro. - Entrada_Serie, que es por donde entra el valor con el que se rellena el registro cuando se desplaza.
7 Prctica 18
El bloque tiene una salida: - S que es el LSB del contenido del registro. En la Figura 5 se muestra el bloque en Quartus II. ESQUEMA Crear un proyecto nuevo en D:\temp\practica18_II que se llame Sumador_Secuencial y elejir el dispositivo EP2C20F484C7 de la familia Cyclone II. Capturar 2 el circuito diseado en el apartado anterior para el registro de desplazamiento serie/paralelo de 3 bits y guardarlo con el nombre Registro_S_P_3bits.bdf. No olvidarse de aadirlo al proyecto en el momento de guardarlo. Capturar el circuito diseado en el apartado anterior para el registro de desplazamiento paralelo/serie de 3 bits y guardarlo con el nombre Registro_P_S_3bits.bdf. No olvidarse de aadirlo al proyecto en el momento de guardarlo. Abrir con Quartus II el bloque Sum1bit.bdf realizado en la prctica 5. Guardarlo con el mismo nombre en la carpeta de trabajo de esta sesin, aadindolo al proyecto en curso. A continuacin, generar su smbolo. Capturar el esquema mostrado en la Figura 6 y guardarlo con el nombre Sumador.bdf. No olvidarse de aadirlo al proyecto en el momento de guardarlo. El bloque Mux_2a1_1bit debe capturarlo el alumno, sabiendo que corresponde a un multiplexor 2 a 1 de 1 bit (ver prctica 2). Abrir con Quartus II el bloque Control_Sumador.bdf realizado en la primera sesin de la prctica 18. Guardarlo con el mismo nombre en la carpeta de trabajo de esta sesin, aadindolo al proyecto en curso. A continuacin, generar su smbolo. Realizar el paso anterior con el resto de archivos *.bdf capturados en la primera sesin de la prctica 18 (si los hay). 3 Capturar el esquema mostrado en la Figura 7 y guardarlo con el nombre Sumador_Secuencial.bdf. No olvidarse de aadirlo al proyecto en el momento de guardarlo.
Una forma rpida de realizar este paso es copiar los archivos *.bdf y *.bsf generados en la primera sesin de esta prctica y copiarlos a la carpeta de trabajo de esta sesin. Despus, ir al men Project, elegir la opcin Add/Remove Files in Project y, en la ventana que aparece, pulsar en el botn Add All.
8 Prctica 18
SIMULACIN Compilar el proyecto y verificar su funcionamiento mediante simulacin. El alumno debe tener en cuenta que en una simulacin se deben probar todas las combinaciones posibles de sumas que puede realizar el sumador secuencial diseado. Cuando el funcionamiento sea correcto, mostrar el resultado al profesor y pasar al siguiente apartado. CONFIGURACIN Antes de volcar a la placa el circuito simulado hay que abrir con Quartus II el bloque Bina7seg.bdf realizado en las prcticas 3 y 4; guardarlo con el mismo nombre en la carpeta de trabajo de esta sesin, aadindolo al proyecto en curso; y generar su smbolo. Modificar el esquema Sumador_Secuencial.bdf de la Figura 7 para que el resultado de la operacin A+B se represente en los displays de 7 segmentos de la placa en base hexadecimal. Asignar las patillas de la FPGA indicados en la Tabla 1 a las entradas y salidas del sistema (Sumador_Secuencial.bdf). Consultar para ello el manual de usuario de la tarjeta de lgica programable (Altera DE1 Board) en la pgina web del laboratorio.
9 Prctica 18
Tabla 1. Asignacin de patillas de la FPGA a las seales del circuito. Patilla Seal Tipo Componente Seal FPGA Reloj Entrada CLOCK_50 A2 Reset_n Entrada KEY[0] A1 Run Entrada KEY[3] A0 Suma_Ok Salida LEDR[0] B2 Dig0_a Salida HEX0[0] B1 Dig0_b Salida HEX0[1] B0 Dig0_c Salida HEX0[2] S3 Dig0_d Salida HEX0[3] S2 Dig0_e Salida HEX0[4] S1 Dig0_f Salida HEX0[5] S0 Dig0_g Salida HEX0[6]
Tipo Entrada Entrada Entrada Entrada Entrada Entrada Salida Salida Salida Salida
Patilla FPGA
Componente SW9 SW8 SW7 SW2 SW1 SW0 LEDG[3] LEDG[2] LEDG[1] LEDG[0]
Compilar el proyecto y depurar los errores que aparezcan. Configurar la FPGA y comprobar el funcionamiento en la tarjeta del laboratorio realizando diferentes operaciones. Si el funcionamiento es correcto, ensear el resultado al profesor. PREGUNTA: Explicar brevemente cmo se gestiona el acarreo de la suma parcial, en el sumador secuencial.
APARTADOS OPCIONALES
REGISTRO DE DESPLAZAMIENTO GENRICO Disear un registro de desplazamiento de 3 bits que se pueda cargar de forma serie o en paralelo, y que la salida sea de forma serie y en paralelo. El desplazamiento debe ser hacia la derecha y debe permitir detener el desplazamiento, dejando esttico el contenido del registro. Emplear flip-flops tipo D (sin enable). El bloque tiene ocho entradas: Reset_n, activa a nivel bajo, que inicializa a 0 el contenido del registro. Reloj, de 50 MHz, que es el reloj de funcionamiento del sistema. Entrada_Serie, por donde entra el bit al registro de forma serie. Entrada_Paralelo[2..0] que es el contenido que se carga de forma paralela en el registro. Carga, para cargar el contenido Entrada_Paralelo[2..0] en el registro. Desplaza, para desplazar a la derecha el contenido del registro.
10 Prctica 18
En la Tabla 2 se resume el funcionamiento del registro. Sustituir los tres registros de desplazamiento empleados en el esquema Sumador.bdf por el registro diseado en este apartado. Modificar la mquina de estados del bloque de control para que el sumador secuencial funcione correctamente con los nuevos registros. Compilar y simular el circuito resultante y verificar el correcto funcionamiento.
Tabla 2. Resumen de funcionamiento del registro de desplazamiento genrico. Carga Desplaza Accin 0 0 Retiene el contenido del registro 0 1 Desplaza a la derecha el contenido del registro 1 0 Carga el registro con el valor que hay en Entrada_Paralelo[2..0] 1 1 No permitido
RESTADOR Sobre el sumador secuencial original o sobre el realizado en el primer apartado opcional, modificar el bloque de control y el bloque sumador para que el sistema realice la operacin A-B. Como la salida S[3..0] estar representada en Complemento a 2, hay que sustituir el bloque Bina7seg.bdf por el bloque C2a7Seg.bdf que el alumno puede encontrar en http://www.iit.upcomillas.es/carlosrg/Docencia/LED/LED.html. Asigne los pines indicados en la Tabla 3 a las seales del segundo display.
Tabla 3. Asignacin de patillas de la FPGA a las seales del circuito Patilla Seal Tipo Componente Seal Tipo FPGA Dig1_a Salida HEX1[0] Dig1_e Salida Dig1_b Salida HEX1[1] Dig1_f Salida Dig1_c Salida HEX1[2] Dig1_g Salida Dig1_d Salida HEX1[3]
Patilla FPGA
SUMADOR / RESTADOR Sobre el sumador secuencial original o sobre el realizado en el primer apartado opcional, modificar el bloque de control y el bloque sumador para que el sistema realice la operacin A+B cuando la entrada al sistema Suma_Resta valga 0, o la operacin A-B cuando dicha seal valga 1. Para la representacin del resultado en los displays de 7 segmentos, debe utilizarse el bloque Bina7seg.bdf cuando sume, y el bloque C2a7Seg.bdf cuando reste. Capturar los bloques necesarios para ello. Asignar el componente SW4 de la placa, a la seal Suma_Resta.