suggerimenti personalizzati per la progettazione di PCB FPGA


9

Sto progettando di progettare un PCB FPGA personalizzato. il PCB conterrà sensori. Devo leggere l'output dei sensori ed elaborarli nel processore. Ho completato molti progetti utilizzando FPGA, ma questo sarà il mio primo progetto personalizzato in cui dovrò considerare anche la configurazione hardware. Ho fatto ricerche di recente, ma è ancora difficile per me iniziare da un punto. Pertanto ti sto chiedendo di aiutare me e altre persone che vogliono progettare il loro FPGA personalizzato quali sono i punti che devono considerare in ogni fase. Ci sono libri / risorse online che possono aiutarci in questo processo? Farò anche un documento dopo aver finito il mio progetto in modo che le persone possano utilizzarlo.


Forse dovresti menzionare le dimensioni fisiche dell'FPGA che intendi utilizzare, il numero di pin, le tensioni di alimentazione richieste, ...
Dzarda,

Questi non sono ancora stati specificati. Forse la mia domanda non era chiara, ma sto cercando una linea guida.
omesso

Ok, abbastanza giusto.
Dzarda,

Questa domanda sembra fuori tema
Roh

4
La grande domanda è se si è disposti a utilizzare un pacchetto BGA o se si intende limitarsi al sottoinsieme di offerte (e prestazioni elettriche ridotte) disponibili in pacchetti TQFP facili da lavorare. Quindi, speri di ottenere tutti i tuoi rifornimenti e segnali indirizzati su due livelli (difficile ma possibile per obiettivi limitati) o sei disposto a usarne 4 o più? Quanto sono veloci i segnali del tuo sensore? Con quale velocità speravi di sincronizzare la logica interna? Hai qualche analogo sensibile al rumore? Hai mai pensato di creare una scheda figlia da utilizzare con una scheda FPGA esistente?
Chris Stratton,

Risposte:


11

Nella mia azienda, abbiamo precedentemente progettato alcune schede FPGA personalizzate e recentemente abbiamo iniziato a utilizzare schede FPGA commerciali "COTS" con schede madri FMC personalizzate.

Fase del prototipo

Se sei ancora nella fase iniziale della definizione del progetto, pianifica di acquistare almeno una scheda FPGA COTS per la prototipazione. Puoi collegare uno dei tuoi sensori alle intestazioni I / O ed eseguire una prova di concetto rapida. Questo ti dà un'idea di come il progetto potrebbe funzionare se ridimensionato su molti sensori e stimare quanti ne puoi supportare con un determinato FPGA.

Se l'FPGA è troppo piccolo o troppo lento o gli strumenti sono inadeguati per il lavoro, in questa fase è facile scambiare un FPGA COTS diverso. (Beh, non è facile ma almeno gestibile ...)

Se il firmware non funziona in questa fase, è chiaramente a causa di un problema del firmware, non di un errore di progettazione PCB personalizzato. Con firmware personalizzato e PCB personalizzato, a volte è difficile dire da che parte è colpa di un problema.

Scheda FPGA personalizzata rispetto alla scheda FPGA off-the-shelf commerciale

Progettare una scheda FPGA personalizzata ha senso se il progetto avrà un ciclo di vita breve, un volume elevato o richiede un fattore di forma inferiore a quello che è possibile ottenere con la scheda FPGA COTS e le schede aggiuntive PMOD o FMC.

Se il ciclo di vita del progetto supera la durata del prodotto di un chip di memoria DDR (un paio di anni), la progettazione di una scheda figlia FMC personalizzata potrebbe essere un'alternativa migliore.

Il costo è un fattore in questa decisione. La maggior parte delle schede FPGA COTS sono piuttosto generiche, progettate per la massima flessibilità. Se stai realizzando un prodotto ad alto volume e sensibile ai costi, probabilmente vale la pena realizzare un design personalizzato; ma per i volumi bassi probabilmente stai meglio concentrandoti sulla creazione di una scheda figlia.

Indipendentemente dall'approccio scelto, esistono alcune interfacce che richiedono una documentazione chiara e generale: all'interfaccia tra i pin I / O di livello superiore FPGA e il resto della scheda e all'interfaccia del connettore tra le schede. Questi sono luoghi in cui le posizioni dei pin, i nomi delle reti interne e i nomi delle reti esterne a volte vengono non corrispondenti e scambiati. Una tabella è una documentazione sufficiente; assicurarsi di mantenere questa tabella di interfaccia con versione e sotto controllo del codice sorgente. Prima di inviare i file PCB alla fabbricazione, stampare una copia di questa tabella di interfaccia, una copia dello schema e una copia del rapporto pin / pad FPGA. Trascina un evidenziatore sui fogli per verificare che ogni segnale si connetta dove dovrebbe.

Per i connettori, ho imparato a fondo come fornire un "disegno di sistema" meccanico che mostri sia le schede che i connettori di accoppiamento su un unico disegno quotato. In primo luogo sono stato bruciato da un sistema di connettori VME in cui il pin "A1" su un connettore non si associava al pin "A1" sull'altro connettore. Ho anche visto i progettisti dimenticare che una coppia di connettori ad angolo retto produce una connessione di immagine speculare (90 gradi + 90 gradi = 180 gradi). Questo era un problema quando ero responsabile della scheda madre e molti altri project manager erano responsabili di varie schede madri.

Suggerimenti per la scheda FPGA personalizzati

Inizia con il "progetto di riferimento" del fornitore FPGA, quindi ometti qualsiasi parte non richiesta per la tua applicazione. Non rimuovere alcun condensatore di bypass dall'FPGA e non tentare di cavarsela con l'utilizzo di un minor numero di strati PCB. Prestare attenzione alla pila di livelli (spesso presente accanto al disegno di perforazione); I componenti a passo fine utilizzano in genere 0,5 once di rame anziché lo spessore standard della lamina di rame da 1 once.

Il pacchetto BGA è un problema con cui lavorare. La resa non è mai buona come con i pacchetti TQFP o TQFN e rielaborare un BGA è quasi impossibile. Anche l'ispezione per problemi di assemblaggio richiede un riproduttore di raggi X. Assicurati di utilizzare un fornitore di servizi di produzione a contratto di cui ti fidi.

Gli alimentatori sono sempre difficili quando si lavora con schede FPGA. I requisiti di alimentazione effettivi dell'FPGA dipendono fortemente dal flusso di configurazione. Xilinx fornisce uno strumento di "stima della potenza", ma la stima è valida solo se il firmware è completo. C'è un rischio quando si effettua una modifica del firmware dell'ultimo minuto, che i requisiti di alimentazione sono maggiori del previsto. Prevedi di lasciare un po 'di margine di corrente. Se la stima della potenza iniziale dice che hai bisogno di 560mA, vai avanti e usa un regolatore da 1000mA. La corrente di uscita extra disponibile non danneggia, ma avere una corrente di uscita insufficiente comporterà un comportamento aberrante del sistema.

Se sono presenti pin FPGA senza commit, portane il maggior numero possibile a un'intestazione. Quando si verifica un problema, questi pin non impegnati diventano una preziosa risorsa diagnostica per sondare i segnali all'interno dell'FPGA.


11

Ho progettato oltre una dozzina di schede basate su FPGA che utilizzavano un'ampia gamma di diversi tipi di FPGA da Lattice Mach X02 a bassa potenza a Virtex 6 ad alte prestazioni con 24 canali SERDES. I normali passaggi che seguo sono:

Trova una scheda COT (simile a MarkU) e fatti un'idea delle risorse interne FPGA di cui avrai bisogno, in particolare prendo attenzione a:

  • Conteggio LUT (tabella di ricerca):(il design si adatta ai LUT sulla scheda di riferimento?) Se non si dispone delle risorse o di un metodo esauriente per determinare una stima precisa dell'utilizzo dei LUT (precisione <1K LUT) perché forse il design non è finito. Usa questa regola empirica. Se il progetto è quasi finito, prendi le dimensioni del progetto (conteggio LUT) e trova un FPGA con almeno il 30% in più di LUT. se il design non è vicino al termine, passare fino al 50% o al 100% in più di LUT. Quindi, se il design si adatta a LUT 9K assicurati di utilizzare un FPGA con LUT 12K o superiore. Tendo a esagerare e probabilmente salirei a 25K LUT. Questo ti risparmierà un mal di testa lancinante in seguito. Chiunque stia commissionando questo progetto di scheda dovrebbe capire che dovrebbe esserci più di una rotazione di questo progetto, quindi è comprensibile sovradimensionare la prima versione dell'FPGA.
  • BRAM (blocco conteggio RAM):Determina se il tuo progetto richiede più risorse di memoria di quelle che l'FPGA ha internamente. All'inizio questo è facilmente trascurabile, ma in un progetto si tende a utilizzare la RAM a blocchi per vari motivi (ROM, FIFO, ecc ...). Ho esaurito la memoria a blocchi su un progetto e ho tentato di utilizzare la RAM distribuita (usando i LUT come RAM ) e ha mangiato tutte le mie LUT molto velocemente. È importante determinare se è necessaria memoria esterna. Ciò aggiunge molti rischi ai progetti perché se il progetto richiede un livello di prestazioni puoi "
  • Enumera tutti gli standard di segnalazione e i possibili livelli di tensione che utilizzerai: questo è importante perché alcuni degli standard di segnalazione che desideri utilizzare (LVDS, LVSPEC, LVCMOS) potrebbero avere restrizioni di tensione. Consulta le guide per l'utente e assicurati che tutti questi standard siano supportati.
  • Requisiti di alimentazione:Sono d'accordo con tutte le precedenti lamentele sugli alimentatori sottodimensionati ottenere la tensione del core specificata è il tufo, ultimamente ho usato molti moduli TI Nano per gli FPGA di grandi dimensioni ma di fascia bassa (Spartan LX45 (T) - LX75 (T) e Lattice ECP3). Fortunatamente è possibile mitigare alcuni dei rischi associati al dimensionamento degli alimentatori utilizzati per l'I / O. In particolare se questo banco non sta guidando una fonte sconosciuta (connettore di espansione), il processo è il seguente: Trova tutti i componenti a cui questo banco si collegherà, determina la capacità di ingresso per tutti quei componenti, scopri la frequenza di clock massima guiderà questi segnali, quindi potrai calcolare sia il fabbisogno di potenza sia stimare approssimativamente il requisito di bypass,

Usando l'equazione [P = (1/2) CV ^ 2 * (f)] dove C = capacità di ingresso, f = frequenza. dell'ingresso che deve essere pilotato dall'FPGA (per ogni segnale!). puoi scoprire la stima del caso peggiore su quanta energia è necessaria per pilotare tutti i segnali di uscita.

Sarà inoltre necessario considerare la perdita di potenza associata alle resistenze di terminazione interne (in base agli standard I / O utilizzati)

Ho anche usato lo strumento TI Webbench sempre più recentemente con molto successo:

TI Webbench (non lavoro per TI)

Schematico:

  • Imposta il tuo schema con un idiota in mente Tu e tutti i progettisti di HDL tornerete molto su questo schema in modo da rendere facile a tutti trovare rapidamente ciò di cui hanno bisogno senza richiedere in futuro voi o loro per ricercare l'intero schema per scoprirlo se il Pin 20 è l'ingresso dell'orologio. Ciò include molte note sullo schema (se possibile), descrivono lo scopo di un circuito, il risultato atteso e persino le preoccupazioni. Poiché gli FPGA possono essere suddivisi in banchi, prendere in considerazione la possibilità di suddividere il componente FPGA in più parti e forse anche dedicare un'intera pagina schematica per un singolo banco.

  • METTERE GRANDI NOTE DI ANNOYING NEL TUO SCHEMATICO SUL COLLEGARE GLI OROLOGI AI PERNI CORRETTI: Ho sbattuto la testa contro molte pareti mentre stavo costruendo la mia prima immagine per il design e ho ottenuto il temuto 'segnale dell'orologio indirizzato su un pin abilitato per non clock' . Vivi nel timore dei vari tipi di pin orologio sull'FPGA. Assicurati di capire che alcuni pin di clock sono destinati all'uso su un quadrante di un FPGA, altrimenti affronterai tutti dicendo: "Ehi, lo sapevi che ci sono alcuni pin di clock che sono destinati all'uso su un quadrante di un FPGA". Ci vogliono solo 15 persone che ti dicono questo per essere sicuri di non farlo mai più.

  • SPENDI MOLTO TEMPO SUL DESIGN DI CONFIGURAZIONE FPGA: assicurati di far risaltare i pin JTAG anche se non prevedi di usarli. È la differenza tra un errore realizzabile e un difetto fatale.

  • In caso di dubbi, fai emergere pulsanti, LED e dip switch di segnali extra: ho lavorato molto sul lavoro extra associato all'instradamento di segnali extra a LED, interruttori e pulsanti di interruzione breakout, ma ha SEMPRE aiutato.

Layout :

  • Comunica presto con la casa Fab: specialmente se potresti aver bisogno di un instradamento controllato ad impedenza, chiedi uno strato sovrapposto per il conteggio dei livelli desiderato. È molto più facile instradare i segnali ad alta velocità quando si hanno le larghezze di traccia definite per prime e si suppone che avresti potuto usare tracce da 6 mil invece di 8 mil per realizzare l'impedenza di 50 ohm.

  • Inizia con i cappucci di bypass: progetta il sistema di alimentazione in anticipo. La prima cosa che faccio è iniziare posizionando tutti i piccoli tappi sotto l'FPGA o vicino ai pin. I più grandi al di fuori dell'FPGA e instradano un intero circuito di alimentazione e lo posizionano all'incirca dove mi aspetto che sia. In questo modo non dovrai combattere il puzzle di routing e scendere a compromessi.

  • Segnali ad alta velocità in secondo luogo: questi saranno quelli in cui non si desidera saltare troppi livelli.


Imparo sempre più cose e mi piacerebbe qualsiasi altro suggerimento che altri designer hanno incontrato, quindi per favore aggiungili.


6

Penso che un buon punto di partenza per un PCB personalizzato dotato di FPGA saranno le schede di progettazione di riferimento del fornitore FPGA. È possibile ispezionare questi progetti, ad esempio per l'alimentatore, ma tenere presente che le schede di progettazione di riferimento sono talvolta sottodimensionate. Abbiamo avuto molti problemi con le schede Xilinx ML605 che hanno perso la configurazione lì, a causa di un alimentatore sottodimensionato.

Rispondi al commento di omid:

Uno dei miei colleghi ha implementato un algoritmo di calcolo sistolico su un Virtex-6 LXT240. L'input dei dati è stato fornito da Gigabit Ethernet. A causa dell'approccio sistolico, l'FPGA non ha fatto quasi nulla se non c'erano dati negli input cinquos o principalmente tutti i flip flop dell'FPGA erano attivati ​​a 200 MHz se è arrivato un nuovo frame Ethernet. Questo squilibrio nel calcolo ha causato l'arresto dei circuiti di alimentazione TI della scheda ML605 che poteva essere recuperata da questo stato solo commutando l'interruttore di alimentazione principale.

Abbiamo dato questo progetto al dipartimento di ingegneria elettrica della nostra università e hanno capito che non c'è modo di regolare i coefficienti del regolatore in base ai condensatori installati.

Sì, si potrebbe dire: cattivo design o usare quindici più grandi o ...

La soluzione dei miei colleghi è stata una riduzione dell'utilizzo dell'FPGA dell'80%.

Tuttavia, una scheda di prototipazione e un progetto di riferimento dovrebbero essere in grado di gestire carichi di lavoro estremi, soprattutto se questa scheda contiene un FPGA che non ha un consumo di energia regolare come una CPU.


Puoi spiegare cosa intendi con "sottodimensionato" di cui dovrei essere a conoscenza?
omesso il
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.