Vous êtes sur la page 1sur 14

Juan Carlos Moctezuma Eugenio

Ciencias Computacionales INAOE


Design Labs based on:



Lab 5: Creacin de un core ALU
personalizado




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

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-1
personalizado IPN 2012

Lab 5: Creacin de un core personalizado: ALU
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 personalizado al sistema
Aprender a crear drivers para en la aplicacin software

Descripcin del diseo
Realizar un sistema base en BSB, despus agregar un perifrico personalizado que realice la funcin
de una ALU. Por otro lado se crear una aplicacin software en donde se escriban valores de entrada
a la ALU y se lea el resultado. Este core tambin tendr el objetivo de leer el estado de los switches
para seleccionar la operacin a realizar de la ALU.

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
ALU Switches
lab5code.c

manejo de
drivers
ALU
Juan Carlos Moctezuma Eugenio
Lab 5: Creacin de un core ALU
personalizado

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 e importar un
3. Realizar la aplicacin software
4. Implementar el sistema en una tarjeta FPGA
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 diseo base usando BSB
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar un sistema
base usando BSB.
O Abrir la herramienta XPS seleccionando
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,
Lab5 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
guientes pasos principales:
Crear un sistema base usando BSB
Agregar e importar un core personalizado
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
Crear un diseo base usando BSB
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar un sistema
Abrir 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
Base System 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


5-2
encontrar todos los pasos necesarios para realizar el laboratorio. El procedimiento
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 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-3
personalizado 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 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-4
personalizado IPN 2012

Paso 2. Agregar e importar un core personalizado al sistema
El paso siguiente es crear e importar un core personalizado (hecho por el usuario) al
sistmade. Xilinx ofrece herramientas software para que el usuario pueda crear sus
propios perifricos de una forma sencilla.
O El primer paso es la creacin del nuevo perifrico personalizado. 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.

Figura 2-1. Abrir el Wizard para Crear/Importar un perifrico
O 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: my_alu, Version: 1.00.a, click <NEXT>
Seleccionar: Processor Local Bus (PLB)
Seleccionar SOLAMENTE los servicios: User Logic Software Registers y Sofware Reset, los
dems servicios deben estar deseleccionados; click <NEXT>
Ventana Slave Interface, click <NEXT>
Number of software registers: 4 ; click <NEXT>
Ventana IP Interconnect, click <NEXT>
Ventana Peripheral Simulation Support, click <NEXT>
Seleccionar nicamente Generate template driver files, click <NEXT>
Click <FINISH>

1. Notar el contenido de las carpetas pcores y drivers dentro del directorio del proyecto Qu
informacin contienen estas dos carpetas?



2. Cules son los archivos VHDL templates creados para el nuevo perifrico?, Cules son
los drivers o funciones software que manejan el nuevo perifrico?



?
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-5
personalizado IPN 2012

O El siguiente paso es realizar las modificaciones al archivo user_logic.vhd y my_alu.vhd, esto
con la finalidad de agregar las funcionalidades que requiere el core. Abrir el archivo user_logic.vhd
localizado en la carpeta pcores\my_alu_v1_00_a\hdl\vhdl y realizar las siguientes modificaciones:

Localizar la declaracin de puertos (lnea 100 aprox.) y declarar un puerto de entrada op, este
puerto es para poder conectar los switches. Note que en el archivo VHDL se indica donde el
usuario puede aadir lneas de cdigo (por ejemplo USER ports added here)



Localizar el comienzo de la arquitectura (lnea 130 aprox.) y declarar las seales internas ent1,
ent2 y res, las cuales representan las dos entradas y salida de la ALU respectivamente. Note que
la ALU ser de 4 bits.



Ir al final de la arquitectura (lnea 243 aprox.) y capturar el cdigo VHDL que implementar la
ALU. Las operaciones que realiza la ALU son: suma, resta, AND y OR. De los 4 registros
software seleccionados en el wizard, el registro slv_reg1 ser para el primer operando y el
registro slv_reg2 ser para el segundo operando de la ALU, mientras que el resultado se guarda
en la seal res.



Localizar el proceso de lectura de registros (lnea 220 aprox.) y modificar el proceso agregando a
la lista de sensitividad las seales op y res; adems cambiar el cdigo para que cuando en la
aplicacin software se lea el reg0 de el valor de la seal res y cuando se lea el reg3 de el valor de
la seal op (switches). GUARDAR los cambios realizados.
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-6
personalizado IPN 2012



Abrir el archivo my_alu.vhd . Localizar la parte de declaracin de puertos (lnea 165 aprox.) y
declarar el puerto op, que ser el puerto que ir conectado a los switches.


Localizar la parte donde se mapea el componente user_logic (lnea 432 aprox.) y mapear el
puerto op de my_alu con el puerto op del user_logic. GUARDAR los cambios realizados. Con
esto finaliza la modificacin de los templates VHDL creados. Ahora el nuevo core est
personalizado por el usuario.




3. Realice un diagrama esquemtico en donde se muestre la funcionalidad del nuevo perifrico,
as como la interaccin de los registros a nivel software
?
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-7
personalizado IPN 2012


Figura 2-2. Diagrama esquemtico para el core personalizado
O 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
O 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: my_alu, Seleccionar Use Version: 1.00.a, click <NEXT>. Indica que ya existe
un core con ese nombre y que si deseamos sobreescribirlo, click <YES>.
Seleccionar SOLAMENTE: HDL Source files, click <NEXT>
Seleccionar Use existing Peripheral Analysis Order (*.pao), click <BROWSE>; seleccionar el
archivo my_alu_v1_00_a data my_alu_v2_1_0.pao, click <OK>, click <NEXT>
En la ventana de HDL Analysis Information; 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.
Seleccionar Select Bus Interfaces, seleccionar PLB Slave (SPLB); lick <NEXT>
Ventana SPLB: port, click <NEXT>
Ventana SPLB: parameter, Seleccionar C_BASEADDR y C_HIGHADDR respectivamente,
click <NEXT>
Deseleccionar Select and configure interrupts; click <NEXT>
Ventana Port attributes, click <NEXT>
Click <FINISH>

4. Abrir el archivo my_alu_v2_1_0.pao, indicar que representa este archivo


O Ir al Men Project Rescan user repositories. Ir a la pestaa IP Catalog, desglozar la
categora USER y aadir el nuevo perifrico dando doble click sobre el core my_alu. Conectar el
?
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-8
personalizado IPN 2012

core al bus PLB y en este caso no hay nada que configurar en su cuadro de dilogo, el sistema con el
nuevo core debe quedar como en la figura 2-3

Figura 2-3. Agregando el core hecho por el usuario.
O Cambiarse a la pestaa Ports, desglozar el core my_alu_0 y seleccionar en el campo op Make
external. Con estas modificaciones se esta creando puertos externos para los switches. Note que en la
opcin External Ports se han agregado estos puertos externos (figura 2-4).

Figura 2-4. 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 restricciones para el nuevo core
(figura 2-5). Corroborar esta asignacin de pines en el archivo IPNEDK/Datasheet/Spartan3A.pdf

NET my_alu_0_op_pin<0> LOC = U10 | IOSTANDARD = LVCMOS33;
NET my_alu_0_op_pin<1> LOC = V8 | IOSTANDARD = LVCMOS33;
Figura 2-5. Asignacin de pines para los nuevos cores
G 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)

Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-9
personalizado IPN 2012

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)

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\Lab5\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 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/Lab5, click <APPLY>, click <OK>.
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-10
personalizado IPN 2012

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

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

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-11
personalizado IPN 2012


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

Seleccionar las casillas lab5code.c, click <FINISH>

5. Definir las funciones que se encuentran definidas en el archivo my_alu.h, Cules son las
instrucciones que se utilizan para leer y escribir a los registros hardware?



6. Defina el valor de las constantes REG0, REG1, REG2 y REG3, Por qu se asignan valores
que aumentan de cuatro en cuatro?


7. Que instrucciones se usan para mandar datos a la ALU?, Qu instrucciones se usan para leer
el resultado de la ALU?



8. Cmo es que la ALU realiza la operacin seleccionada de los switches?






?
Juan Carlos Moctezuma Eugenio

Lab 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-12
personalizado 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 5: Creacin de un core ALU Sistemas Empotrados en EDK 5-13
personalizado IPN 2012


Figura 4-3. Programar el FPGA con una aplicacin inicial (bootloop o ELF)
O Despus que el FPGA es programado el resultado de la aplicacin se observa en la figura 4-4. Ir
girando el sensor de forma horizontal y verificar las lecturas obtenidas.

Figura 4-4. Salida del Test en el Terminal

9. Qu modificaciones habra que hacer para que el usuario pueda dar los operandos 1 y 2
desde el Hyperterminal?

Vous aimerez peut-être aussi