How to: Ontwerpen van een teller Walktrough

Hallo beste leden,

Het leek mij leuk om eens een soort walkthrough online te zetten nadat ik een aantal vragen heb gelezen van mede forumgangers. Deze vroegen hoe zij een teller konden maken (onder andere door middel van JK flipflops). Zonder al te veel vooraf te geven gaan we direct door naar de methode om met enkel logische poorten een teller te kunnen maken. Ik beperk de teller tot één die van 1 tot 6 telt, en vervolgens weer op 1 begint. Uitbreiden is mogelijk, de methode en het principe in hetzelfde, maar het scheelt een hoop logische poorten wanneer je van 0 naar 7 wilt tellen bijvoorbeeld.

Stap 1: Bepalen van de volgorde van de telling
Stap 2: Het invullen van de waarheidstabel van de schakeling
Stap 3: Invullen van de karnaugh diagrammen
Stap 4: Bepalen of de teller zelfstartend is
Stap 5: realiseren

Stap 1:
In ons geval gaan we een teller maken die van 1 tot 6 loopt en vervolgens weer bij 1 begint, zoals te zien is bovenaan de pagina in het kader.
In de waarheidstabel staan de volgende kolommen:
[n]: De huidige stand
[n+1] : de stand na de volgende klokpuls
Jc : De J van flipflop C
Kc : De K van flipflop C
Jb: De J van flipflop B
Kb: De K van flipflop B
Ja: de J van flipflop A
Ka: de K van flipflop A

Hieruit geef ik al weg dat we 3 JK flipflops gaan gebruiken (A, B & C).

In de kolom [n] vinden we dus de huidige stand. Omdat wij van de stand 1 (Binair 001) naar stand 2 (binair 010) willen vullen we dat in bij kolom [n+1]. Hetzelfde doen we bij de rest. Bijvoorbeeld bij [n]101 (decimaal 5) willen we naar 110 (binair 6). Na de zes (110) willen we weer terug naar 1 (001).

Stap 2:

Door middel van de tabel rechtsonder kunnen we de waardes van Jc Kc Jb Kb Ja en Ka invullen. Dit is de tabel die bij de JK flipflop hoort wanneer er niet alleen naar de huidige stand wordt gekeken, maar ook naar de volgende stand.

We beginnen met JC en KC. We zien dat bij [n]001 (rood) de C 0 is, en bij [n+1]001 (rood) de C ook 0 is. Hiermee gaan we in de tabel rechtsonder kijken welke JK waardes hierbij horen. De waardes die in de tabel staan onder J K vullen we nu in in de waarheidstabel.
Hetzelfde wordt gedaan met de roze rechthoek als extra voorbeeld.

We doen hetzelfde met Jb en KB:

En nogmaal hetzelfde met Ja en Ka:

Stap 3:
Nu gaan we 6 Karnaugh diagrammen maken. Voor Jc, Kc, Jb, Kb, Ja, Ka
Het karnaugh diagram rechtsonderin is een manier om een Karnaugh diagram snel in te kunnen vullen.

In verband met het niet kunnen uploaden van meer afbeeldingen wordt deze walktrough vervolgt in Part 2

Arco

Special Member

Wat is 'Walkthrough'? Gewoon een ringteller?

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Een walkthrough is een stap-voor-stap handleiding.

Ik kan me eigenlijk niet herinneren ooit zo'n vraag te hebben gezien, en het lijkt me typisch een schoolopdracht.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Vervolg van Stap 4:

Alle Karnaugh diagrammen zijn nu ingevuld. Ter aanduiding heb ik er gekleurde rechthoeken bij geplaatst om aan te geven welk symbool uit de waarheidstabel op welke plek in het Karnaugh diagram geplaatst wordt.

Om de formules te bepalen die bij de Karnaugh diagrammen horen kiezen we de grootste groepen van énen. Dont care's mogen hierbij 0 of 1 gekozen worden. Een aantal groepen zijn door middel van gekleurde rechthoeken voorgedaan. De onderstaande formules maken is een kwestie van de Karnaugh diagrammen aflezen. Deze formules komen later van pas bij het realiseren van de schakeling. De groepen die wij gemaakt hebben in de Karnaugh diagrammen zijn dus allemaal 1. (de dont care's hebben wij een 1 gemaakt zodat deze een groep kunnen vormen met de echte énen.) Alles wat buiten de groep valt wordt dus per definitie een 0. Deze 0 komt in de volgende stap terug, wanneer we gaan bepalen of de teller zelfstartend is.

Stap 5:
Bepalen of de teller zelfstartend is.

Om te bepalen of de teller zelfstartend is (dus of deze uit zichzelf de telling gaan doorlopen. Het kan voorkomen dat blijkt dat de teller op 0 start, wat niet mag, en vervolgens in 0 blijft hangen).

Omdat er in de vorige stap groepen zijn gemaakt in de Karnaugh diagrammen bestaan er geen dont care's meer. Want alles binnen de groep is 1 geworden, en alles buiten de groep is 0 geworden. Nu kunnen we de dont cares in onder Jc, Kc, Jb, Kv, Ja, en Ka onder 000 & 111 invullen. De vervangers van de dont cares zijn boven de dontcares geschreven.

De volgende stap is het bepalen en vervangen van de dont care's onder CBA[n+1] bij 000 & 111. Dit is misschien een stap die wat lastiger is om te begrijpen. We gebruiken hier weer de tabel bij van de JK flipflop.

Op dit moment is bekend wat de waarde van J en K is bij 000 (gele rechthoek). De waarde [n+1] is alleen onbekend. (deze proberen we nu in te vullen) Jc en Kc zijn beide 0. Dus gaan we in de tabel kijken welke stand hier bij hoort. Nu blijkt er dat er 2 mogelijke standen zijn, want 0 - kan 0 0 zijn, maar - 0 kan ook 0 0 zijn. Echter weten we uit de waarheidstabel dat C[n] 0 is bij 000 en dus valt de onderste (waar het rode kruis doorheen staat) af.

Op deze manier gaan we ook B[n+1) en A[n+1] bij 000 bepalen.

De conclusie is dat de teller zelfstartend is. Ongeacht is welke stand hij zal beginnen, hij zal altijd binnen de loop 1-2-3-4-5-6 terecht komen. Want vanaf 0 gaat hij naar 1. En vanaf 7 gaat hij naar 0.

Met deze conclusie kunnen we het schema gaan tekenen.

Simuleer dit schema en u zult zien dat het werkt. Het telt binair van 001 tot en met 110.

Ik zal ongetwijfeld iets onduidelijk hebben uitgelegd, bij vragen of opmerkingen hoor ik het graag en ik zal het proberen aan te passen. Ik hoop iemand hier mee te hebben geholpen in de toekomst.

Walkthrough is een soort van handleiding. Een stappenplan

[Bericht gewijzigd door Christiaan371 op zondag 9 december 2018 00:45:51 (82%)

En walktrough moet natuurlijk walkthrough zijn :)

Arco

Special Member

Meeste vragen waren voor specifieke tellersituaties, niet voor generieke werking...
Als je toch een handleiding wilt geven, zou ik beginnen met wat de J/K/Q en andere pinnen precies doen. Anders leer je weinig.
(alleen zeggen 'J moet hoog zijn' heeft iemand met geen kennis van tellers of flipflops weinig aan)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
mel

Golden Member

Ben je soms een datasheet aan het schrijven? :P

u=ir betekent niet :U bent ingenieur..

Op 9 december 2018 00:19:39 schreef SparkyGSX:
Een walkthrough is een stap-voor-stap handleiding.

Maar het lijkt er op dat de TS mogelijk een one-hot codering gaat gebruiken. Je krijgt dan een lopende-1 door het circuit, en de woordspeling met walkthrough vind ik dan wel weer leuk. :-)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Precies, je neemt nu aan dat de lezer al weet wat een JK flipflop is, hoe Karnough diagrammen werken, hoe booleaanse algebra werkt, etc. Als dit bedoeld is voor studenten die moeite hebben met het vak digitale elektronica is het op zich een geldige aanname dat ze die stof gedeelte snappen, en is het zinvol om het hele proces een keer voor te doen. Vervolgens kunnen ze dit ook toepassen op een andere opdracht, want het stappenplan blijft hetzelfde. Ik vind het een goed en volgbaar verhaal!

Nu ik erover nadenk, ik ontwerp al jaren elektronica, waaronder digitale logica voor veiligheidskritische toepassingen, maar ik kan me niet herinneren dat ik na mijn studie ooit nog een JK flipflop heb gebruikt. Wellicht dat mensen die ASICs ontwerpen hier nog wel iets mee doen, al verwacht ik dat die de logica uitschrijven in VHDL/Verilog en de synthesizer het laten oplossen? Uiteindelijk is het inzicht dat deze oefening verschaft op zichzelf al nuttig.

@TS: mocht je een vervolg willen schrijven, dan lijkt een Gray code teller me wel nuttig, met een beetje uitleg wat de voordelen daarvan zijn.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 9 december 2018 00:50:57 schreef Arco:
Meeste vragen waren voor specifieke tellersituaties, niet voor generieke werking...
Als je toch een handleiding wilt geven, zou ik beginnen met wat de J/K/Q en andere pinnen precies doen. Anders leer je weinig.......

Om dit te kunnen maken is inderdaad wat voorkennis nodig. Ik ga ervan uit dat diegene die dit wilt maken al enigsinds verstand heeft van digitale elektronica. Anders zou ik ook nog wel uit kunnen leggen wie de elektriciteit ontdekt heeft. Dat vind ik een beetje overdreven. Wellicht handig om dat er wel even bij de vermelden bovenaan dat er voorkennis nodig is. En daarnaast, de werking van een (JK) flipflop is eenvoudig op te zoeken op het www. Maar deze methode zal wat lastiger te vinden zijn gok ik.

Arco

Special Member

En daarnaast, de werking van een (JK) flipflop is eenvoudig op te zoeken op het www.

De werking van een teller ook... :)
Schema's en datasheets zijn er duizenden. Maar misschien is dit topic toch behulpzaam om inspiratie op te doen...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Die teller is natuurlijk alleen een simpel voorbeeld om het proces voor te doen; je moet gewoon iets hebben om die n+1 kolom mee te vullen als uitgangspunt.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

JK-flipflops zijn prachtige dingen. In 1973 leerde ik ze voor het eerst kennen en in 1987 gebruikte ik ze voor het laatst. Dat is dus een periode van ca 15 jaar. Daarna werd alles door de microcomputer en bijbehorende software overgenomen. Wie bouwt nog complexere schakelingen met losse flipflops en poorten?
Een artikeltje over dit onderwerp vind ik wel prachtig.

Bij schrijven van software gebruik ik wel booleaanse algebra om mijn code korter te maken en overbodige code te verwijderen. Vooral deze vergelijking (ab+!b = a+!b) pas ik vaak toe. != negatie-teken.

Lambiek

Special Member

Er worden dan misschien geen losse poorten en flipflops meer gebruikt, maar het is wel een goede manier om duidelijk te maken hoe het werkt voor een leerling/beginneling.

Als je haar maar goed zit, GROETEN LAMBIEK.

al zou ik zelfs voor ziets simepls tegenwoordig de meeste kleine micro pakken, toch leuk om nog eens te lezen wat ik ooit op school heb geleerd ;)

High met Henk

Special Member

c code:


rating++;  //goed initiatief, maar helaas beetje achterhaald door uC's
E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Op 10 december 2018 07:38:30 schreef Stijnos:
al zou ik zelfs voor ziets simepls tegenwoordig de meeste kleine micro pakken,

En TOCH is het m.i. fout om in de opleidingen dan maar meteen naar de microcontroller te grijpen. Het is m.i. van belang dat de nieuwe generatie die je opleidt WEET waar ze mee bezig zijn. Dus moet je ze leren: In de basis kan je met poortjes alles bouwen wat je maar wilt. Dan laat je ze een drie-termen carnaugh uitpuzzelen tot poortjes. Moeten ze allemaal kunnen. Dan geef je een vijf-termen opdracht. Dan zal een groot deel afhaken. Dat is een wijze les: Het wordt snel ingewikkeld/moeilijk. DAN kan je door naar: een stelletje slimme mannen hebben dit een paar duizend keer gedaan een een ding gemaakt wat we "microcontroller" noemen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 10 december 2018 08:14:19 schreef High met Henk:goed initiatief, maar helaas beetje achterhaald door uC's

Toch niet helemaal; wij ontwerpen nog regelmatig veiligheidskritische circuit helemaal discreet omdat het bewijzen van de correctheid daarvan factoren eenvoudiger is dan die van software.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

En dan daarna de JK master slave. Dan zie je dat door het gebruik van de timing van 1 poort een wisseling heeft plaatsgevonden (even los uit de grijze massa getrokken, die dat al bijna 50 jaar heeft weggestopt)

TonHek

The fastest way to succeed is to double your failure rate.

Dankzij gebruik van JK-flipflops heb je geen last van ratrace condities. In die tijd dat ik ze gebruikte dacht niemand van ons na over ratrace-problemen. Maakte niet uit hoe lang of hoe complex de poorten die de booleaanse code beschreef aan elkaar geknoopt waren.
Verschil in looptijden tussen de verschillende digitale signalen waren we niet in geïnteresseerd.

Op 10 december 2018 16:59:16 schreef ohm pi:
.. Maakte niet uit hoe lang of hoe complex de poorten die de booleaanse code beschreef aan elkaar geknoopt waren.
Verschil in looptijden tussen de verschillende digitale signalen waren we niet in geïnteresseerd.

Nou, niet helemaal waar. Rond 1980 had ik te maken met een dual Z80 64K dynamisch ram geheugen ontwerp waar Ras Cas refresh timing erg kritisch was met de overdracht van een gemapte rambank van 16K naar de 2de processor. En ook een bootrom in hetzelfde ramsegment.
Nee, geen ratrace condities maar toch destijds wel lastig met die hoge 4MHz klok :-)

TonHek

The fastest way to succeed is to double your failure rate.

Een Z80 is een µprocessor.
Ras Cas Refresh timing is een heel ander ding dan timing tussen zootje poorten en JK-flipflops. :-)
µProcessoren waren in die tijd veel te modern voor mij.
Onze snelste klok was 100kHz of 1MHz. Een van die twee was het, maar welke weet ik niet meer.

[Bericht gewijzigd door ohm pi op dinsdag 11 december 2018 17:58:12 (20%)