Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
BRAM
LMB BRAM Cnttlr
Microblaze
Buttons
MPMC
SDRAM
3-1
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 ?
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.
3-3
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
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>.
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
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).
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>
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,
3-7
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
3-8
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.
3-9
Figura 4-1. Configurando el puerto serial que se comunica con la tarjeta 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>
3-10
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
3-11
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.
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.
3-12