Written Fabio Hernandez.
 

INTRODUCCIÓN:

El presente documento pretende mostrar los pasos que permiten hacer un sistema en la de0nano SOC basado en el Soft-Core NIOS II no volatil, es decir este sistema un sistema que no necesita de energía para perdurar en la FPGA y de esta manera no tener problemas para conservar lo implementado en la FPGA una vez desconectado. para ello es necesario generar un archivo .hex del NIOS II, este archivo corresponde a un conjunto de instrucciones que la CPU de NIOS II sabe interpretar y que puede ser almacenado, en el fondo un archivo .hex no es mas que un una lista de direcciones de memoria y lo que contiene cada una de estas posiciones. Una vez generado este archivo se procede a implementarlo en la memoria del sistema NIOS II a través del QSYS de esta manera se garantiza que cada vez que se programe el hardware descrito en la FPGA, el sistema NIOS II inicie con el archivo .hex implementado en la memoria,y luego se procede a convertir el .SOF en un tipo de archivo no volátil que permita ser descargado en la memoria EPCS  de la FPGA.
 
Este tutorial se realiza en el siguiente orden:
      • Generación del proyecto(hardware y software).
      • Conversión .elf a .hex.
      • Descarga del .hex en memoria ram del sistema NIOS II.
      • Conversión .SOF a .JIC.
      • Escritura del .JIC en el EPCS de la de0nano SOC.
 
A continuación se detalla la manera como se realiza cada uno de ellos.
 
DESARROLLO:
  • GENERACIÓN DEL PROYECTO (HARDWARE Y SOFTWARE
    • Primero usted deberá descargar esta base de proyecto y programarlo en la FPGA, como se dará cuenta, este proyecto contiene un sistema en QSYS con la descripción necesaria para el funcionamiento de un micro-procesador basado en NIOS básico, con una pequeña memoria y dos periféricos que se conectaran a los switches y LEDS de la De0nano SOC para realizar un pequeño ejemplo de aplicación.
                                                                                                                    
    • Una vez programado el proyecto en la FPGA, abra NIOS II Software Tools For Eclipse, genere un nuevio NIOS II from BSP en blanco pegue el siguiente archivo en el proyecto.
                              
 
    • Contruir el BSP y el .elf y correr en NIOS II Hardware.
                   
 
    • Usted se dará cuenta que los leds funcionan como un contador que incrementa con una frecuencia de 1 hz.
    • Desconecte la De0nano SOC y vuelvala a conectar, como es de esperarse el conteo dejo de funcionar debido a que el sistema aún no se ha hecho volatil.
  • CONVERSIÓN .ELF A .HEX
    • Para ello usted deberá ir a la carpeta del proyecto, dar click derecho e ir a Make_targets, se abrira una nueva pestaña donde deberá seleccionar Build  y dar click en mem_init_generate y luego en Build.
 
    • Como puede notar, se ha generado una nueva carpeta en el proyecto llamada mem_init que contiene el archivo .hex que nos interesa para ser implementado en la memoria del sistema.
 
  • DESCARGA DEL .HEX EN MEMORIA RAM DEL SISTEMA NIOS II
    • Vuelva a Quartus II, y abra el archivo .Qsys que analizamos anteriormente, es momento de implementar el archivo .hex en la memoria del sistema para ello vaya a RAM1 , de click en initialize memory content y Enable non-default initialization file luego seleccione Nios_practica_RAM1.hex que se encuentra en la nueva carpeta generada en el paso anterior.
    • Vuelva a generar el .Qsys, compile y programe nuevamente el hardware en la FPGA y observe que los LEDS empiezan a realizar el conteo automaticamente, esto es debido a que el NIOS II inicia automaticamente a leer las instrucciones que se encuentran en el  archivo .hex almacenado en la memoria, sin embargo aun no se ha hecho no volátil el sistema.

  • CONVERSIÓN .SOF A .JIC
    • seleccione JTAG Indirect Configuration File (.jic) en el Programming file type. 
    • Luego seleccione EPCS128 en Configuraion device fiel.
    • seleccione Active Serial  de Mode.
    • busque el directorio donde desea guardar el nuevo archivo generado y especifique el nombre.
    • Haga click en SOF data en la sección Input files to convert.
    • En Quartus II vaya file/ Convert Programming Files y realize los siguientes paso: 
 
      • Click en Add File.
      • Seleccionar el .sof a ser convertido.
      • Click en Flash Loader y luego en Add Device.
      • Seleccione el dispositivo indicado.
      • Click en generate.

      • Un archivo .jic de nombre output_file debe aparecer en la carpeta principal del proyecto.

  • ESCRITURA DEL .JIC EN LA EPCS DE LA DE0NANO SOC.
    • Para ello usted debe configurar los dip-switch MSEL en "10010"


    • Ir al programador, y añada el .jic en lugar de el .sof en file.

    • Check en program/configure
    • Click en START.
                NOTA: Es importante desconectar y conectar la tarjeta una vez realizado todos los pasos, después de esto comprobar que ha hecho NIOS II no volátil :).
 
REFERENCIAS:
 
Attachments:
Download this file (DE0_NANO_SOC_practica_nios2.qar)DE0_NANO_SOC_practica_nios2.qar[ ]364 kB
Download this file (main.c)main.c[ ]0.3 kB
Powered by OrdaSoft!
  Written By Peter Gomez Este contenido esta orientado a los programadores que tienen problema con la conectividad("SGC PmmC") de su pantalla uOled-128-g1/g2…
Written by Sherneyko Plata Rangel   Pynq-z2: Hello world   In this tutorial we will implement a simple test of the inputs/outputs available on…
Objetivos Requerimientos Procedimiento Descripción de Hardware. Qsys. Nios II. UCOS II. Secuencia de Sprite. Sintesis de Audio. Descargas Glosario Otros Resultados. Ejemplo de Sprites.     Objetivos: Diseñar una plantilla general para el diseño de…
Written by Holguer A. Becerra           Requerimientos: DE0-NANO USB-UART(solo para parte 3) Python 2.7 ó superior.   Objetivos: Dar una introducción a los conceptos de Multitasking, Scheduling y…
Written by Holguer A. Becerra             Based on Gregory Estrade's Work.   I have ported the PC Engine System on the DE0-NANO back in 2014, why…
      Arduino tools are generally nice tools for quick prototyping and improvized projects, and the Seeeduino Xiao…
Written by: Holguer A Becerra         En esta practica vamos a construir nuestro primer juego retro  usando un sincronizador de Video VGA…
Written by: Andrea Paola Pabón Ortega & Daniel Enrique Mejia Rueda Revision by: Ing Holguer A. Becerra   DESCRIPCIÓN DEL PROYECTO: El  RTAWD DE0NANO…
  Written by Holguer Andres   Requires: DE0-NANO. 4.3 Inch 480x272 Screen.( WQVGA ) ?️       Parte HW: Descargue la siguiente plantilla( DE0_NANO_TFT_PSP.zip) y descomprimala en una ruta sin espacios y…
Escrito por Guillermo Acevedo   Diseño   En esta practica desarrollaremos un filtro FIR en hardware, para este caso en especifico, realizaremos un filtro…
 Written By Juan David Delgado   FILTRO FIR (FILTRO DE RESPUESTA FINITA AL IMPULSO)     Son conocidos como filtros digitales no recursivos debido a…
XISCKER: Reduced and Complex Instruction Set Computing Key Educational Resources A Configurable Platform for the Emulation of Different Computer Architectures An introduction to Computer Architectures through digital design description for FPGA devices   Computer Architecture embraces all three…
Escrito por: Alix Angarita   En el manual a continuación se explica un método de debug adicional que es muy interesante debido a…
By: Fabio Hernández   INTRODUCCIÓN:   El presente documento pretende mostrar la manera de generar software para una imagen de Linux implementada en la…
Summary Written by Fabio Hernandez   HARD PROCESSOR SYSTEM (HPS)     ------------------------------------------------------------------------------------------------------------------------------------------------   Introducción   Tenemos  2 nuclos de procesamiento ARM cortex-A9, cada uno son su propio cache  se…
Escrito por Jesus Lopez         INTRODUCCIÓN   El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de una computadora acceder a…
    Written by  Sebastian Baquero       Objetivos  Introducción a los conceptos de Multitasking, Scheduling y Context Switching.  Ampliación de los conceptos a cerca de el…