FPGA - Programmazione fai-da-te


9

Ho programmato microcontrollori per alcuni anni e ho appena scoperto FPGA dopo aver preso una classe di progettazione digitale. Dopo aver fatto qualche ricerca su diversi FPGA, schede di sviluppo, ecc., Esito ancora ad acquistarne uno perché non saprei come creare la mia versione del "prodotto" finale. Ho messo PIC, SAM, AVR, ecc. Su PCB personalizzati senza problemi, quindi non sono preoccupato per questo - la mia preoccupazione principale è programmare un FPGA senza una scheda del produttore.

La mia domanda specifica: sarebbe una funzione FPGA se prendessi il file bitmap generato da Quartus, Vivado, iCEcube, ecc., Lo scrivessi su un chip di memoria flash SPI iniziando all'indirizzo 0 (diciamo, tramite un FT2232H) e collegando la memoria flash a i pin SPI di un FPGA (con la configurazione MODE impostata correttamente)?

Mi scuso per l'ipotetico parziale; Sono abbastanza sicuro che sia tutto ciò che fa Diamond Programmer di Lattice, ma mi chiedevo se quell'approccio avrebbe funzionato per FPGA di diversi produttori, o se dire, Quartus ha aggiunto ulteriori "vetrine" o intestazioni alla memoria durante la scrittura.

Fammi sapere se c'è qualcosa che posso fare per migliorare / chiarire la domanda, o se mi manca un punto importante nel processo di programmazione FPGA. Grazie!


Per "bitmap" intendi bit-stream?
Eugene Sh.

Questa domanda è stata posta in un'altra incarnazione prima
Voltage Spike

1
Sul tuo primo progetto di scheda FPGA, suggerirei di fornire 2 metodi di programmazione del dispositivo (oltre all'intestazione JTAG del fornitore). Posizionare le posizioni dei ponticelli per consentire di modificare i pin MODE secondo necessità. È molto facile rovinarli ed è bene avere piani di backup. Assicurati anche di fornire punti di prova per INIT e DONE (o qualunque cosa Lattice usi per indicare lo stato di programmazione).
The Photon,

2
Il controllo di processo richiesto per montare i BGA, in particolare quelli con un elevato numero di pin, è più stretto di qualcosa come un QFP. Il fatto che ci siano più sfere significa che c'è una maggiore probabilità di ponti o connessioni errate e poiché sono nascoste non sarai in grado di rilevare i problemi (a meno che tu non abbia una radiografia) prima di eseguire la cosa per vedere se hai eventuali problemi. E se si rimonta il componente, è necessario rimontarlo, il che richiede più attrezzature. Gli FPGA sono anche chip costosi che non si desidera danneggiare. I grandi BGA sono dove sono necessari elementi come i preriscaldatori PCB.
DKNguyen,

1
Lavoravo in un posto in cui i tecnici non facevano altro che rielaborare tutto il giorno e avevano stazioni di aria calda (controllo della temperatura più stretto e più affidabile della pistola termica) e non erano in grado di saldare a mano i BGA in modo affidabile. Non credo che avessero un preriscaldatore, quindi se hai intenzione di provarlo, prendi un preriscaldatore e usa un chip economico (forse anche un pacchetto fittizio BGA a margherita in modo da poter verificare elettricamente le tue connessioni fino a quando non lo hai inchiodato prima di fare il cosa vera).
DKNguyen,

Risposte:


12

Sì, funzionerebbe bene.

In realtà, gli strumenti di sviluppo per la maggior parte degli FPGA consentono di programmare il flash esterno direttamente attraverso la propria connessione JTAG dell'FPGA, eliminando la necessità di un'interfaccia di programmazione separata per il flash.


1
E alcuni, come Lattice Mach X02, hanno il flash integrato, quindi hai solo bisogno di alcune resistenze e un'intestazione 5x2 per collegarti al pod di programmazione Lattice.
Spehro Pefhany,

Sapevo che puoi programmare il flash direttamente tramite JTAG da strumenti come Vivado / Quartus, quello che speravo fosse in grado di farlo senza la necessità di acquistare un cavo specifico del fornitore: basta usare un FT2232H e scrivere il bitstream (non bitmap?) me stesso. Non penso che il chip sia supportato da Quartus, e non sia apertamente supportato da Vivado (anche se lo usano sulle schede Nexys e Basys).
Blake Lucas,

1
Sì, è possibile programmare il flash con il file bit usando altri mezzi. Uno dei tuoi programmatori per i tuoi MCU probabilmente può farlo. So che il mio collegamento Segger J certamente può.
DKNguyen,

@Toor: In effetti questo non è un cavo specifico del fornitore, ma ha ancora un supporto hardcoded negli strumenti del fornitore e Segger è un po 'più costoso di un FT2232H.
Ben Voigt,

2
Praticamente tutti i principali fornitori forniscono documentazione ingegneristica per consentire ai determinati bit di upload di trasmettere flussi alle loro parti (sia FPGA che flash di configurazione personalizzati) con strumenti personalizzati, perché a volte è desiderabile in sistemi integrati o banchi di prova. Potrebbe essere più semplice utilizzare le attrezzature supportate dal fornitore (soprattutto all'inizio), ma nel corso degli anni ho implementato alternative per progetti specifici un numero di volte. La parte più difficile di un progetto di scheda FPGA originale potrebbe essere tutto il supporto di cui un FPGA necessita sulla scheda: molte coppie di potenza da instradare e bypassare, spesso per diverse tensioni distinte.
Chris Stratton,

3

Quando dici "il file [sic] bitmap [sic] generato da", la risposta è Sì, purché tu scelga quello giusto: hai fatto un leggero errore usando l'articolo definito poiché non è stato generato un solo file .

Ad esempio, Quartus può produrre file SOF, POF e JIC. L'ultimo è quello che usi per la programmazione indiretta tramite FPGA JTAG. Non sarebbe utile scriverlo sul flash SPI. Il SOF è per il caricamento su JTAG per eseguire temporaneamente il progetto in FPGA. POF è ciò che è necessario caricare nel chip flash.

Vedi FPGA: Bitstream vs SRAM Object File per molte informazioni utili su cosa significano i diversi file da ciascuno dei diversi fornitori.


1

Una FPGA funzionerebbe se ... collegassi la memoria flash ai pin SPI di un FPGA (con la configurazione MODE impostata correttamente)?

Se capisco correttamente la tua domanda, vuoi scrivere la configurazione FPGA (ad es. Il tuo modello HDL compilato) su una EEPROM SPI o Flash SPI e vuoi che l'FPGA si programmi da solo usando i dati sull'IC SPI.

(Se capisco correttamente la risposta di Dave Tweed, ha compreso la tua domanda in modo diverso.)

Almeno molti dispositivi di memoria Flash SPI NON funzionerebbero perché i CI di memoria Flash SPI richiedono una determinata forma d'onda (ad es. L'indirizzo da leggere) per essere inviati in modo che i dati vengano letti dall'IC.

Questa forma d'onda non è la stessa per tutti i dispositivi di memoria Flash. Anche quando guardiamo solo le schede di memoria SD (che possono anche essere usate come memoria Flash SPI) troviamo due varianti che richiedono che una diversa forma d'onda sia inviata alla scheda prima che la scheda legga i dati.

Quando si impostano correttamente i pin di modalità dell'FPGA, l'FPGA invierà una forma d'onda che indica a un dispositivo di memoria seriale di inviare i dati. Tuttavia, poiché circuiti integrati diversi richiedono forme d'onda diverse, la forma d'onda non sarà compresa da tutti i circuiti integrati Flash, ma solo da determinati tipi.

So che Altera produce speciali circuiti integrati Flash o EEPROM che sono compatibili con i loro FPGA.


Ovviamente una scheda SD non funzionerà, dal momento che nessun FPGA (per quanto ne sappia) supporta SD / MMC come protocollo di configurazione. La maggior parte degli FPGA si attiene a AT24 / AT26 / AT45.
Dmitry Grigoryev l'

1

Se desideri scrivere un bitstream FPGA sul flash senza gli strumenti di programmazione FPGA ufficiali, molto probabilmente vorrai convertire quel file bitstream in un formato binario aperto che puoi leggere facilmente, come binario non elaborato, Intel HEX o Motorola SREC ( esempio ). Questo eliminerà qualsiasi header proprietario che può contenere un bitstream FPGA.

In questo modo sarai in grado di programmare il flash utilizzando gli strumenti del produttore del flash (o i tuoi strumenti), o anche ordinare i chip flash pre-programmati con il tuo bitstream FPGA.

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.