Vous êtes sur la page 1sur 11

Juan Carlos Moctezuma Eugenio Ciencias Computacionales INAOE

Lab 4: Interfaz con el sensor compass CMPS03 (uso del core IIC)

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

Design Labs based on:

Juan Carlos Moctezuma Eugenio

Lab 4: Interfaz sensor CMPS03 usando el core IIC


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 tipo IIC 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 IIC para controlar un sensor compass CMPS03. Por otro lado se crear una aplicacin software en donde se obtenga informacin del sensor. El compass o brjula CMPS03 se utiliza para determinar la direccin relativa a los polos magnticos de la tierra, este sensor cuenta con una direccin de fbrica 0xC0 y 16 registros para su funcionamiento. El CMPS03 devuelve el resultado en un rango de [0 3599] o bien de [0 255], ambos rangos representan 0 a 360. lab4.codec
LMB BRAM Cnttlr

BRAM
LMB BRAM Cnttlr

manejo de drivers IIC

Microblaze

Buttons Compass CMPS03

GPIO UART IIC Stdin/Stdout

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

Lab 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-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 guientes 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 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 seleccionando Menu Inicio Programas Xilinx ISE Design Suite 13.1 EDK Xilinx Platform Studio A continuacin nuacin 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. oyecto. Crear una nueva carpeta llamada Lab4 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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-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: 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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-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 IIC Interface, 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_iic_0, cambiar el nombre a CMPS03. 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 core IIC 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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-4

Juan Carlos Moctezuma Eugenio Dar doble click sobre el core CMPS03 y colocar las siguientes configuraciones PLB Bus clock frequency: Output frequency : Use 10-bit address: Width of GPIO: 50,000,000 100,000 7-bit addresses 1

Cambiarse a la pestaa Ports, desglozar el core CMPS03 (IO_IF) y seleccionar en el campo Scl Make external. De igual manera el puerto Sda Make External. Con estas modificaciones estamos creando puertos externos para el reloj y el puerto de datos del bus IIC. 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 CMPS03_Scl LOC=V16 | IOSTANDARD = LVCMOS33 | PULLUP; Net CMPS03_Sda LOC=W16 | IOSTANDARD = LVCMOS33 | PULLUP; Figura 2-5. Asignacin de pines para los nuevos cores 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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-5

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\Lab4\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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-6

Juan Carlos Moctezuma Eugenio 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 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-7

Juan Carlos Moctezuma Eugenio 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/Lab4, click <OK> Seleccionar las casillas lab4code.c y lib_compass.h, click <FINISH>

1.

Definir las funciones que se encuentran en el archivo lib_compass.h, Para qu son las funciones tipo Low Level y High Level?

2.

Por qu en el cdigo la direccin que se maneja para el compass es 0x60, siendo que su direccin de fbrica es 0xC0?

3.

Identifique y defina los parmetros para las funciones XIic_Send y XIic_Recv

4.

Cul es el objetivo del siguiente cdigo en la funcin ReadSensor16_COMPASS? aux1=data[1]; aux2=data[0]<<8; res=aux1 + aux2;

Lab 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-8

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. Conectar al sensor CMPS03 a los pines de la tarjeta FPGA (verificar UCF y datasheet de la tarjeta para ver la asignacin de pines), conectar tambin la alimentacin del sensor. Recuerde que el sensor tiene que estar colocado sobre un protoboard y sin mucho movimiento. 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>.

Lab 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-9

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

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. Ir girando el sensor de forma horizontal y verificar las lecturas obtenidas. NOTA: Para ms informacin del funcionamiento del sensor, el datasheet est disponible en la ruta IPNEDK/Datasheet/CMPS03.pdf

Figura 4-4. Salida del Test en el Terminal

Lab 4: Compass CMPS03 usando IIC

Sistemas Empotrados en EDK IPN 2012

4-10

Vous aimerez peut-être aussi