Jeg har læst dette indlæg , og det besvarer ikke mit spørgsmål i sin helhed:

Jeg tænker på en mikrocontroller som noget, der har noget hukommelse, registrerer og kan behandle et sæt instruktioner som LOAD, STORE og ADD. Den indeholder logiske porte og sådan til at udføre sin rolle, men dens hovedopgave er at være en universal processor af bits. Jeg tænker på en Microntroller som et system af sammenkoblede ASIC-design for at skabe evnen til at gemme og behandle instruktioner.

Jeg tænker på en ASIC-enhed som et kredsløb, der er specifikt konstrueret ved hjælp af logiske og elektriske komponenter til at udføre en enkelt opgave uden nogen anden opgave i tankerne eller ekstra hardware inkluderet.

Jeg tænker på en FPGA-enhed som en ASIC-enhed (en enhed på lavt niveau) + en masse ubrugte ting tilbage, brugt til implementere en bestemt sandhedstabel.

På trods af sit navn føles en FGPA meget “applikationsspecifik”, da den skal gendannes for at udføre en ny og anden opgave. Dette fører til forvirring med ASIC. Skønt det er nødvendigt at tilslutte en FPGA, hvis alt nødvendigt hardware er til stede. Også, FPGAer er beregnet til at være programmerbare, men er det ikke, hvad en mikrokontroller er beregnet til?

Indlægget ovenfor, jeg refererede til, nævner også HDL, som jeg er bekendt med. Kan “t HDL bruges til både ASIC og FPGA og ved proxy til at designe en hel mikrocontroller?

Kommentarer

  • Det ‘ er ikke særlig klart, hvad dit spørgsmål er. Har du læst relaterede spørgsmål om FPGA vs ASIC? HDL bruges faktisk til at designe ASICer og FPGA-implementeringer, og du kan designe en mikrokontroller i HDL.
  • Altera tilbyder en gratis e-bog kaldet FPGAs for Dummies , hvilket forklarer forskellen mellem FPGAer, ASICer og mikrokontroller godt.
  • @kkrambo Du kalder ‘ mig en dummy? 🙂 Undskyld, kunne ‘ ikke modstå … Jeg vil tjekke det ud.
  • Jeg tilføjede ordet ‘ ligheder ‘ til spørgsmålets titel, fordi det ser ud til at der er små tekniske jargongoplysninger, der kan forvirre, hvordan de tre forskellige enheder forholder sig: for eksempel kan en enhed indeholde en af de to andre enheder, eller det kan indeholde mange lignende komponenter, men adskiller sig i nogle vigtige aspekter. Dette er allerede berørt af nogle af de eksisterende svar. Tak.

Svar

ASIC vs FPGA

En feltprogrammerbar gate-array kan ses som prototypetrinnet i applikationsspecifikke integrerede kredsløb: ASICer er meget dyre at fremstille, og når den først er lavet der er ingen vej tilbage (da de dyreste faste omkostninger er maskerne [slags fremstilling af “stencil”] og deres udvikling). FPGAer kan omprogrammeres mange gange, dog på grund af det faktum, at en generisk række porte er forbundet til at nå dit mål , det er ikke optimeret som ASICer. FPGAer er også naturligt dynamiske enheder, hvis du slukker for det, mister du ikke kun den aktuelle tilstand, men også din konfiguration. Der findes nu bestyrelser, der tilføjer en FLASH-chip og / eller en mikrokontroller til indlæs konfigurationen ved opstart, så dette har tendens til at være et mindre vigtigt argument. Både ASICer og FPGAer kan konfigureres med hardwarebeskrivelsessprog, og nogle gange er FPGAer bruges til slutproduktet. Men generelt sparker ASICer ind, når designet er rettet.

FPGA vs microcontroller

Hvad angår forskellen mellem en mikrocontroller og en FPGA, du kan betragte en mikrocontroller som en ASIC, der grundlæggende behandler kode i FLASH / ROM sekventielt. Du kan fremstille mikrokontroller med FPGAer, selvom det ikke er optimeret, men ikke det modsatte. FPGAer er kablet som elektroniske kredsløb, så du kan have virkelig parallelle kredsløb, ikke som i en mikrocontroller, hvor processoren hopper fra et stykke kode til et andet. for at simulere god nok parallelitet. Men fordi FPGAer er designet til parallelle opgaver, er det ikke så let at skrive sekventiel kode som i en mikrocontroller.

For eksempel, typisk hvis du skriver i pseudokode “lad C være A XOR B”, på en FPGA, der vil blive oversat til “bygg en XOR-port med legoklodserne indeholdt (opslagstabeller og låse), og forbinde A / B som indgange og C som udgang “, som opdateres hver urcyklus uanset om C bruges eller ej. Der henviser til, at på en mikrokontroller, der vil blive oversat til “læs instruktion – det”, en XOR af variabler ved adresse A og adresse B på RAM, resulterer det i at gemme på adresse C. Indlæs aritmetiske logiske enhedsregistre, og bed ALUen om at lave en XOR, kopier derefter outputregistret på adresse C i RAM “. På brugersiden var begge instruktioner dog 1 linje kode.Hvis vi skulle gøre dette, SÅ noget andet, i HDL, ville vi skulle definere, hvad der kaldes en proces til kunstigt at udføre sekvenser – adskilt fra parallelkoden. Mens der i en mikrocontroller ikke er noget at gøre. På den anden side, for at få “parallelisme” (tuning virkelig ind og ud) ud af en mikrocontroller, skal du jonglere med tråde, hvilket ikke er trivielt. Forskellige måder at arbejde på, forskellige formål.

Sammenfattende:

ASIC vs FPGA: fast, dyrere for et lille antal produkter (billigere for store mængder), men mere optimeret.

ASIC vs microcontroller: bestemt som at sammenligne et værktøj med en hammer.

FPGA vs microcontroller: ikke optimeret til sekventiel kodebehandling, men kan også udføre virkelig parallelle opgaver meget let. Generelt FPGAer er programmeret i HDL, mikrocontrollere i C / Assembly

Når hastighed på parallelle opgaver er et problem, tag en FPGA, udvikl dit design og til sidst gør det til en ASIC, hvis det “er billigere for dig i det lange løb (masseproduktion). Hvis sekventielle opgaver er i orden, skal du tage en mikrocontroller. Jeg antager, at du kunne gøre en endnu mere applikationsspecifik IC fra dette, hvis det også er billigere i det lange løb . Den bedste løsning vil sandsynligvis være lidt af begge.

Hvilken hurtig søgning efter at have skrevet dette gav mig: indtast billede beskrivelse her indtast billedbeskrivelse her

FPGA vs Microcontrollers, på netop dette forum

Svar

FPGAer kan “omstikkes” ved omprogrammering. En FPGA indlæser sin konfiguration i dens konfigurerbare logiske celler, når den er tændt . Dette betyder, at det kan genprogrammeres uden ændringer i hardwaren.

ASICer kan kun tilsluttes igen ved at ændre de fotolitografiske masker på siliciumstøberiet.

En mikrokontroller er en type af ASIC, der udfører et program og kan gøre generiske ting som et resultat. Men hvis du vil ændre instruktionssættet eller gøre noget lignende, skal du ændre det faktiske silicium IC-layout.


Forskellen mellem en FPGA og en MCU er mere uklar. Dybest set, hvad en FPGA er på hardwareniveau, er mange små SRAM-celler, der alle er forbundet med en tæt matric af multipleksere. Dybest set er en FPGA en hel bunke af diskret logik, der kan elektronisk “re-wired” ** simpelthen ved at omprogrammere multiplexere og SRAM-celler.

Som sådan kan du faktisk implementere en MCU inden for en FPGA, da en MCU kun er en bestemt konfiguration af logiske celler. Faktisk bruges FPGAer meget almindeligt i designprocessen af MCUer.

En mikrocontroller er en implementering af en bestemt logisk konfiguration. Årsagen til, at vi har dem, er, at ved at implementere en MCU direkte i silicium, kan den samlede mængde silicium-plads, der kræves, optimeres betydeligt, og visse ydeevneoptimeringer kan foretages, som den krævede “genericitet” af en FPGA forbyder. Dette gør det muligt at reducere produktionsomkostningerne for en MCU dramatisk, og som et resultat er den fælles MCU meget billigere end en FPGA, der er i stand til at indeholde den tilsvarende logik.


FPGAs er nyttige i visse applikationer, fordi de kan implementere logiske strukturer på en måde, som MCUer ikke kan. Hvis du f.eks. skal tilføje X1 + Y1, X2 + Y2, X3 + Y3 og X4 + Y4, MCU bliver nødt til at udføre hver operation i rækkefølge *. En FPGA kan simpelthen have 4 separate ALUer på samme tid , så det kan udføre den samme handling på et kvarter af tiden (forudsat at de to enheder er uret i samme hastighed).

Dette er hvor FPGAer ( eller ASICer designet til den samme opgave) kan virkelig skinne, fordi du kan gøre mange, mange ting samtidigt , som en enkelt proces kun kan udføre i rækkefølge.

* (Bemærk: Jeg ignorerer nogle ting som SIMD her)

Kommentarer

  • Jeg don ‘ t mener, at FPGA / ASIC-sondringen er uklar; i en FPGA fungerer kredsløbene, hvis ” ledninger ” kan ændres, fungere samtidigt og uafhængigt. En MCU har en stor mængde kredsløb, hvis ledninger ikke kan ændres, hvis adfærd styres gennem information, der fås adgang til stykke fra et programmerbart hukommelsesarray. På et hvilket som helst tidspunkt i tiden vil en CPU generelt kun kunne udføre en operation fra en liste med et par tusind til et par milliarder valg, men MCUen vil være designet, så at sætte sådanne operationer i rækkefølge vil gøre det muligt at gøre nyttigt arbejde.
  • Tak. MEGET tæt på at blive svaret … omend 10 måneder senere. +1 for at rette op.

Svar

Dette er et godt spørgsmål,

Dybest set en mikrocontroller og en ASIC har hardware (ofte kaldet silicium), der er sat i sten og ikke kan ændres. En FPGA kan konfigureres at repræsentere mange forskellige slags hardware (dette kan omfatte mikro-controllere).

Du tror måske, at en mikro-controller kan fås til at gøre mange forskellige ting, men alt dette gøres ved at køre forskellige programmer – teknisk software men undertiden benævnt firmware – selve hardwaren ændrer sig ikke i det væsentlige, den udfører de samme operationer, men i en anden rækkefølge med forskellige indgange.

FPGAer bruges normalt til at generere de designs, der er forpligtet til ASICer, forskellen mellem dem er, at hvis du vil opdatere den indre funktion af en FPGA eller tilføje / fjerne funktionelle blokke, er alt hvad du skal gøre, at opdatere firmwaren, det kan ikke gøres på ASICs som den indre konger er forpligtet til silicium, kan det ikke omkonfigureres.

Så kort sagt, med en mikroprocessor bruger du den samme hardware til at køre forskellige programmer, med en FPGA omkonfigurerer du hardwaren til at udføre forskellige funktioner, og ASICer er som en mikrocontroller, da hardware ikke kan ændret, men er normalt designet til at udføre en enkelt funktion ekstremt effektivt.

Både ASICer og FPGAer kan indeholde mikrocontrollere, og hvis de gør det, kan du skrive programmer til dem, som du ville være en enkeltstående mikrokontroller, et eksempel på dette er Alteras NIOS II-integrerede processor.

Hvis dette stadig er forvirrende, så lad mig vide, hvad der er uklart, og jeg vil gøre mit bedste for at afklare mit svar.

Gipsy

Svar

godt, nej en FPGA er programmeret af elektriske signaler, hvis de opfører sig som en bestemt samling af porte, nogle FPGAer inkluderer flash hukommelse til at gemme denne konfiguration, nogle gør det ikke og skal omprogrammeres efter hver strømindstilling.

En ASIC kommer allerede fra produktionslinjen c omkonfigureret.

FPGA-fejl kan rettes med en firmwareopgradering, ASIC-fejl kan ikke økonomisk repareres.

Svar

På trods af sit navn føles en FGPA meget” applikationsspecifik “, da den skal kables igen for at udføre en ny og anden opgave.

Det er det modsatte af, hvad “applikationsspecifik” betyder. Du kan bruge en FPGA til mere end en applikation ved at koble den til igen. Du kan ikke ændre en ASIC, så den kan kun anvendes på en opgave (den opgave implementerer muligvis en mikrokontroller).

Omend i tilfælde af ved kabling af en FPGA, skal al nødvendig hardware være til stede.

Ikke sikker på, hvad det betyder. Normalt er der en softwareinterface til omprogrammering af en FPGA. Det er en ASIC, der kræver millioner af [valutaenheder] hardware.

FPGA “s skal programmeres, men er det ikke, hvad en mikrokontroller er beregnet til?

En mikrocontroller giver dig mulighed for at programmere sekventiel software til en fast hardware. Ligesom en normal computer, men meget lille og ressourcebegrænset. En FPGA giver dig mulighed for at programmere enhver hardware, du ønsker, ved hjælp af en HDL.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *