Handboek · hoofdstuk 23Digitale logica
Van waarheidstabel tot stopdominant geheugen
Een processor bestaat uit poorten, geheugen en timingafspraken. Je vereenvoudigt functies, bouwt optellers en selecties en leert waarom een noodstop meer nodig heeft dan een softwarevoorwaarde.

- Je gebruikt Booleaanse algebra en waarheidstabellen.
- Je vereenvoudigt functies met Karnaughkaarten en toetst hun equivalentie.
- Je beschrijft opteller, multiplexer, flipflop, register en teller.
- Je verklaart timing, metastabiliteit en een eenvoudig processordatapad.
- Je specificeert een hardwarematige stop die softwarefouten en onverwachte herstart opvangt.
Nul en één zijn afgesproken spanningsgebieden
Digitale logica gebruikt twee betekenisvolle toestanden, geen twee oneindig nauwkeurige spanningen. Een ingang accepteert laag onder VIL en hoog boven VIH; daartussen is de toestand niet gegarandeerd. Voedingsfamilie, temperatuur en belasting bepalen die grenzen. Een 3,3 V-Pi en een 5 V-Mega zijn niet zonder controle elektrisch compatibel.
Een zwevende CMOS-ingang kan willekeurig reageren en extra stroom trekken. Geef ongebruikte ingangen een geldig niveau en zorg voor pull-up/pull-down waar nodig. Een Booleaanse functie is een model van stabiele logische niveaus; draadbreuk en ruis horen bij de fysieke uitvoering.
Poorten en Booleaanse algebra
EN is 1 alleen wanneer alle ingangen 1 zijn; OF zodra minstens één 1 is; NIET keert om; XOF is 1 bij verschillende ingangen. We schrijven voor EN, voor OF en voor NIET. Het plusteken is hier geen gewone optelling: in Booleaanse algebra.
NEN en NOF zijn de ontkende EN en OF. Elk kan als universele bouwsteen worden gebruikt. De waarheidstabel legt betekenis vast onafhankelijk van gekozen poortfamilie.
| A | B | EN | OF | XOF |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
De Morgan en absorptie
- F = A + AB; G = NIET(A EN B).
- Functie, toets en implementatie.
- 1F=A(1+B)=A·1=A. Als A=1 is F al 1; als A=0 maakt AB ook nul.
- 2De Morgan: . De vier invoercombinaties tonen dat 'niet beide' hetzelfde is als 'minstens één niet'.
- 3Ook . Pas een ontkenning toe op de volledige groep, niet op één losse letter.
Waarheidstabel naar som van producten
Voor elke rij met uitgang 1 maak je een productterm met alle variabelen: een 0-ingang wordt ontkend, een 1-ingang rechtstreeks. De OF van die mintermen beschrijft precies de tabel. Een tabel met n ingangen heeft 2ⁿ rijen; voor kleine functies kan je iedere combinatie toetsen.
Bij drie ingangen en uitgang 1 op 011,100,101,110,111 volgt F = A + BC na vereenvoudiging. De eerste minterm onder A=0 vraagt B=C=1; alle A=1-rijen vallen samen tot A.
Karnaugh: buren verschillen in één bit
Een Karnaughkaart plaatst kolommen in Gray-volgorde 00,01,11,10. Zo verschillen aangrenzende cellen slechts in één bit. Groepeer 1-cellen in rechthoeken van 1,2,4,8,… cellen; variabelen die in een groep wisselen verdwijnen uit de productterm. Overlap is toegestaan; de rand is periodiek.
Voor F = A+BC vormt de volledige onderste rij een groep van vier: A blijft. De kolom 11 vormt een groep van twee: BC blijft. Een diagonaal is geen buur en een groep van drie is geen geldig macht-van-tweegroep.
Karnaugh met randburen
- Twee ingangen A,B; F=1 op 00 en 10, F=0 op 01 en 11.
- Functie, toets en implementatie.
- 1In de kaart verschillen de twee 1-cellen alleen in A. De gezamenlijke term is ¬B.
- 2Algebra: ¬A¬B + A¬B = (¬A+A)¬B = ¬B.
- 3Exhaustieve controle op vier combinaties voorkomt dat een verkeerde rijvolgorde een schijnbaar eenvoudige functie oplevert.
Van vereenvoudiging naar hazards
Een poort heeft voortplantingsvertraging. In een vereenvoudigde functie kunnen twee paden tijdelijk verschillende informatie zien, ook als de ideale tabel geen uitgangswissel vraagt. Een korte glitch heet een hazard.
Bij F = AB + ¬AC en B=C=1 is F altijd 1. Wanneer A wisselt kunnen beide paden kort 0 zijn. De consensus-term BC kan die statische hazard in deze tweelaagsstructuur overbruggen. Algebraïsch is zij overbodig, temporeel kan zij nuttig zijn.
Een waarheidstabel bewijst stabiele combinatorische waarden, geen timingveiligheid. Stel data tijdig voor een klokflank vast en behandel veiligheidsuitgangen met passende componenten en systeemtests.
Volle opteller: som en overdracht
- Bits A,B en carry-in Cin; totaal A+B+Cin in gewone rekenkundige betekenis.
- Functie, toets en implementatie.
- 1De sombit is 1 bij een oneven aantal 1-bits: S=A xor B xor Cin.
- 2De overdracht is 1 bij minstens twee enen: Cout=AB+(A xor B)Cin. Alternatief AB+ACin+BCin.
- 3Controle: bij 111 is gewone som3; S=1 en Cout=1 geven S+2Cout=3.
De volledige optellertabel
| A | B | Cin | S | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Een half-adder heeft geen Cin: S=A xor B, C=AB. Een volle opteller ketent meerdere bits door Cout aan de volgende Cin te verbinden. Voor 4 bit geeft 0111+0001 =1000: carry moet drie lagere bits passeren.
Een ALU kiest tussen optellen, AND, XOR en andere functies. Dat combineert combinatorische datapaden met multiplexerselectie. Het resultaat wordt op de juiste klokflank in een register bewaard.
Multiplexer: selectie is ook een logische functie
Een 2-naar-1-multiplexer kiest A wanneer S=0 en B wanneer S=1: . EN-poorten laten het gekozen pad door; OF combineert. Een decoder doet de omgekeerde adresverdeling: een binair adres activeert één van meerdere lijnen.
Een 4-naar-1-mux heeft twee selectiebits; elk datapad krijgt een minterm. Deze bouwstenen maken datakeuze in een processor mogelijk. Een muxselectie die tijdens een overdracht wisselt kan een glitch geven; registreer de keuze waar timing dat vereist.
Register, teller en klokfrequentie
- Vier D-flipflops vormen een binaire teller; één verhoging per stijgende klokflank op 1 kHz.
- Functie, toets en implementatie.
- 1Iedere D-flipflop neemt D over op de actieve flank en houdt Q vast tussen flanken. De volgende tellerwaarde is (huidige+1) modulo16.
- 2Bit0 wisselt elke klokflank en heeft frequentie500 Hz; bit1 250 Hz, bit2 125 Hz, bit3 62,5 Hz.
- 3Na16 flanken is de teller terug op nul. Reset en enable zijn afzonderlijke voorwaarden; een teller hoeft niet bij iedere klok te verhogen.
Latch en flipflop zijn geen synoniemen
Een latch is niveaugevoelig: bij actieve enable kan de uitgang de ingang volgen. Een D-flipflop is flankgevoelig: hij neemt de waarde op de actieve klokflank over. Registers zijn bundels opslagbits; een schuifregister verplaatst die bits op iedere gekozen flank.
Setup-tijd vraagt dat D vóór de flank stabiel is, hold-tijd erna. Een asynchroon signaal kan die voorwaarden schenden en metastabiliteit veroorzaken. Een twee-flipflopsynchronisator vermindert de kans dat die onbepaalde toestand doorwerkt; hij levert geen wiskundige garantie van nul risico en synchroniseert geen willekeurige meerbitsbus atomair.
Toshiba beschrijft de synchronisator. De noodstop-energieweg mag niet eerst wachten op een Pi-klok of een gewone monitor-synchronisator.
Van poorten naar een processor
Een processor combineert een datapad (registers, ALU, multiplexers) met een besturing. Een program counter selecteert een instructie; een instructieregister houdt haar vast; decodering bepaalt welke registers en ALU-functie worden gebruikt. De klok ordent de stappen.
Een eenvoudige cyclus is ophalen, decoderen, uitvoeren en resultaat opslaan. Een toevoeging R1←R1+R2 laat de ALU twee registers lezen en schrijft de som terug. Instructies zijn bitpatronen die de hardware betekenis geeft; software verandert de opeenvolging, niet het elementaire principe van de poorten.
Een microcontroller voegt geheugen en perifere circuits toe. Timers, ADC en communicatie kunnen zelfstandig werken terwijl de CPU een andere instructie uitvoert. Dat verklaart waarom PWM in i25 niet door een herhaalde Pythonaanroep gemaakt wordt.
Combinatorisch verzoek is nog geen veilige herstart
- Gezonde noodstop/grenzen H=1, softwareverzoek R=1; simpele uitgang Y=HR. Noodstop wordt ingedrukt en losgelaten.
- Functie, toets en implementatie.
- 1Bij indrukken H=0, Y=0. De software kan ondertussen vast op R=1 blijven staan.
- 2Na loslaten H=1 wordt Y direct weer1. De AND-poort vergeet de stop en veroorzaakt automatisch herstart.
- 3Introduceer een vergrendeling q=1 na stop en bij opstart. Alleen een geldige handmatige resetflank met R=0 en gezonde voorwaarden maakt q=0.
Stopdominant geheugen exhaustief toetsen
Dit functionele model bewijst de bedoelde logica, niet de betrouwbaarheid van een zelfgebouwde veiligheidsmodule. q=1 is vergrendeld. Gezond=False heeft altijd voorrang; reset vraagt een menselijke flank, gezonde voorwaarden en afwezig verzoek. Start daarna vraagt opnieuw een verzoek.
# logica.py — exhaustieve combinatorische tests en functioneel latchmodelfrom itertools import productdef opteller(a,b,c): return a^b^c, (a and b) or ((a^b) and c)for a,b,c in product((0,1),repeat=3): s,co = opteller(a,b,c) assert s + 2*co == a+b+cprint("volle opteller: alle 8 combinaties correct") def stap(q, gezond, aanvraag, resetflank): stop = not gezond reset_ok = resetflank and gezond and not aanvraag # stopdominant; q=1 betekent vergrendeld qnieuw = stop or (q and not reset_ok) uit = gezond and aanvraag and not qnieuw return bool(qnieuw),bool(uit) q = True # opstart vergrendeldscenario = [(1,0,1),(1,1,0),(0,1,0),(1,1,1),(1,0,1),(1,1,0)]for k,(goed,aan,reset) in enumerate(scenario): q,y = stap(q,goed,aan,reset) print(k,"gezond",goed,"aanvraag",aan,"resetflank",reset,"slot",int(q),"uit",int(y))assert q is False and y is Truefor q,goed,aan,reset in product((False,True),repeat=4): qn,y = stap(q,goed,aan,reset) assert goed or (qn and not y)print("stop heeft voorrang in alle 16 toestand/invoercombinaties")volle opteller: alle 8 combinaties correct 0 gezond 1 aanvraag 0 resetflank 1 slot 0 uit 0 1 gezond 1 aanvraag 1 resetflank 0 slot 0 uit 1 2 gezond 0 aanvraag 1 resetflank 0 slot 1 uit 0 3 gezond 1 aanvraag 1 resetflank 1 slot 1 uit 0 4 gezond 1 aanvraag 0 resetflank 1 slot 0 uit 0 5 gezond 1 aanvraag 1 resetflank 0 slot 0 uit 1 stop heeft voorrang in alle 16 toestand/invoercombinaties
Poorten testen met stabiele laagspanningsingangen
- logica-IC op passende laagspanning
- schakelaars met pull-up/pull-down
- led met weerstand
- logic analyzer
- 1Lees VIL/VIH en voedingsgrenzen uit de datasheet van het gebruikte IC.
- 2Geef alle ingangen een vast niveau; meet alle combinaties van EN, OF en XOF.
- 3Vergelijk gemeten waarden met waarheidstabel; observeer vervolgens contactdender via de analyzer.
- 4Test een D-flipflop met een gekende klok en stabiele data ruim vóór/na de flank.
Een veiligheidsrelais bewaakt ook zijn eigen contacten
Een veiligheidsfunctie kan niet alleen steunen op een ideale AND-poort. Vastgelaste contacten, draadbreuk, kruissluiting en een vastgehouden reset veranderen de feitelijke toestand. Een geschikte veiligheidsmodule combineert signaalverwerking met bewaakte contacten en startvoorwaarden.
De Pilz PNOZ s2-handleiding onderscheidt automatisch en bewaakt handmatig starten en geeft feedbackkringen. Die bron leert vooral dat reset en onverwachte herstart expliciet ontworpen worden. Habitat kiest hier de functionele eisen; componentselectie en aansluiting vragen de toepasselijke veiligheidsbeoordeling en fabrikantvoorschriften.
Logica, tijd en veiligheidsvoorwaarden
| symbool | betekenis | eenheid |
|---|---|---|
| Booleaanse ingangen | 1 |
| symbool | betekenis | eenheid |
|---|---|---|
| sombit | 1 |
| symbool | betekenis | eenheid |
|---|---|---|
| selectiebit | 1 |
| symbool | betekenis | eenheid |
|---|---|---|
| vergrendeld | 1 |
| Grens | Betekenis |
|---|---|
| VIL/VIH | gegarandeerde logische spanningsgebieden |
| setup/hold | data stabiel vóór en na actieve flank |
| resetflank | nieuwe handmatige actie, geen blijvend hoog signaal |
| opstart | vergrendeld tot geldige reset |
Het geheel: logische eisen worden fysiek getoetst
f24 en i27 koppelden input en programma. Hier zie je dat programma's op poorten en geheugen draaien. e34 beschrijft algoritmen; e37 embedded communicatie. e46 onderzoekt fouten, terwijl e45 eisen traceerbaar maakt. Dezelfde waarheidstabel ondersteunt specificatie, simulator en testplan.
Van ingang naar actuator.
Software gebruikt logische keuzes.
Eisen naar tests.
Poortfunctie is niet hetzelfde als fouttolerantie.
Functionele eisen: gevaarlijke energietak heeft hardwarematige vrijgave, stopdominante vergrendeling, vergrendelde opstart, bewaakte menselijke resetflank met aanvraag uit, geen herstart door loslaten/voedingsherstel, feedback van energiecontacten en onafhankelijke thermische grens. De Pi kan geen stop overbruggen. Ventilatie/levensondersteuning krijgt een risicogestuurde veilige toestand; 'alle energie uit' is daarvoor niet automatisch veilig. Dit is geen claim van een gecertificeerde poortschakeling.
In het kort
- Poortfuncties werken op afgesproken elektrische niveaus.
- Waarheidstabellen en Karnaughkaarten toetsen stabiele combinatorische functies.
- Optellers en multiplexers vormen datapaden; registers en flipflops bewaren toestand.
- Timing en metastabiliteit vragen meer dan een correcte waarheidstabel.
- Habitat gebruikt een onafhankelijke stopvrijgave, stopdominante vergrendeling en bewaakte handmatige reset.
Wat je nu kent
- combinatorische logica
- Uitgang volgt huidige invoer zonder opgeslagen toestand.
- sequentiële logica
- Uitgang hangt ook van opgeslagen toestand af.
- Karnaughkaart
- Gray-geordende kaart waarin buren slechts één bit verschillen.
- hazard
- Korte ongewenste uitgangsovergang door verschillen in propagatievertraging.
- stopdominant
- Gelijktijdige stop en reset resulteren in stop.