Quali sono gli usi tipici di un soft-processor come MicroBlaze?


8

So che la combinazione FPGA-DSP viene generalmente utilizzata per l'elettronica di potenza di fascia alta / ultrasuoni / risonanza magnetica / ecc. È possibile per il soft-processor sostituire completamente il DSP anche su FPGA di fascia bassa come Spartan 3/6?

Aggiunto: quale sarebbe la ragione per avere più processori softcore in un FPGA?


Dipende da quanto DSP richiede intensamente l'applicazione, in pratica.
Fizz,

Mi vengono in mente gli odiati winmodem , anche se lì hai avuto una CPU per scopi generici per fare il DSP.
Fizz,

Apparentemente puoi fare radio definita dal software su un Virtex 5 e anche su Altera Stratix .
Fizz,

E a quanto pare alcuni l'hanno provato su uno Spartan 6 LX45. Quale applicazione hai in mente?
Fizz,

Il problema principale che ho visto in quel thread è l'utile software Vivado (basato su PC) che funziona per generare filtri ecc. Per Virtex non ti consente di scegliere come target Spartan. Non sono sicuro che sia stata solo una decisione di marketing [segmentazione] o che l'hardware Spartan sia troppo modesto.
Fizz,

Risposte:


11

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.


@tcrosley Prendo il tuo punto, ma se dici che volevi aggiungere due numeri a 128 bit su un processore a 32 bit, ci vorranno diversi cicli. L'enfasi era su una potenza . Ma in realtà dipende interamente da cosa stai facendo nel suo insieme. Se tutto ciò che volevi fare era l'aggiunta, avere un'intera CPU sarebbe inutile in un FPGA - basta istanziare un sommatore. Quindi penso che lo rimuoverò.
Tom Carpenter,

1

Come menzionato da Tom, MicroBlaze non è tanto una questione di sostituzione di un DSP, ma di sostituzione di un microcontrollore tradizionale che potrebbe altrimenti trovarsi sulla scheda.

Questo perché il core del processore soft MicroBlaze non è un sostituto particolarmente valido per un DSP in quanto privo di funzioni DSP speciali come un'istruzione MAC (moltiplica e accumula), buffer circolari, indirizzamento dei bit invertito e logica di saturazione.

Quindi un core DSP separato, come quello descritto in questo documento per Xilinx Virtex-4, sarebbe una scelta migliore.

Molti progetti DSP trarrebbero beneficio dall'avere entrambi i core, poiché molti, se non la maggior parte, dei progetti digitali che includono un FPGA necessitano anche di un microcontrollore generale di qualche tipo. Finché ci sono abbastanza risorse disponibili nell'FPGA (vedi sotto), i processori software come MicroBlaze non solo eliminano una parte nella DBA (e ovviamente il suo costo associato), ma liberano anche i pin sull'FPGA poiché non c'è non è necessario collegarsi tra FPGA e un microcontrollore. Anche lo spazio richiesto per le tracce tra le due parti viene liberato.

MicroBlaze può funzionare a 210 MHz su un Virtex-5. Le versioni con MMU possono eseguire Linux. Un MicroBlaze minimo richiede circa 600 LUT e può crescere fino a 4000 se vengono aggiunti FPU, MMU, cache e altri gadget. Il soft processore DSP sopra menzionato utilizzava 1700 LUT.

Dal momento che un FPGA Virtext-5 può avere ovunque da 30.000 a oltre 200.000 LUT, anche includendo entrambi questi soft core rappresenta solo una frazione del chip. L'incorporamento di entrambi consente che le operazioni sia convenzionali sia DSP abbiano luogo in parallelo, se lo si desidera, a scapito di una maggiore complessità per la sincronizzazione tra i due.

L'IP per MicroBlaze è gratuito finché lo si utilizza su un FPGA Xilinx e si dispone della licenza ISE Design Suite Embedded Edition (o equivalente).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.