Ik heb dit bericht gelezen en het beantwoordt mijn vraag niet in zijn geheel:
Ik beschouw een microcontroller als alles dat geheugen en registers heeft en een reeks instructies kan verwerken, zoals LADEN, OPSLAAN en TOEVOEGEN. Het bevat logische poorten en dergelijke om zijn rol te vervullen, maar zijn hoofdtaak is om een universele processor van bits te zijn. Ik beschouw een Microntroller als een systeem van onderling verbonden ASIC-ontwerpen om de mogelijkheid te creëren om instructies op te slaan en te verwerken.
Ik beschouw een ASIC-apparaat als een circuit dat specifiek is geconstrueerd met behulp van logische en elektrische componenten om een enkele taak, zonder een andere taak of extra hardware inbegrepen.
Ik beschouw een FPGA-apparaat als een ASIC-apparaat (een low-level-apparaat) + een hoop ongebruikte dingen die een bepaalde waarheidstabel implementeren.
Ondanks zijn naam voelt een FGPA erg “applicatiespecifiek” aan, aangezien het opnieuw moet worden bedraad om een nieuwe en andere taak uit te voeren. Dit leidt tot verwarring met ASIC. Hoewel, in het geval van herbedrading van een FPGA, alle benodigde hardware aanwezig moet zijn. Ook zijn FPGAs bedoeld om programmeerbaar te zijn, maar is dat niet waar een Microcontroller voor bedoeld is?
De post hierboven waarnaar ik verwees vermeldt ook HDL, waarmee ik vertrouwd ben. Kan “t HDL worden gebruikt voor zowel ASIC als FPGA, en als proxy om een volledige microcontroller te ontwerpen?
Opmerkingen
- It ‘ is niet erg duidelijk wat je vraag is. Heb je gerelateerde vragen over FPGA versus ASIC gelezen? HDL wordt inderdaad gebruikt om ASICs en FPGA-implementaties te ontwerpen, en je kunt een microcontroller in HDL ontwerpen.
- Altera biedt een gratis e-boek aan met de naam FPGAs voor Dummies , wat het verschil tussen FPGAs, ASICs en microcontrollers goed verklaart.
- @kkrambo Je noemt ‘ mij een dummy? 🙂 Sorry, kon ‘ niet weerstaan … ik zal het bekijken.
- Ik heb het woord ‘ overeenkomsten ‘ toegevoegd aan de titel van de vraag, omdat het lijkt dat er zijn kleine technische jargondetails die de relatie tussen de drie verschillende apparaten kunnen verwarren: het ene apparaat kan bijvoorbeeld een van de andere twee apparaten bevatten, of het kan veel vergelijkbare componenten bevatten, maar verschillen op een aantal belangrijke punten. Dit is al aangestipt door enkele van de bestaande antwoorden. Bedankt.
Antwoord
ASIC versus FPGA
Een Field Programmable Gate Array kan worden gezien als de prototypefase van toepassingsspecifieke geïntegreerde schakelingen: ASICs zijn erg duur om te produceren, en als ze daar eenmaal zijn gemaakt is geen weg terug (aangezien de duurste vaste kosten de maskers zijn [soort fabricage “stencil”] en hun ontwikkeling). FPGAs zijn vaak herprogrammeerbaar, maar vanwege het feit dat een generiek aantal poorten is verbonden om uw doel te bereiken , het is niet geoptimaliseerd zoals ASICs. FPGAs zijn ook native dynamische apparaten in die zin dat als je het uitschakelt, je niet alleen de huidige status verliest, maar ook je configuratie. Er bestaan nu boards die een FLASH-chip en / of een microcontroller toevoegen aan laad de configuratie bij het opstarten, dus dit is meestal een minder belangrijk argument. Zowel ASICs als FPGAs kunnen worden geconfigureerd met hardware-beschrijvingstalen, en soms zijn FPGAs gebruikt voor het eindproduct. Maar over het algemeen treden ASICs in werking wanneer het ontwerp is opgelost.
FPGA vs microcontroller
Wat betreft het verschil tussen een microcontroller en een FPGA, je kunt een microcontroller beschouwen als een ASIC die in feite code sequentieel in FLASH / ROM verwerkt. Je kunt microcontrollers maken met FPGAs, zelfs als deze niet geoptimaliseerd zijn, maar niet het tegenovergestelde. FPGAs zijn bedraad net als elektronische circuits, dus je kunt echt parallelle circuits hebben, niet zoals in een microcontroller waar de processor van een stukje code naar een ander springt om goed genoeg parallellisme te simuleren. Maar omdat FPGAs zijn ontworpen voor parallelle taken, is het niet zo eenvoudig om sequentiële code te schrijven als in een microcontroller.
Als je bijvoorbeeld in de pseudocode “laat C A XOR B” schrijft, op een FPGA die zal worden vertaald in “bouw een XOR-poort met de legoblokjes erin (opzoektabellen en vergrendelingen), en verbind A / B als inputs en C als output “die elke klokcyclus zal worden bijgewerkt, ongeacht of C wordt gebruikt of niet. Terwijl op een microcontroller die zal worden vertaald in “leesinstructie – het een XOR van variabelen is op adres A en adres B van RAM, resultaat om op te slaan op adres C. Laad rekenkundige logische eenhedenregisters, en vraag dan de ALU om een XOR te doen, kopieer dan het outputregister naar adres C van RAM “. Aan de gebruikerskant waren beide instructies echter 1 regel code.Als we dit zouden doen, DAN iets anders, in HDL zouden we moeten definiëren wat een proces wordt genoemd om kunstmatig reeksen te maken – los van de parallelle code. Terwijl er in een microcontroller niets te doen is. Aan de andere kant, om “parallellisme” (echt afstemmen) uit een microcontroller te krijgen, zou je moeten jongleren met threads, wat niet triviaal is. Verschillende manieren van werken, verschillende doeleinden.
Samengevat:
ASIC versus FPGA: vast, duurder voor een klein aantal producten (goedkoper voor grote volumes), maar meer geoptimaliseerd.
ASIC versus microcontroller: zeker als het vergelijken van een tool met een hamer.
FPGA versus microcontroller: niet geoptimaliseerd voor sequentiële codeverwerking, maar kan ook heel gemakkelijk parallelle taken uitvoeren. Over het algemeen FPGAs worden geprogrammeerd in HDL, microcontrollers in C / Assembly
Wanneer snelheid van parallelle taken een probleem is, neem dan een FPGA, evolueer je ontwerp en maak er tenslotte een ASIC van als het “is op de lange termijn goedkoper voor u (massaproductie). Als opeenvolgende taken in orde zijn, neem dan een microcontroller. Ik denk dat u hier een nog meer toepassingsspecifieke IC uit kunt halen als het op de lange termijn ook goedkoper voor u is . De beste oplossing is waarschijnlijk een beetje van beide.
Wat een snelle zoekopdracht na het schrijven hiervan gaf, leverde me op:
Answer
FPGAs kunnen “opnieuw bedraad” worden door ze opnieuw te programmeren. Een FPGA laadt zijn configuratie in zijn configureerbare logische cellen wanneer deze is ingeschakeld . Dit betekent dat het opnieuw kan worden geprogrammeerd zonder wijzigingen aan de hardware.
ASICs kunnen alleen opnieuw worden bedraad door de fotolitografische maskers bij de siliciumgieterij te wijzigen.
Een microcontroller is een type ASIC, dat een programma uitvoert en als resultaat generieke dingen kan doen. Als u echter de instructieset wilt wijzigen of iets soortgelijks wilt doen, moet u de werkelijke silicium-IC-lay-out wijzigen.
Het verschil tussen een FPGA en een MCU is vager. Wat een FPGA op hardwareniveau eigenlijk is, zijn veel kleine SRAM-cellen, allemaal verbonden met een dichte matrix van multiplexers. In feite is een FPGA een hele stapel discrete logica die elektronisch “opnieuw bedraad” ** kan worden door simpelweg de multiplexers en SRAM-cellen te herprogrammeren.
Als zodanig kunt u daadwerkelijk een MCU binnen een FPGA implementeren, aangezien een MCU slechts een bepaalde configuratie van logische cellen is. In feite worden FPGAs heel vaak gebruikt in het ontwerpproces van MCUs.
Een microcontroller is een implementatie van een bepaalde logische configuratie. De reden dat we ze hebben, is dat door een MCU rechtstreeks in het silicium te implementeren, de totale benodigde hoeveelheid silicium-die-ruimte aanzienlijk kan worden geoptimaliseerd, en dat bepaalde prestatie-optimalisaties kunnen worden gemaakt die de vereiste “generiekheid” van een FPGA verbiedt. Hierdoor kunnen de productiekosten van een MCU drastisch worden verlaagd, met als resultaat dat de gewone MCU veel goedkoper is dan een FPGA die dezelfde logica kan bevatten.
FPGAs zijn nuttig in bepaalde toepassingen, omdat ze logische structuren kunnen implementeren op een manier die MCUs niet kunnen. Als u bijvoorbeeld X1 + Y1, X2 + Y2, X3 + Y3 en X4 + Y4 moet toevoegen, MCU zal elke bewerking achtereenvolgens * moeten uitvoeren. Een FPGA kan eenvoudig 4 afzonderlijke ALUs tegelijkertijd hebben , zodat het dezelfde bewerking in een kwart van de tijd kan uitvoeren (ervan uitgaande dat de twee apparaten met dezelfde snelheid worden geklokt).
Dit is waar FPGAs ( of ASICs die voor dezelfde taak zijn ontworpen) kunnen echt uitblinken in het feit dat je heel veel dingen tegelijkertijd kunt doen, die een enkel proces alleen opeenvolgend kan doen.
* (opmerking: ik negeer hier enkele dingen zoals SIMD)
Reacties
- Ik don ‘ denk niet dat het FPGA / ASIC-onderscheid vaag is; in een FPGA werken de circuits waarvan de ” bedrading ” kan worden gewijzigd, gelijktijdig en onafhankelijk. Een MCU heeft een grote hoeveelheid schakelingen waarvan de bedrading niet kan worden veranderd, en waarvan het gedrag wordt bestuurd door middel van informatie die stukje bij beetje wordt benaderd vanuit een programmeerbare geheugenreeks. Op elk moment kan een CPU over het algemeen slechts één bewerking uitvoeren uit een lijst van een paar duizend tot een paar miljard keuzes, maar de MCU zal zo zijn ontworpen dat het achter elkaar zetten van dergelijke bewerkingen het mogelijk maakt om nuttig werk.
- Bedankt. ZEER bijna het antwoord te worden … zij het 10 maanden later. +1 om het goed te maken.
Antwoord
Dit is een goede vraag,
In wezen een microcontroller en een ASIC heeft hardware (vaak silicium genoemd) die in steen is gezet en “niet kan worden gewijzigd. Een FPGA kan worden geconfigureerd om veel verschillende soorten hardware te vertegenwoordigen (dit kunnen microcontrollers zijn).
Je denkt misschien dat een microcontroller gemaakt kan worden om veel verschillende dingen te doen, maar dit wordt allemaal gedaan door verschillende programmas uit te voeren – technisch gezien software maar wordt soms ook firmware genoemd – de hardware zelf verandert niet in wezen, het voert dezelfde bewerkingen uit, maar in een andere volgorde met verschillende ingangen.
FPGAs worden meestal gebruikt om de ontwerpen te genereren die zijn toegewezen aan ASICs die de Het verschil tussen hen is dat als je de interne werking van een FPGA wilt updaten of functionele blokken wilt toevoegen / verwijderen, het enige wat je hoeft te doen is de firmware bijwerken, dit kan niet worden gedaan op ASICs als de innerlijke koningen zijn toegewijd aan silicium, het is niet herconfigureerbaar.
Kortom, met een microprocessor gebruikt u dezelfde hardware om verschillende programmas uit te voeren, met een FPGA configureert u de hardware opnieuw om verschillende functies uit te voeren en ASICs zijn als een microcontroller omdat de hardware niet kan worden gewijzigd, maar zijn meestal ontworpen om een enkele functie uiterst efficiënt uit te voeren.
Zowel ASICs als FPGAs kunnen microcontrollers bevatten en als ze dat doen, kun je er programmas voor schrijven zoals je een zelfstandige microcontroller zou doen, een voorbeeld van dit is de ingebouwde NIOS II-processor van Altera.
Als dit nog steeds verwarrend is, laat me weten dat het onduidelijk is en ik zal mijn best doen om mijn antwoord te verduidelijken.
Gipsy
Antwoord
nou, nee, een FPGA wordt geprogrammeerd door elektrische signalen als hij zich gedraagt als een specifieke verzameling poorten, sommige FPGAs bevatten flash geheugen om deze configuratie op te slaan, sommige niet en moeten opnieuw worden geprogrammeerd na elke stroomreset.
Een ASIC komt al van de productielijn c onfigured.
FPGA-bugs kunnen worden opgelost met een firmware-upgrade, ASIC-bugs kunnen “economisch niet worden gerepareerd.
Answer
Ondanks zijn naam voelt een FGPA erg” toepassingsspecifiek “aan, aangezien het opnieuw moet worden bedraad om een nieuwe en andere taak uit te voeren.
Dat is het tegenovergestelde van wat “applicatiespecifiek” betekent. U kunt een FPGA voor meer dan één toepassing gebruiken door deze opnieuw te bedraden. U kunt een ASIC niet wijzigen, dus het kan maar op één taak worden toegepast (die taak kan een microcontroller zijn).
In het geval van Bij het herbedraden van een FPGA moet alle benodigde hardware aanwezig zijn.
Weet niet zeker wat dit betekent. Gewoonlijk is er “een software-interface voor het herprogrammeren van een FPGA. Het is een ASIC die miljoenen [valuta-eenheden] hardware vereist.
FPGA” s zijn bedoeld om programmeerbaar te zijn, maar is dat niet waar een microcontroller voor bedoeld is?
Een microcontroller stelt je in staat om sequentiële software te programmeren voor een vaste hardware. Net als een normale computer, maar erg klein en met beperkte middelen. Met een FPGA kunt u elke gewenste hardware programmeren met een HDL.