Esistono due criteri che è possibile utilizzare per valutare un progetto digitale che consente di decidere quale parte corrisponde meglio ai propri criteri. Il primo è la dimensione / complessità del progetto - quanta logica è coinvolta. Il secondo è i requisiti di input e output in termini di conteggio dei pin. La velocità può essere presa in considerazione se puoi stimare quale sarebbe la tua funzione più lenta. Gli strumenti del fornitore (Altera Quartus II, Xilinx ISE, ecc.) Ti aiuteranno una volta entrato nel campo di gioco giusto.
PAL / PLA / GAL: sono destinati a sostituire circuiti di dimensioni medio-piccole che potresti normalmente implementare come chip logici LSI (serie 7400, 4000). Questi possono offrire layout della scheda migliori grazie alla rimappatura I / O e molte semplici funzioni logiche. Questi chip contengono memoria non volatile (o fusibili programmabili una volta) e non richiedono tempo di configurazione all'accensione. Non possono contenere elementi di archiviazione dei dati.
CPLD: si tratta di cugini più grandi del PLA. I progetti possono essere macchine a stato piccolo o persino un nucleo di microprocessore molto semplice. La maggior parte dei chip CPLD che ho visto non ha alcuna SRAM on-chip, anche se il grande CPLD Cypress che hai collegato lo fa. I CPLD hanno maggiori probabilità di essere riprogrammabili con memoria flash e inoltre non richiedono tempo di configurazione all'accensione.
FPGA: a differenza del CPLD, i blocchi logici si basano su SRAM anziché su memoria flash, con conseguenti operazioni logiche più veloci. Il principale svantaggio degli FPGA è che, poiché la configurazione è memorizzata nella SRAM, ogni volta che il dispositivo viene acceso la FPGA deve caricare la sua programmazione in questa SRAM. A seconda delle dimensioni del progetto e della velocità della memoria non volatile, ciò può causare un notevole ritardo dall'accensione al funzionamento completo. Alcuni FPGA dispongono di flash su chip per l'archiviazione dei dati, ma la maggior parte utilizza chip di memoria separati. Gli FPGA avranno spesso moltiplicatori cablati, PLL e altre funzioni logiche per migliorare la velocità di elaborazione. Sono disponibili anche grandi blocchi di RAM su chip. Sarai anche in grado di utilizzare specifiche I / O ad alte prestazioni come LVDS, PCI e PCI-Express.
FPGA con microprocessore Hard Core: non ho familiarità con questi, ma immagino che il tuo progetto si incentrerà sulla programmazione del microcontrollore e l'FPGA aumenterebbe il microcontrollore. Le parti che hai identificato sembrano farti iniziare il tuo progetto con un microcontrollore e un FPGA, quindi unire i due in un unico chip / pacchetto.
Come decidere quale è giusto per te:
Il modo migliore è di terminare il codice (Verilog / VHDL), quindi utilizzare gli strumenti del fornitore per provare a inserirlo nella parte più piccola possibile. So che lo strumento Altera ti consente di modificare abbastanza facilmente gli obiettivi di programmazione, in modo da poter continuare a scegliere FPGA più piccoli e quindi CPLD più piccoli fino a quando il tuo utilizzo del design non si avvicina al 75% circa. Se hai bisogno di prestazioni, prova a scegliere i dispositivi con funzionalità (moltiplicatori rapidi) che riducono i requisiti di velocità della logica. Ancora una volta, gli strumenti del fornitore ti aiuteranno a identificare se è necessario eseguire l'aggiornamento o se è possibile eseguire il downgrade.
Un altro fattore di quale parte utilizzare è la facilità d'uso. L'uso della logica PAL / PLA / GAL è probabilmente uno sforzo maggiore rispetto alla costruzione della funzione utilizzando porte logiche discrete (74HC *, 4000, ecc.). I CPLD in genere richiedono solo una singola tensione di alimentazione e non richiedono circuiti aggiuntivi. Sono effettivamente indipendenti. Gli FPGA iniziano a utilizzare più alimentatori per I / O e core logico, standard I / O complessi, memoria di programma separata, PCB multistrato (> 2) e pacchetti BGA.
I passaggi per restringere i requisiti di progettazione includono:
Identifica tutti gli ingressi e le uscite per il tuo FPGA / CPLD. Di solito questa è una parte facile della fase di progettazione. In questo modo sai quale pacchetto stai guardando e quanto vicino puoi tagliarlo a quel margine.
Disegna uno schema a blocchi della logica interna. Se i tuoi blocchi sembrano semplici (ogni blocco avrebbe una mano piena di porte logiche e registri), allora probabilmente puoi usare un CPLD. Se, tuttavia, i tuoi blocchi hanno etichette come "Transciever Ethernet", "Interfaccia PCI-Express x16", "Controller DDR2" o "Codifica / Decodifica h264", allora stai quasi sicuramente guardando un FPGA e usando HDL.
- Controlla se le tue interfacce hanno requisiti I / O speciali, come tensioni speciali, LVDS, DDR o SERDES ad alta velocità. È più facile ottenere un chip che lo supporti piuttosto che ottenere un chip traduttore aggiuntivo.
Esempi di applicazioni CPLD:
- PWM multicanale con interfaccia SPI
- Espansore I / O
- Decodifica dello spazio indirizzo CPU
- Orologi (tempo)
- Display multiplexor
- DSP semplice
- Alcuni semplici programmi possono essere convertiti in un design CPLD
Esempi di applicazioni FPGA per hobby:
- Piccoli progetti System-on-Chip (SoC)
- video
- Bridge di protocollo complessi
- Elaborazione del segnale
- Crittografia / decrittografia
- Emulazione del sistema legacy
- Analizzatore logico / Generatore di schemi
Per la maggior parte del lavoro da hobbista, sarai limitato a FPGA relativamente piccoli a meno che tu non voglia saldare pacchetti BGA. Vorrei scegliere tra un CPLD di grandi dimensioni o un FPGA economico e i requisiti di dimensioni / velocità determinerebbero quello di cui avevo bisogno.