first nios ii system

43
Nios II Introducción al diseño de sistemas con Nios II Parte I Ing. Hector Cabrera 1

Upload: hjcabrera

Post on 27-Nov-2014

598 views

Category:

Documents


9 download

TRANSCRIPT

Nios IIIntroduccin al diseo de sistemas con Nios II Parte I

Ing. Hector Cabrera

1

Agenda Flujo de Diseo Requerimientos. Bosquejo. Flujo Quartus II Parte IIng. Hector Cabrera

Flujo SOPC Builder Flujo Quartus II Parte II Flujo Nios II EDS 2

Flujo de DiseoArchivo HDL (Verilog / Vhdl)

SoPC Builder Seleccin de IP Realizar Conexiones Generar sistema en HDL

Archivo de descripcin del Sistema

Quartus II Edicin HDL Asignar Pines FPGA Compilar proyecto Descargar a FPGA

Quartus II Creacin de cdigo fuente Edicin de cdigo Compilacin de cdigo Depuracin de solucin Ejecutar cdigo

Configuracin de FPGA

Sistema Objetivo Depuracin en tiempo de ejecucion

Descarga de aplicacion

Ing. Hector Cabrera

3

RequerimientosEl establecimiento de requisitos funcionales del sistema ayuda a planificar IP necesarios as como hardware. Para este sistema en particular los requerimientos son:Ing. Hector Cabrera

Solo utilizar recursos internos del FPGA para el ncleo del sistema. Desplegar una secuencia determinada en diodos emisores de luz (8) Secuencia desplegada a intervalos de 1 segundo. Sistema consistente de los bloques mnimos necesarios

4

Bosquejo

Nota:

La estructura de interconexin es generada de manera automtica.

Ing. Hector Cabrera

5

Parte I

Ing. Hector Cabrera

Flujo Quartus II

6

Proyecto Quartus IILa seccin de hardware del sistema Nios II es desarrollada en Quartus, por lo que se tomara como base un proyecto de este software. Inicio -> Todos los Programas -> Altera -> QuartusIng. Hector Cabrera

Dentro de Quartus II crearemos un nuevo proyecto utilizando el asistente. File -> New Project Wizard, dentro de la primera pagina del asistente se seleccionara la ruta de trabajo asi como el nombre del proyecto.

7

Proyecto Quartus IILa segunda pagina del asistente permite incluir archivos preexistentes al proyecto, para este sistema no agregaremos ningn archivo.

Next

Ing. Hector Cabrera

8

Proyecto Quartus IISeleccin de dispositivo objetivo

Ing. Hector Cabrera

9

Proyecto Quartus IIEl cuarto cuadro de dialogo nos permite seleccionar diferentes herramientas para la compilacin y simulacin del sistema. Este tema se encuentra fuera del alcance de este documento por lo que se utilizara las herramientas estndar.

NextFinalmente se presenta un resumen de las caractersticas del proyecto.

10 Finish

Ing. Hector Cabrera

Proyecto Quartus IISe agrega un archivo esquemtico donde se realizaran las conexiones del sistema Nios II con los pines fsicos del dispositivo reconfigurable. File -> New -> Block Diagram / Schematic File La primera seccin relacionada con el desarrollo del sistema dentro de Quartus II finaliza en este paso. Sin cerrar esta aplicacin se continua con la apertura de SOPC Builder.Ing. Hector Cabrera

11

Descripcin sistema Nios II

12

Ing. Hector Cabrera

Flujo SOPC Builder

Descripcin Nios - SoPCEl sistemas Nios II es descrito por medio de SoPC Builder Tools -> SOPC Builder o clic en Nombrar al sistema como: first_nios_systemIng. Hector Cabrera

13

Descripcin Nios - SoPCAgregar - System ID Por que?: Este es uno de los perifricos mas importantes del sistema, este permite a las herramientas de desarrollo de software para Nios II saber si la aplicacin desarrollada pertenece al hardware objetivo. Peripherials -> Debug and Performance System ID peripherialIng. Hector Cabrera

Este perifrico no tiene parmetros configurables, por lo que presionaremos Finish

Nota:

Solo puede existir un perifrico de este tipo por sistema y debe de llamarse sysid. Cualquier otro nombre provocara el no reconocimiento del perifrico. Renombrar: clic derecho -> Rename

14

Descripcin Nios - SoPCAgregar Procesador Nios II Por que?: Es el cerebro del sistema, todo el software ser interpretado por el y enviara la seales correspondientes a sus perifricos para completar las tareas asignadas. Processors -> Nios II processorIng. Hector Cabrera

Seleccionar la versin Nios II/e Finish y renombrar dispositivo como cpu

15 Nota:Se regresara a configurar este dispositivo nuevamente

Descripcin Nios - SoPCAgregar On-Chip Memory Por que?: Utilizaremos una memoria implementada dentro del dispositivo FPGA como espacio para almacenar el software del sistema as como datos.Ing. Hector Cabrera

Memories and Memory Controllers -> On-Chip -> On-Chip Memory (Ram or Rom)

Data width : 32 Total Memory size : 20 Kbytes Finish y renombrar onchip_mem

16

Descripcin Nios - SoPCAgregar Interval Timer Por que?: Muchas aplicaciones requieren medir intervalos de tiempo para realizar acciones, en nuestro caso especifico actualizar el estado de los diodos emisores de luz cada 1 segundo. Peripherials-> Microcontroller Peripherials -> Interval Timer Preset : Full Featured Finish y renombrar sys_timerIng. Hector Cabrera

17

Descripcin Nios - SoPCAgregar Perifrico PIO (Parallel I/O) para LEDs Por que?: Este tipo de perifrico permite la interaccin del sistema con el mundo exterior. Para nuestro sistema Nios nos permitir encender | apagar los LEDs conectados a la tarjeta. Peripherials-> Microcontroller Peripherials -> PIO (Parallel I/O) Width : 8 Direction : Output only Finish y renombrar led_pio 18Ing. Hector Cabrera

Descripcin Nios - SoPCHasta este momento nuestro sistema debe lucir como en la figura inferior, ya hemos agregado todos los bloques IP del sistema, pero aun hace falta una limpieza general del sistema. Esta eliminara los errores y warnings mostrados por SoPC Builder.Ing. Hector Cabrera

19

Descripcin Nios - SoPCCleanUp Direcciones base en Memoria y Prioridad de interrupciones. Por que?: Nios II al igual que otros C controla sus perifricos por medio de operaciones de lectura/escritura de registros. Cada perifrico debe tener asignada un direccin de inicio que no se sobreponga a la de otro perifrico. System -> Auto-Assign Base Addresses. El sistema automticamente asignara un patrn de direcciones adecuado.Ing. Hector Cabrera

System -> Auto-Assign IRQs. El sistema automticamente asignara un orden de prioridad a las interrupciones. En este caso es mejor asignarlo de manera manual ya que SoPC no conoce las caractersticas del hardware. Algunos mensajes debern desaparecer despus de esta operacin.

20

Descripcin Nios - SoPCCleanUp Configuracin de arranque para Nios II. Por que?: Al momento del inicio del sistema Nios II, este buscara una memoria pre determinada para iniciar la ejecucin de instrucciones (programa). Para el sistema en desarrollo se utilizara la memoria on-Chip, pero puede seleccionarse memorias externas. Doble clic en cpu (nucleo Nios II) Reset Vector : onchip_mem

Exception Vector : onchip_mem Finish 21

Ing. Hector Cabrera

Descripcin Nios - SoPCGeneracin del sistema Nios II Por que?: Este proceso creara una descripcin en lenguaje HDL de todos los IP que se agregaron al sistema SoPC Builder. El resultado sera un concentrado de las caractersticas del sistema que podr ser utilizado por Quartus II y por Nios EDS para continuar con el flujo de diseo. Verificar que el sistema no tenga mensajes de error o advertencia. Clic en botn Generate, el proceso puede durar varios minutos.

Al terminar con xito la generacin, clic en Exit y regresamos a Quartus II

22

Ing. Hector Cabrera

Parte II

23

Ing. Hector Cabrera

Flujo Quartus II

Proyecto Quartus IIDe regreso al proyecto de Quartus II agregaremos el sistema recin descrito para continuar con la seccin de hardware del flujo de diseo. Doble clic en cualquier rea vaca del archivo esquemtico. Esto lanzara el cuadro de dialogo de smbolos.Ing. Hector Cabrera

Project -> first_nios_system. Ok. Con el bloque del sistema siguiendo nuestro puntero, dar clic en cualquier rea vacia del esquemtico para colocar una instancia de first_nios_system. 24

Nota:

Proyecto Quartus IIAgregar terminales al diseo first_nios_system.

Para realizar las conexiones, como la de reset_n se utiliza la herramienta:

Por que?: Cada terminal que agreguemos al sistema indicara a Quartus II que debe asignar un pin fsico para la conexin al exterior del FPGA.Ing. Hector Cabrera

Doble clic en cualquier rea libre del diseo esquemtico. En el cuadro de dialogo de smbolos seleccionar c:/altera/... /quartus/libraries -> primitives -> other -> vcc. Insertar de igual forma que el smbolo first_nios_system y realizar conexin a la terminal de reset_n. Clic derecho en el smbolo first_nios_system -> Generate Pins for symbol Ports. Es posible cambiar el nombre de los pines al dar doble clic a estos.

25

Proyecto Quartus IIAsignacin de pines Fsicos del FPGA Por que?: Permitir encaminar de manera correcta las seales generadas de manera interna del FPGA con sus correspondiente generadores/receptores fuera del dispositivo. Processing -> Start -> Start Analisys and Elaboration.Ing. Hector Cabrera

Assigments -> Pin planner. Asignar el correspondiente pin a cada seal.

Nombre de la Seal Pin Asignado 26

Proyecto Quartus II

La correspondencia de pines con componentes en la tarjeta Altera DE1 puedes ser consultada en: 27 DE1 Development and Education Board User Manual Al finalizar la asignacin File -> Close

Ing. Hector Cabrera

Proyecto Quartus IILa FPGA cuenta con 484 pines, de los cuales solo estamos utilizando una pequea fraccin, para evitar algn dao a cualquiera de los pines no utilizador debemos configurar estos como entradas en alta impedancia. Assigments -> Device.Ing. Hector Cabrera

Clic en botn Device and Pin Option Esto nos desplegara un nuevo asistente. En la Category -> Unused Pins -> As input tri-stated with weak pull-up. Ok. 28

Proyecto Quartus IICompilacin y carga del diseo al FPGA

Por que?: La compilacin crea un archivo de configuracin especifica para el FPGA, una vez creado este archivo se debe de descargar al dispositivo reconfigurable para generar la infraestructura necesaria para la carga del software del sistema. Processing -> Start Compilation o . Esto inicia el proceso de compilacin, toda la operacin puede tardar varios minutos. Tools -> Programmer. El asistente para la programacin de dispositivos se desplegara. Es importante corroborar que el hardware de comunicacin este seleccionado, en caso de no estarlo es necesario buscar el dispositivo en -> Hardware Setup y elegirlo.Ing. Hector Cabrera

29

Proyecto Quartus II

Verificar la operacin de Program/Configure

Iniciar la carga en el FPGA, al termina la barra de progreso mostrara 100%. En este momento el sistema Nios II esta cargado en el dispositivo pero aun no es capas de realizar ninguna tarea sin el software apropiado.

30

Ing. Hector Cabrera

Desarrollo de Software

31

Ing. Hector Cabrera

Flujo Nios II EDS

Nota:

Proyecto Nios EDS

Si se ejecuta el software Nios II EDS en windows 7, ejecutarlo como administrador.

Para el desarrollo del software del sistema es necesario utilizar el IDE eclipse con un plug-in de desarrollo Nios Embedded Design Suit. Inicio -> Todos los Programas -> Altera -> Nios II EDS -> Nios II Ing. Hector Cabrera

Si es la primera vez que se lanza la aplicacin Nios EDS se solicitara establecer una direccin para un rea de trabajo determinada llamada Workspace, en esta direccin se almacenaran todos los proyectos desarrollados. .

32

Proyecto Nios EDSEclipse es una plataforma de desarrollo de software capaz de adaptarse a diferentes lenguajes de programacin, por lo que es importante asegurarnos que se encuentra configurado para el desarrollo de aplicaciones para nios II.

Window -> Open Perspective -> Other -> Nios II Esta operacin solo debe llevarse acabo si la perspectiva es diferente a Nios II, otro forma de alternar de perspectivas es utilizando el acceso rpido colocado en la esquina derecha superior.

33

Ing. Hector Cabrera

Proyecto Nios EDSIniciar proyecto de software para Nios II. File -> New -> Nios II Application and BSP from Template. El proyecto de software se encuentra fuertemente ligado al hardware diseado con SOPC Builder. Agregar el archivo de descripcin de sistema generado por SOPC Builder. (.sopcinfo) Dar nombre al first_nios_system proyecto:

Seleccionar el nombre del ncleo Nios II agregado al sistema. Templates : Blank Template

34

Ing. Hector Cabrera

Proyecto Nios EDSTodo proyecto Nios II consta de dos secciones, una seccin de software y una de hardware. Esta ultima se encarga de dar informacin al proyecto de eclipse sobre que hardware se encuentra disponible para utilizar por el software del sistema. Esta seccin especifica los detalles para la seccin de hardware.Ing. Hector Cabrera

Seleccionar Create a new BSP project based on the application project template Dar nombre al proyecto Finish

35

Proyecto Nios EDSEl proyecto se divide en la carpeta de software y hardware, la carpeta de hardware solo proporciona archivos de soporte para el software a desarrollar por lo que no se llevaran acabo modificaciones en esa seccin.Crear nuevo archivo de cdigo para nuestro proyecto: Clic derecho en first_nios_system -> new -> Source File Source File : main.c Template : Default C source template

Finish36

Ing. Hector Cabrera

Proyecto Nios EDSEl desarrollo de software se lleva acabo en la pantalla de edicin, antes de iniciar con la codificacin de nuestra aplicacin aclararemos algunos conceptos.

system.h Esta librera es generada de manera automtica en el seccin de hardware (first_nios_system_bsp). Esta librera contiene todas las direcciones de los registros para controlar los perifricos del sistema.

37

Ing. Hector Cabrera

Proyecto Nios EDSExisten 3 mtodos para el manejo por software de los perifricos que forman al sistema Nios II, estos son:

Nivel HAL: Hardware Abstraction Layer es una forma de controlador entre el nivel de registros y la aplicacin de software, este ofrece un nivel de abstraccin mas alto donde las funciones realizar operaciones completas con solo una sentencia como leer informacin de una memoria flash.38

Ing. Hector Cabrera

Nivel de registros: Este es el nivel de abstraccin mas bajo para el control de los perifricos del sistema. Se basa en las operaciones de lectura/escritura en las direcciones de los registros de control. Altera proporciona macros para facilitar estas operaciones, en las cuales solo es necesario proporcionar el dato a escribir y la direccin objetivo.

Proyecto Nios EDSNivel de librera estndar de C: Altera proporciona rutinas para el uso funciones pertenecientes a las libreras estndar de ANSI C ligadas a perifricos del sistema.Este es el nivel mas alto de abstraccin para el manejo de perifricos en una aplicacin desarrollada en C para Nios II. Un ejemplo de este mecanismo es ligar la librera stdio.h a un modulo de UART, en este caso toda salida utilizando printf ser enva de manera serial por medio del modulo UART.

Es posible consultar mas informacin sobre el manejo de perifricos y modelos de programacin en:Altera Embedded Peripherals IP - User Guide Nios II Software Developers Handbook

39

Ing. Hector Cabrera

Proyecto Nios EDSCdigo fuente de aplicacin:#include "system.h" #include "altera_avalon_pio_regs.h #include unistd.h"Ing. Hector Cabrera

int main(void){ unsigned char led_val = 0x01; for (;;){ if (led_val == 0x00){ led_val = 0x01; } else{ IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led_val); usleep(100000); led_val = led_val niosII -> BSP Editor Seleccionar enable reduced device drivers y enable small c library Sys_clk_timer : sys_timer Generate, terminado Exit

41

Proyecto Nios EDSCompilar cdigo

Por que?: La compilacin del cdigo fuente anteriormente diseado, permite la verificacin de la validez del cdigo (lxico, sintctico y semntico), adems de generar un archivo en cdigo maquina el cual puede ser interpretado por el microprocesador Nios II. Clic derecho en first_nios_system -> Build project Despus de una compilacin exitosa estaremos listos para la carga del sistema Nios II dentro del dispositivo FPGA.Ing. Hector Cabrera

42

Proyecto Nios EDSDescarga de cdigo al FPGA

Por que?: Esta accin nos permite verificar el funcionamiento de nuestro sistema ejecutndose directamente en hardware.

Clic derecho en first_nios_system -> Run As -> 3 Nios II Hardware El sistema Inicia operacin en la tarjeta

Nota:

Antes de llevar acabo este paso es necesario llevar a cabo la configuracin del dispositivo FPGA con el hardware diseado en SOPC builder y Quartus II.

43

Ing. Hector Cabrera