SR, D, JK og T flip-flops - oppbygning, sannhetstabeller og bruksområder.
Kretser som husker
De logiske portene vi møtte i forrige kapittel -- AND, OR, NOT -- har en innebygd glemsel. De ser bare på inngangene akkurat nå, og i samme øyeblikk inngangene endres, endres utgangen. De har ingen hukommelse. Men en datamaskin som ikke kan huske noe, ville vært ganske ubrukelig. Hvordan skal den vite at du nettopp trykket en tast, eller hvor langt en nedtelling er kommet?
Svaret er sekvensiell logikk -- kretser som kan huske tidligere tilstander. Dette er fundamentet for alt fra en enkel teller til en avansert prosessor. I dette kapittelet skal vi bygge oss oppover. Vi starter med flip-floppen, den minste minnecellen som finnes, og ser hvordan den lagrer én eneste bit. Deretter kobler vi flere flip-flops sammen til tellere som holder styr på antall hendelser, og til slutt til skiftregistre som flytter data bit for bit. Når du er ferdig, forstår du hvordan elektronikk i det hele tatt kan huske.
Forskjellen på å glemme og å huske
La oss først skjerpe forskjellen. Kombinatorisk logikk -- portene fra forrige kapittel -- har en utgang som bare avhenger av inngangene akkurat nå. Tenk på en vanlig lysbryter: trykker du, lyser lampen; slipper du, slukner den. Ingen hukommelse, utgangen følger inngangen direkte.
Sekvensiell logikk er annerledes. Her avhenger utgangen av både inngangene nå og den tidligere tilstanden. Tenk deg en togglende lysbryter: første trykk slår lyset på og holder det på, andre trykk slår det av. Samme inngang -- et trykk -- gir altså ulikt resultat avhengig av hva tilstanden var. Kretsen «husker» om lyset var på eller av, og det krever en flip-flop.
For å holde alt synkronisert bruker sekvensiell logikk gjerne et klokksignal -- en periodisk puls, for eksempel 1 MHz, som betyr én million pulser i sekundet. Klokka sørger for at alle deler oppdaterer seg samtidig, slik at ingenting kommer i utakt.
Selve minnecellen er flip-floppen, som lagrer én bit -- en 0 eller en 1. Det finnes flere typer. SR flip-floppen har Set og Reset: S=1 setter utgangen Q til 1, R=1 nullstiller den, mens S=R=1 er en ugyldig tilstand. D flip-floppen har en datainngang D og en klokke, og ved hver stigende klokkflanke får Q verdien til D. JK flip-floppen ligner SR, men her er J=K=1 gyldig og får utgangen til å toggle, altså bytte tilstand. Og T flip-floppen (toggle) bytter tilstand ved hver klokkpuls når T=1 -- noe som gjør den perfekt i tellere. Felles for de klokkestyrte er at de er flankestyrte: de reagerer bare i det øyeblikket klokka stiger eller faller.
Å holde tellingen
Kobler vi flere flip-flops sammen, får vi en teller -- en krets som teller antall klokkpulser. Det finnes to hovedtyper, og forskjellen handler om hvordan klokka fordeles. I en asynkron teller, også kalt ripple counter, kobles flip-floppene i serie: utgangen fra den ene driver klokkinngangen til den neste. Det er enkelt å bygge, men gir en liten forsinkelse som «rusler» gjennom kjeden. I en synkron teller får alle flip-floppene derimot samme klokksignal samtidig, så alle endrer tilstand i takt. Det er raskere og mer pålitelig, men krever litt mer logikk.
En binær teller teller i totallssystemet: og videre. Med bit kan den telle fra 0 til , så en 4-bits teller dekker 0 til 15. La oss følge en 3-bits teller, som har tilstander. Den går -- altså 0 til 7 -- og «wrapper» så tilbake til 000. Det kalles overflow.
Vi kan også regne midt i en telling. En 4-bits teller som starter på (som er 10 i titallssystemet) teller oppover: etter én puls (11), etter to (12), etter tre (13). Det finnes flere varianter for ulike formål: BCD-telleren teller bare 0-9 og brukes til 7-segment-display, mens opp/ned-telleren kan telle begge veier styrt av et retningssignal.
Data som flytter på seg
Fra tellere til den siste byggeklossen: skiftregisteret. Dette er en krets som flytter data bit for bit ved hver klokkpuls, som perler som skyves langs en snor. Det finnes fire varianter, og navnene forteller alt om hvordan data kommer inn og ut.
SISO (Serie-Inn, Serie-Ut) tar imot data én bit om gangen og sender dem ut én bit om gangen -- nyttig for å forsinke data. SIPO (Serie-Inn, Parallell-Ut) tar data inn serielt, men gjør alle bitene tilgjengelige samtidig på utgangen; den konverterer altså seriell data til parallell. PISO (Parallell-Inn, Serie-Ut) gjør det motsatte: alle bit lastes inn samtidig og sendes ut én etter én -- parallell til seriell. Og PIPO (Parallell-Inn, Parallell-Ut) tar alt inn og ut parallelt, og brukes som dataregister.
La oss følge et 4-bits SIPO-register mens det fyller seg. Vi mater inn bitene 1, 0, 1, 1 i tur og orden. For hver klokkpuls skyves det som ligger inne ett hakk videre. Etter fire pulser ligger hele datastrømmen klar parallelt på utgangen. På den måten har vi forvandlet en strøm av enkeltbit som kom inn over én ledning, til fire bit vi kan lese av på én gang.
Skiftregistre er overalt i praksis. De brukes i seriell kommunikasjon som UART og SPI, der data sendes over få ledninger, og i kretser som 74HC595, som lar en mikrokontroller styre mange LED-er med bare et par signalledninger. Slik blir den enkle ideen om å skyve bit langs en kjede til et kraftig verktøy.
Oppsummering
Vi har bygget oss oppover gjennom kretser som husker. Forskjellen på kombinatorisk og sekvensiell logikk er hukommelsen: sekvensiell logikk lar utgangen avhenge av både inngangen nå og den tidligere tilstanden, ofte synkronisert av et klokksignal.
Den minste minnecellen er flip-floppen, som lagrer én bit. D flip-floppen samplet D ved klokkflanken, JK toggler når J=K=1, og T flip-floppen veksler ved hver puls -- perfekt i tellere. Vi så at asynkrone tellere er enkle, men har forsinkelse, mens synkrone er raske og presise, og at en -bits binær teller dekker 0 til . Til slutt flyttet skiftregistrene -- SISO, SIPO, PISO og PIPO -- data bit for bit, og lot oss konvertere mellom seriell og parallell form i alt fra UART til LED-styring. Sammen utgjør disse byggeklossene fundamentet for hele den digitale verdenen, helt opp til prosessoren.
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.