Académique Documents
Professionnel Documents
Culture Documents
Lab 4: Interfaz con el sensor compass CMPS03 (uso del core IIC)
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
BRAM
LMB BRAM Cnttlr
Microblaze
4-1
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 ?
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.
4-3
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
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).
4-5
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
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,
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.
4.
Cul es el objetivo del siguiente cdigo en la funcin ReadSensor16_COMPASS? aux1=data[1]; aux2=data[0]<<8; res=aux1 + aux2;
4-8
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>.
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
4-10