2 pulstellers samen optellen

Gerhard stelde deze vraag op 27 november 2012 om 12:06.

Hallo,

Ik heb een dubbele elektrische dobbelsteen gemaakt (met het programma Systematic 4), met in elke een pulsteller verwerkt.
Dus twee keer het bijgevoegde plaatje.

Nu wil ik de signalen van beide pulstellers optellen en op een andere pulsteller laten zien.
Ik vermoed dat je in ieder geval een XOF-poort of een geheugencel nodig hebt.

Groet

Reacties

Theo op 27 november 2012 om 14:28

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...

Gerhard op 27 november 2012 om 16:53

Dat heb ik juist al eens geprobeerd, maar daar kom ik niet uit...


Groet

Theo op 27 november 2012 om 17:19

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

Jan op 27 november 2012 om 17:24

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

Gerhard op 29 november 2012 om 09:53

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

Gerhard op 29 november 2012 om 12:28

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

theo op 02 december 2012 om 23:58

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.

Gerhard op 03 december 2012 om 11:56

Ik heb het een beetje door, maar ik snap het nog niet helemaal...

Theo op 03 december 2012 om 12:50

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.

Gerhard op 03 december 2012 om 15:01

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

Theo op 03 december 2012 om 15:24

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...

Gerhard op 04 december 2012 om 17:51

Oké, bedankt! En hoe moet ik dan de uitvoer regelen, het zichtbaar maken van het cijfer?

Theo op 04 december 2012 om 20:05

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...

JV op 04 december 2012 om 21:39

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

Plaats een reactie

+ Bijlage

Bevestig dat je geen robot bent door de volgende vraag te beantwoorden.

Noortje heeft zes appels. Ze eet er eentje op. Hoeveel appels heeft Noortje nu over?

Antwoord: (vul een getal in)