Written By Juan David

 
CUSTOM HARDWARE
 

Lo que se desea en esta práctica es conectar el procesador NIOS II directamente a un periférico deseado, ¿qué cambios tendrá con respecto a la práctica anterior en la que estaba conectado por medio de PIOs? Los tiempos de velocidad, el rendimiento y la eficacia del sistema será mayor, debido a que al ya no estar conectado por medio del PIO la información viajara más rápido.

Una de las ventajas que podemos manejar al hacer este proceso, es que si le añadimos otra RAM se puede extraer y hacer registro de información de manera simultánea. 

 

 

El proceso que sigue esta configuración es el llevar y traer datos desde el “Master” hasta el “Slave” por medio de multiplexores que indican con cuál de los periféricos del sistema se entablara la conexión. En la siguiente imagen podemos observar una forma mas clara de como se hace la configuración. 

 
En las siguientes dos imágenes se observa de forma mas detallada una explicación de las conexiones entre el Master y el periférico del sistema al momento de escribir y leer la información que se usará. 
 
Conexión al momento de escribir información       
                                                       a) Conexión al escribir información                                                        b) Conexión al leer información
 
 
PROCEDIMIENTO
 
Para iniciar descargue el archivo DE0_NANO_SOC_practica_nios2_Karplus_Strong.qar, y ábralo en quartus. Ahora descargue la carpeta llamada ip.rardescomprimala y peguela en la carpeta principal "DE0_NANO_SOC_practica_nios2_Karplus_Strong_restored".
 

 

Ahora abra el Qsys y abra el archivo nios_practica.qsys 

 
 
Ahora vamos a proceder a crear un nuevo componente AVALON, abra el menú archivo y seleccione nuevo componente
 
 
 
 
 
Luego de seleccionar esto aparecerá una ventana como la siguiente, en esta ventana usted modificara la información que mostrara el nuevo componente en la pestaña "tipo de componente". Posteriormente dirijase a la pestaña "archivos".
 
 
Una vez ubicado en la pestaña "archivos", seleccione la opción "añadir archivos", seleccione los archivos de extensión .v  que se encuentran en la carpeta IP que usted creo.
 
 
                  
 
 
Al momento de haber abierto estos archivos, seleccione la opción de "analizar síntesis de archivos", posteriormente seleccione el archivo llamado "timer_ece10243upb2016" en la opción de atributos y seleccionelo como "top-level file" y analice nuevamente.
 
 
Posteriormente de realizar el procedimiento anterior dirijase a la pestaña de "señales & interfaces" y observara lo siguiente y agregara una nueva interfase  a la cual llamara "interrupt".
 
 
Organice el contenido de las señales de la siguiente manera, ademas asegúrese de que revisar que en cada interfase, tipo de interfase, señal y tipo de señal sea el correcto como se muestra en las siguientes imágenes. En cada interfase asegúrese también de que estén asociados el clock y el reset. Cuando este asignando el tipo de interfase en la interfase "timer", una vez asignado el tipo "conduit" dirijase a la señal "toggle" y en el tipo de señal escriba "export" y presione enter.
 
 
 
       
 
 
En el caso de que no sea capaz de cambiar los tipos de interfase y señal, seleccione la interfase o la señal que desea revisar y en la parte derecha selecciona el tipo de señal o interfase que desea. En las siguientes imágenes hay un ejemplo.
 
 
 
 
 
Al finalizar y asegurarse de que todo este correcto, guarde y de click en finalizar.
 
Ahora agregue el nuevo componente que acabamos de crear y conecte como se muestra en la figura, la señal "timer" se conecta en la opción que dice "doble click para exportar" y la llama "timer".
 
 
Una vez conectado dirijase al menú de sistema y seleccione la opción "asignar direcciones base" 
 
 
 
 
Ahora en el menú "generar" seleccione la opción "HDL Example..."
 
 
 
Copie de la ventana que le genero la linea de código que dice ".timer_export    (<connected-to-timer_export>)     //    timer.export" y peguela en el NIOS principal en quartus.
 
 
 
Asegúrese de que en el NIOS estén asignados los puertos correctamente así como se muestra en la imagen anterior.
 
 
Ahora genere el HDL 
 
 
 
Ahora haga click en close y finalizar Qsys
 
 
Copie el archivo "timer_ece10243upb2016_hw.tcl" que se genero y que se encuentra en la carpeta de "DE0_NANO_SOC_practica_nios2_Karplus_Strong_restored" y peguelo en la carpeta "timer_ece10243upb2016" que se encuentra dentro de la carpeta IP
 
Agregue los archivos "syncro.v", "timer_ece10243upb2016.v" como se muestra en la siguiente imagen 
 
 
 
Ahora compile en quartus y programelo en la fpga
 
Una vez terminado de compilar y programar, abra el "NIOS II 15.0 Software Build Tools for Eclipse" y cree un nuevo "Nios II Application and BSP from Template".
 
 
Al poner la dirección en el espacio de "SOPC Information File name" asegurese de que la dirección no contiene espacios porque de lo contrario le generara un error que no le dejara crear el nuevo software. Crearemos la aplicación llamada "hello world".
 
 
Al finalizar, le creara dos carpetas, una CustomHardware y otra CustomHarware_bsp". Dentro de la carpeta CustomHardware se encuentra el código en un archivo .c que es donde se hará el software.
Descargue el archivo hello_world.c, cópielo y peguelo en el código que nos creo el programa.
 
El procedimiento que lleva a cabo el programa es un conteo a una frecuencia asignada y ademas esta imprimiendo en la consola un mensaje que se le asigno.

Luego de tener el nuevo código "hello_world.c" haga click derecho sobre la carpeta "CustomHardware_bsp" y genere el BSP.
 
 
Ahora haga click derecho en la carpeta "CustomHardware" y construya el proyecto...
 
 
Nuevamente haga click derecho sobre la carpeta "CustomHardware" y seleccione la opción "Debug as" y "Debug Configutarions"
 
 
En la configuración seleccione el nombre del proyecto que va a usar, ahora dirijase a la pestaña de "target connection"
 
 
En esta pestaña haga click en "Refresh Connections" y está seleccionara la "DE-SoC on localhost [USB-1]", de click en aplicar y debug
 
     
 
Ahora para que el software realice su funcionamiento lo único que queda es dar click derecho sobre la carpeta de custom_hardware, run as, Nios II Hardware 
 
 

 

 
 
Enjoy!