You are on page 1of 13

Juan Carlos Moctezuma Eugenio Ciencias Computacionales INAOE

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

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

Design Labs based on:

Juan Carlos Moctezuma Eugenio

Lab 3: Interfaz serial MATLAB-FPGA (uso del UART)


Introduccin
Este laboratorio guia al asistente a travs de las herramientas EDK, XPS, SDK 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 Aprender a usar los drivers para crear una nueva aplicacin software

Descripcin del diseo


Realizar un sistema base en BSB, despus agregar un perifricos UART para realizar la transferencia de imagen desde MATLAB hacia el FPGA y viceversa. Por otro lado se crear una aplicacin software en donde se realice el manejo de los drivers para poder realizar esta transferencia, adems el FPGA realizar un procesamiento simple de modificacin de brillo a la imagen de entrada, posteriormente el FPGA devuelve la imagen hacia MATLAB. Tambin se tendr corriendo una aplicacin en MATLAB para poder realizar la transferencia de imgenes. lab3code.c
LMB BRAM Cnttlr

BRAM
LMB BRAM Cnttlr

lab3.m archivo M MATLAB

manejo de drivers UART

Microblaze

Buttons

GPIO UART Stdin/Stdout & MATLAB

MPMC

SDRAM

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

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-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 nuevo core Realizar la aplicacin software Implementar el sistema en una tarjeta FP 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 un sistema base usando BSB.
Abrir la herramienta XPS seleccionan 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 Lab3 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 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-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.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: 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 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-3

Juan Carlos Moctezuma Eugenio

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.
En la pestaa IP Catalog, buscar la categora Communication Low-Speed y dar doble click en el core XPS UART (lite), click <YES>, con esto abre una ventana para configurar el core, dejamos las opciones por defecto, click <OK>. Este nuevo core ser el encargado de realizar la transferencia de la imagen y al mismo tiempo ser la entrada/salida estndar para el sistema.

Figura 2-1. Agregar un core XPS UART En el System Assembly View, en la pestaa Bus Interface, buscar el core xps_uartliteo_0, cambiar el nombre a SERIAL_IMAGE. 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 el nuevo UART 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

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-4

Juan Carlos Moctezuma Eugenio Dar doble click sobre el core SERIAL_IMAGE y colocar las siguientes configuraciones Baud Rate: Number of data bits : Use Parity: 115200 8 FALSE

Verificar en la pestaa System PLB en el campo Clock Frequency of PLB Slave tenga el valor de 62,500,000 Hz tal y como se muestra en la figura 2-3. Si no es as cambiar la frecuencia a 62.5 MHz, click <OK>.

Figura 2-3. Cambiar el reloj de frecuencia del bus a 62.5 MHz

Cambiarse a la pestaa Ports, desglozar el core SERIAL_IMAGE (IO_IF) y seleccionar en el campo TX Make external. De igual manera el puerto RX Make External. Con estas modificaciones estamos creando puertos externos para el transmisor y receptor del nuevo puerto serial. Note que en la opcin External Ports se han agregado estos dos puertos externos (figura 2-4).

Figura 2-4. Agregando puertos externos para los nuevos cores 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 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 SERIAL_IMAGE_RX_pin LOC = E16 | IOSTANDARD = LVCMOS33; NET SERIAL_IMAGE_TX_pin LOC = F15 | IOSTANDARD = LVCMOS33; Figura 2-5. Asignacin de pines para los nuevos cores

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-5

Juan Carlos Moctezuma Eugenio 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 15 min aproximadamente).

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\Lab3\SDK como el directorio workspace (figura 3-2), click <OK>

Figura 3-2. Seleccionar el directorio Workspace

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-6

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

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,

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-7

Juan Carlos Moctezuma Eugenio

Figura 3-4. Creando el proyecto para la aplicacin de usuario en C. En la ventana Project Explorer, Click DERECHO sobre la carpeta TestApp1 seleccionar Import Ir a General File system, click <NEXT> src y

Click <BROWSE>, Seleccionar la carpeta IPNEDK/Codigos/Lab3, click <OK> Seleccionar las casillas lab3code.c y lib_img.h, click <FINISH>

En la ventana Project Explorer, click DERECHO en el proyecto TestApp1 y seleccionar Generate Linker Script. En los campos Heap Size y Stack Size colocar el valor de 2048 (figura 35). Click <GENERATE>, click <YES>

Figura 3-5. Configurando el Linker Script. 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 El proyecto completo automticamente es compilado y el archivo ejecutable ELF que realiza un test de memoria est listo en la carpeta Lab3/SDK/TestApp1/Debug/TestApp1.elf

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-8

Juan Carlos Moctezuma Eugenio

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

1.

Cuntas funciones se encuentran definidas en el archivo lib_image.h?, Defina brevemente la funcionalidad de cada una

2.

Describa brevemente los pasos que realiza el cdigo lab3code.c, cabe mencionar que esta aplicacin interacta con un archivo M de MATLAB que se estar corriendo en la PC. En base a esto defina el hand-shaking entre el archivo MATLAB y la aplicacin en C del FPGA

3.

Cul es el procesamiento que se realiza a la imagen de entrada?

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-9

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 115200 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 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-10

Juan Carlos Moctezuma Eugenio

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

Despus que el FPGA es programado con la aplicacin de usuario, se debe visualizar al final de la ventana Terminal 1 el mensaje Desconecte este Terminal y ejecute el programa de MATLAB. Este mensaje indica que el programa en el FPGA est en espera de comenzar la transmisin hacia MATLAB, pero como se est usando el mismo puerto serial tanto para las entrada/salida estndar como para la transmisin de datos, es necesario DESCONECTAR primero el Terminal 1 en SDK

Figura 4-4. Salida del Test en el Terminal Abrir MATLAB, seleccionar como Current Directory la carpeta work. Copiar de la carpeta IPNEDK/Lab3/ los archivos lab3_edk.m y fun_CreaSerial.m a la carpeta work de MATLAB, copiar tambin las imgenes de prueba. Este archivo sirve para coordinar la transferencia de datos (imgen) entre MATLAB y el FPGA. Abrir el archivo M, click <RUN>. El resultado del programa se puede observar en la figura 4-5

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-11

Juan Carlos Moctezuma Eugenio

Figura 4-5. Imgenes de salida y resultado en el command window de MATLAB (archivo M de MATLAB) ? 4. En el archivo lab_edk.m. En que parte del cdigo se manda el tamao de la imagen hacia el FPGA?, En la aplicacin C del FPGA cual es la funcin que recibe el tamao de la imagen?

5.

Cuales son los dos valores de ACK que MATLAB espera del FPGA?

6.

Describa que es lo que hace la funcin fun_CreaSerial.

7.

Defina el proceso ordenado de ejecucin de la aplicacin de MATLAB y la aplicacin del FPGA, de tal forma que se entienda como se coordinan estas dos aplicaciones.

Lab 3: Interfaz serial MATLABFPGA (uso del UART)

Sistemas Empotrados en EDK IPN 2012

3-12

You might also like