Tilbake
2.5
Flip-flops og vipper

2.5 Flip-flops og vipper

SR, D, JK og T flip-flops - oppbygning, sannhetstabeller og bruksområder.

60 min
7 oppgaver
SR flip-flopD flip-flopJK flip-flopT flip-flopKlokke-signal
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 7 oppgaver

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.

📝Oppgave Quiz 1

Å 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: 0000000100100000 \rightarrow 0001 \rightarrow 0010 og videre. Med nn bit kan den telle fra 0 til 2n12^n - 1, så en 4-bits teller dekker 0 til 15. La oss følge en 3-bits teller, som har 23=82^3 = 8 tilstander. Den går 000,001,010,011,100,101,110,111000, 001, 010, 011, 100, 101, 110, 111 -- 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å 10101010 (som er 10 i titallssystemet) teller oppover: etter én puls 10111011 (11), etter to 11001100 (12), etter tre 11011101 (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.

📝Oppgave Quiz 2

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 10111011 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.

📝Oppgave Quiz 3

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 nn-bits binær teller dekker 0 til 2n12^n-1. 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.