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
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 .
0 votos
Y aparentemente algunos tienen intentó que en un Spartan 6 LX45. ¿Qué aplicación tiene en mente?
0 votos
El principal problema que vi en ese hilo es que el útil software Vivado (basado en PC) que funciona para generar filtros, etc., para el Virtex no permite apuntar al Spartan. No estoy seguro de si eso fue sólo una decisión de marketing [segmentación] o el hardware Spartan es demasiado bajo.