Cosa succede quando un FPGA viene acceso e lasciato non configurato?


10

Sto cercando di ottenere una comprensione generale di ciò che accade se si lascia un FPGA non programmato per un lungo periodo di tempo.

Supponiamo di avere un FPGA e di lasciarlo non programmato per un lungo periodo di tempo (diversi minuti o ore dopo l'accensione), cioè senza bitstream su di esso, è dannoso per il dispositivo? Si consiglia di avere sempre un po 'di bitstream su un FPGA acceso? Qual è l'opinione generale al riguardo?

I risultati sono diversi su dispositivi o produttori diversi (Xilinx vs. Altera vs. altri)?


Informazioni addizionali:

Ho una scheda SoC personalizzata che utilizza un FPGA Xilinx Virtex-6. Ho anche un Xilinx ML605 che uso a scopo di riferimento.

Scheda personalizzata: accendo la scheda. Ho notato che ho poco tempo per programmarlo usando XMD (Xilinx Microprocessor Debugger). Se perdo la finestra di 20-30 secondi, devo spegnere e riaccendere la scheda prima di riprovare. Questo non accade con un ML605.

Quando provo a programmare la scheda personalizzata su XMD, ottengo qualcosa del tipo:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

Fatemi sapere cosa ne pensate.


1
Enfatizzi nella tua domanda e nella tua modifica il "lungo periodo di tempo". Importa davvero se sono pochi secondi o poche ore? Non credo che lo faccia.
m. Il

Sto vedendo un fenomeno su una scheda FPGA personalizzata in cui ottengo una finestra di programmazione di 20-30 secondi. Se non programmo in questa finestra, non posso programmare con successo. Il tema centrale della mia domanda non è la durata del tempo, ma per comprendere il fenomeno.
Bara il

Sei in grado di connetterti al dispositivo? O fallisce semplicemente quando provi a programmare? Qual è l'errore che il programmatore sta dando?
embedded.kyle

1
Stai programmando direttamente l'FPGA tramite JTAG o stai caricando prima il chip Flash e poi lasciando che l'FPGA lo configuri?
ajs410,

@fpga_boffin, potresti aggiungere questi dettagli alla tua domanda, per favore?
Jon L

Risposte:


7

Questa è una domanda interessante Per esperienza personale, ho lasciato gli FPGA accesi per ore in uno stato non programmato mentre eseguivo i controlli sul resto dei circuiti quando arriva una nuova scheda dalla casa di assemblaggio. Non ho notato alcun effetto dannoso nel farlo. Ma sinceramente non ci ho mai pensato.

Mi sono guardato intorno per cercare di trovare una raccomandazione di un produttore FPGA ma non sono riuscito a trovarne una. L'unica affermazione che ho trovato riguardo a questo stato proviene da un white paper di Lattice e riguarda il design dell'FPGA stesso e non come dovrebbe essere usato:

Il consumo di energia del dispositivo di riposo statico pre-programmato è la quantità di energia consumata dall'FPGA prima della programmazione del dispositivo. Per il consumo energetico del dispositivo in pausa l'FPGA è in uno stato non programmato, ma è stato alimentato. È importante che il dispositivo non consumi energia significativa durante questo periodo, poiché concettualmente il dispositivo FPGA potrebbe assorbire energia eccessiva e potenzialmente interrompere gli alimentatori, impedendo alla scheda di inizializzare correttamente se stessa e il sistema.
Pertanto, il fornitore FPGA deve progettare con cura transistor con un basso statico 3 Designing per un basso consumo energetico di carta bianca a semiconduttore reticolare A, senza compromettere le aree in cui sono richieste prestazioni più elevate (ad es. I / O e SERDES)

Allo stesso modo Xilinx menziona qual è la corrente di quiescenza in modo da poter progettare l'alimentatore di conseguenza. Ma non menziona quale sia l'effetto sul dispositivo di lasciarlo in tale stato:

L'alimentazione statica o quiescente è principalmente dominata dalla corrente di dispersione del transistor. Quando questa corrente è elencata nelle schede tecniche, è elencata come ICCINTQ ed è la corrente assorbita attraverso l'alimentazione VCCINT che alimenta il core FPGA.

Sarei molto interessato a sapere se qualcuno ha subito un danno a un dispositivo lasciandolo in uno stato di quiescenza. Ma penso che fino a quando l'alimentatore è correttamente abbinato al dispositivo, non ci dovrebbero essere problemi.


6

Mi riferisco alla scheda tecnica di Spartan 3 , poiché è l'FPGA che conosco di più.

Se si guarda al capitolo 2 (Descrizione funzionale), la sezione "Configurazione" presenta un paio di diagrammi di flusso. La Figura 27 (pagina 50) mostra il diagramma di flusso per il caricamento da Flash. La Figura 28 mostra il diagramma di flusso JTAG.

Ecco un breve riassunto.

1) Attendere che Vccint, Vccaux e Vcco raggiungano i livelli richiesti.

2) Cancella i latch di configurazione

3) Attendere che INIT_B si alzi. INIT_B è un'uscita open-drain che un master esterno può mantenere basso per ritardare la configurazione.

4) Pin modalità campione. Ciò determina se caricare tramite JTAG o Flash e se Flash è l'FPGA o Flash come Master.

5) Carica frame di dati di configurazione.

6) Verificare che il CRC per i frame di dati sia corretto. Se NON è corretto, FPGA guiderà INIT_B in basso per indicare un errore CRC e interromperà l'avvio.

Il passaggio 5 è probabilmente dove si trova la tua vera domanda: cosa succede se non c'è nulla da caricare? Bene, non dovresti andare al passaggio 5 se stai facendo le cose nel modo giusto. Il chip Flash manterrà INIT_B basso fino a quando non sarà pronto per fornire dati all'FPGA. Se stai usando JTAG, allora non sono sicuro che il tuo programmatore JTAG avrebbe INIT_B basso, ma quando è andato a programmare l'FPGA, quasi sicuramente affermerebbe PROG_B (abbassandolo), il che fa tornare indietro l'FPGA al passaggio 2.

Se fossi in te, analizzerei il segnale INIT_B durante l'accensione per vedere cosa sta succedendo. Se inizia basso, diventa alto e poi si abbassa di nuovo, l'FPGA ha interrotto la sequenza di avvio e sarà probabilmente necessario affermare PROG_B per ripristinare l'FPGA.


La tua risposta non dice nulla sullo stato interno dell'FPGA prima del passaggio 5, che è ciò che OP vuole sapere.
Stevenvh,

Passaggio 2. Cancella i blocchi di configurazione. Passaggio 3, in attesa di INIT_B. Discuto anche che tipo di decisione potrebbe prendere l'FPGA ogni volta che scopre che non ci sono dati di configurazione da caricare (INIT_B diventa basso per indicare un errore CRC).
ajs410,

1
Mi scuso, il foglio dati a cui mi riferivo era circa del 2005 ed è stato aggiornato nel 2009. Tuttavia, se avessi letto il mio commento in modo esauriente, avresti potuto trovarlo. Capitolo 2, Descrizione funzionale, sotto l'intestazione Configurazione. Il collegamento è stato aggiornato per indicare la scheda tecnica più recente, nonché i nuovi numeri di pagina.
ajs410,

0

La configurazione predefinita è progettata per essere il più passiva possibile al fine di rendere il dispositivo universalmente utilizzabile.

Per la serie Altera Cyclone (di cui ho più esperienza) questo significa

  • i pin I / O sono debolmente collegati a VCCIO (per mantenere i circuiti integrati con le linee di abilitazione chip attive-basse fuori dal bus),
  • l'uscita CONF_DONE è ridotta (è possibile collegarla al pin di ripristino di altri circuiti integrati per mantenerli in ripristino fino a quando non è stata caricata una configurazione e ripristinarli allo stato noto durante la riconfigurazione), e
  • gli ingressi di clock non vengono inoltrati alle reti di clock.

Altri tipi di FPGA dovrebbero essere allo stesso modo inattivi e fornire uscite non invertite e invertite che indicano lo stato della configurazione al resto della scheda.

Lasciare il dispositivo in quello stato è innocuo, poiché il nucleo è abbastanza isolato dal mondo esterno e solo i pull-up possono avere una piccola corrente attraverso di loro.

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.