Hoe werkt een computer? (deel 2)

terug naar deel 1 : gates.
naar deel 3: parallellel opteller

Inleiding

In deel 1 maakten we kennis met de logische functies and, or, inverter.
Een netwerk van dit soort schakelingen heet een statisch netwerk.
Er gaan een aantal signalen in en er komen signalen uit.
Bij verandering van een ingangssignaal stellen de uitgangssignalen zich opnieuw in.
Omdat logische poorten (gates) en ook draadlengtes voor vertraging zorgen, kunnen aan de uitgangen
zg. glitches optreden, kortstondige "0" of "1" piekjes totdat weer een stabiele toestand intreedt.
Na verandering van een ingangssignaal moet dus even worden gewacht tot het uitgangssignaal stabiel is.
Merk ook op, dat er geen sprake is van geheugen.

Set-Reset FlipFlops

Met een enkele OR-gate is een 1-bits geheugentje te maken door de uitgang met een ingang te verbinden.
Aanvankelijk zijn A en B beide 0. Als A eventjes "1" wordt dan blijft B = "1".
Dit geheugentje is verder onbruikbaar, want er is geen mogelijkheid om de stand "0" in te stellen.
Het ging er alleen even om het principe te demonstreren.

Een 1-bits geheugen heet een Flip-Flop en die wordt gewoonlijk gemaakt met twee NOR gates
In de set stand van de flip-flop geldt: SET (out) = "1" en RESET (out) = "0".
In de RESET stand het omgekeerde uiteraard.

Een kort set ("1") signaal A set de Flip-Flop.
Een kort reset ("1") signaal B reset de Flip-Flop.

Opmerking: met twee NAND gates is ook een flip-flop te maken.
Een NAND gate voor énen is een NOR gate voor nullen.
De ingangen zijn dan wel not(SET) en not(RESET), er is een "0" signaal nodig om de Flip-Flop
te setten of te resetten.

Registers

Om een getal te bewaren is een rijtje Flip-Flops nodig.
In het onderstaande 4 bits register wordt getal d (d0...d3) in het register opgeslagen als set = "1".
Het reset signaal zet het hele register weer op "0".
Merk op: als de Flip-Flops zijn gemaakt met NAND-gates, dan moeten de 4 AND-gates door
NAND-gates worden vervangen.

Een simpel telwerkje

We maken een 1-bits telwerk, dat 0-1-0-1...telt.
Daarvoor zijn twee Flip-Flops nodig.
De eerste Flip-Flop (FF) heet de master, de tweede FF heet de slave.
Stel, dat master en slave alletwee de -0- stand hebben (FF's gereset).
Een adv -1- puls zet dan de master in stand -1-.
Even later kopieert een korte xfer puls de stand van de master in de slave.
Een volgende adv puls reset de master. De xfer puls erna reset de slave, enzovoorts.

adv en xfer signalen mogen niet tegelijk -1- zijn, want dan slaat het telwerk op hol.

Edge triggered FF's

In de jaren '60 werkten tellers op de boven beschreven manier.
Maar de aparte adv en xfer signalen zijn onhandig.
Eén enkel adv (advance = verhoog) signaal is gemakkelijker.

Kijk eens naar het schema hieronder
Dit is een zogenaamde JK FlipFlop.
In- en uitgangen zijn kruislings verbonden.
Aan de AND ingangen zijn signalen J en K toegevoegd.
Als beide ingangen J,K = "1" zijn, dan telt de FF 0-1-0-1... bij elk adv signaal.
Als J,K = 0, dan zal de adv puls geen verandering geven.
Is alleen J = 1, dan zal de adv pulse de FF setten.
Is alleen K = 1, dan zal de adv pulse de FF resetten.
De verandering treedt op als adv van "0" naar "1" gaat, vandaar de benaming "edge triggered".

Met JK FlipFlops is op eenvoudige wijze een telwerk te maken.
Hieronder een voorbeeld van een 4-bits telwerk met JK FF's.
Als T0 van 1 naar 0 gaat, dus de reset uitgang van 0 naar 1, dan verandert T1 van waarde.
Enzovoorts.
Het telwerk is wel traag, omdat het signaal erdoorheen rimpelt.
Het heet ook wel een asynchrone teller.

Met JK FF's is het oppassen geblazen.
Immers, als adv = 0, dan kan een spike (korte puls, bv door vertraging ontstaan) de master setten.
JK FF's werken alleen bij absoluut "schone" signalen, dus niet als er een statisch netwerk voor zit,
dat mogelijk spikes geeft tijdens de verandering van ingangssignalen.

De "edge triggered" aktie wordt in het schema aangegeven met een klein driehoekje.

Een prettiger bouwsteen voor het opslaan van condities is de D-FlipFlop (data FlipFlop).
Als clock = 0 dan wordt D gekopieerd in de master FF.
Als clock = 1 dan wordt de master - naar de slave FF gekopieerd.
Vaak hebben edge-triggered FlipFlops ook een zg. asynchrone set- en reset ingang.
Met een -0- op de s- of r ingang is de FlipFlop te (re)setten, onafhankelijk van het clocksignaal (C).

Een rijtje D-FlipFlops kan een register vormen.
Samen met een increment netwerk ontstaat een zg. synchrone teller, die is zeer snel.
Het reset signaal zet de teller op stand 0000.

Toepassing

Een 4-bit parallel naar serie omzetter
Het "load" signaal laadt data bits d0..d3 in de D-flipflops.
Het "shift" signaal schuift de bits er één voor één uit.

Zo worden de control signalen "load" en "shift" gemaakt:
T0,T1 vormen een zg. "timing chain" , een simpel tellertje dat van waarde verandert op de neergaande
flank van de clock. Het telt 00 - 10 - 11 - 01 - 00......enzovoorts.
Bij stand -00- levert het clocksignaal de "load" puls, anders de "shift" pulse.

Algemeen schema

Hieronder staat het algemene schema van een zg. synchrone digitale computer
Op de opgaande flank ("0" --> "1") van de clock worden de outputs van de statische netwerken vastgelegd.
De flipflops sturen de processen. Ze kunnen zowel controle-informatie als getallen bevatten.
De statische netwerken kunnen zorgen voor rekenkundige bewerkingen of controlefuncties.
Als de clock te snel loopt, dan krijgen de statische netwerken niet genoeg tijd om zich in te stellen
en er ontstaan fouten.