microblaze.project.01 s3e v00

12
FACULTAD DE INGENIERÍA ELECTRÓNICA. GRUPO SEDA SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS PROFESOR: ING. JAVIER SOTO. 1. OBJETIVO: Implementación de un proyecto que incluya componentes software y hardware en la tarjeta SPARTAN 3E- Starter, mediante las herramientas de diseño de Xilinx. ISE Project Navigator v14.7 e iMPACT (para descarga del bitstream). 2. CONSIDERACIONES PREVIAS: Para la implementación de este proyecto se usará el “ISE Design Suite 14.7”, que incluye las siguientes herramientas, que para esta aplicación cumplirán con las funciones que se presentan a continuación: I. “ISE Project Navigator”: Es el contenedor del sistema principal y del subsistema que implementa el microprocesador microblaze. II. El paquete de desarrollo EDK (Embedded Development Kit) se utiliza para construir el sistema de procesamiento embebido denominado MicroBlaze. La implementación de este sistema incluye las siguientes herramientas: a. “Xilinx Platform Studio (XPS)”: usado para el diseño y configuración del sistema embebido de procesamiento, que en este caso será el MicroBlaze. b. “Xilinx Software Development Kit (SDK)”: Ambiente integrado de desarrollo (IDE) para la programación de aplicaciones (software) en el MicroBlaze. III. El proyecto que se implementará tendrá como objetivo visualizar actividad en los leds de tarjeta SPARTAN 3E-Starter. La tarjeta tiene ocho leds, cuatro de ellos serán controlados por hardware mediante una descripción en VHDL y los otros cuatro serán controlados por software mediante un programa implementado en el MicroBlaze. IV. Es necesario estudiar previamente el manual de tarjeta sobre la cual se va a implementar el diseño, para este tutorial se utilizará la tarjeta SPARTAN 3E-Starter, cuyo manual se encuentra disponible en: http://www.digilentinc.com/Data/Products/S3EBOARD/S3EStarter_ug230.pdf. Debe tener en cuanta esta manual para la configuración de entradas y salidas del sistema. V. El Error! Reference source not found. al final de este documento muestra detalles sobre el archivo de configuración de pines sugerido por el fabricante. Este archivo será utilizado en este tutorial.

Upload: leonel-losada-cardozo

Post on 12-Nov-2015

31 views

Category:

Documents


0 download

DESCRIPTION

targeta de adquision

TRANSCRIPT

  • FACULTAD DE INGENIERA ELECTRNICA.

    GRUPO SEDA SISTEMAS ELECTRNICOS DIGITALES AVANZADOS

    PROFESOR: ING. JAVIER SOTO.

    1. OBJETIVO:

    Implementacin de un proyecto que incluya componentes software y hardware en la tarjeta SPARTAN 3E-Starter, mediante las herramientas de diseo de Xilinx.

    ISE Project Navigator v14.7 e iMPACT (para descarga del bitstream).

    2. CONSIDERACIONES PREVIAS:

    Para la implementacin de este proyecto se usar el ISE Design Suite 14.7, que incluye las siguientes herramientas, que para esta aplicacin cumplirn con las funciones que se presentan a continuacin:

    I. ISE Project Navigator: Es el contenedor del sistema principal y del subsistema que implementa el microprocesador microblaze.

    II. El paquete de desarrollo EDK (Embedded Development Kit) se utiliza para construir el sistema de procesamiento embebido denominado MicroBlaze. La implementacin de este sistema incluye las siguientes herramientas:

    a. Xilinx Platform Studio (XPS): usado para el diseo y configuracin del sistema embebido de procesamiento, que en este caso ser el MicroBlaze.

    b. Xilinx Software Development Kit (SDK): Ambiente integrado de desarrollo (IDE) para la programacin de aplicaciones (software) en el MicroBlaze.

    III. El proyecto que se implementar tendr como objetivo visualizar actividad en los leds de tarjeta SPARTAN 3E-Starter. La tarjeta tiene ocho leds, cuatro de ellos sern controlados por hardware mediante una descripcin en VHDL y los otros cuatro sern controlados por software mediante un programa implementado en el MicroBlaze.

    IV. Es necesario estudiar previamente el manual de tarjeta sobre la cual se va a implementar el diseo, para este tutorial se utilizar la tarjeta SPARTAN 3E-Starter, cuyo manual se encuentra disponible en: http://www.digilentinc.com/Data/Products/S3EBOARD/S3EStarter_ug230.pdf. Debe tener en cuanta esta manual para la configuracin de entradas y salidas del sistema.

    V. El Error! Reference source not found. al final de este documento muestra detalles sobre el archivo de configuracin de pines sugerido por el fabricante. Este archivo ser utilizado en este tutorial.

  • 3. CONSIDERACIONES GENERALES:

    3.1. Cree una carpeta denominada leds_onoff_project. Dentro de esta carpeta se crearn, a lo largo de este tutorial, los proyectos necesarios para el desarrollo de este ejercicio.

    4. CREACIN DEL SISTEMA DE PROCESAMIENTO EMBEBIDO (MICROBLAZE)

    4.1. Cree una carpeta denominada mb_system.

    4.2. Abra el XPS: Windows All Programs Xilinx Design Tools ISE Design Suite 14.7 EDK Xilinx Platform Studio

    4.3. Cree un nuevo proyecto seleccionando la opcin Create New Project Using Base System Builder.

    4.4. Ingrese el nombre del proyecto como se muestra en la figura. En la seccin de seleccin del sistema de interconexin seleccione la opcin PLB System. Haga click en OK para continuar.

  • 4.5. En este caso crearemos un nuevo diseo, seleccione: I would like to create a new design y haga click en Next.

    4.6. En la siguiente venta se selecciona la tarjeta que va a trabajar, en este caso seleccione Spartan 3E Starter Board. Haga click en Next para continuar.

    4.7. Seleccione la opcin Single-Processor System y haga click en Next.

    4.8. En la siguiente ventana podra configurar algunas opciones relacionadas con la frecuencia del reloj, el tamao de la memoria o la habilitacin de Unidad de Punto Flotante. Para este ejemplo deje las opciones que aparecen por defecto y haga click en Next.

    4.9. En la siguiente ventana puede aadir o remover perifricos del sistema. Para este ejemplo se dejarn nicamente los perifricos necesarios, establezca la configuracin que se muestra en la siguiente figura:

    4.10. En la siguiente ventana se puede configurar la Cache del procesador. Para este procesador no hay memoria cache. Haga click en Next para continuar.

    4.11. En la siguiente ventana (ver siguiente figura) aparecer un resumen del sistema que est creando. Haga click en Finish para terminar el proceso.

  • 4.12. Una vez que el asistente (BSB wizard) ha finalizado la creacin del sistema, se podran hacer las modificaciones necesarias para cumplir con las especificaciones del diseo. Para este ejemplo no se requieren modificaciones adicionales.

    4.13. Generacin del Netlist (generacin del mdulo hardware que representa el MicroBlaze):

    Hardware Generate Netlist.

    4.14. Cuando la generacin del Netlist haya finalizado contine con la siguiente seccin.

    5. CREACIN DEL PROYECTO GENERAL

    5.1. Abra el ISE Project Navigator. Windows All Programs Xilinx Design Tools ISE Design Suite 14.7 ISE Desing Tools XX-bit ISE Project Navigator.

    5.2. En la carpeta raz cree un proyecto con el nombre ise_project. Haga click en Next para continuar.

    5.3. Configure el dispositivo como se muestra en la figura. Haga click en Next y en Finish para terminar.

  • 5.4. Aada el procesador embebido. Haga click en: Project Add Source, seleccione el archivo E:\leds_onoff_project\mb_system\ microblaze_system.xmp. Si le aparece un mensaje sugiriendo que el Proyecto creado anteriormente en el XPS ser modificado, seleccione la opcin Always Reload. Haga click OK para finalizar.

    5.5. Puede ver el cdigo sugerido por ISE para declarar e instanciar el componente relativo al microblaze, para esto haga doble click sobre la opcin View HDL Instantiation Template.

    5.6. Cree una nueva fuente (VHDL Module) con el nombre hw_top_module y copie el siguiente cdigo.

    ----------------------------------------------------------------------------------

    -- Creado por: Javier Soto. 24/04/2015

    ----------------------------------------------------------------------------------

    library IEEE;

    use IEEE.STD_LOGIC_1164.ALL;

    entity hw_top_module is

    port( clk_50M : in std_logic;

    reset : in std_logic;

    leds : out std_logic_vector(7 downto 0));

    end hw_top_module;

    architecture Behavioral of hw_top_module is

    COMPONENT microblaze_system

    PORT(

    fpga_0_clk_1_sys_clk_pin : IN std_logic;

    fpga_0_rst_1_sys_rst_pin : IN std_logic;

    fpga_0_LEDs_8Bit_GPIO_IO_O_pin : OUT std_logic_vector(0 to 7)

    );

    END COMPONENT;

    attribute box_type : string;

    attribute box_type of microblaze_system : component is "user_black_box";

    signal fpga_0_clk_1_sys_clk_pin : std_logic;

  • signal fpga_0_rst_1_sys_rst_pin : std_logic;

    signal fpga_0_LEDs_8Bit_GPIO_IO_O_pin : std_logic_vector(0 to 7);

    signal cont_pulsos : integer range 0 to 24999999 := 0;

    constant limit_pulsos : integer range 0 to 24999999 := 24999999;

    signal leds_hw : std_logic_vector(3 downto 0) := "0000";

    begin

    Inst_microblaze_system: microblaze_system PORT MAP(

    fpga_0_LEDs_8Bit_GPIO_IO_O_pin => fpga_0_LEDs_8Bit_GPIO_IO_O_pin,

    fpga_0_clk_1_sys_clk_pin => fpga_0_clk_1_sys_clk_pin,

    fpga_0_rst_1_sys_rst_pin => fpga_0_rst_1_sys_rst_pin

    );

    fpga_0_clk_1_sys_clk_pin

  • 5.8. Asegrese que la propiedad FPGA start-Up Clock este en el valor JTAG Clock. Para esto, en la ventana de procesos, haga click derecho sobre Generate programming file, seleccione Process Properties, seleccione la categora Startup Options, en la propiedad FPGA start-Up Clock seleccione el valor JTAG Clock.

    5.9. Genere el bitstream: haga doble click sobre Generate Programming File.

    5.10. Abra el software de programacin iMPACT: haga doble click sobre Manage Configuration Project (iMPACT).

    5.11. Configuracin del iMPACT para programar el dispositivo (ver Figura 1).

    a. Haga doble click sobre el cono Boundary Scan.

    b. Haga click sobre el cono Initialize Chain.

    c. Haga click derecho sobre el chip (xc3s500e) y seleccione la opcin Assign New Configuration File , donde asignar el archivo de configuracin o bitstream (E:\leds_onoff_project\ise_projecthw_top_module.bit).

    d. En la siguiente ventana haga click en No, debido a que no se han creado archivos de configuracin para programar otros dispositivos disponibles en la tarjeta.

    e. Haga nuevamente click derecho sobre el chip (FPGA) y seleccione la opcin Program, para descargar el bitstream a la FPGA.

    f. Haga click en OK en la ventana Device Programming Properties para continuar.

    g. Si su circuito fue programado exitosamente aparecer el mensaje Program Succeeded y los leds que han sido configurados por hardware parpadearn.

  • Figura 1. Configuracin del iMPACT para la programacin de la FPGA.

    6. EXPORTACIN DEL DISEO HARDWARE A SDK PARA PROGRAMACIN DEL MICROBLAZE.

    6.1. En el panel View, perspectiva Implementation, seleccione el archivo XMP.

    6.2. Haga doble click sobre Export Hardware Design To SDK with Bitstream.

    6.3. Es posible que el sistema le pregunte por la ubicacin del espacio de trabajo (o Workspace) donde almacenar los proyectos software de su diseo. Para este ejemplo seleccione la ubicacin: E:\leds_onoff_project\SDK_Workspace

    6.4. Cree un proyecto software. Haga click en: File NewApplication Project.

    6.5. En la siguiente ventana ingrese el nombre del proyecto que va a crear. Tenga en cuenta que este es un proyecto de software que estar ligado al proyecto de hardware (microblaze_system_hw_platform) creado anteriormente. Tenga en cuenta que en este caso tambin se crear un nuevo paquete de soporte a la tarjeta o Board Support Package (BSP). Haga click en Next para continuar.

    a. Boundary Scan

    b. Initialize Chain

    c.

    e.

    d.

  • 6.6. Seleccione una plantilla para el nuevo proyecto que est creando. En este caso se escoger una aplicacin vaca, como se muestra a continuacin. Haga click en Finish para continuar.

    6.7. Cree una nueva fuente en el proyecto software que acaba de crear: En el proyecto leds_onoff_swprj, haga click derecho sobre la carpeta src y cree un nuevo archivo como se muestra en la figura. El nuevo archivo se llamar led_onoff_code.c.

  • 6.8. Copie y pegue el siguiente cdigo:

    /***************************** Include Files *********************************/ #include "xparameters.h" #include "xgpio.h" /************************** Constant Definitions *****************************/ #define LED 0x01 /* Assumes bit 0 of GPIO is connected to an LED */ //The following constant maps to the name of the hardware instances that //were created in the EDK XPS system. #define GPIO_EXAMPLE_DEVICE_ID XPAR_LEDS_8BIT_DEVICE_ID //The following constant is used to wait after an LED is turned on to make //sure that it is visible to the human eye. This constant might need to be //tuned for faster or slower processor speeds. #define LED_DELAY 3000000 //The following constant is used to determine which channel of the GPIO is //used for the LED if there are 2 channels supported. #define LED_CHANNEL 1 /**************************** Type Definitions *******************************/ /***************** Macros (Inline Functions) Definitions *********************/ #ifdef PRE_2_00A_APPLICATION /* * The following macros are provided to allow an application to compile that * uses an older version of the driver (pre 2.00a) which did not have a channel * parameter. Note that the channel parameter is fixed as channel 1. */ #define XGpio_SetDataDirection(InstancePtr, DirectionMask) \ XGpio_SetDataDirection(InstancePtr, LED_CHANNEL, DirectionMask) #define XGpio_DiscreteRead(InstancePtr) \ XGpio_DiscreteRead(InstancePtr, LED_CHANNEL)

  • #define XGpio_DiscreteWrite(InstancePtr, Mask) \ XGpio_DiscreteWrite(InstancePtr, LED_CHANNEL, Mask) #define XGpio_DiscreteSet(InstancePtr, Mask) \ XGpio_DiscreteSet(InstancePtr, LED_CHANNEL, Mask) #endif /************************** Function Prototypes ******************************/ /************************** Variable Definitions *****************************/ //The following are declared globally so they are zeroed and so they are //easily accessible from a debugger XGpio Gpio; /* The Instance of the GPIO Driver */ int main(void){ u32 Data; int Status; volatile int Delay; //Initialize the GPIO driver Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID); if (Status != XST_SUCCESS) { return XST_FAILURE; } //Set the direction for all signals to be inputs except the //LED output XGpio_SetDataDirection(&Gpio, LED_CHANNEL, ~LED); int cont = 0; while(1){ XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, cont++); if(cont==8) cont=0; for (Delay = 0; Delay < LED_DELAY; Delay++); } return XST_SUCCESS; }

    6.9. Para compilar el archivo debe guardarlo (Ctr+S). El archivo se compilar automticamente siempre y cuando este habilitada esta opcin (Project Build Automatically).

    6.10. Para descargar el programa en el microprocesador MicroBlaze, ejecute la opcin Run , y seleccione la opcin Launch on Hardware, como se muestra en la figura.

  • 6.11. La secuencia programada por software debera verse simultneamente con la secuencia programada por hardware.