Eindige Toestandsmachines Ontwerpen: Van Concept naar Implementatie
Tot nu toe hebben we ons gericht op combinatorische logica, waar uitgangen uitsluitend afhangen van huidige invoeren. In veel realistische toepassingen moeten schakelingen een geheugen van eerdere invoeren behouden en hun uitgangen dienovereenkomstig aanpassen. Dergelijke schakelingen heten sequentiële schakelingen.
Dit artikel loopt door het end-to-end proces van het ontwerpen van een sequentiële schakeling, geïllustreerd met een praktisch voorbeeld: een digitale quizgame die een enkele-klokcyclus HOOG-puls moet genereren elke keer dat een gebruiker op een knop drukt.
Stap 1 – De Vereiste Definiëren
Begin met het uiten van het gewenste gedrag in gewone taal:
"We hebben een secundaire schakeling nodig die een enkele HOOG-puls voor één klokcyclus uitzendt wanneer de knop ingedrukt wordt, en verdere indrukken negeert totdat de knop losgelaten en opnieuw ingedrukt wordt."
Stap 2 – Het Toestandsdiagram Tekenen
Het toestandsdiagram visualiseert de machine-operatie. Elke cirkel vertegenwoordigt een toestand, terwijl pijlen overgangen aanwijzen getriggerd door de invoer elke klokcyclus. Het diagram hieronder is een Moore eindige toestandsmachine, waar de uitgang alleen afhangt van de huidige toestand.

Toestandsbeschrijvingen:
- Stand-by – initiële wachtttoestand.
- Activeer Puls – genereert de HOOG-uitgang.
- Wacht Lus – houdt de LAAG-uitgang tot de knop losgelaten wordt.
De pijlen zijn gelabeld met de invoerwaarde die de overgang triggert. Bijvoorbeeld, van de Stand-by toestand beweegt een '1' invoer de machine naar Activeer Puls; een '0' houdt het in Stand-by.
Stap 3 – Toestanden Coderen in Binair
Wijs binaire codes toe aan elke toestand, startend met 0 voor de initiële toestand. De codering hieronder gebruikt twee bits, voldoende voor de drie toestanden.

Stap 4 – De Toestandstabel Bouwen
De toestandstabel lijst alle combinaties van huidige toestand en invoer, samen met de volgende toestand en uitgang. Kolommen corresponderen met huidige toestandsbits, invoerbits, volgende toestandsbits, en uitgangsbits. Voor dit voorbeeld is de tabel hieronder getoond.

Belangrijke punten:
- Elke rij dekt elke mogelijke binaire combinatie van toestand en invoer.
- Rijen die corresponderen met niet-bestaande toestanden zijn gemarkeerd met don't-care (X).
- De uitgangskolom weerspiegelt de Moore-uitgang, onafhankelijk van de invoer.
Stap 5a – Voorbereiden voor D-Flip-Flop Implementatie
Om de machine te implementeren gebruiken we typisch flip-flops. Voor een D-flip-flop is de invoer vereist om de volgende toestand te bereiken simpelweg de volgende toestandswaarde zelf. Breid de toestandstabel uit met een kolom voor elke D-invoer.

Stap 5b – Voorbereiden voor JK-Flip-Flop Implementatie
Als een JK-flip-flop gekozen wordt, worden twee kolommen (J en K) per flip-flop toegevoegd. Hun waarden worden afgeleid uit de JK-excitatiestabel:

Voorbeeld mapping: om over te gaan van 0 naar 1, zet J=1 en K=X (don't-care).

Stap 6 – Boolesche Functies Afleiden via Karnaugh-kaarten
Gebruik Karnaugh-kaarten om de expressies voor elke flip-flop invoer en voor de uitgang te vereenvoudigen. De kaarten hieronder illustreren het proces voor zowel D- als JK-implementaties.
D-flip-flop invoeren:

JK-flip-flop invoeren:


Uitgangsfunctie:


Stap 7 – De Fysieke Schakeling Bouwen
Met de Boolesche vergelijkingen in handen, assembleer de schakeling met flip-flops en logische poorten. Vergeet niet de klok aan alle flip-flops te koppelen. Het voltooide D-flip-flop ontwerp wordt hieronder getoond.

De JK-flip-flop versie ziet er zo uit:

Eenmaal geassembleerd, genereert de schakeling een schone één-klokcyclus HOOG-puls voor elke knopindruking, ongeacht hoe lang de knop ingedrukt blijft.
Kernpunten
- Sequentiële logica behoudt geheugen van eerdere invoeren, wat dynamisch gedrag mogelijk maakt.
- Eindige Toestandsmachines bieden een rigoreus framework voor het modelleren van dergelijk gedrag.
- Flip-flops implementeren de FSM in hardware, wat toestandovergangen vertaalt naar fysieke uitgangen.
- Een systematische ontwerpstroom – vereisten, diagram, codering, tabel, logica-synthese, en assemblage – zorgt voor betrouwbare schakelingen.
Industriële technologie
- Draaibanken Meesteren: Technieken, Toepassingen en Precisie Bewerking
- Wat is een machine? Een uitgebreide gids
- Hysteresis in Thyristoren: Hoe Positieve Feedback Latching Mogelijk Maakt
- Ontdek 15 Essentiële Freesmachine Typen voor Precisie Metaalbewerking
- Legacy machines upgraden voor Industrie 4.0-succes
- Uitgebreide Gids voor Precisieslijpmachines
- Vrijzinnige Freesmachines: Frezen, Boren en Meer
- De Evolutie van CNC Machines: Van 18e Eeuw Oorsprong tot AI-gedreven Precisie
- CNC Machines: Productie Boosteren, Kosten Snijden, Precisie Garanderen
- Offsetdrukmachines: Overzicht & Voordelen
- Geavanceerde Flexodrukmachines: Vielzijdige, Hoog-Kwaliteit Oplossingen