Logische schakelingen#
In werkelijkheid werkt een computer niet met de getallen 1 en 0. Het wordt gebruikt als representatie. De 1 en 0 staat voor aan of uit (stroom), voor wel of geen pit (cd). Dit is wat de computer kan begrijpen en om als mens te laten zien hoe de computer intern werkt, gebruiken we 0-en en 1-en. Om data te kunnen manipuleren en instructies uit te voeren gebruikt een computer elektrische schakelingen. Gezien dit niet de studie electric engineering is, gaan we aan de slag met logische schakelingen. Dit is enkel een representatie hoe de schakelingen van een computer werken op een logische niveau. Op deze manier hoeft er geen rekening mee gehoude worden of de stroomkring wel rond is, waar de batterij is, etc.
Drie belangrijke schakelingen.#
Het ontwerp van fysieke apparaten die altijd werken kan met behulp van maar 3 schakelingen: and
, or
en not
.
Wat zijn mogelijke uitkomsten voor and
, or
en not
? Dit kan uitgebeeld worden in waarheidstabellen. In dit soort tabellen wordt aangegeven wat de uitput is bij een gegeven input.
AND
#
input |
output |
|
---|---|---|
x |
y |
AND(x, y) |
|
|
|
|
|
|
|
|
|
|
|
|
De output van AND is 1 als ALLE inputs gelijk aan zijn aan 1.
OR
#
input |
output |
|
---|---|---|
x |
y |
OR(x, y) |
|
|
|
|
|
|
|
|
|
|
|
|
De output van OR is 1 als MINSTENS één input gelijk is aan 1.
NOT
#
input |
output |
---|---|
x |
NOT(x) |
|
|
|
|
De output van NOT is de omkering van de input.
Boolean Logica#
Bij Booelaanse logica maak je ook gebruik van 3 operatoren genaamd and , or en not en zijn er ook maar twee antwoorden mogelijk namelijk True of False. Dit wordt gebruikt binnen het programmeren om aan de computer uit te leggen welke instructies wel of niet uitgevoerd moeten worden. De and, or en not gaan we nog vaak terugzien.
Schakelingen#
Het ontwerp van fysieke apparaten die altijd werken
In een computer wordt elk bit gerepresenteerd door een voltage
1 is 5 volt
0 is 0 volt
Berekeningen zijn het bewust combineren van deze voltages.
Berekeningen#
Alle berekeningen zijn functies van bits, of booleaanse waarden
input |
output |
|
---|---|---|
x |
y |
fn(x, y) |
|
|
|
|
|
|
|
|
|
|
|
|
Boolean inputs x en y kunnen alleen 0 of 1 zijn (
True
ofFalse
)Boolean functies kunnen alleen 0 of 1 (
True
ofFalse
) als output hebben
Logisim#
Logisim voor het maken van de logische schakelingen
Moeilijk? Bedenk dat je niet meer dan AND, OR en NOT nodig hebt om alles te kunnen berekenen!
Schakelingen en connecties#
Rails variant#
Quiz#
Dit circuit telt 8 logische schakelingen. Hoeveel schakelingen tel je voor
AND
OR
NOT
Volg A omhoog. Voor welke x, y en c bits geeft A als output 1?
Oplossing#
input |
output |
|||
---|---|---|---|---|
x |
y |
c |
output |
gate |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
C |
|
|
|
|
|
|
|
|
|
D |
Het circuit telt 4 AND, 1 OR en 3 NOT schakelingen
Zie de waarheidstabel voor alle mogelijke uitkomsten
Bewering#
Met de bouwstenen AND, OR en NOT kan alles worden berekend!
Stap 1: Probeer
Probeer het probleem eerst op te lossen op papier. In het geval van schakelingen kan dit handig in een waarheidstabel. In zo’n tabel wordt voor elke mogelijke input een ouput aangegeven.
input |
output |
||
---|---|---|---|
x |
y |
fn(x, y) |
|
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
Stap 2: Plan
Zet de aanpak in papier.
Maak voor elke rij waar de output gelijk moet zijn aan 1 een AND circuit
input |
output |
||
---|---|---|---|
x |
y |
fn(x, y) |
|
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
B: (NOT x) AND y
C: x AND (NOT y)
Combineer daarna expressies met OR
((NOT x) AND y) OR (x AND (NOT y))
Stap 3: Uitvoeren
Nu er een plan is, kan deze uitgevoerd worden.
Zet de expressie voor B om naar een circuit
B: (NOT x) AND y
Zet de expressie voor C om naar een circuit
C: x AND (NOT y)
Combineer de expressies met OR
Bewijs#
Dit bewijs dat alles met and, or en not berekend kan worden heeft de naam minterm expansion principe.
Het creeren van een logische schakeling loopt gelijk aan een methode voor programmeren. Namelijk eerst oplossingen proberen, als de oplossing is gevonden dan deze oplossing omzetten in stappen en vervolgens deze stappen omzetten naar een programmeer taal. Dit kan gezien worden als de drie p’s van programmeren.
De drie p’s van programmeren:
Probeer: Probeer het probleem op te lossen op papier.
Plan: Noteer de stappen die zijn gebruikt om het probleem op te lossen.
Programmeer: Vertaal de stappen naar een programmeer taal.
Een concreet voorbeeld#
Een less than or equal circuit <=
De output van fn(x,y)
moet 1 zijn indien x <= y
, anders 0
Stap 1: Proberen#
Maak een waarheidstabel
input |
output |
||
---|---|---|---|
x |
y |
|
|
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
Stap 2: Plan#
input |
output |
||
---|---|---|---|
x |
y |
|
|
A |
|
|
|
B |
|
|
|
C |
|
|
|
D |
|
|
|
Op basis van de waarheidstabel kan de volgende expressie worden afgeleid voor A, B en D (de outputs met waarde 1)
A: (NOT x) AND (NOT y)
B: (NOT x) AND y
C: x AND y
Combineer daarna expressies met OR
((NOT x) AND (NOT y)) OR ((NOT x) AND y) OR (x AND y)
Stap 3: Plan uitvoeren#
Op basis van de expressie
((NOT x) AND (NOT y)) OR ((NOT x) AND y) OR (x AND y)
kan het volgende circuit worden opgesteld
Recept#
Probeer: Check alle inputs en schrijf de uitkomsten in een waarheidstabel
Plan: Stel de expressie op
Uitvoeren: Zet de expressie om naar een circuit