✅ Problema #1: (10%)
Demostrar gráficamente (poner nombras claros a cada bloque) la diferencia entre:
✅ Problema #2: (10%)
Demostrar gráficamente (poner nombras claros a cada bloque) la diferencia entre las arquitecturas:
✅ Problema #3: (2.5%)
¿Qué afirmaciones son correcta de las especificaciones del Advanced Microcontroller Bus Architecture (AMBA)?
✅ Problema #4: (2.5%)
¿Qué afirmaciones son correcta del Advances High Performance Bus (AHB)?
✅ Problema #5: (2.5%)
¿Cuál es el orden correcto de las tareas básicas que ejecuta el procesador durante Interruption Services Routine (ISR)?
✅ Problema #6: (2.5%)
Indique que tabla comparativa es la correcta con respecto a la comparativa entre Multicore y Multiprocessor:
✅ Problema #7: (2.5%)
Una con líneas las afirmaciones correctas:
✅ Problema #8: (5%)
Escribir el código en lenguaje C que imprima el cálculo del valor RMS de un vector de 10 números, crear el vector como una variable local con los valores ascendentes del 1 al 10.
✅ Problema #9: (2.5%)
De acuerdo con la siguiente figura, seleccionar la opción que describe el tipo de organización de los bloques lógicos correspondiente:
✅ Problema #10: (5%)
Dada la siguiente figura, colocar los nombres correctos en la tabla comparativa de tipos de procesadores NIOSii, utilizar las siguientes opciones:
✅ Problema #11: (10%)
Dada las siguientes instrucciones correspondientes a las tareas realizadas por el microprocesador, graficar su arquitectura simplificada donde se muestre claramente el número de la instrucción que está siendo ejecutada.
✅ Problema #12: (5%)
Complete el siguiente cuadro comparativo entre HPS y FPGA de la DE10-Standard, escribir al menos 5 ítems en cada columna:
✅ Problema #13: (10%)
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:
✅ Problema #14: (10%)
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:
✅ Problema #15: (10%)
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.
✅ Problema #16: (10%)
M Li et Al., escribió el paper titulado “The Design of IP Core for LCD Controller Based on SOPC” en donde desarrolla un controlador para pantalla LCD utilizando un solo procesador NIOSii como se describe a continuación:
1. vasanza 1
DISEÑO DE SISTEMAS DIGITALES
EXAMEN 1P
Fecha: 2019/11/29 II termino 2019-2020
Nombre: _________________________________________________ Paralelo: __________
Problema #1: (10%)
Demostrar gráficamente (poner nombras claros a cada bloque) la diferencia entre:
• MPSoC de procesadores no interconectados
• MPSoC interconectados mediante bus de propósito general
2. vasanza 2
• MPSoC de memoria compartida
Problema #2: (10%)
Demostrar gráficamente (poner nombras claros a cada bloque) la diferencia entre las arquitecturas:
• MPSoC en configuración Maestro – Esclavo
• MPSoC Segmentada
3. vasanza 3
Problema #3: (2.5%)
¿Qué afirmaciones son correcta de las especificaciones del Advanced Microcontroller Bus Architecture (AMBA)?
a) Advanced System Bus (ASB) esta fue la primera versión de bus de la arquitectura ARM.
b) Advanced Peripheral Bus (APB) está diseñado para componentes de nivel de sistema y el El AHB
/ ASB está diseñado para componentes periféricos.
c) Advances High Performance Bus (AHB) es una opción bastante costosa de tomar, generalmente
demasiado costosa para un sistema integrado y otro sistema sensible al costo, lo que implica como
lo hace un chipset.
d) Test Bus (ATB) en varios procesadores Cortex se ofrece este bus como interfaz de prueba.
Problema #4: (2.5%)
¿Qué afirmaciones son correcta del Advances High Performance Bus (AHB)?
a) Las señales de AHB se indican con el prefijo V.
b) Las señales son, con la excepción de HRESETn active low.
c) AHB cuenta con un bus de direcciones de 32 bits, aunque es escalable a 64 y 128 bits sin previo
aviso o modificación.
d) HWRITE denota si la transferencia es parte de una ráfaga indefinida de 4, 8 o 16 tiempos.
e) HREADY indica que la transferencia ha finalizado, los esclavos la necesitan como entrada y como
salida. Si la señal es baja, se inserta un estado de espera.
f) Ninguna de las anteriores.
Problema #5: (2.5%)
¿Cuál es el orden correcto de las tareas básicas que ejecuta el procesador durante Interruption Services Routine (ISR)?
a) Suspender la ejecución del programa actual y guardar el estado actual del sistema, transferir el control a una
rutina especial y restaurar el estado del sistema.
b) Optimizar el estado del sistema, transferir el control a una rutina especial y reanudar la ejecución normal del
programa.
c) Suspender la ejecución del programa actual, manejar la excepción y guardar el estado actual del sistema.
d) Ninguna de las anteriores.
Problema #6: (2.5%)
Indique que tabla comparativa es la correcta con respecto a la comparativa entre Multicore y Multiprocessor:
a)
Multicore Multiprocessor
Poco tráfico Mucho tráfico
Ejecuta un solo
programa
lentamente
Ejecuta varios
programas lentamente
Un solo CPU o
procesador
Un solo CPU con dos
o más sistemas
b)
Multicore Multiprocessor
Mucho tráfico Poco tráfico
Ejecuta un solo
programa
lentamente
Ejecuta varios
programas lentamente
Un solo CPU o
procesador
Un sistema con dos o
más CPUs
c)
Multicore Multiprocessor
Poco tráfico Mucho tráfico
Ejecuta un solo
programa
rápidamente
Ejecuta varios
programas
rápidamente
Un solo CPU o
procesador
Un sistema con dos o
más CPUs
d)
Multicore Multiprocessor
Poco tráfico Mucho tráfico
Ejecuta un solo
programa
rápidamente
Ejecuta varios
programas lentamente
Un solo CPU o
procesador
Un sistema con dos o
más CPUs
4. vasanza 4
Problema #7: (2.5%)
Una con líneas las afirmaciones correctas:
• Multiprocessor
• Multicore
• En este modelo, hay una memoria
compartida común (grande) para todos los
procesadores
• Diferentes núcleos ejecutan diferentes
hilos (instrucciones múltiples), operando
en diferentes partes de la memoria (datos
múltiples).
• Todos los núcleos comparten la misma
memoria.
• Cada procesador tiene su propia (pequeña)
memoria local, y su contenido no se
replica en ningún otro lugar.
Problema #8: (5%)
Escribir el código en lenguaje C que imprima el cálculo del valor RMS de un vector de 10 números, crear el vector
como una variable local con los valores ascendentes del 1 al 10.
Respuesta:
5. vasanza 5
Problema #9: (2.5%)
De acuerdo con la siguiente figura, seleccionar la opción que describe el tipo de organización de los bloques lógicos
correspondiente:
a) (a) FPGA de organización tipo mar de puertas. (b) organización tipo Manhattan. (c) organización tipo terraza.
b) (a) FPGA de organización tipo Manhattan. (b) organización tipo terraza. (c) organización tipo mar de puertas.
c) (a) FPGA de organización tipo terraza. (b) organización tipo mar de puertas. (c) organización tipo Manhattan.
d) (a) FPGA de organización tipo terraza. (b) organización tipo Manhattan. (c) organización tipo mar de
puertas.
e) Ninguna de las anteriores
Problema #10: (5%)
Dada la siguiente figura, colocar los nombres correctos en la tabla comparativa de tipos de procesadores NIOSii,
utilizar las siguientes opciones:
• <1400 LEs
• 6 gates
• 290 MHz
• Static
• 270 MHZ
• 1 cycle
• 340 MHz
• 5 gates
• 3 cycles
• <700 LEs
• Dynamic
• Env 2500 LEs
Respuesta:
6. vasanza 6
Problema #11: (10%)
Dada las siguientes instrucciones correspondientes a las tareas realizadas por el microprocesador, graficar su
arquitectura simplificada donde se muestre claramente el número de la instrucción que está siendo ejecutada.
• (Paso 1) La MPU saca y envía por el bus de direcciones el contenido de la dirección 100. Una línea de control
permite la lectura de entrada en el CI memoria programa (leer significa copiar la información de un lugar de
la memoria). Este paso se representa en la figura anterior con el círculo que tiene el número I.
• (Paso 2) La memoria de programa toma la primera instrucción (ENTRADA de datos) en bus de da-tos y el
MPU acepta este mensaje codificado, que es alojado en un lugar especial de la me-moria en el MPU, llamado
registro de instrucción. El MPU decodifica (interpreta) la ins-trucción y determina que ésta necesita el dato
a operar para la instrucción ENTRADA de datos.
• (Paso 3) El MPU envía la información de la dirección 101 por el bus de datos. La línea de control permite la
lectura de la memoria de programa.
• (Paso 4) La memoria de programa coloca la información operada (que viene del puerto 1) en el bus de datos.
El mensaje estaba alojado en la dirección 101 de la memoria programa. El mensa-je codificado (la
información que viene del puerto 1) es sacado del bus de datos y colocado en el registro de instrucciones. El
MPU decodifica ahora la instrucción completa (ENTRA-DA de datos del puerto 1).
• (Paso 5) El MPU provoca la apertura del puerto 1 por medio del bus de datos y las líneas de control en la
unidad de entrada. La forma codificada de A es transferida y almacenada en el acu-mulador del MPU.
• (Paso 6) El MPU envía el contenido de la dirección 102 en el bus de datos. Después habilita las líneas de
control para leer la información de entrada.
• (Paso 7) El código para la instrucción de ALMACENAR datos es leído en el bus de datos y aceptado por el
MPU en el registro de instrucciones.
• (Paso 8) El MPU decodifica la orden de ALMACENAR datos y determina qué hacer con ellos. El MPU
direcciona la siguiente posición en la memoria (103) y permite el ingreso a la memoria de programa.
• (Paso 9) La clave para "la posición 200" de la memoria es puesta por la memoria de programa en el bus de
datos. El MPU acepta esta información operada y la almacena en el registro de ins-trucciones. La instrucción
completa "ALMACENAR datos en la posición 200" ha sido captada de la memoria y decodificada.
• (Paso 10) Aquí empieza el proceso de ejecución. El MPU envía por el bus de direcciones la dirección 200 y
permite la entrada de escritura de la memoria de datos (escribir significa copiar dates en una posición de la
memoria).
• (Paso 11) El MPU coloca la información almacenada en el acumulador, en el bus de datos (la forma
codificada de A). La A es escrita en la posición 200 de la memoria de datos. La segunda ins-trucción ha sido
ejecutada. Este proceso de almacenar no afecta el contenido del acumula-dor, éste aún contiene la forma
codificada de A.
• (Paso 12) Ahora el MPU debe captar la próxima instrucción. Direcciona la posición 104 y permite la lectura
de la memoria de programa.
• (Paso 13) La instrucción en clave para "SALIDA de datos" se encuentra en el bus de datos. El MPU acepta
la instrucción en el registro de instrucción. El MPU decodifica la instrucción y deter-mina la necesidad de
operar.
• (Paso 14) El MPU coloca la dirección 105 en el bus de direcciones y permite la entrada de lectura de la
memoria de programa.
• (Paso 15) La memoria de programa coloca la clave para operar en el "puerto 10" en el bus de datos. El MPU
acepta esta clave en el registro de instrucciones.
• (Paso 16) El MPU decodifica la instrucción completa "SALIDA de datos al puerto 10". La misma unidad
activa el puerto 10 usando el bus de direcciones y las líneas de control hacia la uni-dad de salida. Coloca la
clave de A (aún guardada en el bus de datos). La A se transmite.
7. vasanza 7
Respuesta:
Problema #12: (5%)
Complete el siguiente cuadro comparativo entre HPS y FPGA de la DE10-Standard, escribir al menos 5 ítems en
cada columna:
HPS - Hw FPGA - Sw
8. vasanza 8
Respuesta:
HPS - Hw FPGA - Sw
• 925MHz Dual-core ARM Cortex-A9
MPCore processor
• 1GB DDR3 SDRAM (32-bit data
bus)
• 1 Gigabit Ethernet PHY with RJ45
connector
• 2-port USB Host, normal Type-A
USB connector
• Micro SD card socket
• Accelerometer (I2C interface +
interrupt)
• UART to USB, USB Mini-B
connector
• Warm reset button and cold reset
button
• One user button and one user LED
• LTC 2x7 expansion header
• 128x64 dots LCD Module with
Backlight
• Intel Cyclone® V SE 5CSXFC6D6F31C6N device
• Serial configuration device – EPCS128
• USB-Blaster II onboard for programming; JTAG Mode
• 64MB SDRAM (16-bit data bus)
• 4 push-buttons
• 10 slide switches
• 10 red user LEDs
• Six 7-segment displays
• Four 50MHz clock sources from the clock generator
• 24-bit CD-quality audio CODEC with line-in, line-out, and
microphone-in jacks
• VGA DAC (8-bit high-speed triple DACs) with VGA-out
connector
• TV decoder (NTSC/PAL/SECAM) and TV-in connector
• PS/2 mouse/keyboard connector
• IR receiver and IR emitter · One HSMC with Configurable I/O
standard 1.5/1.8/2.5/3.3
• One 40-pin expansion header with diode protection
• A/D converter, 4-pin SPI interface with FPGA
Problema #13: (10%)
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:
Fig. Arquitectura del sistema BCI
9. vasanza 9
Fig. Flujo de diseño del sistema BCI
La arquitectura se basa en la tecnología FPGA construida con el entorno Altera y herramientas integradas dedicadas
como: Qsys para los componentes de diseño de hardware y Eclipse para el desarrollo de software integrado. El
sistema integrado propuesto que incluye:
• La versión más rápida de Nios-II, caché de datos con un tamaño de 64 Kbytes y caché de instrucciones de 4
Kbytes.
• Un temporizador para medir el tiempo de ejecución, con contador de 32 bits y un tiempo de espera de 10
microsegundos.
• JTAG-UART para establecer comunicación entre Eclipse y la placa Stratix-IV.
• Memoria DDR2 con 1 GB de tamaño.
• DMA (Acceso directo a memoria) transfiere datos de la manera más eficiente posible, leyendo y escribiendo
datos en el espacio máximo asignado por la fuente o el destino.
• Memoria en chip con un tamaño de 4 KB para sincronizar la transferencia de datos entre el origen y el destino
a través de la interfaz DMA.
• PLL para la generación de reloj y el diseño del sistema de sincronización.
Referencia:
Belwafi, K., Ghaffari, F., Djemal, R., & Romain, O. (2017). A hardware/software prototype of EEG-based BCI system
for home device control. Journal of Signal Processing Systems, 89(2), 263-279.
Respuesta:
10. vasanza 10
Problema #14: (10%)
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:
Fig. Arquitectura del sistema BCI basado en filtro dinámico
Fig. Flujo de diseño del sistema BCI
El sistema integra los siguientes componentes:
• La versión más rápida del caché de datos Nios-II, con un tamaño de 64 KB y un caché de instrucciones de 4 KB.
• Un temporizador para medir el tiempo de ejecución, con un contador de 32 bits, y el tiempo de espera es de 10
µs.
• JTAG UART para establecer comunicación entre Eclipse y la placa Stratix-IV.
• Memoria DDR2 con 1 GB de tamaño, conectada al diseño del sistema a través de un controlador DDR2.
• Acceso directo a memoria (DMA) para transferir datos de manera eficiente, leer y escribir datos en el espacio
máximo asignado por la fuente o el destino.
• Memoria en chip con un tamaño de 4 KB para sincronizar la transferencia de datos entre el origen y el destino a
través del Interfaz DMA.
• WOLA Windowing IP.
• GPIO (UART) para establecer la comunicación entre el FPGA y el sistema de adquisición (OpenBCI) para
validar el sistema EBCI de acuerdo con el enfoque en línea.
• El sistema utiliza un bloque PLL para poder generar diferentes rangos de frecuencias que necesitan los filtros.
Referencia:
Belwafi, K., Romain, O., Gannouni, S., Ghaffari, F., Djemal, R., & Ouni, B. (2018). An embedded implementation
based on adaptive filter bank for brain–computer interface systems. Journal of neuroscience methods, 305, 1-16.
11. vasanza 11
Respuesta:
Diseño SoPC en las FPGAs
Problema #15: (10%)
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.
La FPGA juega un papel muy importante en el sistema, ya que la CPU Soft-Core está construida dentro de la
FPGA y todos los componentes del sistema están conectados a la CPU Soft-Core a través de la FPGA. El
procesador del sistema digital (DSP) también desempeña un papel importante al proporcionar a la placa su
potencia de procesamiento secuencial, mientras que el FPGA realiza funciones de interfaz paralela y de bajo
nivel para componentes externos como el GPS y la IMU. El DSP es TMS320C6678 basado en múltiples núcleos
con muchas ventajas para las capacidades de procesamiento, y se comunica con el FPGA a través del puerto
UART al bus de datos Avalon.
La placa del sensor está representada por ADIS16350, que es un giroscopio y acelerómetro Tri Axis, que es
básicamente el conjunto completo de IMU. Esto se incrementa con sensores de presión absoluta y diferencial y
un módulo OEM μBlox GPS.
El sistema integrado en el FPGA emplea Nios-II, que es un sistema de procesador equivalente a un
microcontrolador o “computadora en un chip” que incluye un procesador y una combinación de periféricos y
memoria en un solo chip. La idea es combinar un sistema basado en microcontrolador con el FPGA para superar
las limitaciones de la mayoría de los FCS actualmente en el mercado y mejorar el rendimiento.
El sistema integra los siguientes componentes:
• Avalon Data Bus and Memory: La interfaz Avalon es una interfaz síncrona definida por un conjunto de tipos
de señal con funciones para soportar la transferencia de datos. Hay dos tipos de puerto de interfaz Avalon, el
puerto maestro Avalon y el puerto esclavo Avalon. El puerto maestro de Avalon inicia la transferencia y el puerto
esclavo de Avalon responde a las solicitudes de transferencia. El Avalon Bus se comunica con la memoria del
sistema (memoria en chip y SDRAM) para almacenar datos para el sistema.
• Universal Asynchronous Receiver/Transmitter: El UART con interfaz Avalon implementa un método para
comunicar flujos de caracteres en serie entre un sistema integrado en un Intel FPGA y un dispositivo externo (en
este caso, DSP Multi-Core y GPS). El núcleo implementa la sincronización del protocolo RS-232 y proporciona
velocidad de transmisión ajustable, paridad, parada y bits de datos. El core UART proporciona una interfaz
esclava Avalon Memory-Mapped (Avalon-MM) que permite que los periféricos maestros Avalon-MM (como
un procesador Nios-II) se comuniquen con el núcleo simplemente leyendo y escribiendo el control y registros de
datos.
• Serial Peripheral Interface: El SPI con la interfaz Avalon implementa el protocolo SPI y proporciona una
interfaz Avalon Memory-Mapped (Avalon-MM) en el back-end. El núcleo SPI puede implementar el protocolo
maestro o esclavo. El SPI es el protocolo de comunicación entre la FPGA y la IMU (ADIS16350).
• Counter and Pulse-Width Modulation: Se requiere una interfaz de modulación de ancho de pulso para
controlar los servodrivers. Un servodriver se controla enviando un pulso cada cierta cantidad de ms (ejemplo:
12. vasanza 12
20ms), o una cierta cantidad de Hz (ejemplo: 50Hz), al servo. La duración o el ancho del pulso determina el
ángulo de salida del servo. Las especificaciones de los servos pueden variar entre fabricantes.
• JTAG- UART: El core JTAG UART con interfaz Avalon implementa un método para comunicar flujos de
caracteres en serie entre una PC host y un sistema Platform Designer en un Intel FPGA. La interfaz visible para
el usuario del núcleo JTAG UART consta de dos registros de 32 bits, datos y control, a los que se accede a través
de un puerto esclavo Avalon. Un maestro Avalon, como un procesador Nios-II, accede a los registros para
controlar el núcleo y transferir datos a través de la conexión JTAG. El núcleo opera en unidades de datos de 8
bits a la vez; ocho bits del registro de datos sirven como una carga útil de un carácter.
Referencia:
Bilendo, F., & Shouzhao, S. (2018). Hardware Design of a Flight Control Computer System based on Multi-core
Digital Signal Processor and Field Programmable Gate Array.
Respuesta:
Diseño SoPC en las FPGAs
Problema #16: (10%)
M Li et Al., escribió el paper titulado “The Design of IP Core for LCD Controller Based on SOPC” en donde
desarrolla un controlador para pantalla LCD utilizando un solo procesador NIOSii como se describe a continuación:
El SOPC (System on Processor Chip) tiene una pantalla LCD que se conecta con el controlador LCD, la
SDRAM se conecta con el controlador SDRAM y la comunicación de los dos controladores con el procesador
NIOS II a través de la interfaz mapeada de memoria Avalon (Avalon-MM).
El control de múltiples relojes generados por el mismo PLL puede generar relojes con diferentes frecuencias
o fases. El componente Avalon ALTPLL agregado en Qsys puede generar cinco relojes diferentes como
máximo, pero solo se necesitan dos salidas en este diseño. De acuerdo con el principio de funcionamiento de
SDRAM, se sabe que los relojes que ingresan a la SDRAM y al controlador SDRAM deben tener la misma
frecuencia y tener una cierta diferencia de fase para garantizar la lectura y escritura correcta de los datos. En
este diseño, la entrada al controlador SDRAM y SDRAM es una señal de reloj bidireccional con una misma
frecuencia de 100MHz y una diferencia de fase de 90 °. Y clk_100m2 exporta para el reloj de SDRAM,
clk_50m es el reloj del sistema. Necesitamos configurar el sistema de procesador NIOS II, seleccionar y
configurar los periféricos e IP, luego conectar los módulos periféricos, generar el sistema, diseñar el módulo
de nivel superior en el software Quartus II, asignar los pines y compilarlos completamente, y descargar si se
compila correctamente, el modelo del chip FPGA en esta placa de desarrollo es EP4CE10F17C8.
Referencia:
Li, M., Zhou, X., & Guo, Q. (2018). The Design of IP Core for LCD Controller Based on SOPC. In MATEC
Web of Conferences (Vol. 232, p. 04074). EDP Sciences..