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!
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…