ACTIVIDAD # 3
CAPÍTULO DEL CURSO: SISTEMAS EMBEBIDOS EN FPGA.
OBJETIVOS DE APRENDIZAJE:
Elaborar un sistema embebido basado en el microprocesador Nios II,
utilizando la herramienta Qsys para la programación en el chip FPGA.
Elaborar un algoritmo en lenguaje C utilizando el sistema embebido
creado, para la accesibilidad de periféricos de la tarjeta de desarrollo
DE10-Standard.
DURACIÓN: 60 minutos
MATERIALES Y HERRAMIENTAS:
Software Quartus 17.0 versión Estándar.
Software Eclipse Kepler.
Tarjeta de desarrollo DE10-Standard.
INTRODUCCIÓN
Puertos Paralelos.
Las luces rojas LEDR en la placa DE10-Standard son impulsadas por un puerto
paralelo de salida. Este puerto tiene un registro de datos de diez bits que está
asignado a la dirección 0x11020. El registro se puede escribir usando accesos
por palabra, ignorando los bits superiores que no se usan en los registros. [1]
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 1
Puerto Paralelo – Pushbutton
PROCEDIMIENTO:
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 3
Figura 4. Adhesión de archivos.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 6
Figura 9. Agregación del componente Nios II Processor.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 7
Figura 11. Cambio de nombre al componente Nios II Processor.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 8
Figura 13. Ventana del componente JTAG UART.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 9
Figura 15. Agregación del componente JTAG UART.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 10
Figura 17. Cambio de nombre al componente System ID Peripheral.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 11
Figura 19. Ventana del componente On-Chip Memory (Ram or Rom).
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 12
Figura 21. Agregación del componente Interval Timer.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 14
29. Proceda a hacer clic derecho al componente pio_0, y seleccione la opción
rename, para colocar el título “KEY3_1”, tal como se muestra en la figura
26.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 15
Figura 28. Ventana del componente PIO (Parallel I/O).
33. Una vez que se han agregado todos los bloques para construir el sistema
embebido, se procederá a realizar las conexiones entre ellos. Primero se
realizarán las conexiones de la señal de reset, para esto diríjase al menú
System y seleccione la opción Create Global Reset Network, tal como
se muestra en la figura 30.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 16
Figura 30. Conexiones de reset global.
34. Una vez realizadas las conexiones de reset global, proceda a realizar las
conexiones de la señal de reloj, para esto seleccione el punto donde la
señal CLK del componente CLOCK_50 se conecta con el resto de los
bloques, como se muestra en la figura 31.
35. Una vez realizadas las conexiones de la señal de reloj, proceda a realizar
las conexiones del bus de datos hacia el CPU, para esto seleccione el
punto donde la señal data_master del componente CPU se conecta con
el resto de los bloques, como se muestra en la figura 32.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 17
Figura 32. Conexiones del data_master dentro del sistema embebido.
36. Para finalizar las conexiones, proceda a realizar las conexiones del bus
de dirección cuando haga reinicio (reset) e interrupciones (excepción),
para esto seleccione el punto donde la señal instruction_master del
componente CPU se conecta con el componente de memoria, que en este
caso será el bloque SRAM, tal como se muestra en la figura 33.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 18
37. Seleccione el componente CPU, y dentro de la ventana de Parámetros
diríjase a la pestaña Vectors. En las secciones Reset Vector y Exception
Vector, cambie los valores de Reset vector memory y Exception vector
memory por SRAM.s1 respectivamente, tal como se muestra en la figura
34.
Figura 34. Modificación de parámetros a los vectores de reset y excepción del microprocesador Nios
II.
39. La columna IRQ sirve para establecer las prioridades de las solicitudes de
interrupción de los componentes dentro del sistema embebido, mientras
menor número tengan, mayor será la prioridad. Para este caso se
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 19
seleccionará como mayor prioridad el componente TIMER, ya que es el
encargado de las interrupciones, y luego el componente JTAG_UART.
Para esto se seleccionará el punto en la columna IRQ de los componentes
mencionados y en orden prioritario (primero TIMER y luego JTAG_UART).
40. Una vez realizado todas las conexiones dentro del sistema embebido,
haber exportado pines y seleccionar prioridades para solicitudes de
interrupción, se procederá a asignar el direccionamiento de direcciones
de todos los bloques de manera automática. Para esto diríjase al menú
System y seleccione la opción Assign Base Addresses, tal cual se muestra
en la figura 37.
41. Por último, proceda a guardar el archivo, haciendo clic en el menú File y
seleccionando la opción Save As. Coloque como nombre del archivo
Sistema.qsys y guárdelo en la carpeta del proyecto, tal como se muestra
en la figura 38.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 20
Figura 38. Guardado del archivo Qsys.
43. Haga clic en Generate HDL que se encuentra en la parte inferior derecha
de la ventana Qsys, tal como se muestra en la figura 40.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 21
Figura 41. Ventana Generation.
45. Aparecerá una ventana indicando que la generación del archivo HDL fue
exitosa. Haga clic en Close, tal como se muestra en la figura 42. Y
posterior a eso haga clic en Finish dentro de la ventana de Qsys.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 22
47. Proceda a hacer clic derecho en la carpeta Files de Project Navigator, y
seleccione la opción Add/Remove Files in Project, tal como se muestra
en la figura 44.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 23
Figura 46. Compilación del proyecto.
53. Una vez eliminado el archivo y que no se encuentre ningún otro archivo
en la ventana Programmer, proceda a escoger la opción Auto Detect
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 24
Figura 48. Ventana Auto Detect.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 25
Figura 50. Programación exitosa del chip FPGA.
58. Lo primero que pedirá Eclipse será ubicar en donde va a estar alojado el
proyecto que vayamos a crear, seleccione la carpeta SISTEMA que se
encuentra dentro de la carpeta del proyecto, como se encuentra en la
figura 52. Haga clic en OK.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 26
Figura 52. Ubicación del proyecto en Eclipse.
65. Se procederá a crear un archivo en lenguaje C, para ello haga clic derecho
en la carpeta prueba1 y seleccione New → File como se muestra en la
figura 56.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 28
Figura 56. Creación de un nuevo archivo de programación.
66. En la ventana New File, coloque el nombre main.c y haga clic en Finish
como se muestra en la figura 57.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 29
Figura 58. Propiedades del archivo Prueba1_bsp.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 30
Figura 60. Compilación del proyecto.
PREGUNTAS
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 32
empezando nuevamente el desplazamiento hacia la izquierda
siempre y cuando no se mantenga presionado KEY3.
KEY3:
0x0001_1030 - 0x0001_103f
LEDR:
0x0001_1020 - 0x0001_102f
CONCLUSIONES
RECOMENDACIONES
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 33
BIBLIOGRAFIA
[1]. User Manual for the Intel DE10-Standard Board. Intel. Fecha de consulta:
Viernes 2 de Marzo de 2018.
Elaborado por:
Ing. Leonardo Muñoz Montesdeoca
Jefe del Laboratorio Sistemas Digitales Avanzado 34