Reacties
Beide dobbelstenen optellen is in wezen niet anders dan het maken van een rekenmachine waarin je twee getallen optelt.
Dus probeer eens (geheel los van je probleem) een schakeling te maken die twee getallen kan optellen en koppel die twee invoeren dan eens aan de uitkomst van elke dobbelsteen...
Dat heb ik juist al eens geprobeerd, maar daar kom ik niet uit...
Groet
Zonder de rekenmachine zelf te gaan uitvinden, zul je hier met een aantal XOR poorten uit de voeten moeten. Bij beide getallen moet 0+0 en 1+1 leiden tot 0 en 0+1 en 1+0 tot 1.
Waarbij bij 1+1 (=10) er een "overdracht" moet zijn van 1 naar de volgende positie.
Kijk eens bij http://en.wikipedia.org/wiki/Binary_adder
Dag Gerhard,
eenvoudig beginnen en opbouwen, dan raak je letterlijk noch figuurlijk de draad kwijt.
in de bijlage een opzetje voor een testinstallatie om twee getalletjes (elk 0 of 1) op te tellen tot de drie mogelijke uitkomsten 0, 1 of 2
Als dat eenmaal werkt ga je uitbreiden.
Stap voor stap en steeds (uitgebreid) testen.
Let wel, zo'n bord spaghetti zoals je in je eerste bericht als bijlage toevoegde is voor een buitenstaander eigenlijk niet meer te lezen. Zelfs iemand met héél veel systematic ervaring zou daar zeker nog een uur op zitten studeren om te zien wat daar allemaal gebeurt.
Gaat het lukken om twee getallen op te tellen? Dan getallen a en b elk uitbreiden naar de keuzes 0,1,2,of 3, en de uitkomsten naar 0 tot 6.
Groet, Jan
Hallo Jan,
Dit begin lukt in ieder geval: met een EN-poort krijg je 2, met een XOF-poort 1 en met een NOF-poort 0. Nu nog even kijken hoe je grotere getallen optelt.
Groet
Je moet bij hoger dan 1 binair (bijv. 1binair + 1binair = 10 binair)
het getal bewaren bij de volgende rij. Maar verder dan uitkomsten 1 en 2 komen we nog niet, sorry...
Groet
1 1 1 + 1 1 1 binair opgeteld (7+7 decimaal) geeft van rechts naar links 1+1 =10 dus nul in het register en de 1 transporteren.
000 transport
111
111
=====+
wordt
.1. transport
111
111
=====
..0
Tweede kolom wordt 1+1+1=11 dwz opnieuw transport van 1 en een 1 in de tweede positie
11. transport
111
111
====
. 10
De laatste linkse kolom wordt opnieuw 11 dus er komt een linker positie bij want het antwoord past niet meer in de 3 posities.
1110 (=14 decimaal)
Met een xor poort kun je 1+1=0 krijgen maar voor de transport zul je de 1+1=1 via een and poort moeten doorgeven.
Ik heb het een beetje door, maar ik snap het nog niet helemaal...
Als je de dobbelsteen hebt kunnen maken dan zou de opteller niet zo'n groot probleem moeten zijn.
Zie bijgaand schema waarbij 2 cijfers worden opgesteld. Die cijfers kunnen 0/0 0/1 1/0 en 1/1 zijn en bij optelling van 1/1 leveren die een "transport" van de volgende macht van 2 op; of, in een meer gebruikelijke term "carry out" .
De getekende schakeling kan "middenin" een optelling van 2 binaire cijfers zitten. In dat geval is de "carry out" van de vorige de "carry in" van de huidige optelling. Alleen bij de achterste (minste waarde van nul of een) is er geen carry-in want daar begint de optelling pas.
Bijlage toont de beide cijfers E1 en E2 met resulterende CO (carry out) en eventueel de CI (carry in) die vanuit transport moet worden meegeteld.
Bij de eerste reeks mogelijke optellingen is er geen carry in (was de optelling blijkbaar 0+0, 0+1, of 1+0), bij de tweede helft wel (en was de vorige optelling 1+1 = 10, dus een 1 als carry out). De tabel geeft ook de uitkomst van E1+E2+carry in weer. Dat "zie" je op de display of door een (niet)brandend lampje op die positie. De CO gaat door naar de volgende optelling. De S10 kolom geeft alleen maar de decimale waarde van de optelling weer.
In dit schema is door slimme schakeling van AND poorten de functie van de XOR ook ingebouwd.
Ik kwam er echt niet uit, sorry... Maar nu snap ik het!
Bedankt!
Dus als ik tot maximaal 12decimaal wil optellen, heb ik dus 4 van deze schema's achter elkaar nodig? 1 voor 20, 1 voor 21,1 voor 22 en 1 voor 23's optellen?
Groet
12 decimaal ligt tussen 8 decimaal (23 = 01000 binair) en 16 decimaal (= 24 = 10000) in (12 = 8+4 = 23 + 22 = 01100 binair) dus je teller moet minstens tot 1100 kunnen tellen - dus aan 4 uitgangen moet je genoeg hebben. Dan kun je tot 15 tellen...
Oké, bedankt! En hoe moet ik dan de uitvoer regelen, het zichtbaar maken van het cijfer?
Tja... dat moet je zelf bepalen. Er zijn displays die via binaire invoer een decimaal cijfer laten zien. Of je maakt er een binaire display van met lampjes waarbij een 1 door een brandend en een 0 door een niet brandend lampje wordt weergegeven...
Wat Systematic daarin allemaal te bieden heeft weet ik niet - niet veel geloof ik. Binaire lampjes dus...
Nog even een aanvulling op de "full-adder" schakeling: hou er rekening mee dat het NAND-poorten zijn, en dus geen AND-poorten. Dit is te zien aan het rondje aan de uitgang.
Een NAND-poort is een "omgekeerde" AND-poort, m.a.w. een AND-poort met een inverter erachter.
Hopelijk is het duidelijk?
JV