Come scegliere un FPGA?


17

Devo eseguire l'elaborazione del segnale digitale su 8 linee analogiche a 10 kHz. Questo è un compito piuttosto impegnativo e pensavo che un FPGA potesse essere l'approccio giusto. Attualmente sto guardando i kit di sviluppo di Xilinx e, poiché non ho esperienza con FPGA, trovo davvero difficile sapere come scegliere il chip giusto. Ho immaginato di utilizzare un kit di sviluppo e di espanderlo utilizzando i pin I / O per connettersi a un chip A / D a 8 canali e chip D / A a 8 canali.

Quali sono le differenze tra l'utilizzo di Spartan, Virtex, Altera, ecc.? Non so nemmeno come stimare quante porte avrò bisogno. Ci sono delle regole pratiche per questo? Come posso assicurarmi che la velocità di clock sia sufficiente (in funzione del numero di aggiunte e moltiplicazioni). È difficile eseguire l'elaborazione in virgola mobile su un FPGA, devo attenermi alla matematica in virgola fissa? Qual è il modo migliore per iniziare?

Ho bisogno di una soluzione programmabile tramite Linux. Xilinx fornisce questo, ma non sono sicuro di quali siano i limiti.


5
Aiuterebbe molto sapere che tipo di algoritmi è necessario implementare. È probabile che non hai bisogno di un FPGA, il che ti farà risparmiare molto tempo di sviluppo ;-)
geschema,

Sono d'accordo con geschema; potresti non aver bisogno di un FPGA. Forse un DSP è una soluzione migliore. In ogni caso, sono più facili da iniziare se hai solo esperienza negli Stati Uniti. Gli FPGA sono molto diversi!
Stevenvh,

Risposte:


13

Non vorrei usare un FPGA.

Dici di non avere esperienza con FPGA, eppure sei interessato a eseguire l'elaborazione del segnale digitale su un FPGA ... la manipolazione numerica + l'elaborazione del segnale sono abbastanza difficili da ottenere direttamente su un computer / DSP / microprocessore, dove gli strumenti di programmazione sono convenzionali programmazione. Mi sembra che l'utilizzo di un progetto di elaborazione del segnale digitale per un primo progetto FPGA sia probabilmente una ricetta per la frustrazione.

Se vuoi imparare FPGA, prova a fare qualcosa di più adatto agli strumenti di sviluppo, come macchine a stati o elaborazione di pacchetti di comunicazioni.

Per un progetto DSP come quello che hai descritto, raccomanderei invece un DSP o un Cypress PSOC o un Microconverter Analog Devices (= microcontrollore con ADC + DAC incorporato).

(divulgazione completa, che fornisce un certo contesto per il mio consiglio: non uso FPGA da solo. Ho usato la logica programmabile = PLD in rare occasioni. Il mio officemate usa FPGA frequentemente e ho visto abbastanza codice VHDL / Verilog che controllava il suo spalla a sapere che è adatto per manipolazioni di bit. È un ingegnere esperto con molta esperienza con FPGA; in una recente conversazione con lui in cui stava facendo una matematica abbastanza semplice su interi con diverse larghezze di bit, gli ho detto che aveva bisogno fare l'estensione del segno sul numero di bit più corto per sottrarlo correttamente, e ha ottenuto questo aspetto sul suo volto, come "oh amico, non voglio fare l'estensione del segno ..." Aggiunta e sottrazione non è molto difficile in un FPGA. Oltre all'aggiunta e alla sottrazione, è davvero necessario conoscere gli strumenti e le librerie.Ed elaborazione in virgola mobile ??!? !! ??!? !!?)


2
MyHDL tenta di risolvere alcuni di questi problemi.
Shawn J. Goff,

Non credo che gli FPGA siano più difficili da usare rispetto ai micro, hanno semplicemente un diverso set di avvertimenti.
Connor Wolf,

10

Sono praticamente tutti bravi. Non avrai bisogno di troppo FPGA per fare qualcosa del genere, quindi qualsiasi FPGA per principianti (come la linea Spartan-3) dovrebbe essere sufficiente.

Solo un avvertimento, la programmazione di un FPGA è un LOOOOTTTTTT diverso da qualcosa come C ++, C, perl ... Suggerirei di iniziare con Verilog perché probabilmente è più facile passare a ... VHDL è molto COBOL ma verilog è più simile ai moderni linguaggi di programmazione.

Informazioni sulla velocità di clock: non preoccuparti. Il vantaggio dell'utilizzo di FPGA è che sono enormemente paralleli, quindi mentre un clock a 50 MHz può sembrare ridicolmente lento per gli standard di oggi, tieni presente che possono fare centinaia di cose contemporaneamente, mentre una CPU "normale" a 3GHz deve mettere in coda le cose uno alla volta. Questo è il vantaggio dell'utilizzo di FPGA: parallelismo. Quindi, per qualcosa di specializzato, non devi preoccuparti così tanto della velocità.

Ma come l'altro commento, è un paradigma completamente diverso. La curva di apprendimento è ripida, ma una volta che hai afferrato la lingua, tutto ha un senso (assicurati solo di capire i mattoni).

Happy FPGA'ing :)


2
VHDL è in realtà basato su Ada! Leon
Leon Heller,

2
Inoltre, nella scelta di Verilog o VHDL, considera il linguaggio alla luce del fatto che è un investimento nella tua futura commerciabilità. Negli Stati Uniti, Verilog è più popolare nello sviluppo di circuiti integrati / chip rispetto a VHDL, quindi conoscere Verilog (e la sua versione migliorata, System Verilog) sarà probabilmente un investimento a lungo termine migliore. Sembra anche che tutte le grandi società EDA stiano investendo in verilog e in system verilog, mentre VHDL non sta ricevendo molta attenzione. (assistere alla simulazione mista VCS con differenze di prestazioni del simulatore VHSL vs VCS verilog). (que the flaming) Sì, puoi imparare entrambi, ma perché non dare la priorità.
Ross Rogers,

Puoi scriverlo in entrambe le lingue. Penso che gli strumenti Xilinx possano prendere Verilog e VHDL, anche nello stesso progetto. FWIW, sono negli Stati Uniti e non ho mai usato Verilog.
ajs410,

1
"VHDL è molto COBOL simile". Non da un milione di miglia!
Stevenvh,

9

Qualche tempo fa ho messo insieme un grafico comparativo di schede FPGA entry level , dei due distributori FPGA Xilinx e Altera. Sono i due principali giocatori di FPGA, un po 'come PIC vs AVR o Sony vs Nintendo. Forniscono il miglior rapporto qualità-prezzo. Ci sono altri fornitori che forniscono funzionalità specifiche, ma di solito si finisce per pagare di più o perdere funzionalità / potenza di elaborazione.

So che questo non risponde direttamente alla tua domanda specifica, ma dovrebbe essere utile a chiunque stia cercando di iniziare con una scheda FPGA.


7

Così tante domande; proviamo a rispondere a loro in ordine:

  1. Requisiti di risorse per l'elaborazione del segnale: al fine di determinare quale hardware è necessario utilizzare / costruire è necessario avere un'idea della quantità di elaborazione che si desidera eseguire sui segnali in questione. 8 canali a 10 kHz non sono una velocità di trasmissione dati molto elevata, quindi a meno che i requisiti non siano molto speciali, la maggior parte degli FPGA e dei DSP dovrebbe essere in grado di elaborare i dati.
  2. Come scelgo il dispositivo giusto? In base ai requisiti dell'elaborazione del segnale, dovresti essere in grado di capire quale dispositivo è richiesto per la tua applicazione. I punti chiave sono i requisiti di memoria, sono richiesti moltiplicatori, considerazioni IO speciali, ecc. La maggior parte dei fornitori FPGA dispone di strumenti (basati sul Web) che consentono di effettuare ricerche nel proprio portafoglio in base a tali fattori.
  3. Come posso iniziare con DSP? I DSP sono solo normali computer che di solito hanno istruzioni SIMD [Single Instruction, Multiple Data] rilevanti per l'elaborazione del segnale. Per iniziare, devi solo capire i limiti dell'hardware "incorporato" e un compilatore C in modo da poter testare il tuo codice su un normale PC.
  4. Come iniziare con gli FPGA? Gli FPGA sono programmati in un linguaggio di descrizione dell'hardware. Questi sono significativamente diversi dai linguaggi sequenziali come C o Java. Al fine di sviluppare per FPGA è necessario comprendere la natura concorrente dell'hardware reale. Gli strumenti necessari per iniziare sono un simulatore HDL come Simili (gratuito per piccoli progetti) o Modelsim. Ciò ti consente di simulare il tuo codice su PC. Successivamente è necessario uno strumento di sintesi specifico del fornitore che compili il codice HDL in un file bit utilizzato per configurare l'FPGA. Se ricevi uno starter kit da Altera, Actel o Xilinx, tutti gli strumenti di cui hai bisogno fanno parte del kit.
  5. Supporto Linux: gli strumenti FPGA della maggior parte dei fornitori funzionano su Linux, ma nel campo DSP di solito sei costretto a utilizzare solo compilazioni di Windows a meno che il tuo DSP non sia supportato da GCC (Blackfin di Analog e diversi modelli di Texas Instruments lo sono).

+1 per "8 canali a 10 kHz non è una velocità di trasmissione dati molto elevata" - Non posso credere che nessuno l'abbia ancora detto.
Kevin Vermeer,

Non se sta facendo FFT a 8 canali ...
ajs410,

I DSP sono spesso unità di elaborazione parallela a thread singolo ciascuna in grado di eseguire un'istruzione diversa (diversamente dal SIMD in cui tutte le unità condividono la stessa istruzione).
Ben Voigt,


4

Quasi tutti i distributori FPGA lo faranno. È come Intel vs AMD ... ci sono differenze tra Xilinx e Altera, ma sono notevolmente simili in termini di funzionalità. Acquista qualsiasi kit di sviluppo nella tua fascia di prezzo - personalmente mi è piaciuto Spartan 3 di Xilinx - e corri con esso.

Per quanto riguarda il numero di gate, il kit di sviluppo sarà in genere molto grande, si spera molto più grande del necessario. Quando ti prepari a spostarti sul tuo PCB, gli strumenti di sintesi stimeranno per te quante porte richiede il tuo progetto. Puoi usarlo per selezionare un FPGA più piccolo, anche se potresti scoprire che anche i vincoli del pacchetto (QFP vs BGA) svolgono un ruolo importante.

Con le tecniche di progettazione appropriate, la velocità di clock non sarà un problema. Infatti, in genere è possibile utilizzare un cristallo a velocità relativamente bassa, come 12 MHz, e l'FPGA può sintetizzare un clock molto più veloce (o molti clock più veloci!) Se sei davvero preoccupato per le aggiunte multiple, so che la serie Virtex4 ha sezioni DSP dedicate che possono accelerare tali calcoli. Ma gli FPGA sono enormemente paralleli, quindi non hai bisogno di troppi MHz per fare un sacco di lavoro.

Starei sicuramente con un punto fisso se puoi. È possibile eseguire operazioni in virgola mobile e Xilinx ha anche un generatore di core che ti fornirà un core in virgola mobile, ma il punto fisso sarà molto, molto più veloce e richiederà molte meno porte. Un altro vantaggio è che puoi fare qualche strano punto fisso; puoi usare tutti i bit che vuoi, non deve essere un conteggio della potenza di 2 bit e / o puoi usare punti fissi più grandi per gli stadi intermedi.

Il modo migliore per iniziare con FPGA? Trova una lezione o un seminario o qualcosa del genere. Se non hai familiarità con la tecnologia, gli strumenti di sviluppo saranno molto confusi, perché c'è molto che può andare storto. Gli strumenti per MCU sono molto più tolleranti e richiedono meno intimità con l'architettura sottostante.

Oh, e dovresti leggere la scheda tecnica dell'FPGA, dalla parte anteriore a quella posteriore.



0

Se vuoi stimare il numero di gate non hai ancora bisogno di acquistare hardware - i principali produttori di FPGA hanno software gratuito e molti avranno appunti su come fare dsp. Puoi progettare e simulare elementi senza hardware e il software ti dirà quali risorse vengono utilizzate. Tuttavia, per l'elaborazione del segnale, un dsp sarebbe normalmente il primo passo e FPGA solo se si esaurisce la potenza di elaborazione.

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.