A cosa servono i CI logici programmabili di diversa complessità?


10

La logica programmabile può essere implementata nel tuo widget in molti spettri diversi, dalla masterizzazione di alcuni gate o l'utilizzo di un MUX all'ultimo FPGA con microcontrollore incorporato e periferiche IO, per non parlare del GPIO PrimeCell di ARM o di altri esempi più specifici . Per quali applicazioni vengono utilizzati i vari livelli di complessità del dispositivo logico programmabile? Anche se il raggruppamento sembra fondersi insieme vicino agli estremi delle loro definizioni , penso che questo sia un elenco accettabile:

  1. PAL / PLA / GAL : matrice logica programmabile; sembra essere elencato come'Embedded - PLDs'presso Digikey, coprendo I / O asincrono da 10/8 (ATF16V8C) a50MHz, 192 macrocellule, (CY7C341B) e sono per lo più riprogrammabili.
  2. CPLD : dispositivo logico programmabile complesso; Digikey li elenca come tali, disponibili in 7,5 I 10 I / O (ATF750C) a 233 MHz, 428 I / O "CPLD a densità FPGA" (CY39100V484B).
  3. FPGA : array di gate programmabile sul campo; disponibile nellebestie58 I / O (XC2064) a 1023 I / O BGA (EP1S80F1508C7N).
  4. FPGA con MCU rigido : è quando un MCU è fisicamente disposto nell'IC FPGA, non emulato.

Citazione di Wikipedia:

La differenza tra FPGA e CPLD è che gli FPGA sono basati internamente su tabelle di ricerca (LUT) mentre i CPLD formano le funzioni logiche con sea-of-gate (ad es. Somma dei prodotti). I CPLD sono pensati per progetti più semplici mentre gli FPGA sono pensati per progetti più complessi. In generale, i CPLD sono una buona scelta per ampie applicazioni logiche combinatorie mentre gli FPGA sono più adatti per macchine a grande stato (ad es. Microprocessori).

Questo non spiega la differenza tra l'utilizzo di un CPLD 233 MHz, 400 I / O e un FPGA comparabile ; o tra un PLD a macrocellula 192 e un CPLD comparabile . Non posso approvare linee guida affidabili per restringere le opzioni di progettazione. Nota che al momento non ho in mente un'applicazione specifica, ma mi sono spesso chiesto: "cosa dovrei usare per farlo?"

Ho ricevuto eccellenti consigli fuori sede riguardo a requisiti specifici, ma penso ancora che questa domanda possa beneficiare di alcuni esempi che mostrano la preferenza su una famiglia di PLD quando un'altra potrebbe sembrare uguale o più adatta.


L'XC2064 è una parte antica. Non so se CY7C341B e CY39100V484B siano ancora realizzati. Dovresti considerarlo quando fai un confronto / una decisione.
Brian Carlton,

2
Cordiali saluti, con una qualsiasi di queste parti, c'è un'enorme differenza tra la varietà di offerte che i produttori mettono nella loro letteratura e l'assortimento molto più piccolo di combinazioni di gate / pacchetto / velocità e temperatura che ci si può aspettare di mettere per mano piccole quantità in meno di sei mesi di tempo di consegna. Quindi, quando si progetta con loro, verificare prima la disponibilità reale. Anche se so che l'acquisto vuole ottenerli dalla distribuzione, preferisco scegliere dispositivi in ​​cui so che un fornitore più orientato ai prototipi li ha effettivamente a portata di mano durante la notte, se necessario.
Chris Stratton,

Un buon consiglio, @ChrisStratton. Questa è di solito la prima cosa che controllo con la maggior parte delle parti, ma è comunque utile sapere che è particolarmente problematico con i PLD.
tyblu,

Risposte:


7

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:

  1. 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.

  2. 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.

  3. 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.


estendendo leggermente la tua risposta, sarei propenso a raggruppare PAL / PLA / GAL nello stesso paniere di PLD / CPLD per motivi di avvio immediato senza tempi di configurazione e che i fornitori stanno iniziando a spingere i CPLD davanti a PAL / PLA / Dispositivi GAL. Ad esempio, sto lavorando con alcuni dispositivi reticolari e i loro circuiti integrati della famiglia CPLD sono notevolmente più economici e offrono più porte rispetto ai cugini PAL / GAL / PLA. Il costo di quest'ultimo è proibitivo per quello che offrono rispetto al primo.
smashtastic

La linea è decisamente sfocata. Non pensavo che PAL / PLA / GALs avessero elementi di memorizzazione, o CLPD avevano SRAM fino a quando non ho cercato le parti elencate. Sembra che i PAL / PLA / GAL siano più simili al nastro d'anatra in un design che all'essere una parte centrale.
W5VO,

3

Un buon elenco di "regole empiriche" sarebbe simile a questo:

  • PAL / PLA / GAL: utilizzato al posto di porte logiche IC discrete su un PCB
  • CPLD: utilizzato laddove sono necessarie attività complesse, non DSP e possibilmente temporali (caricamento del codice di avvio su un FPGA dalla memoria, generatore di onde sinusoidali LUT per DAC, ecc.)
  • FPGA: utilizzato quando sono necessarie funzionalità time-critical, moltiplicazione o DSP (filtri FIR, FFT, ecc.)
  • FPGA con MCU rigido: utilizzato quando è necessaria la funzionalità FPGA e le periferiche sull'FPGA devono essere accedute (sensori di temperatura) o per consentire l'implementazione di un'attività meno sensibile al tempo in C anziché VHDL per semplicità (funzionalità porta UART / seriale, Pulizia PCB, ecc.)

Con un CPLD economico a un prezzo scontato in piccole quantità, PAL / PLA / GAL sono praticamente morti tranne per le applicazioni legacy.
Chris Stratton,

Non lo discuterò. Potrei solo immaginare che, laddove un basso consumo (batteria) / dimensioni ridotte è un vincolo, potrebbero essere ancora utilizzati in quanto potrebbero essere più vantaggiosi di un CPDL, ma utilizzerei comunque il CPLD più piccolo / efficiente dal punto di vista energetico se fosse il mio design.
Gioele B,

2

Una semplice risposta potrebbe essere che ci sono due modi:

1. Progetta innanzitutto il tuo sistema ad alto livello di astrazione (ad esempio HDL o schemi). Quindi si tenta di adattarlo a PAL / CPLD / FPGA e scegliere quelli che soddisfano le proprie esigenze (numero di gate / elementi logici, prestazioni, ecc.) E quindi scegliere quello più economico a seconda di ciò che si definisce più economico (costo di sviluppo vs costi di produzione, ecc.).

2. Ma di solito prima di iniziare qualsiasi codifica HDL o sviluppo schematico è già possibile stimare la complessità del sistema (quante porte sono necessarie, se sembra che sia necessario MCU a 8 bit o MCU a 32 bit o nessun microcontrollore in tutti). In base a ciò puoi anche scegliere il tuo dispositivo programmabile. Ciò sarebbe meno preciso, ma consentirà di progettare l'hardware analogico e digitale non programmabile in parallelo con l'hardware e il software programmabili (se presenti).


2

L'FPGA con hard core viene utilizzato poiché è meno area di un microcontrollore separato e più veloce di un microprocessore soft-core. Tuttavia, il prezzo è generalmente peggiore di un FPGA e di un microcontrollore separato. In generale il software e quindi un microcontrollore è migliore per casi (relativamente) lenti e rari come la configurazione dei parametri e la gestione degli errori; la logica è migliore per i processi continui. Ad esempio nell'elaborazione dei pacchetti, la scrittura su una memoria dovrebbe essere logica; la gestione del timeout live-to-live dovrebbe rimanere nel software.

All'interno dello spazio FPGA ci sono parti economiche / a bassa potenza e parti costose / veloci. Generalmente il microcontrollore è solo in quello costoso; ciò peggiora ulteriormente il commercio dei costi rispetto a un MCU discreto per la soluzione on-FPGA.

Nessuno usa i PAL in nuovi progetti, almeno per oltre 10 anni. I CPLD hanno assunto quella nicchia.

Negli ultimi 5? anni CPLDs sono simili a FPGA all'interno, ma con memoria per mantenere la configurazione su chip. Poiché gli FPGA sono ora 100 di MHz, la velocità è molto meno di un motivo per mettere la logica in un CPLD rispetto a 10-15 anni fa. Tuttavia, gli FPGA hanno ancora altre funzionalità come moltiplicatori, serializzatori e molte memorie che possono forzare un progetto in uno anche se non ha molta logica.


1
Uno dei motivi per mantenere un CPLD è che gli attuali CPLD a basso costo sono ancora realizzati in tecnologie a tensione di alimentazione singola, mentre la maggior parte degli FPGA attuali richiede diverse tensioni di alimentazione. Quindi se non hai bisogno di fare molto è più economico per mettere un cpld sulla scheda - ma se stai parlando di un CPLD di grandi dimensioni, un fpga di fascia bassa potrebbe essere più economico e darti più spazio per miglioramenti futuri, specialmente se hai già le alimentazioni di tensione di base disponibili per qualche altro motivo.
Chris Stratton,

Grazie per aver risposto, @BrianCarlton, e per i commenti, @ChrisStratton. Gli esempi forniti e l'opinione attuale sono ottime informazioni.
tyblu,
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.