Está en la página 1de 13

Juan Carlos Moctezuma Eugenio

Ciencias Computacionales INAOE



Design Labs based on:



Lab 2: Agregando un nuevo core al
sistema (GPIOs), analizando el flujo
de diseo




Targeting: EDK-Microblaze 13.2 & Spartan-3A Board
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-1
al sistema y flujo de diseo IPN 2012


Lab 2: Agregando un nuevo core al sistema
(GPIOs), analizando el flujo de diseo
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 nuevo core al sistema (uso de GPIOs)
Aprender cmo funciona el flujo de diseo para sistemas empotrados en FPGAs

Descripcin del diseo
Realizar un sistema base en BSB, despus agregar dos perifricos GPIO para el manejo de los
switches y LEDs; por otro lado se crear una aplicacin software en donde se observe el manejo de
los drivers para los cores tipo GPIO, el texto en verde de la figura A representa estas modificaciones.
Al mismo tiempo que el sistema se va creando se analiza el flujo de diseo de la herramienta EDK,
los archivos generados y como trabaja EDK under the hood.

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

BRAM
LMB
BRAM
Cnttlr
LMB
BRAM
Cnttlr

Microblaze
UART
GPIO Buttons
Stdin/Stdout
GPIO Switches
GPIO LEDs
lab2_test.c

manejo de
drivers
GPIO
Juan Carlos Moctezuma Eugenio
Lab 2: Agregando un nuevo core
al sistema y flujo de diseo


Procedimiento
En esta seccin el alumno encontrar todos los pasos necesarios para realizar el laboratorio. El procedimiento
incluye los siguientes pasos principales
1. Crear un sistema base usando BSB
2. Agregar un nuevo core
3. Realizar la aplicacin software
4. Implementar el sistema en una tarjeta FP
Cada paso principal del procedimiento es
instrucciones especficas para alcanzar el objetivo final
Cuando se pida alguna informacin al asistente o que re
cono
Paso 1. Crear un sistema base usando BSB
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar
base.
O Abrir la herramienta XPS
Suite 13.2 EDK Xilinx Platform Studio
O A continuacin aparece una ventana indicando la forma de iniciar un nuevo proyecto. Seleccionar
Base System Builder wizard
New Project
O En la siguiente ventana, dar el nombre
Lab2 y que se encuentre en el directorio de trabajo
La ruta seleccionada NO debe tener espacios. Activar la casilla
que se usar para estos laboratorios, Click <OK>

Figura 1-1. Crear un nuevo proyecto
?
Juan Carlos Moctezuma Eugenio
Sistemas Empotrados en EDK
IPN 2012

encontrar todos los pasos necesarios para realizar el laboratorio. El procedimiento
incluye los siguientes pasos principales:
Crear un sistema base usando BSB
Agregar un nuevo core
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.
Cuando se pida alguna informacin al asistente o que responda ciertas preguntas aparecer el
sistema base usando BSB
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar
la herramienta XPS seleccionando Menu Inicio Programas Xilinx ISE Design
Xilinx Platform Studio
A continuacin aparece una ventana indicando la forma de iniciar un nuevo proyecto. Seleccionar
Builder wizard. Click <OK>. En caso de que no aparezca esta ventana ir al men
En la siguiente ventana, dar el nombre system.xmp al proyecto. Crear una nueva carpeta llamada
y que se encuentre en el directorio de trabajo Lab_user,tal y como se muestra en la
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>

Crear un nuevo proyecto


2-2

encontrar todos los pasos necesarios para realizar el laboratorio. El procedimiento
indicado por el cono . Cada paso a su vez tiene
ciertas preguntas aparecer el
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar un sistema
Xilinx ISE Design
A continuacin aparece una ventana indicando la forma de iniciar un nuevo proyecto. Seleccionar
. Click <OK>. En caso de que no aparezca esta ventana ir al men File
al proyecto. Crear una nueva carpeta llamada
tal y como se muestra en la figura 1-1.
el cual es el tipo de bus
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-3
al sistema y flujo de diseo IPN 2012


O 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
O 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.50 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: Seleccionar (dejar valores por default)
RS232_DCE: Seleccionar (dejar valores por default)
dlmb_ctrl: Seleccionar (dejar valores por default)
ilmb_ctrl: Seleccionar (dejar valores por default), click <NEXT>
O 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
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-4
al sistema y flujo de diseo IPN 2012


De esta forma se ha creado el sistema base. A continuacin se realiza el proceso de agregar un nuevo
core al sistema.

Paso 2. Agregar un nuevo core al sistema base
El paso siguiente es agregar un core de Xilinx al sistema base. Xilinx ofrece una
gran variedad de cores que se encuentran disponibles para el usuario.
O En la pestaa IP Catalog, buscar la categora General Purpose IO y dar doble click en el core
XPS General Purpose IO, click <YES>, con esto abre una ventana para configurar el core,
dejamos las opciones por defecto, click <OK>. Repetir este procedimiento una vez ms para
agregar otro GPIO. Al final el sistema deber tener 2 nuevos GPIOs agregados

Figura 2-1. Agregar un core XPS_GPIO
O En el System Assembly View, en la pestaa Bus Interface, buscar la el core xps_gpio_0,
cambiar el nombre a LEDs. Despus cambiar el nombre del core xps_gpio_1 a Switches. Para
cambiar el nombre de los cores, primero seleccione el core, despus dar un click extra sobre el mismo
core y aparecer activado el cursor para cambiar el nombre. Posteriormente conectar ambos GPIOs al
bus PLB. Al final el sistema debe quedar como en la figura 2-2.

Figura 2-2. Dar nombre a los nuevos cores y conectarlos al bus PLB
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-5
al sistema y flujo de diseo IPN 2012


O Dar doble click sobre el core LEDs y colocar las siguientes configuraciones

Data Channel Width: 8
Channel 1 Input Only : FALSE
De igual forma dar doble click en el core Switches y colocar las siguientes configuraciones:

Data Channel Width: 4
Channel 1 Input Only : TRUE
O Cambiarse a la pestaa Ports, desglosar el core LEDs, desglosar la opcin (IO_IF) gpio_0 y
seleccionar en el campo GPIO_IO_O Make external. Desglozar ahora el core Switches desglosar
la opcin (IO_IF) gpio_0 y seleccionar en el campo GPIO_IO_I Make external. Con estas
modificaciones se est creando puertos externos tanto para los LEDs como para los Switches. Note
que en la opcin External Ports se han agregado estos dos puertos externos (figura 2-3). Note
adems que el campo Range tiene el formato (0 to 3) y (0 to 7)

Figura 2-3. Agregando puertos externos para los nuevos cores
O Ir ahora a la pestaa Addresss y dar click en el botn Generate Addresses para generar
automticamente el espacio de memoria para los nuevos perifricos. Por default asigna 64K a cada
perifrico
O El paso siguiente es realizar la asignacin de pines a los nuevos perifricos en el archivo UCF. En
la pestaa Project dar doble click al archivo system.ucf. Capturar las siguientes restricciones.
Corroborar esta asignacin de pines en el archivo IPNEDK/Datasheet/Spartan3A.pdf

Net LEDs_GPIO_IO_O_pin* IOSTANDARD = LVCMOS33;
NET LEDs_GPIO_IO_O_pin<0> LOC = "R20";
NET LEDs_GPIO_IO_O_pin<1> LOC = "T19";
NET LEDs_GPIO_IO_O_pin<2> LOC = "U20";
NET LEDs_GPIO_IO_O_pin<3> LOC = "U19";
NET LEDs_GPIO_IO_O_pin<4> LOC = "V19";
NET LEDs_GPIO_IO_O_pin<5> LOC = "V20";
NET LEDs_GPIO_IO_O_pin<6> LOC = "Y22";
NET LEDs_GPIO_IO_O_pin<7> LOC = "W21";

Net Switches_GPIO_IO_I_pin* IOSTANDARD = LVCMOS33;
NET Switches_GPIO_IO_I_pin<0> LOC = "V8";
NET Switches_GPIO_IO_I_pin<1> LOC = "U10";
NET Switches_GPIO_IO_I_pin<2> LOC = "U8";
NET Switches_GPIO_IO_I_pin<3> LOC = "T9";
Figura 2-4. Asignacin de pines para los nuevos cores
O Hasta este momento finaliza la configuracin del hardware del sistema. El paso final es generar el
archivo bitstream. ANTES de realizar este paso anote en una hoja cual es la estructura de carpetas
dentro del directorio del proyecto. Despus seleccionar la opcin Men Hardware Generate
Netlist (este proceso tarda de 15 min aproximadamente)
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-6
al sistema y flujo de diseo IPN 2012


1. En la ventana de Project, dar doble click en el archivo system.mhs. Encuentre la definicin
para el core RS232_DCE y defina para que siven las instrucciones PARAMETER,
BUS_INTERFACE y PORT. Qu tipo de dato o informacin definen estas
instrucciones?




2. Note que ahora la estructura del directorio despus del Generate netlist ha agregado nuevas
carpetas al proyecto Lab2 (figura 1-3). Cules son las carpetas nuevas?

Figura 1-1. Estructura del directorio despus del Generate Netlist


3. En la carpeta hdl enlistar los archivos VHDL wrapper e identificarlos con el sistema. Qu
representan estos archivos?. Los archivos wrapper son arrojados por la herramienta PlatGen
en el flujo de diseo hardware



4. En la carpeta Implementation enlistar los archivos NGC, Qu representan estos archivos?



O Seleccionar la opcin Men Hardware Generate Bitstream. Este paso constituye la
segunda parte del flujo de diseo a nivel hardware para generar el archivo BIT.
NOTA: Para las preguntas siguientes apoyarse de la hora y fecha de modificacin de los archivos
para saber cules fueron creados en la etapa de Generate Bistream
5. Enliste los archivos NGD que arroja como salida la herramienta NGDBuild en la carpeta
Implementation. Qu representan estos archivos? , Cules son los archivos de entrada para
la herramienta NGDBuild?




?
?
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-7
al sistema y flujo de diseo IPN 2012


6. Cules son los archivos de entrada y de salida para el proceso de Mapeo?, ubicar estos
archivos en la carpeta Implementation



7. Cules son los archivos de entrada y salida para el proceso de Place & Route? , ubicar estos
archivos en la carpeta Implementation



8. Cual es el archivo de entrada y salida para el proceso BitGen? , ubicar estos archivos en la
carpeta Implementation







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.
O 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)

Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-8
al sistema y flujo de diseo IPN 2012



Figura 3-1. Exportar la informacin hardware hacia SDK.
O En el cuadro de dilogo que se muestra a continuacin seleccionar la ruta Lab_user\Lab2\SDK
como el directorio workspace (figura 3-2), click <OK>

Figura 3-2. Seleccionar el directorio Workspace
O 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 New
Xilinx Hardware Platform Specification
O 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
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-9
al sistema y flujo de diseo IPN 2012



Figura 3-3. Configuracin del BSP.
O 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 standalone_bsp_0,
click <FINISH>. (figura 3-4)

Figura 3-4. Creando el proyecto para la aplicacin de usuario en C.
O En la ventana Project Explorer, Click DERECHO sobre la carpeta TestApp1 src y
seleccionar Import

Ir a General File system, click <NEXT>

Click <BROWSE>, Seleccionar la carpeta IPNEDK/Codigos/Lab2, click <OK>

Seleccionar la casilla lab2code.c , click <FINISH>

Al final el entorno SDK se tiene que visualizar como en la figura 3-5. Note la creacin de los 3
proyectos en la ventana Project Explorer
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-10
al sistema y flujo de diseo IPN 2012


El proyecto completo automticamente es compilado y el archivo ejecutable ELF que realiza un test
de memoria est listo en la carpeta Lab2/SDK/TestApp1/Debug/TestApp1.elf

Figura 3-5. Entorno SDK para la parte software del sistema.

9. Abrir el archivo lab2code.c, Cules son las operaciones que realizan los Buttons, Switches y
LEDs en la aplicacin software?



10. Cuntas rutinas de secuencia de LEDs estn implementadas en el cdigo?, En que consiste
cada una?



11. Qu recurso de la tarjeta FPGA define el tipo de operacin que se va a realizar?



12. Indique 3 pasos que consideres principales en el uso de GPIOs y enliste las funciones
involucradas ?




?
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-11
al sistema y flujo de diseo IPN 2012


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
O 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.
O 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
O 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>
Juan Carlos Moctezuma Eugenio

Lab 2: Agregando un nuevo core Sistemas Empotrados en EDK 2-12
al sistema y flujo de diseo IPN 2012



Figura 4-3. Programar el FPGA con una aplicacin inicial (bootloop o ELF)

O Despus que el FPGA es programado con la aplicacin de usuario el resultado debe visualizarse
en la ventana Terminal 1 en SDK y tiene que ser como se muestra en la figura 4-3. Analice este
resultado relacionndolo con el cdigo del Test de Memoria. Oprimir el botn de RESET en la tarjeta
FPGA para volver a correr la aplicacin.

Figura 4-3. Salida del Test en el Terminal