Вы находитесь на странице: 1из 19

Gua bsica para el uso del NIOS II

En esta gua se presenta el uso del procesador NIOS II de Altera en un dispositivo FPGA, Cyclone II EP2C35F672C6N, incorporado en la tarjeta de desarrollo DE2, se debe tener instalado el software: Quartus II y NIOS II EDS, en esta gua se usa la versin 10.1 para ambos casos y la versin compatible con ellos del Altera Monitor Program, que es usado para compilar, ensamblar, descargar y depurar programas para el procesador NIOS II de Altera. SOPC Builder de Altera El SOPC Builder es una herramienta que permite al usuario crear un sistema basado en el procesador NIOS II, mediante una simple seleccin de las unidades funcionales y la especificacin de sus parmetros. En el caso de este ejemplo el sistema contendr las siguientes unidades funcionales: NIOS II processor, que es la Unidad Central de Procesamiento (CPU) On-chip memory, consiste en bloques de memoria dentro del FPGA, en este caso ser de 4Kbyte I/O interfaces, 2 interfaces paralelas, una de entrada y otra de salida JTAG UART, interfaz de comunicacin con la computadora

Para iniciar es necesario abrir el software Quartus II, figura 1, y seguir los siguientes pasos:

Figura 1. Pantalla de inicio de Quartus II 1. Crear un nuevo proyecto, el cual ser guardado en el directorio c:\altera\sopc_builder_tutorial y llevar por nombre lights al igual que la entidad, tal como se muestra en la figura 2, se da clic en Next para pasar a la siguiente pgina. En la pgina 2 del asistente se da clic en Next ya que no se agregara ningn archivo de diseo ya existente para este proyecto.

Figura 2. Eleccin del directorio y nombre del proyecto En la pgina 3 se selecciona el dispositivo FPGA a utilizar, en este caso y como ya se ha mencionado ser de la familia Cyclone II, dispositivo EP2C35F672C6, como se observa en la figura 3.

Figura 3. Seleccionar dispositivo Dar clic en Next en pgina 3 y 4 del asistente, en la ltima pgina del asistente se muestra un resumen del proyecto recin creado, dar clic en Finish. 2. Una vez creado el proyecto, en la barra de mens de Quartus II, se da clic en Tools>SOPC Builder, figura 4. Se abre una nueva ventana para la creacin de un nuevo sistema en SOPC Builder, el nombre del sistema ser: nios_system y el lenguaje preferido ser VHDL, dar clic en el botn OK, lo mencionado se puede observar en la figura 5.

Figura 4. Seleccionar la herramienta SOPC Builder Al dar clic en OK aparecer una nueva ventana, figura 6, en la cual se observa que se pueden agregar los elementos deseados al sistema, en el lado izquierdo de dicha ventana se ve la biblioteca de componentes disponibles. Antes de seleccionar cualquier componente es importante que en la etiqueta Tarjet, este seleccionada la familia del dispositivo, en este caso la Cyclone II. En la figura 6 se observa que uno de los elementos agregados es el de reloj, el sistema lo nombra clk_0, para este caso se usar el reloj de 50 MHz que trae la tarjeta DE2 y que ser la frecuencia a la cual trabajar el reloj de control del NIOS II. 3. A continuacin se especifica el procesador, de la siguiente manera: En el lado izquierdo de la ventana, de la figura 6, se selecciona del men Processors, el procesador NIOS II y se da clic en el botn Add, enseguida se abre una ventana como la que se muestra en la figura 7.

Figura 5. Creacin de un nuevo sistema en SOPC Builder

Figura 6. Ventana para eleccin de los elementos del sistema

Figura 7. Ventana que aparece para crear el NIOS II En la ventana de la figura 7 se muestran las 3 versiones del NIOS II /e de economy, /s de standard y /f de fast, en este proyecto se trabajar con la versin economy, que es la que requiere menos recursos del FPGA. Despus de seleccionar la versin deseada, se da clic en el botn Finish que regresa a la pantalla de la figura 5 pero con el procesador ya especificado, tal como se muestra en la figura 8. Se observa que el SOPC Builder muestra algunos warnings en la parte inferior de la ventana, pero esto es normal debido a que an no se han especificado todos los parmetros del procesador. Se pueden ignorar dichos mensajes ya que ms adelante se ingresaran los datos correctos.

4. Se ha agregado ya el NIOS II, la siguiente unidad funcional que se agregar es la de memoria (on-chip memory). En el men de la biblioteca de componentes seleccionar Memories and Memory Controllers> OnChip> On-Chip Memory (RAM or ROM) una vez seleccionado dar clic en el botn Add que provocar la aparicin de la ventana de la figura 9.

Figura 8. NIOS II agregado

Figura 9. Especificaciones para la memoria

Ahora se debe especificar cada parmetro de la memoria, de la figura 9 se muestran los valores deseados, tipo: RAM (Writable), tamao: ancho de datos de 32 bits y tamao de memoria 4096 bytes, solo se modifican esos parmetros y se da clic en Finish, al hacer lo anterior deber aparecer la ventana se Sytem Contents, con la unidad de memoria agregado, como en la figura 10.

Figura 10. La unidad de memoria se ha agregado

5. Ahora se agregar la interfaz paralela de entradas y salidas I/O. Seleccionar de la biblioteca de componentes Peripherals> Microcontroller Peripherals> PIO (Parallel I/O) y dar clic en Add y a continuacin configurar dicho componente. El ancho del puerto ser de 8 bits y en la direccin del puerto elegirla como de entrada, Input, como se muestra en la figura 11. Dar clic en Finish para regresar a la ventana del SOPC Builder en la pestaa de System Components.

6. El procedimiento para la definicin del puerto paralelo de salida es el mismo que en el paso 5, solo cambia la direccin, ahora ser de salida, el ancho del puerto ser de 8 bits. Realizados los puntos 5 y 6, debera aparecer la pantalla de la figura 12, donde ya se encuentran incluidas las interfaces de entrada y salida.

Figura 11. Definicin del puerto paralelo de entrada

Figura 12. Interfaz de entrada y salida incluida en el sistema

7. En este sistema se desea tener comunicacin entre una computadora y el sistema NIOS II. De la biblioteca de componentes seleccionar Interface Protocols> Serial> JTAG UART y dar clic en el botn Add. Aparecer el asistente de configuracin, para esta aplicacin se dejaran intactos los parmetros, clic en el botn Finish para regresar a la ventana principal.

Figura 13. Asistente de configuracin de la UART

El sistema, ya completo, se muestra en la Figura 14, es importante mencionar que el SOPC Builder eligi los nombres de los componentes automticamente pero los nombres no son tan descriptivos para ser asociados o identificados con los elementos del proyecto pero se pueden cambiar dando clic derecho y seleccionando Rename. Los nombres que se usarn en el sistema son los siguientes: cpu_0, onchip_memory2_0, Switches, LEDs y jtag_uart_0.

Figura 14. Sistema con todos los elementos integrados 8. La direccin de inicio y fin de varios componentes en este diseo pueden ser asignados por el usuario o por el SOPC Builder. Se dejara que este ltimo las genere. Para esto de la barra de mens dar clic en: System > Auto-Assign > Base Addresses, con lo cual se producir la asignacin. 9. Se debe definir el vector de reset del NIOS II, el vector de reset es una localidad de la memoria a partir de la cual el procesador har fetch despus de un reset. De manera similar el vector de excepcin es la direccin de memoria del procesador a la cual se va cuando ocurre una interrupcin. Para especificar ambos valores se debe hacer lo siguiente: Clic derecho en cpu_0 y seleccionar Edit, con eso aparecer la ventana de la figura 15. Seleccionar onchip_memory2_0 para que sea el dispositivo de ambos vectores, el de exception y el de reset.

Figura 15. Definir el vector de reset y de excepcin 10. Una vez que se especificados todos los componentes, es momento de generarlo. Seleccionar la pestaa System Generation, que se muestra en la Figura 16.

Figura 16. Generacin del sistema

Dar clic en el boton de Generate. Aparecer una pantalla donde se pide guardar el archivo, que llevar por nombre nios_system. El proceso de generacin tardar un poco, mientras genera enviar distintos mensajes, cuando el mensaje: SUCCESS: SYSTEM GENERATION COMPLETED dar clic en Exit. Con eso se regresar a la ventana principal de Quartus II. 11. Integracin del sistema NIOS II en el proyecto de Quartus II Para concluir con el diseo se deben seguir los siguientes pasos: a. Instanciar el mdulo generado en el SOPC en el proyecto de Quartus II. b. Asignar los pines del FPGA c. Compilar el circuito diseado d. Programar y configurar el Cyclone II en la tarjeta DE2. La instanciacin del mdulo generado depende del lenguaje que se haya elegido, en este caso se eligi VHDL. Se necesita instanciar el sistema NIOS II en el archivo top-level y conectar las entradas y salidas, el clock y el reset a los pines correspondientes del Cyclone II. La entidad generada por el SOPC Builder est en el archivo nios_system.vhd dentro del directorio del proyecto. Para instanciar la entidad generada se debe crear el archivo que ser el top-level en el proyecto, el cdigo se muestra a continuacin:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all; ENTITY lights IS PORT ( SW : IN STD_LOGIC_VECTOR(7 DOWNTO 0); KEY : IN STD_LOGIC_VECTOR(0 DOWNTO 0); CLOCK_50 : IN STD_LOGIC; LEDG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END lights; ARCHITECTURE structure OF lights IS COMPONENT nios_system PORT ( clk_0 : IN STD_LOGIC; reset_n : IN STD_LOGIC; out_port_from_the_Salidas : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); in_port_to_the_Entradas : IN STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT; BEGIN NiosII: nios_system PORT MAP (CLOCK_50, KEY(0), LEDG, SW );

END Structure;

Una vez capturado el cdigo se debe compilar, Quartus II compilar y mostrar algunos warnings que puede ser ignorados. Programacin y configuracin Programar y configurar el FPGA Cyclone II en el modo JTAG y el USB-Blaster debe estar tambin seleccionado. El archivo de configuracin que debe estar listado es lights.sof. En caso de que no est el archivo dar clic en Add File y seleccionarlo. Dar clic en Start para programar el dispositivo. Programa de aplicacin Una vez que se ha configurado el hardware requerido en el FPGA, es necesario crear y ejecutar el programa de aplicacin, que puede ser escrito en el lenguaje ensamblador del NIOSII o en un lenguaje como C. Para este ejemplo se usar el ensamblador del NIOS II. A continuacin se muestra el cdigo para realizar la tarea deseada. .include "nios_macros.s" .equ Switches, 0x00003000 .equ LEDs, 0x00003010 .global _start _start: movia r2, Switches movia r3, LEDs loop: ldbio r4, 0(r2) stbio r4, 0(r3) br loop

El programa carga las direcciones de los registros de datos en los registros del procesador r2 y r3. Se hace un loop infinito que transfiere los datos de entrada, Switches, a la salida LEDs. El programa incluye la directiva de ensamblador: .include "nios_macros.s" Que indica que se usaran los macros del NIOSII que especifican como el seudocdigo movia se debe ensamblar. Capturar el cdigo en y guardarlo con el nombre lights.s en el directorio de trabajo. El programa debe ser ensamblado y convertido en un archivo S-Record, lights.srec adecuado para descargarse y implementarse en el sistema NIOSII. Para lo anterior se usa el software llamado Altera Monitor Program, para su uso con la tarjeta DE2. Mediante este software se pueden compilar, ensamblar y descargar programas en el sistema NIOS II implementado en la tarjeta DE2.

Abrir el Altera Monitor Program, aparecer la ventana que aparece en la figura 17.

Figura 17. Ventana principal del Altera Monitor Program En este software se deben especificar las caractersticas del sistema NIOSII diseado que se encuentran el archivo ptf, nios_system.ptf. Clic en File > New Project con lo cual se abrir la ventana del asistente para la creacin de un nuevo proyecto, figura 18.

Figura 18. Asistente para la creacin de un nuevo proyecto Seguir los siguientes pasos: 1. Seleccionar el directorio del sopc_buioder_tutorial como el directorio del proyecto. 2. Elegir lights como el nombre del proyecto, clic en Next y a continuacin aparecer la figura 19. 3. En la opcin de Select System, selecccionar <Custom System>. 4. Clic en Browse... a un lado de System Description le seleccionar el archivo nios_system.ptf que se encuentra en el directorio sopc_builder_tutorial. 5. Especificar el archive .sof en el campo Quartus II Programming (SOF) File permite al usuario descargar el archivo en la tarjete DE2. Es importante mencionar que no es neceasrio especificar este archive debido a que previamente ya se descargo el archive a la tarjeta. Dar clic en Next 6. A continuacin seleccinar, Assembly Program y dar clic en Next, aparecer la ventana de la figura 20. 7. Clic en Click Add... aparecer una ventana de selccin de archivo donde se debe elegir el archive lights.s y dar clic en Next. 8. Asegurarse que la Host Connection es USB-Blaster, el Processor es el cpu_0 y la Terminal Device es JTAG UART. Clic Next. 9. El Altera Monitor Program necesita saber dnde cargar el programa de aplicacin. En este caso ser el bloque de memoria en el FPGA. The SOPC Builder asigna el nombre onchip_memory2_0 a

ese bloque. Como se muestra en la figura 21, el Monitor Program ha seleccionado el dispositivo de memoria correcto 11. Dar clic en Finish para confirmar la configuracin del sistema.

Figura 19. Especificaciones del sistema

Figura 20. Seleccionar el programa

Figura 21. Especificaciones para memoria

Para descargar el programa lights.s dar clic en Actions > Compile&Load. El Altera Monitor Program invoca un programa ensamblador seguido de un programa enlazador Despus de que el programa ha sido descargado en la tarjeta, el programa es mostrado en la ventana llamada Disassembly del Monitor Program como se ilustra en la figura 22. Clic en Actions > Continue para ejecutar el programa. Con el programa corriendo se puede probar el diseo cambiando de posicin los switches con lo cual debern cambiar los leds.

Figura 22. Programa descargado

Вам также может понравиться