Jag har läst det här inlägget och det svarar inte på min fråga i sin helhet:
Jag tänker på en mikrokontroller som allt som har lite minne, registrerar och kan bearbeta en uppsättning instruktioner som LOAD, STORE och ADD. Den innehåller logiska grindar och sådant för att utföra sin roll, men dess huvudsakliga uppgift är att vara en universell processor av bitar. Jag tänker på en Microntroller som ett system av sammankopplade ASIC-design för att skapa förmågan att lagra och bearbeta instruktioner.
Jag tänker på en ASIC-enhet som en krets som har konstruerats specifikt med hjälp av logiska och elektriska komponenter för att utföra en enda uppgift, utan någon annan uppgift i åtanke eller extra hårdvara ingår.
Jag tänker på en FPGA-enhet som en ASIC-enhet (en lågnivåenhet) + en massa oanvända saker kvar, brukade implementera en viss sanningstabell.
Trots sitt namn känns en FGPA väldigt ”applikationsspecifik”, eftersom den måste kopplas om för att utföra en ny och annan uppgift. Detta leder till förvirring med ASIC. Även om det är nödvändigt att koppla om en FPGA, bör all nödvändig hårdvara vara närvarande. Dessutom är FPGA: s avsedda att vara programmerbara, men är det inte vad en mikrokontroller är avsedd för?
Inlägget ovan jag nämnde nämner också HDL, som jag är bekant med. Kan ”t HDL användas för både ASIC och FPGA, och genom proxy för att utforma en hel mikrokontroller?
Kommentarer
- Det ’ är inte särskilt tydlig vad din fråga är. Har du läst relaterade frågor om FPGA vs ASIC? HDL används faktiskt för att designa ASIC och FPGA-implementeringar, och du kan designa en mikrokontroller i HDL.
- Altera erbjuder en gratis e-bok som heter FPGA för dummies , vilket förklarar skillnaden mellan FPGA, ASIC och mikrokontroller väl.
- @kkrambo Du kallar ’ mig en dummy? 🙂 Tyvärr kunde jag inte ’ tåla … jag kommer att kolla in det.
- Jag lade till ordet ’ likheter ’ till frågetiteln, eftersom det verkar som det finns små tekniska jargongdetaljer som kan förvirra hur de tre olika enheterna relaterar: till exempel kan en enhet innehålla en av de andra två enheterna, eller det kan innehålla många liknande komponenter men skiljer sig åt i någon viktig aspekt. Detta har redan berörts av några av de befintliga svaren. Tack.
Svar
ASIC vs FPGA
En fältprogrammerbar grindmatris kan ses som prototyperingssteget för applikationsspecifika integrerade kretsar: ASIC är mycket dyra att tillverka och när det väl är gjort där går inte tillbaka (eftersom den dyraste fasta kostnaden är maskerna [typ av tillverkning av ”stencil”] och deras utveckling). FPGA: er kan omprogrammeras många gånger, dock på grund av det faktum att ett generiskt utbud av portar är anslutna för att uppnå ditt mål , det är inte optimerat som ASIC. Dessutom är FPGA-enheter naturligt dynamiska enheter genom att om du stänger av den, tappar du inte bara det aktuella läget utan också din konfiguration. Det finns nu styrelser som lägger till ett FLASH-chip och / eller en mikrokontroller till ladda konfigurationen vid start så detta tenderar att vara ett mindre viktigt argument. Både ASIC och FPGA kan konfigureras med hårdvarubeskrivningsspråk och ibland är FPGA används för slutprodukten. Men vanligtvis sparkar ASIC in när designen är fixad.
FPGA vs mikrokontroller
När det gäller skillnaden mellan en mikrokontroller och en FPGA, du kan betrakta en mikrokontroller som en ASIC som i grunden behandlar kod i FLASH / ROM sekventiellt. Du kan skapa mikrokontroller med FPGA även om det inte är optimerat, men inte tvärtom. FPGA är anslutna precis som elektroniska kretsar så att du kan ha riktigt parallella kretsar, inte som i en mikrokontroller där processorn hoppar från en kodbit till en annan för att simulera tillräckligt bra parallellitet. Men eftersom FPGA: er har utformats för parallella uppgifter är det inte lika lätt att skriva sekventiell kod som i en mikrokontroller.
Till exempel, typiskt om du skriver i pseudokod ”låt C vara A XOR B”, på en FPGA som kommer att översättas till ”bygg en XOR-grind med legoklossarna (uppslagstabeller och spärrar), och anslut A / B som ingångar och C som utgång ”som kommer att uppdateras varje klockcykel oavsett om C används eller inte. Medan på en mikrokontroller som kommer att översättas till ”läsinstruktion – det” är en XOR av variabler vid adress A och adress B för RAM, blir lagring vid adress C. Ladda aritmetiska logiska enhetsregister, be sedan ALU att göra en XOR, kopiera sedan utgångsregistret till RAM-adress C ”. På användarsidan var dock båda instruktionerna 1 kodrad.Om vi skulle göra detta, SÅ skulle något annat, i HDL, behöva definiera vad som kallas en process för att artificiellt göra sekvenser – åtskilda från parallellkoden. I en mikrokontroller finns det inget att göra. Å andra sidan, för att få ”parallellism” (ställa in och ut riktigt) ur en mikrokontroller, skulle du behöva jonglera med trådar som inte är trivialt. Olika sätt att arbeta, olika syften.
Sammanfattningsvis:
ASIC vs FPGA: fast, dyrare för ett litet antal produkter (billigare för stora volymer), men mer optimerad.
ASIC vs mikrokontroller: verkligen som att jämföra ett verktyg med en hammare.
FPGA vs mikrokontroller: inte optimerad för sekventiell kodbearbetning, men kan också göra riktigt parallella uppgifter. I allmänhet FPGA är programmerade i HDL, mikrokontroller i C / Assembly
När hastigheten på parallella uppgifter är ett problem, ta en FPGA, utveckla din design och slutligen gör den till en ASIC om den ”är billigare för dig i det långa loppet (massproduktion). Om sekventiella uppgifter är okej, ta en mikrokontroller. Jag antar att du kan göra en ännu mer applikationsspecifik IC från detta om det är billigare för dig på lång sikt också . Den bästa lösningen kommer antagligen att vara lite av båda.
Vilken snabb sökning efter att ha skrivit detta gav mig:
Svar
FPGA: er kan ”omkopplas” genom omprogrammering. En FPGA laddar sin konfiguration i de konfigurerbara logiska cellerna när den drivs . Det betyder att den kan omprogrammeras utan några ändringar av hårdvaran.
ASIC kan endast kopplas om genom att ändra de fotolitografiska maskerna vid kiselgjuteriet.
En mikrokontroller är en typ av ASIC, som kör ett program och kan göra generiska saker som resultat. Om du vill ändra instruktionsuppsättningen eller göra något liknande måste du dock ändra den faktiska IC-layouten av kisel.
Skillnaden mellan en FPGA och en MCU är mer otydlig. I grund och botten är vad en FPGA är på hårdvarunivå många små SRAM-celler, alla anslutna till en tät matris av multiplexrar. I grund och botten är en FPGA en hel hög med diskret logik som kan elektroniskt ”kopplas om” ** helt enkelt genom att omprogrammera multiplexrarna och SRAM-cellerna.
Som sådan kan du faktiskt implementera en MCU inom en FPGA, eftersom en MCU bara är en viss konfiguration av logiska celler. I själva verket används FPGA: er mycket ofta i designprocessen för MCU: er.
En mikrokontroller är en implementering av en viss logisk konfiguration. Anledningen till att vi har dem är att genom att implementera en MCU direkt i kislet kan den totala mängden kiselformutrymme som krävs väsentligen optimeras och vissa prestandaoptimeringar kan göras som den nödvändiga ”genericiteten” hos en FPGA förbjuder. Detta gör att produktionskostnaderna för en MCU kan minskas dramatiskt, och som ett resultat är den gemensamma MCU mycket billigare än en FPGA som kan innehålla motsvarande logik.
FPGAs är användbara i vissa applikationer, eftersom de kan implementera logiska strukturer på ett sätt som MCU: er inte kan. Om du till exempel behöver lägga till X1 + Y1, X2 + Y2, X3 + Y3 och X4 + Y4, MCU måste utföra varje operation i sekvens *. En FPGA kan helt enkelt ha 4 separata ALU samtidigt , så att den kan göra samma operation på en fjärdedel av tiden (förutsatt att de två enheterna är klockade i samma takt).
Det är här FPGAs ( eller ASIC som är utformade för samma uppgift) kan verkligen lysa, i det faktum att du kan göra många, många saker samtidigt , som en enda process bara kan göra i följd.
* (Obs: Jag ignorerar vissa saker som SIMD här)
Kommentarer
- Jag don ’ tänker inte att FPGA / ASIC-skillnaden är suddig; i en FPGA fungerar kretsarna vars ” ledningar ” kan ändras samtidigt och oberoende. En MCU har en stor mängd kretsar vars ledningar inte kan ändras, vars beteende styrs genom information som nås bitvis från en programmerbar minnesmatris. När som helst i tiden kommer en CPU vanligtvis bara att kunna utföra en operation från en lista med några tusen till några miljarder val, men MCU kommer att utformas så att sätta sådana operationer i följd gör det möjligt att göra användbart arbete.
- Tack. MYCKET nära att bli svaret … om än 10 månader senare. +1 för att gottgöra.
Svar
Detta är en bra fråga,
I grund och botten en mikrokontroll och en ASIC har hårdvara (ofta kallad kisel) som är placerad i sten och inte kan ändras. En FPGA kan konfigureras för att representera många olika typer av hårdvara (detta kan inkludera mikrokontroller).
Du kanske tror att en mikrokontroller kan få många olika saker att göra men allt görs genom att köra olika program – tekniskt programvara men ibland kallad firmware – själva hårdvaran ändras inte i huvudsak, den gör samma operationer men i en annan ordning med olika ingångar.
FPGA används vanligtvis för att generera de mönster som är engagerade i ASICs skillnaden mellan dem är att om du vill uppdatera den inre funktionen hos en FPGA eller lägga till / ta bort funktionsblock är allt du behöver göra att uppdatera firmware, det här kan inte göras på ASIC som den inre kungar har varit engagerade i kisel, är det inte omkonfigurerbart.
Så kort sagt, med en mikroprocessor använder du samma hårdvara för att köra olika program, med en FPGA konfigurerar du om hårdvaran för att utföra olika funktioner och ASIC är som en mikrokontroller eftersom hårdvaran inte kan ändras men är vanligtvis utformade för att utföra en enda funktion extremt effektivt.
Både ASIC och FPGA kan innehålla mikrokontroller och om de gör det kan du skriva program för dem som du skulle göra en fristående mikrokontroll, ett exempel på detta är Alteras NIOS II-inbäddade processor.
Om detta fortfarande är förvirrande, låt mig veta vad det är oklart och jag kommer att göra mitt bästa för att klargöra mitt svar.
Gipsy
Svar
ja, ingen FPGA är programmerad av elektriska signaler om de beter sig som en specifik grindsamling, vissa FPGA inkluderar blixten minne för att lagra denna konfiguration, vissa gör inte och måste omprogrammeras efter varje strömåterställning.
En ASIC kommer redan från produktionslinjen c onfigured.
FPGA-buggar kan åtgärdas med en firmwareuppgradering, ASIC-buggar kan inte ekonomiskt repareras.
Svar
Trots sitt namn känns en FGPA väldigt” applikationsspecifik ”eftersom den måste kopplas om för att utföra en ny och annan uppgift.
Det är motsatsen till vad ”applikationsspecifikt” betyder. Du kan använda en FPGA för mer än en applikation genom att koppla om den. Du kan inte ändra en ASIC, så den kan bara tillämpas på en uppgift (den uppgiften kan implementera en mikrokontroller).
Även om det gäller Om du kopplar om en FPGA bör all nödvändig hårdvara finnas.
Är inte säker på vad det betyder. Vanligtvis finns det ett mjukvarugränssnitt för omprogrammering av en FPGA. Det är en ASIC som kräver miljoner [valutaenheter] hårdvara.
FPGA ”s är avsedda att vara programmerbara, men är det inte vad en mikrokontroller är avsedd för?
En mikrokontroller låter dig programmera sekventiell programvara för en fast hårdvara. Precis som en vanlig dator, men väldigt liten och resursbegränsad. Med en FPGA kan du programmera vilken hårdvara du vill med en HDL.