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

8

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

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

    
pregunta SunnyBoyNY

2 respuestas

11

Siéntete libre de leer por encima o de saltar hasta el final. ¡Me doy cuenta de que fui un poco!

En general, no utilizarías un procesador de software para reemplazar cosas 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 de software entran en su elemento es el control y la coordinación.

Si tuviera que diseñar un sistema que necesitara procesar un gran volumen de datos, digamos que la adquisición de imágenes de alta velocidad de fotogramas 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 sería diseñar un firmware dedicado para realizar la tarea de adquisición específica necesaria (por ejemplo, filtrar los datos, almacenar en la memoria, etc.).

Sin embargo, aún necesita alguna forma de indicarle cuándo hacer las cosas: cuándo desea capturar, ¿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 suave 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 ultrasonido que transmite datos a través de PCIe. Las tareas que realiza se comunican desde el usuario y es necesario configurar varias partes del sistema. 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. Para hacer lo mismo en hardware físico se necesitarían enormes cantidades de recursos la mayoría de los cuales se utilizarían con poca frecuencia por lo que no verían 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 (la programación de controladores DMA para almacenar datos en el activador) se realizó originalmente en la CPU en aproximadamente 15 líneas de código, pero debido a que ese bit debe realizarse en el momento en que se produce un activador, se utiliza una CPU que puede ser ocupado con otras cosas no es ideal. En su lugar, 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, no realmente. Pero a pesar de que consume muchos más recursos, es crítico en el tiempo, por lo que es una necesidad.

Del mismo modo, necesito una generación de disparos 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 puedes usar una CPU para realizar algunas tareas, pero para otras más importantes puedes desarrollar hardware para complementar la CPU, de la misma manera que tienes temporizadores. etc. en un microcontrolador.

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 suave, módulos configurables (por ejemplo, temporizadores) y hardware dedicado para 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 deban realizar tareas bastante repetitivas que pueden configurarse para adaptarse a diferentes entradas: módulos de temporizador, visualización de caracteres, eliminación de botones, etc. Esto podría hacerse fácilmente con una CPU, pero si desea realizar varias Con precisión, al mismo tiempo 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; déle 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 la lógica dedicada en términos de velocidad, y también posiblemente poder. Estos son como los músculos del dispositivo, hacen todo el trabajo pesado.

Tendrás que excusar un poco el divagar, pero me gusta este campo de EE. Esperamos que lo anterior sea comprensible y le brinde una perspectiva adicional del maravilloso mundo de los FPGA.

    
respondido por el Tom Carpenter
1

Como mencionó Tom, el MicroBlaze no es tanto una cuestión de reemplazar un DSP, sino de un microcontrolador tradicional que podría estar en la placa.

Esto se debe a que el núcleo del procesador suave MicroBlaze no es un sustituto particularmente bueno para un DSP, ya que carece de funciones DSP especiales como una instrucción MAC (multiplicar y acumular), búferes circulares, direccionamiento de bit invertido y lógica de saturación.

Por lo tanto, hay un núcleo de software DSP separado, como el que se describe > en este documento para el / la / s , 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 de software como 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 ejecutarse a 210 MHz en un Virtex-5. Las versiones con una MMU pueden ejecutar Linux. Un mínimo de MicroBlaze necesita alrededor de 600 LUT, y puede crecer hasta 4000 si se agregan una FPU, MMU, caché y otras golosinas. El procesador de software DSP mencionado anteriormente usaba 1700 LUTs.

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

La IP para MicroBlaze es gratuita siempre que la utilice en una FPGA de Xilinx y tenga licencia para la edición integrada de ISE Design Suite (o equivalente).

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas