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.