En este laboratorio se diseñó hardware y software embebido para medir y controlar la velocidad de un motor DC utilizando un sensor IR y un FPGA Artyx-7. El hardware diseñado en Vivado incluyó un procesador MicroBlaze y varios IPs como switches, LEDs, display, botones, XADC, timer y UART. El software en Vitis implementó tareas multi-hilo para medir la velocidad del motor usando el sensor IR, calcularla mediante una fórmula y mostrarla a través de UART y los displays.
✅ 1. Indique cual es el resultado que se debe imprimir de: value of var variable, adress stored in ip variable y value of *ip variable
✅ 2. Indique cual es el resultado que se debe imprimir
✅ 3. ¿Cuál de las siguientes afirmaciones es la correcta correspondiente a las características de softcore, firmcore, hardcore?
✅ 4. Indique el significado de SIMD y MIMD.
✅ 5. Indique que tabla comparativa es la correcta con respecto a la comparativa de parámetros de arquitectura RISC vs CISC.
✅ 6. Seleccione la descripción correcta de los bits del registro de control status en el procesador NIOSii.
✅ 7. Complete utilizando las opciones el siguiente cuadro comparativo entre Proccessor y FPGA:
✅ 8. Seleccione las afirmaciones correctas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 9. Seleccione las afirmaciones correctas con respecto al módulo de depuración JTAG en el procesador NIOSII:
✅ 10. Completar el siguiente cuadro:
✅ 11. De cada una, explique claramente el significado y de un ejemplo gráfico de las arquitecturas SISD y MISD:
✅ 12. De acuerdo con la siguiente figura, ¿qué resultado debería imprimirse?
✅ 13. Una con líneas según corresponda la combinación de procesadores:
✅ 14. Seleccione las opciones correctas con respecto a los registros de control pteaddr y tlbacc en el procesador:
✅ 15. Indique, cual es la diferencia entre los registros de control ipending, cpuid, exception:
✅ 16. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del bus AVALON:
✅ 17. (2%) Shen et Al., escribió el paper titulado “An FPGA-based Distributed Computing System with Power and Thermal Management Capabilities” en donde desarrolla una plataforma computacional distribuida compuesta de múltiples FPGAs conectadas via Ethernet y cada FPGA está configurada como un sistema multi-core. Los núcleos en el mismo FPGA se comunican a través de la memoria compartida, mientras que diferentes FPGA se comunican a través de enlaces Ethernet, como se muestra en la siguiente gráfica:
✅ 18. (2%) Realizar el diagrama de circuito de hardware de un módulo de servocontrol, que cumpla con las siguientes especificaciones:
✅ 1. Indique cual es el resultado que se debe imprimir de: value of var variable, adress stored in ip variable y value of *ip variable
✅ 2. Indique cual es el resultado que se debe imprimir
✅ 3. ¿Cuál de las siguientes afirmaciones es la correcta correspondiente a las características de softcore, firmcore, hardcore?
✅ 4. Indique el significado de SIMD y MIMD.
✅ 5. Indique que tabla comparativa es la correcta con respecto a la comparativa de parámetros de arquitectura RISC vs CISC.
✅ 6. Seleccione la descripción correcta de los bits del registro de control status en el procesador NIOSii.
✅ 7. Complete utilizando las opciones el siguiente cuadro comparativo entre Proccessor y FPGA:
✅ 8. Seleccione las afirmaciones correctas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 9. Seleccione las afirmaciones correctas con respecto al módulo de depuración JTAG en el procesador NIOSII:
✅ 10. Completar el siguiente cuadro:
✅ 11. De cada una, explique claramente el significado y de un ejemplo gráfico de las arquitecturas SISD y MISD:
✅ 12. De acuerdo con la siguiente figura, ¿qué resultado debería imprimirse?
✅ 13. Una con líneas según corresponda la combinación de procesadores:
✅ 14. Seleccione las opciones correctas con respecto a los registros de control pteaddr y tlbacc en el procesador:
✅ 15. Indique, cual es la diferencia entre los registros de control ipending, cpuid, exception:
✅ 16. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del bus AVALON:
✅ 17. (2%) Shen et Al., escribió el paper titulado “An FPGA-based Distributed Computing System with Power and Thermal Management Capabilities” en donde desarrolla una plataforma computacional distribuida compuesta de múltiples FPGAs conectadas via Ethernet y cada FPGA está configurada como un sistema multi-core. Los núcleos en el mismo FPGA se comunican a través de la memoria compartida, mientras que diferentes FPGA se comunican a través de enlaces Ethernet, como se muestra en la siguiente gráfica:
✅ 18. (2%) Realizar el diagrama de circuito de hardware de un módulo de servocontrol, que cumpla con las siguientes especificaciones:
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN B RESUELTA 1er PARCIAL (2019 2do ...Victor Asanza
✅ 1. (6%) Bilendo et Al., escribió el paper titulado “Hardware Design of a Flight Control Computer System based on Multi-core Digital Signal Processor and Field Programmable Gate Array” en donde desarrolla un sistema de hardware basado en FPGA para mejorar la potencia de procesamiento y optimizar la relación rendimiento / tamaño para un sistema de control de vuelo.
✅ 2. Indique cuál de las siguientes respuestas explica el significado de SIMD y SISD:
✅ 3. ¿Cuál es el orden correcto de las tareas básicas que ejecuta el procesador durante Interruption Services Routine (ISR)?
✅ 4. Seleccione las afirmaciones correctas con respecto al módulo de depuración JTAG en el procesador NIOSII:
✅ 5. Dada la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del procesador NIOSii, utilizar las siguientes opciones:
✅ 6. Seleccione las opciones correctas con respecto a los registros de control pteaddr y tlbacc en el procesador:
✅ 7. Seleccione la descripción correcta de los bits del registro de control status en el procesador NIOSii.
✅ 8. Indique que respuesta describe los valores que se deben de imprimir de las variables ‘i’ y ‘count’:
✅ 9. Escribir el código en lenguaje C que permita calcular el valor RMS de un vector de 10 números, crear el vector como una variable local con los valores ascendentes del 1 al 10.
✅ 10. Complete el siguiente cuadro comparativo entre Proccessor y FPGA:
✅ 11. Seleccione las afirmaciones correctas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 12. Complete el siguiente cuadro comparativo entre HPS y FPGA de la DE10-Standard, escribir al menos 5 ítems en cada columna:
✅ 13. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura de los Elementos Lógicos (LE) del Cyclone IV:
✅ 14. Dada la siguiente arquitectura simplificada del microprocesador, colocar la numeración correspondiente a cada una de las tareas realizadas por el microprocesador:
✅ 15. Unir con líneas los elementos o tareas básicas de cada temática:
✅ 1. (3.5%) Belwafi et Al., escribió el paper titulado “A Hardware/Software Prototype of EEG-based BCI System for Home Device Control” en donde desarrolla un Brain Computer Interface (BCI) basado en FPGA, como se muestra en la siguiente gráfica
✅ 2. ¿Cuáles de las siguientes afirmaciones NO es la correcta correspondiente a las características de softcore, firmcore, hardcore?
✅ 3. Indique el significado de MISD y MIMD.
✅ 4. Indique cual es el resultado que se debe imprimir de: value of var variable, adress stored in ip variable y value of *ip variable
✅ 5. Completar la tabla comparativa de parámetros de arquitectura RISC vs CISC.
✅ 6. Dada el siguiente código que calcula el valor promedio de una señal, indicar que cambio debe realizar para obtener el valor RMS y seleccionar el valor que deberá imprimir luego de esta modificación:
✅ 7. Seleccione las descripciones que son incorrectas de los bits del registro de control status en el procesador NIOSii.
✅ 8. Seleccione las afirmaciones incorrectas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 9. Complete utilizando las opciones el siguiente cuadro comparativo entre HPS y FPGA de la DE10-Standard:
✅ 10. Seleccione las afirmaciones incorrectas con respecto al módulo de depuración JTAG en el procesador NIOSII:
✅ 11. Completar el siguiente cuadro:
✅ 12. Seleccione las opciones incorrectas con respecto a los registros de control pteaddr y tlbacc en el procesador:
✅ 13. Indique, cuáles de las siguientes afirmaciones son correctas de los registros de control ipending, cpuid y exception:
✅ 14. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del bus AVALON:
✅ 15. (3.5%) Belwafi et Al., escribió el paper titulado “A novel embedded implementation based on adaptive filter bank for brain-computer interface systems” en donde desarrolla un Brain Computer Interface (BCI) basado en filtrado dinámico de señales EEG adquiridas desde un sistema OPENBCI basado en FPGA, como se muestra en la siguiente gráfica
Una señal analógica es una señal generada por algún tipo de fenómeno electromagnético; que es representable por una función matemática continua en la que es variable su amplitud y periodo en función del tiempo.
Convocatoria de becas de Caja Ingenieros 2024 para cursar el Máster oficial de Ingeniería de Telecomunicacion o el Máster oficial de Ingeniería Informática de la UOC
1. DC Motor Speed Control with IR Sensor and
FPGA based Embedded SoC with RTOS
GRUPO 1
Camacho Luis
Cano Cristhian
Chicaiza Carmen
Morales David
Docente: Ing. Byron Navas Ph.D.
2. Objetivo
El objetivo de este laboratorio L4 es diseñar el hardware y software embebido
de un SoC basado en FPGA que correrá una aplicación en un soft-processor
Microblaze, usando Vivado, Vitis, una FPGA Artyx-7 (Basys 3), y el sistema
operativo de tiempo real (RTOS), i.e., FreeRTOS. De esta manera, el estudiante
aplicará los conceptos y metodologías aprendidos durante el curso de Sistemas
Embebidos. El propósito principal de la aplicación es medir la velocidad RPM de
un motor DC usando un sensor IR conectado al XADC del FPGA Artyx-7, y
controlar el movimiento del motor para mantenerlo en un valor fijo. La
aplicación de FreeRTOS es multi-tasking, ejecuta las tareas de acuerdo a una
agenda (schedule), usa colas para comunicación, y semáforos mutex para acceso
a recursos compartidos.
3. Resumen
En el presente laboratorio se realizó el diseño de un Soc HW-SW Sistema con un procesador MicroBlaze,
además se realizó el diseño del Hardware utilizando Vivado, en el cual se escogió los IPs correspondientes
a switches, leds, display, 4 push buttons, AXI XADC, AXI Timer with interruptions, AXI Uart Lite.
Se utilizó Vitis para el diseño del software, el propósito del software es medir y controlar la velocidad de
un motor DC, para lo cual se utilizó un sensor infrarrojo (sensor IR) el cual emite la señal dependiendo de
la velocidad del motor, la velocidad se calcula a partir de estos pulsos mediante una fórmula matemática,
como último paso se presenta la velocidad a través del terminal UART y en los display de la FPGA Basys
3.
5. CREACIÓN HW
Se creó el Hardware con microblaze en Vivado, a este se lo coloco todos los IPs necesarios para implementar
posteriormente el software, el diseño se lo puede observar en la siguiente figura.
MicroBlaze soft-processor with AXI Interconnect 128
KB Data LMB BRAM , 128 KB Instructions LMB
BRAM.
La CPU MicroBlaze es una familia de configuraciones
de microprocesador RISC predefinidas modificables de
32 bits / 64 bits. Se realiza la implementación del
módulo Microblaze como se observa en la figura 1. con
la especificación de 64 bits.
En la anterior figura se observa la memoria local BRAM con
sus respectivos módulos: bus local de memoria, Controlador
BRAM, y el bloque generador de memoria.
6. La IP de interconexión AXI conecta uno o más dispositivos
maestros asignados en memoria AXI a uno o más dispositivos
esclavos asignados en memoria. Las interfaces AXI cumplen
con las especificaciones AMBA AXI. En la siguiente figura a
continuación se puede observar el módulo AXI Interconnect
que en la que se observa la conexión de los dispositivos
maestros a sus respectivos dispositivos esclavos.
En la anterior figura se observa la conexión al abrir el bloque
de AXI Interconnect en el bloque Crossbar se puede
observar M_AXI se conecta al AXI
7. GPIOs para conectar 16-bit switches, 16-LEDs, Display's 7-
segments, Display's Anodes, y 4-push buttons. El AXI GPIO
proporciona una interfaz de entrada / salida de propósito
general a la interfaz AXI (Interfaz extensible avanzada). Se
realizo la configuración para los switches 16 bits, displays de
7 segmentos, displays de ánodo común y 4 push button,
requeridos para el diseño como se observa en la figura se
verifica la conexión de los bloques GPIO con su respectiva
etiqueta.
El XADC Wizard automatiza la tarea de configurar el
bloque de conversión de analógico a digital XADC en
FPGA de la Serie 7 al modo de operación deseado con
una GUI de personalización intuitiva.
8. AXI Timer with interruptions
El temporizador / contador AXI es un módulo
temporizador de 32 bits que se conecta a la interfaz
AXI4-Lite. En modo cascada, se puede utilizar
como módulo temporizador de 64 bits como se
muestra en la figura de a continuación.
AXI UART Lite. Otros IPs de soporte.
La interfaz LogiCORE IP AXI Universal Asynchronous
Receiver Transmitter (UART) Lite se conecta a la
especificación Advanced eXtensible Interface (AXI) de la
arquitectura de bus de microcontrolador avanzado (AMBA)
y proporciona la interfaz del controlador para la
transferencia de datos en serie asíncrona. Este núcleo Soft
LogiCORE IP está diseñado para interactuar con el
protocolo AXI4-Lite
Módulo Pmod Utilizado
9. Ingreso de la Librería
El uso de la librería es muy importante ya que nos permitirá enlazar con los demás
módulos presentes en hardware, utilizaremos la librería más actual disponible.
10. Especificaciones en el MicroBlaze
Seleccionamos el tamaño de la memoria local en este caso los 128 Kb y habilitamos el
control de interrupciones.
11. Creación del Software - Proyecto en C
Reconoce el procesador
MicroBlaze con arquitectura
de 32 bits
Creamos el proyecto
en lenguaje C
13. Creación del SW
Se elige la opción de Create New Application, y se
selecciona como hardware el creado en vivado.
En la imagen se puede notar el encabezado del código,
en este consta la inclusión de algunas librerías
necesarias y se define con otros nombres a los GPIO y
canales de cada uno de estos para una mejor
comprensión
14. En la imagen se presenta el “main”, dentro del cual se crearon las Task1 y Task2.
15. A continuación, se muestra el código tanto para la Task1 y Task2, en primer lugar se declaran las variables,
parámetros y luego se muestran las diferentes funciones.
16. Funcionamiento del sensor IR
El sensor es utilizado junto a un encoder incremental para poder medir la
velocidad del motor, al encoder se lo inserta en el eje del motor y entre el IR
receiver y el IR emitter mientras en encoder gira el sensor cuando existe un
“hueco” existe paso de luz entre emisor y receptor lo que provoca que el sensor
un valor de voltaje distinto de cero, y por otro lado cuando estos están
“tapados” emitirá el sensor un voltaje de cero. La señal de la salida del sensor
es como la siguiente que se presenta idealmente.
Fuente: Andromina robot V2.0
17. Funcionamiento del sensor IR
El sensor IR cuando existe paso de luz entre emisor y receptor el voltaje máximo es el de la fuente en
este caso se usó la fuente de 3.3V que proporciona el mismo puerto XADC.
La señal real que se obtendría sin poner el capacitor tendría mucho ruido “rebotes” lo que llevaría a
que se lean más pulsos de lo que en realidad son lo que desencadena una serie de errores.
Fuente: Andromina robot V2.0
18. Escritura de la velocidad en los Display
Como se puede observar a continuación, se tiene la declaración de las variables:
19. Escritura de la velocidad en los Display
No se puede enviar directamente el valor de la velocidad a los Display, sino que se debe realizar ciertas
acciones para poder separar los dígitos de la velocidad que se ha leído.
20. Simulación
Para realizar la simulación, primero se Programa la FPGA, luego se compila el
software y por último de lo ejecuta con la opción Run As / Launch on Hardware.
Para abrir la terminal hay que dirigirse a Windows/Show view /Terminal, y se
realiza la conexión Serial con el puerto al que está conecta la FPGA.
21. IMPLEMENTACIÓN DEL CIRCUITO -
PRUEBAS
LINK DE VIDEO:
https://drive.google.com/drive/folders/1p8nrx
LuHGh61FYLi-
C4pYgSYbeXVt5l9?usp=sharing
25. Conclusiones
● Se diseño, simulo e implementó un SoC HW-SW de procesador MicroBlaze el cual
cumple con la mayoría de las especificaciones pedidas, la más importante la
utilización del módulo XADC para leer los datos que proporciona el sensor IR.
● Se cumple con el objetivo principal que es medir la velocidad del motor e imprimir
esta velocidad tanto en el terminal UART como los displays de la FPGA.
● Se puede mejorar el software presentado en el laboratorio, utilizando interrupciones
para tener una mayor precisión en la medida de la velocidad del motor, pues
actualmente cuando se detiene el motor pero el encoder de este se detiene impidiendo
que pase luz entre emisor y receptor del sensor IR el programa exhibe la velocidad
del motor como la máxima en lugar de la mínima.
26. Bibliografía
1. Navas. B., “Sistemas Embebidos A403: Material del Curso”, Universidad de las Fuerzas Armadas
- ESPE, DEEL ASDI, Quito, Ecuador.
2. Digilent Reference, “Pmod PIR”, Recuperado de:
https://digilent.com/reference/pmod/pmodpir/start
3. Xilinx Reference, AXI Timer/Counter, Recuperado de:
https://www.xilinx.com/products/intellectual-property/axi_timer.html
4. Xilinx Reference, AXI UARTLite, Recuperado de: https://www.xilinx.com/products/intellectual-
property/axi_uartlite.html
5. Xilinx, «7 Series FPGAs and Zynq-7000 SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital
Converte,» 2018.