Ho letto questo post e non risponde nella sua interezza alla mia domanda:
Penso a un microcontrollore come a qualsiasi cosa che abbia un po di memoria, registri e possa elaborare una serie di istruzioni come LOAD, STORE e ADD. Contiene porte logiche e simili per svolgere il suo ruolo, ma il suo compito principale è quello di essere un processore universale di bit. Penso a un Microntroller come a un sistema di progetti ASIC interconnessi per creare la capacità di memorizzare ed elaborare istruzioni.
Penso a un dispositivo ASIC come un circuito che è stato specificamente costruito utilizzando componenti logici ed elettrici per eseguire una singola attività, senza altre attività in mente né hardware aggiuntivo incluso.
Penso a un dispositivo FPGA come un dispositivo ASIC (un dispositivo di basso livello) + un mucchio di roba inutilizzata rimasta, abituata a implementare una particolare tabella di verità.
Nonostante il suo nome, un FGPA sembra molto “specifico per lapplicazione”, poiché deve essere ricablato per eseguire un compito nuovo e diverso. Questo porta a confusione con ASIC. Tuttavia, in caso di ricablaggio di un FPGA, dovrebbe essere presente tutto lhardware necessario. Inoltre, gli FPGA sono pensati per essere programmabili, ma non è questo ciò a cui è destinato un microcontrollore?
Il post sopra a cui ho fatto riferimento menziona anche HDL, con cui ho familiarità. “T HDL può essere utilizzato sia per ASIC che per FPGA e tramite proxy per progettare un intero microcontrollore?
Commenti
- It ‘ non è molto chiaro quale sia la tua domanda. Hai letto domande correlate su FPGA e ASIC? HDL è effettivamente utilizzato per progettare ASIC e implementazioni FPGA e puoi progettare un microcontrollore in HDL. >
- Altera offre un ebook gratuito chiamato FPGAs for Dummies , che spiega bene la differenza tra FPGA, ASIC e microcontrollori.
- @kkrambo Stai chiamando ‘ me un manichino? 🙂 Scusa, ‘ t resistere … io controllerò.
- Ho aggiunto la parola ‘ similarities ‘ al titolo della domanda, perché sembra che ci sono minuti dettagli di gergo tecnico che possono confondere il modo in cui i tre diversi dispositivi si relazionano: per esempio un dispositivo può contenere uno degli altri due dispositivi, oppure può contenere molti componenti simili ma differire per alcuni aspetti importanti. Questo è già stato toccato da alcune delle risposte esistenti. Grazie.
Risposta
ASIC vs FPGA
Un array di porte programmabili sul campo può essere visto come la fase di prototipazione di circuiti integrati specifici per lapplicazione: gli ASIC sono molto costosi da produrre, e una volta realizzati lì non si torna indietro (poiché il costo fisso più costoso sono le maschere [una sorta di “stencil” di produzione] e il loro sviluppo). Gli FPGA sono riprogrammabili molte volte, tuttavia a causa del fatto che una matrice generica di porte è collegata per raggiungere il tuo obiettivo , non è ottimizzato come gli ASIC. Inoltre, gli FPGA sono dispositivi dinamici in modo nativo in quanto se lo spegni, perdi non solo lo stato corrente ma anche la configurazione. Ora esistono schede che aggiungono un chip FLASH e / o un microcontrollore a caricare la configurazione allavvio, quindi questo tende ad essere un argomento meno importante. Sia gli ASIC che gli FPGA possono essere configurati con i linguaggi di descrizione hardware e talvolta gli FPGA sono utilizzato per il prodotto finale. Ma generalmente gli ASIC entrano in gioco quando il design è corretto.
FPGA vs microcontrollore
Per quanto riguarda la differenza tra un microcontrollore e un FPGA, puoi considerare un microcontrollore come un ASIC che fondamentalmente elabora il codice in FLASH / ROM in sequenza. Puoi creare microcontrollori con FPGA anche se non è ottimizzato, ma non il contrario. Gli FPGA sono cablati proprio come circuiti elettronici, quindi puoi avere circuiti veramente paralleli, non come in un microcontrollore dove il processore salta da un pezzo di codice a un altro per simulare un parallelismo sufficientemente buono. Tuttavia, poiché gli FPGA sono stati progettati per attività parallele, non è così facile scrivere codice sequenziale come in un microcontrollore.
Ad esempio, tipicamente se scrivi in pseudocodice “lascia C essere A XOR B”, su un FPGA che sarà tradotto in “costruisci un cancello XOR con i mattoncini lego contenuti (tabelle di ricerca e latch), e collegare A / B come ingressi e C come uscita “che verrà aggiornato ad ogni ciclo di clock indipendentemente dal fatto che C sia utilizzato o meno. Considerando che su un microcontrollore che verrà tradotto in “istruzione di lettura – è uno XOR di variabili allindirizzo A e allindirizzo B della RAM, risulta da memorizzare allindirizzo C. Caricare i registri delle unità logiche aritmetiche, quindi chiedere allALU di eseguire uno XOR, quindi copia il registro di output allindirizzo C della RAM “. Sul lato utente, però, entrambe le istruzioni erano 1 riga di codice.Se dovessimo fare questo, POI qualcosaltro, in HDL dovremmo definire quello che viene chiamato un Processo per eseguire artificialmente sequenze – separato dal codice parallelo. Mentre in un microcontrollore non cè niente da fare. Daltra parte, per ottenere il “parallelismo” (sintonizzazione e disattivazione realmente) da un microcontrollore, è necessario destreggiarsi con i thread, il che non è banale. Diversi modi di lavorare, diversi scopi.
In sintesi:
ASIC vs FPGA: fisso, più costoso per un numero limitato di prodotti (più economico per volumi elevati), ma più ottimizzato.
ASIC vs microcontrollore: sicuramente come confrontare uno strumento con un martello.
FPGA vs microcontrollore: non ottimizzato per lelaborazione sequenziale del codice, ma può anche svolgere compiti veramente paralleli molto facilmente. Generalmente Gli FPGA sono programmati in HDL, i microcontrollori in C / Assembly
Ogni volta che la velocità delle attività parallele è un problema, prendi un FPGA, evolvi il tuo progetto e infine trasformalo in un ASIC se “è più economico per te nel lungo periodo (produzione di massa). Se le attività sequenziali vanno bene, prendi un microcontrollore. Immagino che potresti fare un IC ancora più specifico per lapplicazione da questo se è più economico anche per te nel lungo periodo . La soluzione migliore sarà probabilmente un po di entrambe le cose.
Che ricerca rapida dopo aver scritto questo mi ha dato:
Risposta
Gli FPGA possono essere “ricablati” riprogrammandoli. Un FPGA carica la propria configurazione nelle celle logiche configurabili quando viene alimentato . Ciò significa che può essere riprogrammato senza modifiche allhardware.
Gli ASIC possono essere ricablati solo modificando le maschere fotolitografiche presso la fonderia di silicio.
Un microcontrollore è un tipo di ASIC, che esegue un programma e di conseguenza può fare cose generiche. Tuttavia, se si desidera modificare il set di istruzioni o fare qualcosa di simile, è necessario modificare lattuale layout del CI al silicio.
La differenza tra un FPGA e un MCU è più sfocata. Fondamentalmente, ciò che è un FPGA, a livello hardware, è un sacco di piccole celle SRAM, tutte collegate a una fitta matrice di multiplexer. Fondamentalmente, un FPGA è un intero mucchio di logica discreta che può essere “ricablata” elettronicamente ** semplicemente riprogrammando i multiplexer e le celle SRAM.
In quanto tale, puoi implementare effettivamente un MCU allinterno di un FPGA, poiché un MCU è solo una certa configurazione di celle logiche. In effetti, gli FPGA sono molto comunemente usati nel processo di progettazione degli MCU.
Un microcontrollore è unimplementazione di una certa configurazione logica. Il motivo per cui li abbiamo è che implementando un MCU direttamente nel silicio, la quantità complessiva di spazio richiesto per il die di silicio può essere notevolmente ottimizzata e possono essere effettuate alcune ottimizzazioni delle prestazioni che la “genericità” richiesta di un FPGA proibisce. Ciò consente di ridurre drasticamente i costi di produzione di un MCU e, di conseguenza, un MCU comune è molto più economico di un FPGA in grado di contenere la logica equivalente.
FPGA sono utili in alcune applicazioni, perché possono implementare strutture logiche in un modo che gli MCU non possono fare. Ad esempio, se devi aggiungere X1 + Y1, X2 + Y2, X3 + Y3 e X4 + Y4, il LMCU dovrà eseguire ogni operazione in sequenza *. Un FPGA può semplicemente avere 4 ALU separate allo stesso tempo , quindi può eseguire la stessa operazione in un quarto del tempo (supponendo che i due dispositivi abbiano la stessa frequenza).
Qui è dove FPGA ( o ASIC progettati per lo stesso compito) possono davvero brillare, nel fatto che puoi fare molte, molte cose simultaneamente , che un singolo processo può fare solo in sequenza.
* (nota: sto ignorando alcune cose come SIMD qui)
Commenti
- Io non ‘ Non credo che la distinzione FPGA / ASIC sia confusa; in un FPGA, i circuiti il cui ” cablaggio ” possono essere modificati funzionano simultaneamente e indipendentemente. Un MCU ha una grande quantità di circuiti il cui cablaggio non può essere modificato, il cui comportamento è controllato tramite informazioni a cui si accede in modo frammentario da un array di memoria programmabile. In qualsiasi momento, una CPU sarà generalmente in grado di eseguire solo unoperazione da un elenco di poche migliaia a pochi miliardi di scelte, ma lMCU sarà progettato in modo che mettendo insieme tali operazioni in sequenza sarà possibile farlo lavoro utile.
- Grazie. Molto vicino a diventare la risposta … anche se 10 mesi dopo. +1 per fare ammenda.
Risposta
Questa è una buona domanda,
Fondamentalmente un microcontrollore e un Gli ASIC hanno hardware (spesso chiamato silicio) che è scolpito nella pietra e non può essere modificato. Un FPGA può essere configurato per rappresentare molti diversi tipi di hardware (questo può includere microcontrollori).
Potresti pensare che un microcontrollore possa essere fatto per fare molte cose diverse ma tutto questo viene fatto eseguendo diversi programmi – tecnicamente software ma a volte indicato come firmware: lhardware stesso non cambia essenzialmente, esegue le stesse operazioni ma in un ordine diverso con input diversi.
Gli FPGA vengono solitamente utilizzati per generare i progetti che sono impegnati negli ASIC la differenza tra loro è che se si desidera aggiornare il funzionamento interno di un FPGA o aggiungere / rimuovere blocchi funzionali tutto ciò che è necessario fare è aggiornare il firmware, questo non può essere fatto su ASIC come lavoro interno i re sono stati impegnati nel silicio, non è riconfigurabile.
Quindi, in breve, con un microprocessore usi lo stesso hardware per eseguire programmi diversi, con un FPGA stai riconfigurando lhardware per eseguire diverse funzioni e gli ASIC sono come un micro controller in quanto lhardware non può essere modificati ma di solito sono progettati per eseguire una singola funzione in modo estremamente efficiente.
Sia gli ASIC che gli FPGA possono contenere microcontrollori e se lo fanno puoi scrivere programmi per loro come faresti con un microcontrollore autonomo, un esempio di questo è il processore integrato NIOS II di Altera.
Se questo è ancora fonte di confusione, fammi sapere cosa non è chiaro e farò del mio meglio per chiarire la mia risposta.
Gipsy
Rispondi
beh, no un FPGA è programmato da segnali elettrici se si comporta come una specifica raccolta di porte, alcuni FPGA includono flash memoria per memorizzare questa configurazione, alcuni non lo fanno e devono essere riprogrammati dopo ogni reset dellalimentazione.
Un ASIC esce dalla linea di produzione già c onfigured.
I bug FPGA possono essere corretti con un aggiornamento del firmware, i bug ASIC non possono essere riparati economicamente.
Risposta
Nonostante il suo nome, un FGPA sembra molto” specifico per lapplicazione “, poiché deve essere ricablato per eseguire unattività nuova e diversa.
Questo è lopposto di ciò che significa “specifico dellapplicazione”. È possibile utilizzare un FPGA per più di unapplicazione ricablandolo. Non è possibile modificare un ASIC, quindi può essere applicato solo a unattività (tale attività potrebbe implementare un microcontrollore).
Anche se, nel caso di ricablando un FPGA, dovrebbe essere presente tutto lhardware necessario.
Non sono sicuro di cosa significhi. Di solito esiste uninterfaccia software per riprogrammare un FPGA. È un ASIC che richiede milioni di [unità di valuta] di hardware.
FPGA “s sono pensati per essere programmabili, ma non è questo ciò a cui è destinato un microcontrollore?
Un microcontrollore ti permette di programmare software sequenziale per un hardware fisso. Proprio come un normale computer, ma molto piccolo e con risorse limitate. Un FPGA ti consente di programmare qualsiasi hardware desideri utilizzando un HDL.