Sie sind auf Seite 1von 13

Juan Carlos Moctezuma Eugenio Ciencias Computacionales INAOE

Lab 7: Uso de coprocesadores y mdulos Core Generator

Targeting: EDK-Microblaze 13.2 & Spartan-3A Board

Design Labs based on:

Juan Carlos Moctezuma Eugenio

Lab 7: Coprocesadores y mdulos Core Generator


Introduccin
Este laboratorio guia al asistente a travs de las herramientas EDK, XPS y BSB para realizar un sistema empotrado para FPGAs

Objetivos
Despus de completer este laboratorio, el asistente sera capaz de: Realizar un diseo base con la herramienta BSB Configurar la parte hardware y software del sistema empotrado Agregar un FSL para usarlo como co-procesador Instanciar un mdulo hecho en Core Generator en un sistema Microblaze Aprender a crear aplicaciones para manejo de los co-procesadores

Descripcin del diseo


Realizar un sistema base en BSB, despus agregar un co-procesador (interfaz FSL) el cual trabaje con una unidad de punto flotante (FPU) hecha con la herramienta Core Generator, adems crear una mquina de estados para poder leer/escribir datos a la FPU. Por otro lado se crear una aplicacin software en donde el usuario pueda hacer uso del co-procesador, especficamente de las funciones put() y get(). lab7code.c
LMB BRAM Cnttlr

BRAM
LMB BRAM Cnttlr

manejo de coprocesadores

Microblaze FSL FPU (Core Generator)

UART Buttons GPIO

Stdin/Stdout

Figura A. Diagrama conceptual para el sistema base y modificaciones a realizar

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-1

Juan Carlos Moctezuma Eugenio

Procedimiento
En esta seccin el alumno encontrar todos los pasos necesarios para realizar el laboratorio. El procedimiento incluye los siguientes pasos principales principales: 1. 2. 3. 4. Crear un sistema base usando BSB Agregar un co-procesador procesador e instanciar un mdulo Core Generator Realizar la aplicacin software Implementar el sistema en una tarjeta FPGA

Cada paso principal del procedimiento es indicado por el cono . Cada paso a su vez tiene instrucciones especficas para alcanzar el objetivo final final. Cuando se pida alguna informacin al asistente o que re responda ciertas preguntas aparecer el cono ?

Paso 1. Crear un diseo base usando BSB


Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar realiza un sistema base usando BSB.
Abrir la herramienta XPS seleccionando Menu Inicio Programas Xilinx ISE Design Suite 13.2 EDK Xilinx Platform Studio A continuacin aparece una ventana indicando la forma de iniciar un nuevo proyecto. Seleccionar Base System Builder wizard. Click <OK>. En caso de que no aparezca esta ventana ir al men File New Project En la siguiente ventana, dar el nombre system.xmp al proyecto. Crear una nueva carpeta llamada Lab7 y que se encuentre en el directorio de trabajo Lab_user,tal y como se muestra en la figura 1-1. La ruta seleccionada NO debe tener espacios. Activar la casilla PLB System, el cual es el tipo de bus que se usar para estos laboratorios, Click <OK>

Figura 1-1. Crear un nuevo proyecto

Lab 7: Coprocesadores oprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-2

Juan Carlos Moctezuma Eugenio Posteriormente seleccionar I would create a new design, click <NEXT>. Despus seleccionar la tarjeta Spartan 3A Starter Kit como se muestra en la figura 1-2, click <NEXT>

Figura 1-2. Seleccionar el tipo de tarjeta FPGA que ser usada En estos momentos comienza la configuracin de la plataforma hardware del sistema. Seguir el siguiente procedimiento: Seleccionar Single Processor System, click <NEXT> Reference clock frequency: 50 MHz Processor : Microblaze System clock frequency: 62.5 MHz Local Memory: 16 KB Debug Interface: On Chip HW Debug Module, click <NEXT>

El siguiente paso es seleccionar los components hardware del sistema (cores/perifricos), seleccionar los perifricos de tal forma que en la columna Processor 1 (Microblaze) Peripherals queden nicamente los siguientes elementos: (Apoyarse de los botones ADD y REMOVE) BTNs_4bit: RS232_DCE: dlmb_ctrl: ilmb_ctrl: Seleccionar (dejar valores por default) Seleccionar (dejar valores por default) Seleccionar (dejar valores por default) Seleccionar (dejar valores por default), click <NEXT>

Finalmente se abre la ventana donde se configura la memoria cache. En este caso NO se utiliza memoria cache, as que permanecen deseleccionadas las dos opciones. Click <NEXT>, click <FINISH> El sistema base ha sido construido usando el BSB, al final en el XPS se deber visualizar un sistema como el de la figura 1-3.

Figura 1-3. Sistema empotrado FPGA creado con BSB

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-3

Juan Carlos Moctezuma Eugenio

Paso 2. Agregar un co-procesador e instanciar un mdulo Core Generator


El paso siguiente es crear e importar un core personalizado (hecho por el usuario) al sistema. Xilinx ofrece herramientas software para que el usuario pueda crear sus propios perifricos de una forma sencilla.
Antes de comenzar el uso de co-procesadores. Primero se crea la unidad de punto flotante (FPU) usando la herramienta Core Generator. Ir al Men Inicio Programas Xilinx ISE Design Suite 13.2 ISE Design Tools Tools Core Generator. Seguir los siguientes pasos Men File New Project. Crear un nuevo proyecto en el directorio IPNEDK/Lab_user/lab7_cg con el nombre por defecto coregen.cgp En la siguiente ventana se configura el dispositivo. Seleccionar Spartan 3A xc3s700a fg484 -4, click <OK> En la ventana IP Catalog, Ir a Math Functions Floating Point, dar doble click en el mdulo Floating Point 5.0, con esto abrir un wizard de configuracin de parmetros para dicho core. Configurar los siguientes parmetros del wizard: o Component Name: my_fpumult o Function: Multiply, click <NEXT> o Floating-point precision: Single, click <NEXT> o Seleccionar: Full usage 4 x MULT18x18 o Use Maximum Latency: Deseleccionar o Latency: 1, click <NEXT> o Seleccionar: OPERATION_ND, OPERATION_RFD, RDY; o click <GENERATE>

1.

Enlistar los archivos generados por Core Generator en la carpeta lab7_cg. Cules son los archivos importantes que se deben incluir en el sistema Microblaze?

2.

Qu funcin realizan las directivas -- synthesis translate_off(on) en el archivo my_fpumult.vhd?

Una vez creado el core FPU en Core Generator, el siguiente paso es la creacin del nuevo COPROCESADOR. Ir a Xilinx Platform Studio y seleccionar Men Hardware Create Import Peripheral, Con esta opcin se abre el wizard para crear/importar un perifrico hecho por el usuario; al final se tiene un core template que el usuario podr modificar para que realice la tarea deseada.

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-4

Juan Carlos Moctezuma Eugenio

Figura 2-1. Abrir el Wizard para Crear/Importar un perifrico Seguir el siguiente procedimiento para el Wizard de Create/Import Peripheral Click <NEXT> en la ventana de bienvenida Seleccionar Create Template for new peripheral, click <NEXT> Seleccionar To an XPS Project, click <NEXT> Name: co_fpu, Version: 1.00.a, click <NEXT> Bus Type: Fast Simple Link (FSL), click <NEXT> Number of input: 2 Number of output: 1; click <NEXT> Seleccionar nicamente Generate template driver files, click <NEXT> Functional description: FPU Coprocesador o Number of input arguments: 2 o Number of output arguments: 1; click <NEXT> Click <FINISH>

El siguiente paso es modificar el cdigo VHDL del nuevo coprocesador con la finalidad de agregar las funcionalidades de escritura/lectura hacia la unidad de punto flotante. Abrir el archivo co_fpu.vhd (generado en el directorio pcores) y realizar las siguientes modificaciones:

ELIMINAR todo el cdigo nicamente de la arquitectura, al final se tiene un arquitectura vaca, tal y como se muestra a continuacin:

Copiar el cdigo del archivo IPNEDK/Codigos/lab7/FSL_CODE.txt dentro de la arquitectura vaca del archivo co_fpu.vhd GUARDAR los cambios y cerrar el archivo

Una vez que las modificaciones a los archivos VHDL fueron realizadas, el siguiente paso es importar el perifrico. Seleccionar nuevamente la opcin Men Hardware Create Import Peripheral

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-5

Juan Carlos Moctezuma Eugenio Seguir el siguiente procedimiento para el Wizard de Create/Import Peripheral

Click <NEXT> en la ventana de bienvenida Seleccionar Import existing peripheral, click <NEXT> Seleccionar To an XPS Project, click <NEXT> Name: co_fpu, Seleccionar Use Version: 1.00.a, click <NEXT>. Indica que ya hay un core con ese nombre y que si deseamos sobreescribirlo, click <YES>. Seleccionar las casillas : HDL Source files y Netlist files, click <NEXT> Seleccionar Use existing Peripheral Analysis Order (*.pao), click <BROWSE>; seleccionar el archivo co_fpu_v1_00_a data co_fpu_v2_1_0.pao, click <OK>, click <NEXT> En la ventana de HDL Analysis Information; dar click <ADD FILES> y seleccionar el archivo creado por Core Generator IPNEDK/Lab_user/lab7_cg/my_fpumult.vhd. Mover el archivo my_fpumult.vhd arriba del archivo co_fpu.vhd para respetar el orden de jerarqua para sintetizar de manera correcta el nuevo core (figura 2-3); click <NEXT>. Si existe algn error de sintaxis en los archive VHDL muestra una ventana de error, de lo contrario pasa a la siguiente ventana del wizard. Si existe algn error, corregirlo y volver a importar el perifrico.

Figura 2-3. Ordenar jerrquicamente los archivos VHDL a sintetizar.

Seleccionar Select Bus Interfaces, seleccionar FSL Master y FSL Slave (MFSL/SFSL); click <NEXT> click <NEXT> DOS veces Deseleccionar Select and configure interrupts; click <NEXT> Ventana Port attributes, click <NEXT> Ventana Net File List, click <SELECT FILES>, buscar el archivo NGC IPNEDK/Lab_user_lab7_cg/my_fpumult.ngc ; click <NEXT> Click <FINISH>

Ir al men Hardware Configure Coprocessor. Seleccionar el coprocesador co_fpu; click <ADD>; click <OK>. En este momento el coprocesador es conectado al procesador Microblaze ?

3.

Realizar un diagrama esquemtico donde muestre la interconexin entre Microblaze y el coprocesador co_fpu. Ayudarse de las conexiones en el System Assembly View

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-6

Juan Carlos Moctezuma Eugenio

4.

En el archivo co_fpu.vhd. Dibujar la mquina de estados que controla el flujo de datos hacia la unidad de punto flotante

5.

Explicar que es lo que hacen las lneas FSL_S_Read <= FSL_S_Exists when ((state=Read_Input1)or(state=Read_Input2)) else '0'; FSL_M_Write <= not FSL_M_Full when state=Write_Outputs else '0'; FSL_M_Data <= res;

Ir al Men Project Project Options Pestaa Design Flow, DESHABILITAR la opcin Treat timing closure failure as an error. Algunas veces las restricciones de tiempo no son logradas, esta opcin permite seguir con la implementacin del diseo an cuando estas restricciones no se logren. Hasta este momento finaliza la configuracin del hardware del sistema. El paso final es generar el archivo bitstream. Seleccionar la opcin Men Hardware Generate Bitstream (este proceso tarda de 15 min aproximadamente)

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-7

Juan Carlos Moctezuma Eugenio

Paso 3. Realizar la aplicacin software


El siguiente paso es desarrollar la parte software del sistema. En esta parte se utiliza la herramienta SDK (Software Development Kit) y bsicamente se realizan 3 proyectos: la plataforma de informacin hardware, el BSP (board support package) y la aplicacin de usuario.
Exportar la informacin de la plataforma hardware hacia SDK. Click en el botn <EXPORT HARDWARE DESIGN TO EDK>. Despus se visualiza una ventana donde se selecciona Export & Launch SDK (figura 3-1)

Figura 3-1. Exportar la informacin hardware hacia SDK.

En el cuadro de dilogo que se muestra a continuacin seleccionar la ruta Lab_user\Lab7\SDK como el directorio workspace (figura 3-2), click <OK>

Figura 3-2. Seleccionar el directorio Workspace Una vez que el entorno SDK es abierto, se crea automticamente un proyecto llamado hw_platform_0 (parte izquierda en Project Explorer), este proyecto contiene la informacin hardware necesaria y se conforma por 3 tipos de archivos: BMM, BIT y XML. Opcionalmente este proyecto hardware puede ser creado de forma manual desde el men File Xilinx Hardware Platform Specification New

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-8

Juan Carlos Moctezuma Eugenio Antes de crear el Board Support Package, es necesario incorporar los drivers del core ALU al proyecto. Ir a Men Xilinx Tools Repositories. En el campo Local Repositories, click <NEW>, buscar el directorio del proyecto IPNEDK/Lab_user/Lab7, click <APPLY>, click <OK>. El siguiente paso es crear un proyecto para crear el BSP. Ir al men File New Xilinx Board Support Package, despus aparece la ventana en donde se selecciona el tipo de BSP (o sistema operativo) a usar, en este caso ser un STANDALONE. Se dejan todas las opciones por defecto y dar click <FINISH> (figura 3-3) Despus se abre la ventana de configuracin del BSP en donde se pueden seleccionar algunas libreras y drivers para cada uno de los perifricos en el sistema. Explorar los diferentes campos y dejar todas las opciones por defecto, click <OK>. Nuevamente en el Project Explorer se puede visualizar el nuevo proyecto realizado llamado standalone_bsp_0

Figura 3-3. Configuracin del BSP. El siguiente paso consiste en crear un proyecto para la aplicacin de usuario. Ir al Men New Xilinx C Project, dar como nombre de proyecto TestApp1 y seleccionar como template Empty Application. (figura 3-4). Click <NEXT> En la siguiente ventana seleccionar Target an existing Board Support Package click <FINISH>. (figura 3-4) standalone_bsp_0,

Figura 3-4. Creando el proyecto para la aplicacin de usuario en C.

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-9

Juan Carlos Moctezuma Eugenio En la ventana Project Explorer, Click DERECHO sobre la carpeta TestApp1 Import Ir a General File system, click <NEXT> src y seleccionar

Click <BROWSE>, Seleccionar la carpeta IPNEDK/Codigos/Lab7, click <OK> Seleccionar las casillas lab7code.c, click <FINISH> ? 6. Definir que es lo que realiza la funcin printFP

7.

En donde se encuentran definidas las funciones write_into_fsl y read_from_fsl?, A qu funciones equivalen?

8.

Cmo funciona un tipo de dato UNION?

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-10

Juan Carlos Moctezuma Eugenio

Paso 4. Implementar el sistema en una tarjeta FPGA


El paso final consiste en juntar las partes hardware y software del sistema en un solo archivo de configuracin BIT para poder programar el FPGA. La herramienta que logra realizar la fusin es llamada BitInit
El primer paso es conectar y prender la tarjeta FPGA Spartan 3A para validar el sistema. Tener conectado tambin un cable serial-USB a la computadora y al conector serial de la tarjeta FPGA. En la pestaa Terminal 1, dar click en <SETTINGS> y configurar la terminal para que se comporte como un puerto serial de 9600 Baud Rates, (figura 4-1). IMPORTANTE: Note que el nmero de puerto debe coincidir con el puerto al que est conectado el convertidor USB-SERIAL. Finalmente dar click en el botn <CONNECT>

Figura 4-1. Configurando el puerto serial que se comunica con la tarjeta FPGA En el siguiente paso se programa la tarjeta FPGA, click en el botn <PROGRAM FPGA>.

En la ventana que aparece a continuacin se pude seleccionar con que aplicacin inicial ser programado el FPGA, seleccionar TestApp1.elf (figura 4-3), click <PROGRAM>

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-11

Juan Carlos Moctezuma Eugenio

Figura 4-3. Programar el FPGA con una aplicacin inicial (bootloop o ELF) Despus que el FPGA es programado el resultado de la aplicacin se observa en la figura 4-4.

Figura 4-4. Salida del Test en el Terminal

Lab 7: Coprocesadores y mdulos Core Generator

Sistemas Empotrados en EDK IPN 2012

7-12

Das könnte Ihnen auch gefallen