Sentiti libero di sfogliare la lettura o saltare fino alla fine. Mi rendo conto che sono andato avanti un po '!
Generalmente non useresti un soft processor per sostituire le cose DSP. L'hardware dedicato può generalmente gestire volumi più elevati di dati più velocemente perché lo si progetterebbe per svolgere un'attività specifica molto bene, piuttosto che essere una CPU per scopi generici.
Laddove i processori soft entrano nel loro elemento è il controllo e il coordinamento.
Se si progettasse un sistema che doveva elaborare un grande volume di dati, ad esempio l'acquisizione di immagini con frame rate elevato, non sarebbe possibile utilizzare un processore soft-core per gestire tutti i dati, ci sarebbe semplicemente un sovraccarico eccessivo nella CPU. Quello che faresti è progettare un firmware dedicato per eseguire l'attività di acquisizione specifica necessaria (ad esempio filtrare i dati, archiviare in memoria, ecc.).
Tuttavia hai ancora bisogno di un modo per istruirlo quando fare le cose - quando vuoi catturare, il dispositivo è stato incaricato di scaricare i dati, ecc. Queste cose non sono molto facili da fare in hardware dedicato, non se ci sono sequenze di eventi con input dell'utente, sostanzialmente attività che non fanno la stessa cosa più e più volte. In questo caso si utilizzerà un processore soft-core in quanto è molto più semplice scrivere codice procedurale per alcune attività.
Un altro esempio (reale), ho lavorato su un sistema di acquisizione ad ultrasuoni che trasmette i dati tramite PCIe. Le attività svolte vengono comunicate dall'utente e le varie parti del sistema devono essere configurate. Il coordinamento del sistema non richiede grandi volumi di dati, ma necessita invece di flessibilità, quindi è adatto a una CPU soft-core programmata con in questo caso C. Fare la stessa cosa nell'hardware fisico richiederebbe grandi quantità di risorse la maggior parte dei quali verrebbe utilizzata raramente, quindi non vedrebbe alcun vantaggio rispetto a una CPU.
Vale la pena notare che alcune attività possono variare a seconda dell'input dell'utente, ma sono ancora migliori nell'hardware dedicato. In effetti una parte del codice (programmazione dei controller DMA per l'archiviazione dei dati sul trigger) è stata originariamente eseguita nella CPU in circa 15 righe di codice, ma poiché quel bit deve essere eseguito nel momento in cui si verifica un trigger, utilizzando una CPU che può essere impegnato con altre cose non è l'ideale. L'attività è invece programmata in un modulo Verilog, ma nel processo diventa un'enorme macchina a stati a 500 linee con circa 15 stati e un intero carico di logica di supporto - no davvero. Ma anche se utilizza molte più risorse, è un fattore critico in termini di tempo, quindi è una necessità.
Allo stesso modo ho bisogno di una generazione di trigger accurata del ciclo di clock, quindi un modulo per eseguire quel compito fa parte del sistema piuttosto che farlo in una CPU. Sia questo core che quello sopra sono esempi di come è possibile utilizzare una CPU per eseguire alcune attività, ma per altre critiche è possibile sviluppare hardware per integrare la CPU, allo stesso modo in cui si hanno timer, ecc. In un microcontrollore.
Quindi per riassumere:
Gli FPGA sono ottimi strumenti flessibili, ma la maggior parte dei progetti richiede una combinazione di CPU soft-core, moduli configurabili (ad es. Timer) e hardware dedicato per attività singole.
Le CPU sono ottime per l'interazione dell'utente, il controllo dell'ordine degli eventi, la configurazione dei controller. Sono come il coordinatore, il cervello.
Alcuni progetti potrebbero dover eseguire alcune attività abbastanza ripetitive che possono essere configurate per adattarsi a diversi input: moduli timer, display dei caratteri, rimbalzo dei pulsanti, ecc. Questi potrebbero essere facilmente eseguiti con una CPU, ma se si desidera eseguirne molti con precisione in una volta che diventa più complicato, condividono le stesse risorse della CPU. Quindi, ciò che puoi fare è spostarli in un hardware dedicato che è strettamente collegato alla CPU: dare alla CPU la possibilità di svolgere altre attività. Questi aiutano la CPU a fare il suo lavoro e interagire con l'ambiente circostante, come i suoi sensi.
DSP dedicato, trasferimento dati (DMA) - praticamente qualsiasi attività che farà sempre la stessa cosa ad alte velocità - può davvero trarre vantaggio da una logica dedicata in termini di velocità, e forse anche di potenza. Questi sono come i muscoli del dispositivo, fanno tutto il sollevamento pesante.
Dovrai scusarti un po 'dell'escursione, ma mi piace questo campo di EE. Spero che quanto sopra sia comprensibile e ti dia qualche informazione in più sul meraviglioso mondo degli FPGA.