¿Cuáles son los usos típicos de un procesador suave como MicroBlaze?


8

Sé que la combinación FPGA-DSP se usa típicamente para electrónica de potencia de alta gama / ultrasonido / MRI / etc. ¿Es posible que el procesador blando reemplace completamente el DSP incluso en FPGA de gama baja como Spartan 3/6?

Agregado: ¿Cuál sería la razón para tener múltiples procesadores softcore en un FPGA?


Depende de cuán intensivo sea DSP su aplicación, básicamente.
Fizz

Me vienen a la mente los odiados winmodems , aunque allí tenías una CPU de uso general para hacer el DSP.
Fizz

Aparentemente puedes hacer radio definida por software en un Virtex 5 y también en el Altera Stratix .
Fizz

Y aparentemente algunos lo han intentado en un Spartan 6 LX45. ¿Qué aplicación tienes en mente?
Fizz

El problema principal que vi en ese hilo es el útil software Vivado (basado en PC) que funciona para generar filtros, etc. para Virtex no le permite apuntar al Spartan. No estoy seguro si eso fue solo una decisión de marketing [segmentación] o si el hardware Spartan es demasiado bajo.
Fizz

Respuestas:


11

Siéntase libre de leer, o saltar hasta el final. ¡Me doy cuenta de que seguí un poco!


En general, no usarías un procesador suave para reemplazar las cosas de DSP. El hardware dedicado generalmente puede manejar mayores volúmenes de datos más rápido porque lo diseñaría para hacer una tarea específica muy bien, en lugar de ser una CPU de propósito general.

Donde los procesadores suaves entran en su elemento es el control y la coordinación.

Si diseñara un sistema que necesitara procesar un gran volumen de datos, digamos una adquisición de imágenes de alta velocidad de cuadros, no sería posible usar un procesador de núcleo blando para manejar todos los datos, simplemente habría demasiada sobrecarga en la CPU Lo que haría es diseñar un firmware dedicado para realizar la tarea de adquisición específica necesaria (por ejemplo, filtrar los datos, almacenarlos en la memoria, etc.).

Sin embargo, todavía necesita alguna forma de indicarle cuándo hacer las cosas: cuándo desea capturar, si se le ha ordenado al dispositivo que descargue los datos, etc. Estas cosas no son muy fáciles de hacer en hardware dedicado, no si hay secuencias de eventos con entrada del usuario, básicamente tareas que no hacen lo mismo una y otra vez. En este caso, usaría un procesador de núcleo blando, ya que es mucho más fácil escribir código de procedimiento para algunas tareas.

Otro ejemplo (real), he estado trabajando en un sistema de adquisición de ultrasonidos que transmite datos a través de PCIe. Las tareas que realiza se comunican desde el usuario y varias partes del sistema necesitan configuración. La coordinación del sistema no requiere grandes volúmenes de datos, sino que necesita flexibilidad, por lo que se adapta bien a una CPU de núcleo blando programada en este caso C. Hacer lo mismo en hardware físico requeriría grandes cantidades de recursos la mayoría de los cuales se usarían con poca frecuencia, por lo que no se vería ningún beneficio en comparación con una CPU.

Vale la pena señalar que algunas tareas pueden variar según la entrada del usuario, pero aún son mejores en hardware dedicado. De hecho, una parte del código (programación de controladores DMA para almacenar datos en el disparador) se realizó originalmente en la CPU en aproximadamente 15 líneas de código, pero debido a que ese bit debe hacerse en el momento en que se produce un disparador, usando una CPU que puede ser ocupado con otras cosas no es lo ideal. En cambio, la tarea se programa en un módulo Verilog, pero en el proceso se convierte en una máquina masiva de 500 líneas de estado con aproximadamente 15 estados y una gran cantidad de lógica de soporte, en realidad no. Pero a pesar de que consume muchos más recursos, es un tiempo crítico, por lo que es una necesidad.

Del mismo modo, necesito una generación de disparo precisa del ciclo de reloj, por lo que un módulo para realizar esa tarea es parte del sistema en lugar de hacerlo en una CPU. Tanto este núcleo como el anterior son ejemplos de cómo puede usar una CPU para realizar algunas tareas, pero para otras críticas puede desarrollar hardware para complementar la CPU, de la misma manera que tiene temporizadores, etc. en un microcontrolador.


Entonces para resumir:

Los FPGA son excelentes herramientas flexibles, pero la mayoría de los diseños necesitan una combinación de CPU de núcleo blando, módulos configurables (por ejemplo, temporizadores) y hardware dedicado de una sola tarea.

Las CPU son excelentes para la interacción del usuario, controlan el orden de los eventos y configuran los controladores. Son como el coordinador, el cerebro.

Es posible que algunos diseños necesiten realizar tareas bastante repetitivas que se pueden configurar para adaptarse a diferentes entradas: módulos de temporizador, pantallas de caracteres, eliminación de rebotes de botones, etc. Esto podría hacerse fácilmente con una CPU, pero si desea hacer varias de ellas con precisión en una vez que se vuelve más complicado, están compartiendo los mismos recursos de CPU. Entonces, lo que puede hacer es moverlos a un hardware dedicado que esté estrechamente conectado a la CPU: brinde a la CPU la oportunidad de realizar otras tareas. Estos ayudan a la CPU a hacer su trabajo e interactuar con su entorno, como sus sentidos.

DSP dedicado, transferencia de datos (DMA), básicamente cualquier tarea que haga lo mismo una y otra vez a altas velocidades, realmente puede beneficiarse de una lógica dedicada en términos de velocidad, y también posiblemente de potencia. Estos son como los músculos del dispositivo, hacen todo el trabajo pesado.

Tendrás que disculpar las divagaciones un poco, pero me gusta este campo de EE. Esperemos que lo anterior sea comprensible y le brinde una idea adicional del maravilloso mundo de los FPGA.


@tcrosley Entiendo su punto de vista, pero si digo que desea agregar dos números de 128 bits en un procesador de 32 bits, tomará varios ciclos. El énfasis estaba en un poder . Pero en realidad depende completamente de lo que está haciendo en su conjunto. Si todo lo que quisieras hacer fuera la adición, tener una CPU completa no tendría sentido en un FPGA, solo crea una instancia de un sumador. Así que creo que eliminaré esa parte.
Tom Carpenter

1

Como Tom mencionó, el MicroBlaze no se trata solo de reemplazar un DSP, sino de reemplazar un microcontrolador tradicional que de otro modo podría estar en el tablero.

Esto se debe a que el núcleo del procesador blando MicroBlaze no es un sustituto particularmente bueno para un DSP, ya que carece de características especiales de DSP, como una instrucción MAC (multiplicar y acumular), buffers circulares, direccionamiento de bits invertidos y lógica de saturación.

Por lo tanto, un núcleo blando DSP separado, como el descrito en este documento para el Xilinx Virtex-4, sería una mejor opción.

Muchos diseños DSP se beneficiarían de tener ambos núcleos blandos, ya que muchos, si no la mayoría de los diseños digitales que incluyen un FPGA también necesitan un microcontrolador general de algún tipo. Mientras haya suficientes recursos disponibles en el FPGA (ver más abajo), los procesadores blandos como el MicroBlaze no solo eliminan una parte en la lista de materiales (y, por supuesto, su costo asociado), sino que también liberan pines en el FPGA ya que hay No es necesario interconectarse entre el FPGA y un microcontrolador. El espacio requerido para las trazas entre las dos partes también se libera.

El MicroBlaze puede funcionar a 210 MHz en un Virtex-5. Las versiones con una MMU pueden ejecutar Linux. Un MicroBlaze mínimo necesita alrededor de 600 LUT, y puede crecer hasta 4000 si se agregan una FPU, MMU, caché y otras cosas. El procesador de software DSP mencionado anteriormente usó 1700 LUT.

Dado que un FPGA Virtext-5 puede tener de 30,000 a más de 200,000 LUT, incluso incluir ambos núcleos blandos representa solo una fracción del chip. La incorporación de ambos permite que las operaciones convencionales y DSP se realicen en paralelo, si se desea, a costa de cierta complejidad adicional para la sincronización entre las dos.

La IP para MicroBlaze es gratuita siempre que la use en un FPGA Xilinx y tenga licencia de ISE Design Suite Embedded Edition (o equivalente).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.