Tilbake
2.4
Kombinatorisk logikk

2.4 Kombinatorisk logikk

Design av kombinatoriske kretser med multipleksere, dekodere og addere.

55 min
5 oppgaver
MultiplekserDekoderHalvaddererHeladdererKombinatoriske kretser
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 5 oppgaver

Kretser som lever i nuet

Noen elektroniske kretser har hukommelse – de husker hva som skjedde tidligere. Men en stor familie av kretser gjør det ikke. De lever helt i nuet: utgangen bestemmes utelukkende av hvilke verdier som ligger på inngangene akkurat nå. Endrer du inngangene, endrer utgangen seg umiddelbart, uten å bry seg om fortiden. Disse kaller vi kombinatoriske kretser.

Det kan høres begrenset ut, men nettopp disse minneløse kretsene er byggesteinene i alt digitalt utstyr. Av logiske porter satt sammen på smarte måter får vi velgere som plukker ut riktig signal, dekodere som tenner riktig lampe, og – mest imponerende – adderere som faktisk kan legge sammen tall. Det er slik en datamaskin regner.

I dette kapittelet skal vi møte de viktigste kombinatoriske kretsene. Vi starter med multiplekseren og dekoderen, to nyttige velgere. Deretter bygger vi opp halvadderen og heladderen, og ser hvordan de kan kjedes sammen for å legge sammen flersifrede binærtall – fra første prinsipp til et ferdig regnestykke.

Velgere: multiplekser og dekoder

La oss begynne med multiplekseren, ofte forkortet MUX. Den er rett og slett en digital velger: av flere innganger sender den én videre til utgangen, alt etter hva du ber om. Den enkleste er en 2-til-1 MUX, med to datainnganger D0D_0 og D1D_1, en velgerinngang SS, og en utgang YY. Når S=0S = 0, slipper den D0D_0 gjennom; når S=1S = 1, slipper den D1D_1. Dette fanges i ett boolsk uttrykk: Y=SˉD0+SD1Y = \bar{S} \cdot D_0 + S \cdot D_1.

Tenk på et system med to temperatursensorer. Du kobler sensor A til D0D_0, sensor B til D1D_1, og en bryter til SS. Med bryteren av leses sensor A, med bryteren på leses sensor B – multiplekseren fungerer som en elektronisk omkobler. Vil du velge mellom flere, bruker du en 4-til-1 MUX med to velgerinnganger S1S0S_1 S_0 som danner et 2-bits tall: 00 velger D0D_0, 01 velger D1D_1, 10 velger D2D_2, og 11 velger D3D_3.

Den motsatte funksjonen har dekoderen. I stedet for å velge én av mange innganger, tar den et binærtall inn og aktiverer én av mange utganger. En 2-til-4 dekoder har innganger A1A0A_1 A_0 og fire utganger Y0Y_0 til Y3Y_3, der bare én er høy om gangen – den som svarer til tallet på inngangen. Uttrykkene følger rett av tabellen: Y0=A1ˉA0ˉY_0 = \bar{A_1} \cdot \bar{A_0}, Y1=A1ˉA0Y_1 = \bar{A_1} \cdot A_0, Y2=A1A0ˉY_2 = A_1 \cdot \bar{A_0} og Y3=A1A0Y_3 = A_1 \cdot A_0. Dekodere brukes blant annet til å velge riktig minnecelle, styre et sjusegment-display eller peke ut en bestemt enhet i et datasystem.

📝Oppgave Quiz 1

Halvadderen – å legge sammen to biter

Nå til kretsene som virkelig regner. Hvordan kan logiske porter legge sammen tall? Vi starter i det små, med å legge sammen to enkeltbiter, A og B. I binær har vi fire muligheter: 0+0=00+0=0, 0+1=10+1=1, 1+0=11+0=1, og 1+11+1 – som blir 2, altså 1010 i binær. Det siste tilfellet trenger to siffer, og det er nettopp her det blir interessant.

Kretsen som gjør dette kalles en halvadder. Den har to utganger: en sum-bit SS og en mente-bit CC (carry). Ser vi på sannhetstabellen, oppdager vi et mønster. Summen SS er 1 nøyaktig når A og B er forskjellige – det er XOR-funksjonen, eksklusiv ELLER, skrevet S=ABS = A \oplus B. Menten CC er 1 bare når begge er 1 – det er AND, C=ABC = A \cdot B.

La oss sjekke med 1+11 + 1: S=11=0S = 1 \oplus 1 = 0 og C=11=1C = 1 \cdot 1 = 1. Sammen gir det CS=10C S = 10, altså 2 i binær. Akkurat riktig. Med to enkle porter, en XOR og en AND, har vi laget en krets som faktisk adderer.

Men hvorfor heter den «halv»-adder? Fordi den mangler noe viktig: den har ikke plass til en mente som kommer inn fra et tidligere siffer. Når du legger sammen flersifrede tall, drar du jo en mente videre fra én kolonne til neste, akkurat som i vanlig addisjon. For å håndtere det trenger vi en mer komplett krets.

📝Oppgave Quiz 2

Heladderen – og hvordan tall legges sammen

For å legge sammen flersifrede binærtall trenger vi en heladder. Forskjellen fra halvadderen er en ekstra inngang: CinC_{in}, menten som kommer inn fra forrige siffer. Heladderen har altså tre innganger – A, B og CinC_{in} – og to utganger, sum SS og utgående mente CutC_{ut}.

Boolsk blir summen en XOR av alle tre: S=ABCinS = A \oplus B \oplus C_{in}. Den utgående menten er litt mer sammensatt: Cut=AB+Cin(AB)C_{ut} = A \cdot B + C_{in} \cdot (A \oplus B). Med ord: det blir mente enten hvis både A og B er 1, eller hvis det allerede kom en mente inn samtidig som A og B er forskjellige. Praktisk nok kan en heladder bygges av to halvaddere og en OR-port.

Nå har vi alt vi trenger for å legge sammen ekte tall. La oss regne 112+01211_2 + 01_2, som er 3+1=43 + 1 = 4. Vi begynner med det minst signifikante bitet, posisjon 0, og bruker en halvadder fordi det ikke kommer noen mente inn ennå: A0=1A_0 = 1, B0=1B_0 = 1 gir S0=0S_0 = 0 og en mente C0=1C_0 = 1. Denne menten drar vi videre. På posisjon 1 bruker vi en heladder med A1=1A_1 = 1, B1=0B_1 = 0 og Cin=1C_{in} = 1: summen blir S1=101=0S_1 = 1 \oplus 0 \oplus 1 = 0, og menten Cut=10+1(10)=1C_{ut} = 1 \cdot 0 + 1 \cdot (1 \oplus 0) = 1. Setter vi resultatet sammen, får vi CutS1S0=1002=4C_{ut} S_1 S_0 = 100_2 = 4 – stemmer. Slik kobler vi én halvadder og flere heladdere i kjede, og kan legge sammen så store tall vi vil, akkurat som regneenheten i en datamaskin.

📝Oppgave Quiz 3

Oppsummering

Vi har bygd opp de kombinatoriske kretsene – de minneløse kretsene der utgangen bare avhenger av inngangene akkurat nå. Multiplekseren velger én av flere innganger (Y=SˉD0+SD1Y = \bar{S} \cdot D_0 + S \cdot D_1 for den enkleste), mens dekoderen gjør det motsatte og aktiverer én av flere utganger ut fra et binærtall.

Deretter så vi hvordan logiske porter kan regne. Halvadderen legger sammen to biter med S=ABS = A \oplus B og C=ABC = A \cdot B, men mangler inngang for innkommende mente. Heladderen løser dette med S=ABCinS = A \oplus B \oplus C_{in} og Cut=AB+Cin(AB)C_{ut} = A \cdot B + C_{in} \cdot (A \oplus B), slik at vi kan kjede én halvadder og flere heladdere sammen og legge sammen flersifrede binærtall – akkurat slik regneenheten i en datamaskin gjør det.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.