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: