CMD + K

6 min lesing4 videoer

Digital elektronikk

Analog vs digital, signal og støy, sannhetstabeller, logiske porter (AND/OR/NOT/NAND), De Morgan og NAND-realisering.

Læringsmål
  • 01Forklare forskjellen på analoge og digitale signaler, og hvorfor digitalt er robust mot støy
  • 02Skrive opp sannhetstabellen for AND, OR, NOT og NAND, og lese et logisk uttrykk ut av den
  • 03Bruke De Morgans lover til å omforme et uttrykk slik at det kan realiseres med bare NAND-porter
  • 04Forklare hvorfor NAND kalles en universalport og demonstrere AND, OR og NOT bygd av NAND

Analog og digital — to syn på samme spenning

Et analog signal har uendelig mange mulige verdier. En mikrofon avgir en spenning som varierer kontinuerlig med lufttrykket; en temperatursensor en spenning som varierer med varmen. Et digital signal har bare et endelig antall lovlige verdier. Vi nøyer oss nesten alltid med to: «høy» og «lav», eller mer presist 1 og 0.

Den underliggende spenningen er fortsatt analog. Inni en datamaskin svinger den hele tiden — men kretsen tolker alt under en terskel som 0 og alt over som 1. Den tolkningen er hele kunsten.

Hvorfor digitalt? Fordi det er robust. En liten skarp spenningsforstyrrelse forandrer ikke en 5 V til en 4 V så mye at vi mister bit. Et analogt signal hadde fått støyen lagt på toppen, og informasjonen ville gradvis råtne for hvert ledd. Digitalt blir 1 fortsatt 1, og 0 fortsatt 0, så lenge spenningen holder seg unna grenseflaten.

Støy og støymargin

støy er alt vi ikke ville hatt på signalet vårt. Den klassiske er 50 Hz brum fra lysnettet som lekker inn via kapasitiv eller induktiv kobling. Andre kilder: termisk støy i motstander, switching-spikes fra digitale kretser i nærheten, eller cosmic-ray-singlebits hvis du er virkelig uheldig.

I et digitalt system definerer vi terskelen typisk som halve forsyningsspenningen: ƒstøymargin. Alt under V/2 leses som 0, alt over som V/2 som 1. støymargin er hvor stort avvik signalet tåler før det blir tvil. Med en 5 V forsyning er marginen 2.5 V — enormt stor sammenlignet med selv kraftig støy. Det er denne marginen som gjør at en digital signalvei kan løpe metervis uten å miste informasjon, mens et analogt signal må behandles varsomt etter få centimeter.

Marginen brytes sammen hvis spenningen lander oppi grenseområdet rundt V/2. Da blir output udefinert — kretsen «vipper» tilfeldig. Realistiske porter har derfor en hysterese rundt terskelen: de slår om ved litt over V/2 gående oppover og litt under V/2 gående nedover. Schmitt-trigger-portene er klassiske bærere av den triks.

Logiske variabler og porter

En logisk variabel er en symbolsk verdi 0 eller 1. Den representerer en spenning som er enten under eller over terskelen, og er abstraksjonen vi regner på når vi tegner kretser.

En logisk port er en kombinatorisk byggekloss som tar én eller flere logiske variabler inn og leverer én ut. De fundamentale er fire:

- AND: Q = A · B. Utgangen er 1 bare når begge inngangene er 1. - OR: Q = A + B. Utgangen er 1 når minst én inngang er 1. - NOT (inverter): Q = !A. Utgangen er det motsatte av inngangen. - NAND: Q = !(A · B). AND fulgt av NOT.

Hvis du tegner opp en sannhetstabell med alle mulige kombinasjoner av A og B og fyller inn Q for hver port, har du fullstendig oppførsel.

ABANDA·BORA+BNAND!(A·B)NOR!(A+B)000011010110100110111100AND og NAND speiler hverandre; OR og NOR speiler hverandre
FIGSannhetstabell: AND, OR, NAND, NOR for to innganger

To variabler gir fire rader; tre gir åtte; n gir 2ⁿ. Tabellen er det digitale motstykket til en I–V-kurve: alt om kretsen står der.

Kombinatoriske systemer

Et kombinatorisk system system er ett uten minne. Utgangen er fullstendig bestemt av inngangene akkurat nå — det finnes ingen tilstand som husker hva som skjedde for et øyeblikk siden. Adderen, multipleksoren og dekoderen er alle kombinatoriske.

Det motsatte er sekvensielle systemer, hvor utgangen avhenger av historikk. En vippe (flip-flop) er den enkleste byggestenen der. Vi tar dem ikke her — i dette kapittelet handler det om porter og uttrykk, ikke om hukommelse.

Boolsk algebra

Vi regner med logiske variabler ved hjelp av boolsk algebra. Reglene ser kjente ut hvis du har sett vanlig algebra, men de er ikke helt identiske: AND oppfører seg som gange, OR som pluss, NOT som «invertering».

Nøytrale elementer og komplementer er samlet i ƒboolske grunnregler. Med dem kan du forenkle uttrykk algebraisk: A + A·B blir A (absorpsjon), A·(B + !B) blir A (komplementregel inni). I praksis bruker du Karnaugh-diagrammer for å gjøre det visuelt på mindre uttrykk, og verktøy som Quine–McCluskey for større.

To uunnværlige regler er ƒde morgans lover og ƒdobbel inversjon. De Morgan lar deg flytte negasjoner inn og ut av parenteser, mens dobbel inversjon sier at to negasjoner kansellerer. Sammen er de nøkkelen til neste seksjon.

NAND som universalport

nand-port har en bemerkelsesverdig egenskap: alle andre porter kan bygges av bare NAND-er. Det er praktisk og økonomisk — fabrikker har trygt kunne masseprodusere én porttype og bruke den til alt.

NOT bygges av en NAND ved å koble inngangene sammen: ƒnand som inverter. AND bygges av NAND fulgt av en NAND-inverter — altså to NAND-er. OR bygges ved å bruke De Morgan: A + B = !(!A · !B), som er en NAND med inverterte innganger. Det betyr to NAND-invertere koblet på inngangene og en tredje NAND som kombinerer dem.

!A = !(A·A)!B = !(B·B)Q = A + BABQ = A + BTre identiske NAND-er — De Morgans lov bygd i hardware
FIGOR bygd av tre NAND: A+B = !(!A · !B)

Hver gang du har et logisk uttrykk og må implementere det med faktiske kretser, gjør du gjerne en av to ting. Enten bruker du AND/OR/NOT direkte hvis du har dem, eller du omformer alt til NAND-realisering. NAND-omformingen følger fast oppskrift: skriv uttrykket som sum-av-produkter (POS-form), bruk dobbel inversjon på hele uttrykket, og bruk så De Morgan til å konvertere OR av AND-er om til NAND av NAND-er. Resultatet er et kretsdiagram som kan bygges av identiske byggeklosser.

Logikkfamilier og spenningsnivåer

I praksis må vi bli enige om hvor V/2 ligger. TTL (transistor-transistor-logic) bruker 5 V forsyning og setter den logiske grensen rundt 0.8/2.0 V — under 0.8 V er garantert 0, over 2.0 V er garantert 1. CMOS med 5 V bruker grensen mye nærmere V/2 (1.5/3.5 V). Moderne kjernelogikk kjører på 1.2 eller 1.8 V og har strammere marginer.

To familier som ikke deler nivåer kan ikke snakke direkte sammen. Skal du koble en gammel 5 V-mikrokontroller til en moderne 3.3 V-sensor, må du sette en nivåkonverter imellom — typisk en transistorbasert krets, eller en spesialisert IC. Glem dette, og enten skades de moderne kretsene av for høy spenning, eller signalet leses som ubestemt.

Minimering med Karnaugh

Et logisk uttrykk kan ofte forenkles uten å endre sannhetstabellen. Sumform med fire variabler skrives som en 4×4-tabell der nabocellene skiller seg med bare én bit; grupperer du naboer av 1-er i rektangler på 1, 2, 4 eller 8 celler, slipper du å nevne de variablene som varierer innenfor rektangelet. Resultatet er det enkleste sumuttrykket — færrest porter, færrest transistorer, mindre varme.

Karnaugh-metoden viser også at det finnes valg: noen ganger gir flere rektangler samme antall ledd, men ulike kretser. Da velger du den som passer best til realiseringsteknologien du har for hånden. I nand-port-bygd logikk teller hver porttype likt, så det handler mest om å minimere antall ledd.

Hva tar vi med

Et digitalt system er en analog krets som vi har valgt å tolke binært. Støymarginen er det som gjør valget robust. Variabler er 0/1, porter implementerer enkle funksjoner, og sannhetstabellen er sannhetskilden. Boolsk algebra og De Morgan lar oss forenkle og omforme uttrykk, og NAND alene er nok til å realisere hva som helst kombinatorisk — så lenge spenningsnivåene snakker samme språk.

Når du møter en ny digital krets, lønner det seg å sette opp sannhetstabellen først, så lese ut det boolske uttrykket, så bestemme om en NAND-realisering eller direkte AND/OR/NOT passer best for kretskortet du faktisk har for hånden. De tre stegene er den røde tråden gjennom hele kombinatorisk digital design, og de forblir gyldige selv når kretsene vokser fra noen porter til hele prosessorer på en silisiumbrikke.