Am citit această postare și nu răspunde la întrebarea mea în întregime:
Mă gândesc la un microcontroler ca la orice care are memorie, se înregistrează și poate procesa un set de instrucțiuni precum LOAD, STORE și ADD. Conține porți logice și altele pentru a-și îndeplini rolul, dar sarcina sa principală este de a fi un procesor universal de biți. Mă gândesc la un Microntroller ca la un sistem de concepte ASIC interconectate pentru a crea capacitatea de a stoca și a procesa instrucțiuni.
Mă gândesc la un dispozitiv ASIC ca la un circuit care a fost construit în mod specific folosind componente logice și electrice pentru a efectua o singură sarcină, fără alte sarcini în minte și nici hardware suplimentar inclus.
Cred că un dispozitiv FPGA este un dispozitiv ASIC (un dispozitiv de nivel scăzut) + o grămadă de lucruri neutilizate rămase, obișnuite să implementați un anumit tabel de adevăr.
În ciuda numelui său, un FGPA se simte foarte „specific aplicației”, deoarece trebuie să fie reconectat pentru a efectua o sarcină nouă și diferită. Acest lucru duce la confuzie cu ASIC. Deși, în cazul recablării unui FPGA, ar trebui să existe toate componentele hardware necesare. De asemenea, FPGA-urile sunt menite să fie programabile, dar nu este pentru ce înseamnă un microcontroler?
În postarea de mai sus am menționat și HDL, cu care sunt familiarizat. Poate fi folosit HDL atât pentru ASIC, cât și pentru FPGA și prin proxy pentru a proiecta un întreg microcontroler?
Comentarii
- Este ‘ nu este foarte clar care este întrebarea dvs. Ați citit întrebări legate de FPGA vs ASIC? HDL este într-adevăr folosit pentru a proiecta implementări ASIC și FPGA și puteți proiecta un microcontroler în HDL.
- Altera oferă o carte electronică gratuită numită FPGA pentru manechine , care explică bine diferența dintre FPGA, ASIC și microcontrolere.
- @kkrambo Sună ‘ eu un manechin? 🙂 Ne pare rău, nu am putut ‘ să rezist … eu îl voi verifica.
- Am adăugat cuvântul ‘ similarități ‘ la titlul întrebării, deoarece se pare că există câteva detalii tehnice despre jargon care pot confunda relația dintre cele trei dispozitive diferite: de exemplu, un dispozitiv poate conține unul dintre celelalte două dispozitive, sau poate conține multe componente similare, dar diferă în unele aspecte importante. Acest lucru a fost deja atins de unele dintre răspunsurile existente. Mulțumim.
Răspuns
ASIC vs FPGA
O matrice de poartă programabilă pe câmp poate fi văzută ca etapa de prototipare a circuitelor integrate specifice aplicației: ASIC-urile sunt foarte scumpe de fabricat și, odată ce sunt făcute acolo nu se întoarce înapoi (deoarece cel mai scump cost fix este măștile [un fel de „șablon” de fabricație și dezvoltarea acestora). FPGA-urile sunt reprogramabile de multe ori, totuși datorită faptului că o gamă generică de porți este conectată pentru a vă atinge obiectivul , nu este optimizat ca ASIC-urile. De asemenea, FPGA-urile sunt dispozitive dinamice nativ prin faptul că, dacă îl opriți, pierdeți nu numai starea curentă, ci și configurația dvs. Deși există acum plăci care adaugă un cip FLASH și / sau un microcontroler la încărcați configurația la pornire, astfel încât acesta tinde să fie un argument mai puțin important. Atât ASIC-urile, cât și FPGA-urile pot fi configurate cu Limbaje de descriere hardware, iar uneori FPGA-urile sunt utilizat pentru produsul final. Dar, în general, ASIC-urile încep atunci când designul este fix.
FPGA vs microcontroler
În ceea ce privește diferența dintre un microcontroler și un FPGA, puteți considera un microcontroler ca fiind un ASIC care procesează codul în FLASH / ROM secvențial. Puteți face microcontrolere cu FPGA, chiar dacă nu este optimizat, dar nu opus. FPGA-urile sunt conectate la fel ca circuitele electronice, astfel încât să puteți avea circuite cu adevărat paralele, nu ca într-un microcontroler în care procesorul sare de la o bucată de cod la alta pentru a simula un paralelism suficient de bun. Totuși, deoarece FPGA-urile au fost proiectate pentru sarcini paralele, nu este la fel de ușor să scrieți cod secvențial ca într-un microcontroler.
De exemplu, de obicei, dacă scrieți în pseudocod „să fie C XOR B”, pe un FPGA care va fi tradus în „construiți o poartă XOR cu cărămizile lego conținute (tabele de căutare și zăvoare), și conectați A / B ca intrări și C ca ieșire „, care va fi actualizat la fiecare ciclu de ceas, indiferent dacă C este utilizat sau nu. Întrucât pe un microcontroler care va fi tradus în „instrucțiune de citire – este” un XOR de variabile la adresa A și adresa B de RAM, rezultatul se stochează la adresa C. Încărcați registrele unităților logice aritmetice, apoi solicitați ALU să facă un XOR, apoi copiați registrul de ieșire la adresa C a RAM „. Pe partea utilizatorului, ambele instrucțiuni erau însă o linie de cod.Dacă ar fi să facem acest lucru, THEN altceva, în HDL ar trebui să definim ceea ce se numește Proces pentru a face secvențe artificial – separate de codul paralel. În timp ce într-un microcontroler nu este nimic de făcut. Pe de altă parte, pentru a obține „paralelismul” (acordarea și ieșirea cu adevărat) dintr-un microcontroler, ar trebui să jonglați cu fire care nu sunt banale. Moduri diferite de lucru, scopuri diferite.
În rezumat:
ASIC vs FPGA: fix, mai scump pentru un număr mic de produse (mai ieftin pentru volumele mari), dar mai optimizat.
ASIC vs microcontroler: cu siguranță ar fi compararea unui instrument cu un ciocan.
FPGA vs microcontroler: nu este optimizat pentru procesarea secvențială a codului, dar poate face sarcini cu adevărat paralele foarte ușor. În general FPGA-urile sunt programate în HDL, microcontrolerele în C / Assembly
Ori de câte ori viteza sarcinilor paralele este o problemă, luați un FPGA, evoluați-vă designul și, în cele din urmă, faceți-l ASIC dacă „Vă este mai ieftin pe termen lung (producție în masă). Dacă sarcinile secvențiale sunt în regulă, luați un microcontroler. Cred că ați putea face un CI și mai specific pentru aplicație din acest lucru dacă vă este și mai ieftin pe termen lung . Cea mai bună soluție va fi probabil un pic din ambele.
Ce căutare rapidă după ce am scris acest lucru mi-a dat:
Răspuns
FPGA-urile pot fi „re-cablate” prin reprogramare. Un FPGA încarcă configurația în celulele logice configurabile atunci când este alimentat . Acest lucru înseamnă că poate fi reprogramat fără modificări ale hardware-ului.
ASIC-urile pot fi re-cablate doar modificând măștile fotolitografice la turnătoria de siliciu.
Un microcontroler este un tip de ASIC, care execută un program și, prin urmare, poate face lucruri generice. Cu toate acestea, dacă doriți să modificați setul de instrucțiuni sau să faceți ceva similar, trebuie să modificați aspectul actual al siliconului IC.
Diferența dintre un FPGA și un MCU este mai neclară. Practic, ceea ce este un FPGA, la nivel hardware, este o mulțime de celule SRAM mici, toate conectate la o matrice densă de multiplexoare. Practic, un FPGA este o întreagă grămadă de logici discrete care pot fi electronice „re-cablate” ** pur și simplu prin reprogramarea multiplexoarelor și a celulelor SRAM.
Ca atare, puteți implementați de fapt un MCU în un FPGA, deoarece un MCU este doar o anumită configurație a celulelor logice. De fapt, FPGA sunt foarte frecvent utilizate în procesul de proiectare a MCU-urilor.
Un microcontroler este o implementare a unei anumite configurații logice. Motivul pentru care le avem este că, prin implementarea unui MCU direct în siliciu, cantitatea totală de spațiu de matriță de siliciu necesară poate fi optimizată considerabil și se pot face anumite optimizări ale performanței pe care „genericitatea” necesară a unui FPGA le interzice. Acest lucru permite reducerea dramatică a costurilor de producție ale unui MCU și, ca rezultat, MCU comun este mult mai ieftin decât un FPGA care este capabil să conțină logica echivalentă.
FPGAs sunt utile în anumite aplicații, deoarece pot implementa structuri logice într-un mod pe care MCU-urile nu le pot. De exemplu, dacă trebuie să adăugați X1 + Y1, X2 + Y2, X3 + Y3 și X4 + Y4, MCU va trebui să facă fiecare operațiune în ordine *. Un FPGA poate avea pur și simplu 4 separate ALU în același timp , deci poate face aceeași operație într-un sfert de timp (presupunând că cele două dispozitive sunt tactate la același ritm).
Aici FPGA ( sau ASIC concepute pentru aceeași sarcină) pot străluci într-adevăr, prin faptul că puteți face multe, multe lucruri simultan , pe care un singur proces le poate face doar secvențial.
* (notă: „ignor aici unele lucruri precum SIMD)
Comentarii
- Nu ‘ cred că distincția FPGA / ASIC este neclară; într-un FPGA, circuitele a căror ” cablare ” pot fi schimbate funcționează simultan și independent. Un MCU are o cantitate mare de circuite ale căror cabluri nu pot fi schimbate, al căror comportament este controlat prin informații care sunt accesate fragmentar dintr-o matrice de memorie programabilă. În orice moment, un procesor va putea, în general, să efectueze o singură operație dintr-o listă de câteva mii până la câteva miliarde de opțiuni, dar MCU va fi conceput astfel încât punerea acestor operațiuni în ordine să facă posibilă lucru util.
- Vă mulțumim. FOARTE aproape de a deveni răspunsul … deși 10 luni mai târziu. +1 pentru a repara.
Răspuns
Aceasta este o întrebare bună,
Practic un microcontroler și un ASIC au hardware (denumit adesea siliciu) care este setat în piatră și nu poate fi modificat. Un FPGA poate fi configurat pentru a reprezenta mai multe tipuri diferite de hardware (aceasta poate include microcontrolere).
S-ar putea să credeți că un microcontroler poate fi făcut să facă multe lucruri diferite, dar acest lucru se face executând diferite programe – tehnic software dar uneori denumit firmware – hardware-ul în sine nu se schimbă în esență, face aceleași operații, dar într-o ordine diferită, cu intrări diferite.
FPGA-urile sunt de obicei utilizate pentru a genera proiectele care sunt dedicate ASIC-urilor. diferența dintre ele este că, dacă doriți să actualizați funcționarea interioară a unui FPGA sau să adăugați / eliminați blocuri funcționale, tot ce trebuie să faceți este să actualizați firmware-ul acestuia, acest lucru nu se poate face pe ASIC-uri ca regii s-au dedicat siliciului, nu este reconfigurabil.
Deci, pe scurt, cu un microprocesor utilizați același hardware pentru a rula programe diferite, cu un FPGA reconfigurați hardware-ul pentru a îndeplini diferite funcții, iar ASIC-urile sunt ca un micro controler, deoarece hardware-ul nu poate fi modificate, dar sunt de obicei concepute pentru a îndeplini o singură funcție extrem de eficient.
Atât ASIC-urile, cât și FPGA-urile pot conține microcontrolere și, în caz contrar, puteți scrie programe pentru ele, așa cum ați face cu un microcontroler independent, un exemplu acesta este procesorul încorporat Altera NIOS II.
Dacă acest lucru este încă confuz, spuneți-mi ce este neclar și voi face tot posibilul pentru a clarifica răspunsul meu.
Gipsy
Răspuns
bine, nu un FPGA este programat de semnale electrice dacă se comportă ca o colecție specifică de porți, unele FPGA includ bliț memorie pentru a stoca această configurație, unele nu și trebuie reprogramate după fiecare resetare a alimentării.
Un ASIC iese deja de pe linia de producție c onfigured.
Bugurile FPGA pot fi remediate cu o actualizare a firmware-ului, bugurile ASIC „nu pot fi reparate economic.
Răspuns
În ciuda numelui său, un FGPA se simte foarte„ specific aplicației ”, deoarece trebuie să fie re-conectat pentru a efectua o sarcină nouă și diferită.
Aceasta este opusul a ceea ce înseamnă „specific aplicației”. Puteți utiliza un FPGA pentru mai multe aplicații prin recablarea acestuia. Nu puteți schimba un ASIC, deci poate fi aplicat doar unei sarcini (sarcina respectivă poate implementa un microcontroler).
Deși, în cazul reconectarea unui FPGA, toate componentele hardware necesare ar trebui să fie prezente.
Nu sunt sigur ce înseamnă acest lucru. De obicei, există o interfață software pentru reprogramarea unui FPGA. Este un ASIC care necesită milioane de [unități monetare] de hardware.
FPGA „s sunt menite să fie programabile, dar nu este ceea ce înseamnă un microcontroler?
Un microcontroler vă permite să programați software secvențial pentru un hardware fix. La fel ca un computer normal, dar foarte mic și cu resurse limitate. Un FPGA vă permite să programați orice hardware doriți folosind un HDL.