You are on page 1of 6

Prcticas de Laboratorio

Uso de Bloques mediante CoreGenerator

Uso de bloques mediante CoreGenerator


Introduccin
En esta Prctica se utilizar la herramienta CoreGenerator para agregar un bloque predefinido (un Core) en el sistema.

Objetivos
Al finalizar la prctica Ud. ser capaz de: Crear un Core utilizando la herramienta CoreGenerator. Agregar un Core a un sistema Realizar una simulacin de comportamiento sobre un sistema que contenga un Core. Probar la funcionalidad del sistema con el Core agregado en hardware.

Procedimiento
Las prcticas se dividen en etapas, con una introduccin general seguida de instrucciones detalladas. Se deben seguir las instrucciones en forma secuencial a fin de completar la prctica. Esta prctica se realiza en 4 Etapas: Crear un Core con la herramienta CoreGenerator Agregar al Sistema un Core Block RAM. Realizar una simulacin de comportamiento sobre el Sistema. Probar el Sistema en hardware.

Desarrollo de la Prctica:
Paso 1: Crear un Core con la herramienta CoreGenerator
Paso 2:

Agregar al Sistema un Core Block RAM

Paso 3: Realizar una simulacin de comportamiento sobre el Sistema

Paso 4:

Probar el Sistema en hardware

5-1

Uso de Bloques mediante CoreGenerator

Prcticas de Laboratorio

Crear un Core con la herramienta Core Generator


1-1.

Paso 1

Utilizando el programa de la Prctica anterior, se completar la tercer tarea, que devuelve por pantalla las teclas presionadas mediante la aplicacin Hyper Terminal. Se ensamblara el programa para generar el archivo .coe y se crear una ROM denominada program utilizando la herramienta CoreGenerator; la ROM se inicializar con el programa que est en el archivo .coe. La plantilla ROM_form.coe esta en el directorio .\Assembler. En esta plantilla son necesarios dos parmetros: memory_initialization_radix y memory_initialization_vector. Hay mas informacin en la hoja de datos del core Block Memory Generator en la herramienta CoreGenerator.
Xilinx Design Tools ISE

1-1-1. Iniciar el entorno ISE: Seleccionar Inicio Todos los Programas Design Suite 14.4 ISE Design Tools Project Navigator. 1-1-2. Seleccionar File Open Project.

c:\Cursos\IntroAFpga\Practica 5\coregen.xise

1-1-3. Abrir el archivo program.psm y completar la tarea task #3 escribiendo el cdigo que devuelve al Hyper Terminal lo que se tipea en el teclado. Ayuda: Se coloca una instruccion en cada linea de comentario realizando lo que el comentario dice. 1-1-4. Abrir una ventana de linea de comandos, navegar al directorio donde esta el programa y ensamblar el programa mediante el comando: > kcpsm3 program Nota: El ensamblador generar varios archivos, incluyendo uno con extensin .COE, que se utilizar para inicializar una memoria creada con la herramienta CoreGenerator. 1-1-5. Comentar las lineas de la seal lock del DCM en la declaracin del componente y en el instanciado del DCM

1-1-6. Presionar el botn Create New Source para abrir el asistente New Source Wizard, seleccionar IP(CORE Generator & Architecture Wizard) y escribir program en el campo Name (Figura 1). Presionar Next. Presionar YES en la ventana de advertencia

Figura 1. New Source Dialog Box 5-2

Prcticas de Laboratorio

Uso de Bloques mediante CoreGenerator

1-1-7. En el dialogo Select IP, expandir Memories & Storage Elements, expandir RAMs & ROMs, y seleccionar Block Memory Generator (Figura 2). Presionar Next y despues Finish.

Figura 2. Dialogo Select Core Type 1-1-8. Configurar el Core single-port block memory. Presionar Next en Page 1. Especificar el tipo de memoria (Memory type) como Single Port Rom en Page 2 y presionar Next.

1-1-9. Especificar los parmetros del Port A en Page 3 y presionar Next. Read Width: 18 Read Depth: 1024 Enable: Always Enabled

1-1-10. En Page 4, presionar Load Init File, navegar a c:\Cursos\IntroAFpga\Practica05\assembler y seleccionar el archivo PROGRAM.COE. 1-1-11. Presionar el botn Show para ver el contenido que ser cargado dentro de la memoria luego de configurar la FPGA.

Figura 3. Valores de Inicializacin de la Block RAM. 1-1-12. Presionar Next dos veces, y luego Generate. Nota: el archivo program.xco se agregar al proyeto en forma automtica.

5-3

Uso de Bloques mediante CoreGenerator

Prcticas de Laboratorio

Agregar al Sistema un Core Block RAM


2-1. Agregar el Core generado en el Paso 1 al Sistema.

Paso 2

2-1-1. En la ventana Hierarchy, dar doble-click en el archivo loopback.vhd. El archivo loopback.vhd se abrir en la ventana de editor de textos. 2-1-2. En la ventana de Proyecto, en la parte Hierarchy, seleccionar program y dar doble-click en View HDL Instantiation Template.

Figura 4. Proceso View HDL Instantiation Template 2-1-3. La plantilla de instanciado del Core se mostrar en el rea de trabajo (Figura 5).

Figura 5. Plantilla de Instanciado 5-4

Prcticas de Laboratorio

Uso de Bloques mediante CoreGenerator

2-1-4. Copiar y pegar la plantilla en el archivo loopback.vhd: Pegar la parte Component Declaration en el encabezado despues del comentario ---- Insert component declaration for program here. Pegar la parte Instantiation Template en el cuerpo de la arquitectura despues del comentario -- insert component instantiation for program ROM here. 2-1-5. Editar el instanciado del Core de la siguiente manera: my_program : program port map ( clka => clk55MHz, addra => address, douta => instruction ); 2-1-6. Seleccionar File Save.

Realizar una simulacin de comportamiento sobre el Sistema


3-1.

Paso 3

Simular el sistema utilizando el archivo de pruebas correspondiente.


El archivo de pruebas simula la accin de los interruptores, espera algunos ciclos de reloj y verifica los LEDs para ver si coinciden con el estado de los interruptores. Las seales RS232 tx y rx no se utilizan en las pruebas

3-1-1. En la ventana de Proyecto, seccin Sources, seleccionar program.xco. 3-1-2. En la ventana Processes for Source, expandir la herramienta CORE Generator y dar dobleclick en View HDL Functional Model. Este archivo hace referencia a los modelos de la librera XilinxCoreLib Simulation Library y se utiliza cuando se realizan simulaciones de comportamiento de Sistemas que contengan Bloques (Cores) generados con la herramienta CoreGenerator.

3-2.

Utilizando el archivo testbench.vhd, ejecutar una simulacin de comportamiento de 4000 ns de duracin. Ver las formas de onda y verificar que el Core esta conectado correctamente al sistema.

3-2-1. Agregar el archivo testbench.vhd. Pasar al modo Simulation 3-2-2. Dar con el botn derecho en Simulate Behavioral Model dentro del proceso ISim Simulator para acceder a Process Properties. Ingresar un tiempo de simulacin (Simulation Run Time) de 4000 ns en las propiedades del modelo de comportamiento (behavioral model properties). 3-2-3. Ejecutar la simulacin de comportamiento dando doble-clicking en Simulate Behavioral Model.

5-5

Uso de Bloques mediante CoreGenerator

Prcticas de Laboratorio

3-2-4. Examinar las formas de onda y verificar que el estado de los interruptores es reflejado en los LEDs. 3-2-5. Cerrar la ventana de simulacin y volver al modo Implementation.

Probar el Sistema en Hardware


4-1.

Paso 4

Abrir una sesin en Hyper Terminal. Generar el archivo de configuracin y programar la FPGA. Probar la aplicacin.

4-1-1. Iniciar una sesin en Hyper Terminal y configurarla con los siguientes parmetros: COM Properties Baud rate: 9600 Stop bits: 1 Parity: none Flow control: none

Settings - ASCII Setup Append line feeds to incoming line ends: checked

4-1-2. Seleccionar loopback.vhd, dar doble-click en Manage Configuration Project (iMPACT) dentro del proceso Configure Target Device para generar el archivo de configuracin de la FPGA e invocar la herramienta iMPACT. 4-1-3. Cuando se inicie la herramienta iMPACT, dar doble-click en Boundary Scan ).

( ) en la ventana iMPACT Flows. Presionar el botn Initialize Chain ( Presionar YES y navegar al directorio del proyecto.

4-1-4. Seleccionar el archivo loopback.bit para el dispositivo xc3s500e. Presionar No, ya que no se van a agregar archivos PROM, y presionar bypass para los otros dispositivos. 4-1-5. Presionar con el botn derecho en el dispositivo Spartan-3ey seleccionar program. Presionar OK. Se debera ver el mensaje Sistema Xilinx en la pantalla de la aplicacin Hyper Terminal. Asimismo todo lo que se tipee en el teclado debera mostrarse en pantalla. Tambien los LEDs deberan reflejar el estado de los interruptores cuando estos cambian.

Conclusin
Se puede utilizar la herramienta CoreGenerator para generar y configurar Bloques (Cores). Se puede acceder a las plantillas de instanciado del Core. La libreria XilinxCore Lib provee modelos para simulacin funcional de los Cores generados con la herramienta CoreGenerator.

5-6

You might also like