Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Confronto tra microcontrollori CPLD e FPGA.

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto Utentecarloc, Foto UtenteDirtyDeeds, Foto UtenteIsidoroKZ

0
voti

[1] Confronto tra microcontrollori CPLD e FPGA.

Messaggioda Foto Utentedemos81 » 19 gen 2016, 13:04

Salve a tutti,
premetto che ho già letto alcuni degli articoli presenti sul sitoe wikipediato un po', ma in tutta sincerità nuotando nel mio mare di ignoranza fatico a dipanare alcuni dubbi; quindi chiedo con piacere agli esperti:
1. CPLD e FPGA in pratica non hanno al'interno una gestione del ciclo delle operazioni da svolgere come avviene nei microcontrollori (con registri, ALU, mem dati e programma ecc..) ? son più simili a delle reti logiche sincrone preprogrammabili in pratica?

2. nessuna delle due famiglie (CPLD/FPGA) è programmabile con un paradigma procedurale di alto livello come il C? si programmano solo in VHDL o Verilog?

3. Mi sembra di aver compreso che un programma VHDL o Verilog in conclusione viene convertito nella strutturazione di un circuito tramite l'attivazione di una serie di porte logiche o più in generale di circuiti elettronici sequenziali... ho detto una boiata? e la parte di elettronica integrata che non utilizzo che fine fa?

4. l'FPGA non ha memoria ritentiva della sua programmazione mentre CPLD si, corretto? son entrambe riprogrammabili?

5. FPGA e CPLD hanno un clock o lo prevedono per regolare la velocità di esercizio o in tal senso si possono considerare delle entità asincrone?

6. In ultimo mi chiedo: per quali tipo di applicazioni è preferibile l'uso di un FPGA rispetto a un microcontrollore per esempio? che so, per caso le FPGA non dispongono di librerie per emulare eventuali periferiche che per praticità troviamo integrate nel microcontrollore?

Potrei aver scritto delle cavolate colossali pertanto sarò grato a chiunque sappia fornirmi un qualsivoglia spunto per la comprensione.
Avatar utente
Foto Utentedemos81
1.454 1 6 8
Expert EY
Expert EY
 
Messaggi: 599
Iscritto il: 16 mar 2009, 20:56

1
voti

[2] Re: Confronto tra Microcontrollori CPLD e FPGA..

Messaggioda Foto UtenteTardoFreak » 19 gen 2016, 14:30

1) Si. I microcontrollori eseguono un programma, le logiche programmabili sono, appunto, reti logiche.
2,3) Si possono programmare anche tramite disegno schematico. Il sistema di sviluppo traduce tutto in una serie di connessioni fra macrocelle (CPLD) o elemti logici (FPGA).
4) La FPGA viene programmata all'accensione tramite una memoria FLASH nella quale è contenuta la configurazione o da un microcontrollore. La CPLD è un dispositivo FLASH e quindi come tale si comporta.
5) Sono da considerarsi asincrone. Le linee deputate al clock sono linee particolari.
6) FPGA come controller video, ad esempio. Microcontrollore come web-server, ad esempio.

C'è anche da dire che un microcontrollore, essendo in buona sostanza ed a tutti gli effetti una rete logica, viene anche implementato su FPGA o CPLD. Più nelle FPGA. Un esempio è 8051 il cui sorgente in VHDL è free ed utilizzabile senza pagare la proprietà intelletuale. Alcuni implementano anche i Cortex-M nelle FPGA. Molte FPGA contengono anche una cospicua FLASH dove può risiedere il programma del microcontrollore e, ovviamente, anche una RAM.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: Confronto tra Microcontrollori CPLD e FPGA..

Messaggioda Foto Utentemaxim65 » 19 gen 2016, 14:37

Nel loro nome trovi già la prima risposta: cpld stà per complex programmable logic device e fpga field programmable gate array. Sono possibili sia logiche sincrone che non ed entrambe nello stesso chip; dipende da come scrivi il vhdl (VHSIC Hardware Description Language) dove descrivi il circuito invece di disegnarlo. Quindi il risultato che ottieni è hardware. Non c'è nessun micro che gira, ma puoi realizzare dei micro obsoleti o controller con il vhdl che li descriva. Il vhdl era nato per simulare i chip complessi come i micro poi hanno visto che andava bene anche per progettarli.
Esistono delle librerie free, sia per cpld che per fpga le trovi sui siti dei produttori di chip, basta cercare e se guardi un qualsiasi datasheet di una cpld, per esempio ti viene descitta la sua struttura.
Non so se forniscano dei risultati affidabili ma avevo già sentito parlare di un convertitore da c a vhdl. Prova a cercare su internet.
Avatar utente
Foto Utentemaxim65
466 1 3 6
Sostenitore
Sostenitore
 
Messaggi: 576
Iscritto il: 16 mar 2009, 19:04

0
voti

[4] Re: Confronto tra Microcontrollori CPLD e FPGA..

Messaggioda Foto Utentedeltax » 19 gen 2016, 15:45

Ti rispondo, forse un po' superficialmente, alle domande a cui so dare una risposta, per il resto ti consiglio la lettura dei primi capitoli di "RTL Hardware design using VHDL" di Wiley.

1. Gli FPGA non hanno degli elementi di elaborazione (ALU, ecc) come i microcontrollori, hanno semplicemente delle celle elementari (LUT) che vengono programmate e interconnesse tra di loro per ottenere delle date funzioni combinatorie e/o sequenziali. Le LUT hanno tipicamente una look-up table, un flip-flop tramite il quale si riproduce il comportamento sequenziale, e un mux per selezionare il comportamento sequenziale. Non hanno un data path prestabilito, come nei microcontrollori, ma il datapath è dato da ciò che scrivi tu e ottimizzato poi dal software.

2. Non saprei rispondere con certezza, ma ho visto di sfuggita questo "linguaggio", SystemC, che ti permette con la sintassi di C++ di fare un paradigma di programmazione concorrente. Secondo me, anche se esistono o usciranno linguaggi di questo tipo, l'importante è ricordarsi le regole che contraddistunguono i paradigmi di programmazione sequenziale/concorrente, tutto il resto è una questione di esercizio per la sintassi

3. non capisco cosa intendi per " circuiti sequenziali". Sul funzionamento degli FPGA a livello hardware trovi bizzeffe di risorse, in generale se leggi la risposta (1) ho descritto brevemente il comportamento della LUT; tu "programmi" ogni LUT, e le interconessioni tra le LUT, attraverso una memoria contenuta nel chip. La parte elettronica che non utilizzi rimane nel chip ed è appunto intuilizzata, perché non routata. Provo ad anticipare una tua domanda, se mai te la stai facendo. Se credi che questo sia uno spreco, considera che la progettazione di un ASIC avrebbe sicuramente portato ad un hardware non inutilizzato, ma aumentando di tantissimo i costi non ricorsivi quali: progettazioni, maschere adibite, simulazione delle interconnessioni per i parassiti e quindi la violazione dei tempi ecc. Tutto ciò negli FPGA è noto e gestito dal software, poiché è nota la struttura, quindi i time constraint che il software calcola sono su base di algoritmi precalcolati dal produttore.

5. Puoi realizzare circuiti puramente combinatori o sequenziali. Nel secondo caso, nel VHDL usi un segnale di clock. I moderni software associati agli FPGA riconoscono quando un segnale è usato come clock, e hanno delle impostazioni dedicate che permettono di instradare il clock entro particolari linee elettriche dedicate. Questo perché il clock è un segnale molto delicato, che impatta pesantemente sulle performance e sulle funzionalità, ed ha alcuni problemi rilevanti quali skew, jitter ecc

6. Alla seconda domanda non so rispondere, alla prima direi che gli FPGA vengono usati quando le prestazioni di un micro non sono più sufficienti, ed hai bisogno di manipolare grosse quantità di dati, fare calcoli complessi o molto veloci

Spero non di non aver sparato qualche cazzata, non ho esperienza nel campo ma è da un po' che studio gli FPGA perché mi appassionano
Avatar utente
Foto Utentedeltax
936 1 4 6
Sostenitore
Sostenitore
 
Messaggi: 566
Iscritto il: 12 apr 2013, 14:41

0
voti

[5] Re: Confronto tra Microcontrollori CPLD e FPGA..

Messaggioda Foto Utentedemos81 » 19 gen 2016, 17:17

Grazie a tutti per i chiarimenti, ne inizio a far tesoro.
Ho solo una perplessità legata ad alcune affermazioni trovate nell'articolo citato di seguito in merito agli errori che vengono indotti dai differenti tempi di propagazione dei segnali.
http://www.electroyou.it/rini/wiki/effetto-supercar-con-una-fpga
(articolo di Foto Utenterini)

in pratica mi chiedevo l'eventuale errore citato, in che modo è gestito? viene ridotto ai minimi termini dal software che genera il codice per programmare lFPGA o è gestito interamente dal progettista che lo deve calcolare e valutare di volta in volta?
è di solito notevolmente piccolo e ignorabile o svolge un ruolo di primo piano nella progettazione?

P.S. le LTU che citi sono le Configurable Logic Blocks (CLB) dell'articolo, giusto Foto Utentedeltax?
Avatar utente
Foto Utentedemos81
1.454 1 6 8
Expert EY
Expert EY
 
Messaggi: 599
Iscritto il: 16 mar 2009, 20:56

0
voti

[6] Re: Confronto tra Microcontrollori CPLD e FPGA..

Messaggioda Foto Utenteluxinterior » 19 gen 2016, 20:04

Puoi leggere questo articolo dove si paral della sincronizzazione die segnali.
Non sono espertissimo (navigo a vista nel mondo FPGA) ma posso dirti che è indispensabile sincronizzare ogni cosa proprio per evitare incertezze nella propagazione dei segnali.
Quando ho iniziato a lavorare con fpga mi serviva un divisore del clock ho realizzato un counter e ogni uscita intermedia per me era un clock diviso per due.
Quando ho fatto la sintesi del tutto (più o meno come compilare in C per micro) mi è uscita la segnalazione che il mio clock non era in realtà un clock accettabile perché introduceva incertezza sul segnale a causa dei tempi di propagazione. (e anche per motivi hw che ti dico sotto)
A forza di studiare ho capito che il clock nell' FPGA non si deve dividere ma si propaga così com'è e si usano dei segnali di enable se serve un clock diviso. Per rendere l'idea è come se in un micro tu entri sempre in una procedura ma la esegui solo ogni 10 volte che entri. Il segnale di enable può avere tutta l'incertezza che vuoi ma lo generi abbastanza ampio in modo da includere con sufficiente margine l'evento del clock che vuoi catturare.
Detta così è un casino in altre parole se vuoi generare un evento ogni 10 fronti di salita del clock generi un segnale che diventa attivo prima del decimo fronte di salita del clock e rimane attivo per un certo tempo oltre il decimo fronte di salita. La combinazione delle due condizioni: segnale di enable e fronte del clock ti genera un evento ogni 10 fronti di clock.
L'aspetto hw da considerare per il clock è il rotuing all'interno dell'fpga che avviene tramite connessione specificate che garantiscono i tmepi di propagazione e infatti le linee di clock in un componente non sono linee qualunque. Anche per questo non puoi prendere l'uscita qualunque di un registro qualunque e batezzarlo come clock.
Avatar utente
Foto Utenteluxinterior
2.412 2 4 8
Expert EY
Expert EY
 
Messaggi: 1430
Iscritto il: 6 gen 2016, 17:48


Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti