9 votos

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

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

Añadido: ¿Cuál sería la razón para tener varios procesadores softcore en una FPGA?

0 votos

Depende de lo intensiva que sea tu aplicación en cuanto a DSP, básicamente.

0 votos

El odiado winmodems me viene a la mente, aunque en este caso una CPU de propósito general se encargaba del DSP.

0 votos

Al parecer, usted puede hacer radio definida por software en un Virtex 5 y también en el Altera Stratix .

12voto

Tom Carpenter Puntos 7192

Siéntase libre de leer por encima, o saltar hasta el final. Me doy cuenta de que me he extendido un poco.


Por lo general, no se utilizaría un procesador suave para sustituir Cosas del DSP. El hardware dedicado generalmente puede manejar mayores volúmenes de datos con mayor rapidez porque se diseñaría para hacer una tarea específica muy bien, en lugar de ser una CPU de propósito general.

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

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

Sin embargo, todavía se necesita alguna forma de indicarle cuándo hacer las cosas: cuándo se quiere capturar, si se le ha indicado al dispositivo que descargue los datos, etc. Estas cosas no son muy fáciles de hacer en un hardware dedicado, no si hay secuencias de eventos con entrada del usuario, básicamente tareas que no hacen la misma cosa una y otra vez. En este caso se utilizarí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 vía PCIe. Las tareas que realiza se comunican desde el usuario y varias partes del sistema necesitan ser configuradas. 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 con, en este caso, C. Hacer lo mismo en hardware físico requeriría grandes cantidades de recursos, la mayoría de los cuales se utilizarían con poca frecuencia, por lo que no se vería ningún beneficio en comparación con una CPU.

Cabe destacar que algunas tareas pueden variar en función de la entrada del usuario, pero siguen siendo mejores en el hardware dedicado. De hecho, una parte del código (la programación de los controladores DMA para almacenar los datos en el momento del disparo) se hacía originalmente en la CPU en unas 15 líneas de código, pero como esa parte tiene que hacerse en el momento en que se produce el disparo, utilizar una CPU que puede estar ocupada con otras cosas no es lo ideal. En su lugar, la tarea se programa en un módulo Verilog, pero en el proceso se convierte en una enorme máquina de estados de 500 líneas con unos 15 estados y un montón de lógica de apoyo, en serio. Pero, aunque utiliza muchos más recursos, el tiempo es crítico, por lo que es una necesidad.

Del mismo modo, necesito la generación de disparos con precisión de ciclo de reloj, por lo que un módulo para realizar esa tarea forma parte del sistema en lugar de hacerlo en una CPU. Tanto este núcleo como el anterior son ejemplos de cómo se puede utilizar una CPU para realizar algunas tareas, pero para otras críticas se puede desarrollar hardware para complemento la CPU, del mismo modo que hay temporizadores, etc. en un microcontrolador.


Así que para resumir:

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

Las CPUs son excelentes para la interacción con el usuario, para controlar el orden de los eventos, para configurar los controladores. Son como el coordinador, el cerebro.

Algunos diseños pueden necesitar hacer algunas tareas bastante repetitivas que pueden ser configuradas para adaptarse a diferentes entradas - módulos de temporizadores, pantallas de caracteres, rebotes de botones, etc. Esto se puede hacer fácilmente con una CPU, pero si quieres hacer varios de ellos con precisión a la vez se vuelve más complicado - están compartiendo los mismos recursos de la CPU. Así que lo que puedes hacer es trasladarlas a un hardware dedicado que esté estrechamente conectado a la CPU, para que ésta pueda realizar otras tareas. Esto ayuda a la CPU a hacer su trabajo y a interactuar con su entorno, como sus sentidos.

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

Tendrán que disculpar que divague un poco, pero me gusta este campo de la EE. Espero que lo anterior sea comprensible y te dé una visión extra del maravilloso mundo de las FPGAs.

0 votos

@tcrosley Entiendo tu punto de vista, pero si digamos que quieres sumar dos números de 128 bits en un procesador de 32 bits, te llevará varios ciclos. El énfasis estaba en un puede . Pero en realidad depende totalmente de lo que estés haciendo en conjunto. Si todo lo que quieres hacer es la adición, tener una CPU completa no tendría sentido en una FPGA - sólo instanciar un sumador. Así que creo que voy a eliminar esa parte.

2voto

Matt McMinn Puntos 6067

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

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

Así que 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 de 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 una FPGA también necesitan un microcontrolador general de algún tipo. Siempre que haya suficientes recursos disponibles en la FPGA (véase más adelante), los procesadores blandos como el MicroBlaze no sólo eliminan una parte en la lista de materiales (y, por supuesto, su coste asociado), sino que también liberan pines en la FPGA, ya que no hay necesidad de interconectar entre la FPGA y un microcontrolador. También se libera el espacio necesario para las trazas entre las dos partes.

El MicroBlaze puede funcionar a 210 MHz en un Virtex-5. Las versiones con una MMU pueden ejecutar Linux. Un MicroBlaze necesita como mínimo unas 600 LUTs, y puede llegar a las 4000 si se añade una FPU, una MMU, una caché y otros elementos. El procesador blando DSP mencionado anteriormente utilizaba 1700 LUTs.

Ya que un Virtext-5 FPGA puede tener entre 30.000 y más de 200.000 LUTs, incluso incluyendo estos dos núcleos blandos representa sólo una fracción del chip. La incorporación de ambos permite que las operaciones convencionales y de DSP se realicen en paralelo, si se desea, a costa de cierta complejidad añadida para la sincronización entre ambos.

La IP para el MicroBlaze es gratuita siempre que se utilice en una FPGA de Xilinx y se tenga la licencia del ISE Design Suite Embedded Edition (o equivalente).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X