sistemas embebidos, Core dedicado I2C
-
Upload
mvictor619 -
Category
Documents
-
view
27 -
download
1
description
Transcript of sistemas embebidos, Core dedicado I2C
Juan Carlos Moctezuma Eugenio Ciencias Computacionales – INAOE
Design Labs based on:
Lab 4: Interfaz con el sensor compass
CMPS03 (uso del core IIC)
Targeting: EDK-Microblaze 13.2 & Spartan-3A Board
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-1 usando IIC IPN – 2012
Lab 4: Interfaz sensor CMPS03 usando el core IIC
Introducción
Este laboratorio guia al asistente a través de las herramientas EDK, XPS y BSB para realizar un
sistema empotrado para FPGAs
Objetivos
Después de completer este laboratorio, el asistente sera capaz de:
• Realizar un diseño 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 aplicación software
Descripción del diseño
Realizar un sistema base en BSB, después agregar un periféricos IIC para controlar un sensor
compass CMPS03. Por otro lado se creará una aplicación software en donde se obtenga información
del sensor. El compass o brújula CMPS03 se utiliza para determinar la dirección relativa a los polos
magnéticos de la tierra, este sensor cuenta con una dirección de fábrica 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˚.
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
IIC Compass CMPS03
lab4.codec
manejo de
drivers
IIC
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 usando IIC
Procedimiento
En esta sección 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 aplicación software
4. Implementar el sistema en una tarjeta FPGA
Cada paso principal del procedimiento es
instrucciones específicas para alcanzar el objetivo final
Cuando se pida alguna información al asistente o que re
ícono
Paso 1. Crear un diseño base usando BSB
Abrir la herramienta XPS (Xilinx Platform Studio) de EDK para realizar un sistema
base usando BSB.
� Abrir la herramienta XPS seleccionando
Suite 13.1 →→→→ EDK →→→→ Xilinx Platform Studio
� A continuación aparece una ventana indicando la forma de iniciar un nuevo proyecto. Seleccionar
Base System Builder wizard
���� New Project …
� En la siguiente ventana, dar el nombre
Lab4 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 un nuevo core
Realizar la aplicación software
Implementar el sistema en una tarjeta FPGA
Cada paso principal del procedimiento es indicado por el ícono . Cada paso a su vez
instrucciones específicas para alcanzar el objetivo final.
Cuando se pida alguna información al asistente o que responda ciertas preguntas aparecerá el
diseño 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
nuación 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
4-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
nuación 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
oyecto. 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 4: Compass CMPS03 Sistemas Empotrados en EDK 4-3 usando IIC IPN – 2012
� Posteriormente seleccionar I would create a new design, click <NEXT>. Después 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 configuración 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/periféricos), seleccionar
los periféricos 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>
� 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 4: Compass CMPS03 Sistemas Empotrados en EDK 4-4 usando IIC IPN – 2012
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 pestaña IP Catalog, buscar la categoría 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 estándar para el sistema.
Figura 2-1. Agregar un core XPS UART
� En el System Assembly View, en la pestaña Bus Interface, buscar el core xps_iic_0, cambiar el
nombre a CMPS03. Para cambiar el nombre de los cores, primero seleccione el core, después 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
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-5 usando IIC IPN – 2012
� Dar doble click sobre el core CMPS03 y colocar las siguientes configuraciones
• PLB Bus clock frequency: 50,000,000
• Output frequency : 100,000
• Use 10-bit address: 7-bit addresses
• Width of GPIO: 1
� Cambiarse a la pestaña 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 opción
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 pestaña Addresss y dar click en el botón Generate Addresses para generar
automáticamente el espacio de memoria para los nuevos periféricos. Por default asigna 64K a cada
periférico
� El paso siguiente es realizar la asignación de pines a los nuevos periféricos en el archivo UCF. En
la pestaña Project dar doble click al archivo system.ucf. Capturar las restricciones para el nuevo core
(figura 2-5). Corroborar esta asignación 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. Asignación de pines para los nuevos cores
� Hasta este momento finaliza la configuración del hardware del sistema. El paso final es generar el
archivo bitstream. Seleccionar la opción Menú Hardware ���� Generate Bitstream (este proceso
tarda de 15 min aproximadamente).
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-6 usando IIC IPN – 2012
Paso 3. Realizar la aplicación software
El siguiente paso es desarrollar la parte software del sistema. En esta parte se utiliza
la herramienta SDK (Software Development Kit) y básicamente se realizan 3
proyectos: la plataforma de información hardware, el BSP (board support package) y
la aplicación de usuario.
� Exportar la información de la plataforma hardware hacia SDK. Click en el botón <EXPORT
HARDWARE DESIGN TO EDK>. Después se visualiza una ventana donde se selecciona “Export &
Launch SDK” (figura 3-1)
Figura 3-1. Exportar la información hardware hacia SDK.
� En el cuadro de diálogo que se muestra a continuación 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 automáticamente un proyecto llamado
hw_platform_0 (parte izquierda en Project Explorer), este proyecto contiene la información 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
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-7 usando IIC IPN – 2012
� El siguiente paso es crear un proyecto para crear el BSP. Ir al menú File ���� New ���� Xilinx
Board Support Package, después 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)
Después se abre la ventana de configuración del BSP en donde se pueden seleccionar algunas librerías
y drivers para cada uno de los periféricos 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. Configuración del BSP.
� El siguiente paso consiste en crear un proyecto para la aplicación 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 aplicación de usuario en C.
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-8 usando IIC IPN – 2012
� 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/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 código la dirección que se maneja para el compass es 0x60, siendo que su
dirección de fábrica es 0xC0?
3. Identifique y defina los parámetros para las funciones XIic_Send y XIic_Recv
4. ¿Cuál es el objetivo del siguiente código en la función ReadSensor16_COMPASS?
aux1=data[1];
aux2=data[0]<<8;
res=aux1 + aux2;
?
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-9 usando IIC 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 configuración BIT para poder programar el FPGA. La herramienta que
logra realizar la fusión es llamada BitInit
� El primer paso es conectar y prender la tarjeta FPGA Spartan 3A para validar el sistema. Tener
conectado también 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 asignación de pines), conectar también la alimentación del sensor. Recuerde que el sensor
tiene que estar colocado sobre un protoboard y sin mucho movimiento.
� En la pestaña 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
número de puerto debe coincidir con el puerto al que está conectado el convertidor USB-SERIAL.
Finalmente dar click en el botón <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 botón <PROGRAM FPGA>.
Juan Carlos Moctezuma Eugenio
Lab 4: Compass CMPS03 Sistemas Empotrados en EDK 4-10 usando IIC IPN – 2012
En la ventana que aparece a continuación se pude seleccionar con que aplicación inicial será
programado el FPGA, seleccionar TestApp1.elf (figura 4-3), click <PROGRAM>
Figura 4-3. Programar el FPGA con una aplicación inicial (bootloop o ELF)
� Después que el FPGA es programado el resultado de la aplicación se observa en la figura 4-4. Ir
girando el sensor de forma horizontal y verificar las lecturas obtenidas.
NOTA: Para más información del funcionamiento del sensor, el datasheet está disponible en la ruta
IPNEDK/Datasheet/CMPS03.pdf
Figura 4-4. Salida del Test en el Terminal