# System-on-a-chip

Een system-on-a-chip of system-on-chip (SoC of SOC) is een geïntegreerde schakeling (IC) die alle componenten van een computer of elektronisch systeem samenvoegt in de behuizing van een enkele chip. Het kan zowel digitale, analoge, hybride en RF-functies bevatten op een enkel substraat.
Het contrast met een microcontroller is gering. Microcontrollers hebben vaak minder dan 100 kB aan RAM-geheugen en zijn enkelvoudige chip-systemen. Een SoC beschikt over een krachtige processor en is in staat om een besturingssysteem zoals Windows of Linux te draaien, met aansturing van externe apparaten.
Wanneer het niet mogelijk is een SoC samen te stellen voor een specifieke toepassing, dan kan gekozen worden voor een system-in-package (SiP). Dit zijn een aantal chips in een enkele behuizing. In grotere volumes is een SoC meer kosteneffectief dan een SiP vanwege de lagere fabricagekosten en de eenvoudige samenstelling.

## Toepassingen

SoC's worden veel toegepast in de mobiele elektronicamarkt vanwege hun lage energieverbruik. Een typische toepassing van een SoC is op het gebied van ingebedde systemen. Omdat chips steeds goedkoper en flexibeler worden, komen er steeds meer ingebedde systemen op de markt: pinautomaten, kopieermachines, industriële meetapparatuur, robots, ziekenhuisapparatuur, smartphones, magnetrons, wasmachines, foto- en filmapparaten, consumentenelektronica, moderne auto's en andere mechatronische systemen.

## Stapelbaar

Soms is de SoC stapelbaar met een andere SoC, zoals die van de Raspberry Pi. Dit wordt ook wel een package-on-package (PoP) genoemd. Bij de Raspberry Pi is de zwarte laag het SDRAM en de laag eronder de SoC, die weer in verbinding staat met de printplaat.

## Structuur

Een typische SoC bestaat uit de volgende onderdelen:
* een microcontroller, microprocessor, of een digitale signaalprocessor (DSP) kern.
* geheugenblok, waaronder ROM, RAM, EEPROM en flashgeheugen.
* een klok, zoals een oscillator of een phase-locked loop.
* randapparatuur, waaronder timers.
* externe interfaces, zoals USB, FireWire, Ethernet, USART, SPI.
* analoge interfaces, zoals ADC's en DAC's.
* spanningsregelaars en circuits voor energiebeheer.

## Ontwerpproces

Een SoC bestaat naast hardware, ook uit software die de microcontroller en randapparatuur aanstuurt, de firmware. Het ontwerpproces van een SoC richt zich op het parallel ontwikkelen van deze hardware en software.
De meeste SoC's zijn ontwikkeld op basis van pre-gekwalificeerde hardware-elementen, zoals hierboven beschreven, samen met stuurprogramma's die hun werking bestuurt. Met name van belang is de protocol stack die een interface aanstuurt, zoals USB.
Wanneer eenmaal de architectuur van een SoC is bepaald, dan worden alle nieuwe hardware-elementen in een abstracte taal gezet, genaamd RTL, voor Register Transfer Level of Register Transfer Language, die hun gedrag beschrijft. Deze elementen worden samengebracht in deze RTL-taal om het gehele ontwerp van de SoC te vormen.
Daarna worden chips gecontroleerd op hun logische correctheid. Dit proces heet functionele verificatie en neemt een belangrijk deel van de ontwikkeltijd in beslag. Met de groeiende complexiteit van chips maakt men veelal gebruik van hulpmiddelen om dit proces te versnellen. Fouten in de verificatie worden doorgegeven aan de ontwerper en verholpen in gereviseerde versies.
Wanneer alle bekende fouten zijn opgelost en gecontroleerd, dan wordt het ontwerpbestand dat elke laag van de chip beschrijft naar de gieterij gestuurd. Hier worden de lithografische maskers samengesteld en deze worden naar de wafer-fabriek gestuurd om de system-on-a-chip te produceren.