guÍa nº05y6

16
GUÍA Nº05 MEMORIAS ROM USANDO QUARTUS II EMPLEO DE MEGAFUNCIONES OBJETIVO Simular el uso de memorias ROM mediante Quartus II Uso de megafunciones en Quartus II MATERIAL Memoria EPROM 8 Resistencias de 220 Ohms para los leds de salida del circuito. 1 Registro PIPO con flip flops D para sincronizar la memoria EPROM. Programador Manual de la memoria EPROM para programarla en físico. EQUIPO Equipo de cómputo con Quartus II PROCEDIMIENTO 1. Abrir el programa Quartus II

Upload: amador-vivar-recarte

Post on 21-Jan-2016

122 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GUÍA Nº05Y6

GUÍA Nº05

MEMORIAS ROM USANDO QUARTUS IIEMPLEO DE MEGAFUNCIONES

OBJETIVO

Simular el uso de memorias ROM mediante Quartus II Uso de megafunciones en Quartus II

MATERIAL

Memoria EPROM 8 Resistencias de 220 Ohms para los leds de salida del circuito. 1 Registro PIPO con flip flops D para sincronizar la memoria EPROM. Programador Manual de la memoria EPROM para programarla en físico.

EQUIPO

Equipo de cómputo con Quartus II

PROCEDIMIENTO

1. Abrir el programa Quartus II

2. Abrir un proyecto de diagrama esquemático

Page 2: GUÍA Nº05Y6

3. Abrir una megafunciòn lpm_rom

Page 3: GUÍA Nº05Y6

4. Oprimir OK y saldrá la siguiente pantalla. Se elige el tipo de archivo de salida que se creará. Elegir por lo conocido: VHDL

5. Configurar los puertos y parámetros de la memoria

Page 4: GUÍA Nº05Y6

6. Configurar el clock, registros

7. Inicializar la memoria mediante un archivo “.hex” o “.mif”. Éstos archivos contienen la información a programar en la memoria. Los archivos “.hex” pueden ser generados por un software llamado WinHex. Una vez generado el archivo “.hex” apretar BROWSE para buscarlo dentro de su ordenador. Al hacer click el nombre del archivo quedarà registrado en el Quartus II para la simulación de la ROM creada. Vale la pena remarcar que no se debe utilizar el mismo nombre que el del proyecto para nombrar al LPM_FILE pues afectaría la ejecución del programa. El archivo “.hex” como todos los anteriores se deberan guardar en el mismo subdirectorio en que esta nuestro proyecto pues a veces se presenta otro subdirectorio no deseado debido a que uno consultó una información en ese subdirectorio y éste permanecerá seleccionado hasta que se le cambie al de nuestro proyecto.

Page 5: GUÍA Nº05Y6

8. Apretar NEXT dos veces más y oprimir FINISH

9. Una vez creada la memoria, completar el esquemático con las entradas y salidas correspondientes.

10. Compilar el esquemático creado haciendo clic sobre la flecha morada hacia la derecha.

11. Luego la asignación de pines, recompilando el archivo *.bdf

Page 6: GUÍA Nº05Y6

12. Generar su archivo “*.vwf” para graficar el diagrama de tiempo.

13. Ejecutar el diagrama de tiempo para un esquemático del sumador Mealy y Moore de la guía anterior.

14. Para simular el físico del esquemático debes cargar en el PROTEUS ISIS el archivo *.hex después de convertirlo a *.bin

ACTIVIDADES COMPLEMENTARIAS

1. Implementar un sistema digital que funcione como una calculadora con las 4 operaciones fundamentales (suma, resta, multiplicación y división). Utilice memorias y simulación en Quartus II. (Éste circuito es conocido como una Unidad Aritmético Lógica – ALU, la cual es el corazón de un microprocesador).

2. Simule en Proteus ISIS el circuito de la pregunta 1.

Page 7: GUÍA Nº05Y6

GUÍA Nº06

GENERADOR RAM USANDO QUARTUS IIEMPLEO DE MEGAFUNCIONES

CIRCUITOS AVANZADOS CON WINCUPL

OBJETIVO

Simular el uso de memorias RAM mediante Quartus II Uso de megafunciones en Quartus II Realización de diseños secuenciales y máquinas de estado (ASM) con

WinCUPL

MATERIAL

8 Resistencias de 220 Ohms para los leds de salida del circuito. 1 Registro PIPO con flip flops D para sincronizar la memoria EPROM. Programador Manual de la memoria EPROM para programarla en físico.

EQUIPO

Equipo de cómputo con Quartus II

PROCEDIMIENTOExperiencia 1

1. Implementar un generador de secuencia con memoria RAM, con la data que proporciona un contador ROM. La salida del generador RAM debe ser bloqueada durante un tiempo configurable, sin alterar la cuenta del contador ROM.

2. Haga los archivos “.hex” correspondientes en el HxD Editor

3. Simule este proceso en Proteus Isis.Experiencia 2

1. Diseño y síntesis de una memoria RAM utilizando una descripción VHDL y síntesis sobre un dispositivo FPGA utilizando su lógica interna estándar.

Page 8: GUÍA Nº05Y6

Se pretende implementar sobre un dispositivo FPGA la memoria RAM estática representada en la figura. Se trata de una memoria con A líneas de direcciones y D líneas para entrada y salida de datos. La escritura de un dato en una posición de memoria es síncrona, controlada por el flanco positivo del reloj de escritura WCLK; la lectura de datos es asíncrona. Dispone de una entrada de habilitación /CE de modo que cuando se encuentra inactiva las salidas de datos permanecen en alta impedancia (HZ). La señal R/W habilita la lectura cuando se encuentra a nivel H o la escritura en la memoria cuando toma nivel L.

Una posible descripción del bloque de memoria se muestra

library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity SRAM isgeneric ( A : integer := 8; D : integer := 8 );port ( Address : in std_logic_vector (A-1 downto 0); Data : inout std_logic_vector (D-1 downto 0); CLK : in std_logic; CE : in std_logic; RW : in std_logic );end SRAM;

architecture beh of SRAM is type tipo_RAM is array(2**A-1 downto 0) of std_logic_vector (D-1 downto 0); signal ram_stat : tipo_RAM; attribute ram_init_file : string; attribute ram_init_file of ram_stat : signal is “SRAM.hex”;begin process (CE, RW) begin if (CE = ‘0’ and RW = ‘1’) then Data <= ram_stat (to_integer(unsigned(Address))); else Data <= (others => ‘Z’); end if; end process; process (CLK) begin if (CLK’event and CLK = ‘1’) then if (CE = ‘0’ and RW = ‘0’) then ram_stat (to_integer(unsigned(Address))) <= Data; end if; end if; end process;end beh;

Page 9: GUÍA Nº05Y6

2. No se olvide de generar el archivo SRAM.hex para inicializar la memoria RAM en Quartus así como en Proteus ISIS.

3. Para editar un archivo “*.mif” se procede de la siguiente manera:

File -> New…: New √ Other Files -> Memory Initialization File. √ OK: Number of Words & Word Size: Number of Words: 256, Word Size: 8. √ OK. Mif1.mif: En la fila 0, columnas +0, +1, …, +7, rellenar cada casilla con el valor especificado para el dato; mantener los datos en las demás casillas como están (a “0”). Guardar el fichero con el nombre SRAM.mif.

4. Para la compilación y síntesis, seleccionar el chip FPGA Cyclone II EP2C35F672C6:

Assignments -> Settings: Settings SRAM: Category -> Device: Family √ Cyclone II: Target Device √ Specific Device selected in ‘Available devices’ list. Show in ‘Available devices’ list √ Fastest. Available devices: √ EP2C35F672C6

5. Para la compilación y síntesis, aunque en este caso no es necesario, seleccionar:

Assignments -> Settings: Settings - SRAM: Category -> Analysis & Synthesis Settings: Analysis & Synthesis Settings √ Auto RAM Replacement, √ More Settings…: More Analysis & Synthesis Settings: Existing option settings: Seleccionar Allow Any RAM Size For Recognition: Option: Setting: On. √ OK. √ OK.

6. Compilar el diseño. Comprobar que la memoria en este caso se ha implementado utilizando FFs. Comprobar que el número de FFs utilizados se corresponde con el número de bits de memoria requeridos. Comprobar que Quartus II© ha utilizado un bloque parametrizable de biblioteca para su implementación. Para comprobar cómo se ha implementado la memoria y los recursos del FPGA Cyclone II EP2C35F672C6 utilizados:

Compilation Report - Flow Summary: Total logic elements, Total registers, Total memory bits.

Para comprobar si se ha utilizado un bloque de biblioteca:

Tools -> Netlist_Viewers -> RTL Viewer: RTL Viewer.

7. Simular el bloque de memoria sintetizado. Construir un fichero de formas de onda SRAM.vwf. Las señales de control deben fijar inicialmente a la RAM en modo lectura de las primeras direcciones de la memoria; a continuación, pasando la memoria al modo de escritura, se deberá cargar en las ocho direcciones de memoria más bajas los valores 256, 255,…, 249; finalmente, deberá pasar a modo lectura y leer de nuevo en las

Page 10: GUÍA Nº05Y6

direcciones más bajas de la memoria. Al introducir en el fichero de formas de onda la señal Data (bidireccional) aparecerá representada por un terminal de entrada/salida (IO). Una vez realizada la simulación, aparecerán un conjunto de salidas adicionales (Data[0]~result, Data[1]~result, …,Data[7]~result), independientemente de que se haya seleccionado o no la opción:

Assignments -> Settings: Settings - SRAM: Category -> Simulator Settings: SimulatorSettings: √ Automatically add pins to simulation output waveforms. √ OK.

8. Modificar el fichero de formas de onda SRAM.vwf incluyendo estas señales agrupadas. Para incluir las señales en el fichero de formas de onda de entrada:

Seleccionar las señales en el fichero de salida de simulación. Copiarlas en el fichero de formas de onda de entrada. Reordenarlas y agruparlas como Data[7..0]~result. Fijar los valores de la señal a “X”.

9. Simular de nuevo el bloque de memoria comprobando que su comportamiento corresponde a lo esperado y comentar las respuestas obtenidas.

Experiencia 3

Realizar un contador de 4 bits, que incorpore una entrada de Reset síncrono y una entrada de Preset síncrono, con la cual poner al contador al valor 1010. Se seguirá el esquema de pines adjunto:

Pasos

1. Primero se realizará el diseño como máquina de estados, definiendo las transiciones de los 16 estados en función de las entradas.

2. Posteriormente, se definirá el circuito hallando sus ecuaciones. Para ello, resolver la máquina de estados del contador de 4 bits sin entradas, y luego incorporar los términos de RESET y PRESET en las ecuaciones resueltas.

3. Simular e implementar en físico el circuito con un PAL 22v10.

Page 11: GUÍA Nº05Y6

Experiencia 4

Se desea diseñar un sistema que produzca en un display de 7 segmentos el mensaje HOLA_tU, u otro similar de 7 caracteres representables en un display de 7 segmentos, seguidos por un espacioen blanco.

Pasos

1. generaremos un contador de 3 bits, que cuente de 0 a 7, y asignaremos como salidas del mismo las necesarias para activar el display de 7 segmentos, según la secuencia buscada.

2. El esquema de pines que se debe usar es el que se indica.

ACTIVIDADES COMPLEMENTARIAS

1. Diseño y síntesis de una memoria RAM utilizando una descripción VHDL y síntesis sobre un dispositivo FPGA utilizando bloques específicos de celdas de memoria RAM internos.

2. Se pretende implementar sobre un dispositivo FPGA la memoria RAM estática representada en la figura anterior. Se trata de una memoria del tipo:

True dual-port double-clock/single-clock synchronous RAM

Page 12: GUÍA Nº05Y6

Dispone de dos puertos de direcciones de w_a líneas, dos puertos de entrada de datos y dos puertos de salida de datos de w_d líneas. Dispone de dos entradas de reloj para lectura y escritura síncronas y dos entradas para habilitación de escritura. Cada señal de reloj tiene asociados, un puerto de direcciones, un puerto de datos de entrada y uno de salida, así como una señal de habilitación de escritura. Puede operar con un solo reloj para control de la lectura/escritura en/desde ambos puertos. El diagrama de tiempo debe ser como el de la siguiente gráfica.

3. Simule el circuito en Proteus ISIS.

4. Implementar el circuito en físico.