Sida 1 av 2
Binär addition
Postat: 20 april 2008, 11:17:45
av jonnorberg
Hej!
Jag skulle behöva en koppling som adderar 2 till ett statiskt 10-bitars ord. Det är en adress-kontroller som behöver splittas. Det var så länge sen jag gjorde booles algebra så jag vet inte ifall det är möjligt att enkelt ordna det på det viset. Har hitat 4-bitars adderare hos elfa. Kanske man kan koppla ihop några sånna. Eller måste det till en liten uC. Alltså vill jag ha nåt sånt här:
0101100000 ska oxå bli
0011100000
(En etta är dragen till jord och en 0 är lös tamp)
/Jon
Postat: 20 april 2008, 12:35:11
av digitaliz
4-bits adderare ska funka bra... Koppla bara carry out till carry in på nästa räknare så kan du bygga på och addera ord av valfri längd.
Postat: 20 april 2008, 14:39:56
av jonnorberg
Typ såhär?

/Jon
Postat: 20 april 2008, 15:29:59
av jonnorberg
När detta var löst så kom jag ju på en följdfråga. Då originalkretsen har "lösa tampar" in eller draget mot gnd vid "etta" så måste ju en "lös tamp" vara odefenierbar? Men en 74283 bahöver ju hög eller låg. Eller kan 0 vara odefenierbar och 1=gnd här oxå? Vad jag gissar så kommer adressen från böjan att visa 1111111111 och inte 0000000000 vid användande av 74283:or. Medan en pinne på en avr dragen till jord är 1 och till vcc en 0:a.
Jag erkännar att jag nog lyckats snurra till det =)
Alltså:
I orignalkretsen så är en "etta" en pinne dragen mot gnd.
Vad ska min koppling ha IN, för att ge rätt signaler UT?
/Jon
Postat: 20 april 2008, 15:50:40
av Icecap
I digitallogik FÅR det inte finnas "lösa tampar"! Om du vill addera ihop ett par värden måste alla ingångar som i detta fall ska ge en addition med 2 ställas till det binära värde som motsvarar 2.
I detta fall ser din konstant alltså ut som följer: 0000 0000 0010
Carry In får du kolla i databladet, den ska vara inaktiv.
Postat: 20 april 2008, 16:04:49
av jonnorberg
Då ingången i originalkretsen är dragen mot gnd när den är "aktiv". Så blir tex adressen 12 såhär:
1100111111
och aderar man 2 till det så ska utsignalen bli:
1000111111
Alltså borde ingången i adderaren se ut så här:
1100111111
och talet 2
1011111111
Men då blir ju allt knas för de tillsammas blir ju inte
1000111111 utan nåt overflow av nåt slag?
Eller hur?
Dock blir den direktkopplade utgången rätt.
/Jon
Postat: 20 april 2008, 16:17:59
av jonnorberg
Åker jag på att ha inverterare på utgången (20st) och istället för 0:or för adress in ha 1:or?
/Jon
Postat: 20 april 2008, 16:24:38
av jonnorberg
Om man tar bort istället så kommer man rätt. Istället för att invertera alla utgångar så tar man bara bort 2 så borde det bli rätt.
1100111111
-0100000000
=1000111111
Fast finns det subtractors?
/Jon
Postat: 20 april 2008, 16:47:07
av Icecap
Testa att lägga till -2 och se vilket resultat du får...
(-2 = 1111 1111 1111 1110)
Postat: 20 april 2008, 17:34:26
av jonnorberg
Det där hängde jag inte med på. Allt skall göras i hårdvara.
/Jon
Postat: 20 april 2008, 21:13:20
av Icecap
Och?
Vad är problemet?
Är det att du inte förstår att en "adder" kan addera negativa tal? Och har du ens testat med värdet jag gav?
Postat: 20 april 2008, 22:39:23
av jonnorberg
Det är nog så att jag inte förstår att den kan addera negativa tal. Förklara gärna. Jag har ingen hårdvara at testa med än heller. Får ta det i veckan. Ville ju först veta ifall det var möjligt då jag frågade här.
/Jon
Postat: 20 april 2008, 22:55:31
av sodjan
> Det är nog så att jag inte förstår att den kan addera negativa tal.
Det handlar om att det för din "adder" alltid finns två "komplementära" tal,
(ett positivt och ett negativt).
Så en subtraktion med ett visst tal (t.ex 2) kan utryckas som en addition
av det komplementära talet (t.ex -2). D.v.s att det är samma sak att
subtrahera 2 som att addera -2.
Se även :
http://en.wikipedia.org/wiki/Two%27s_complement
> Fast finns det subtractors?
Men 2's complement så behövs det bara en adder. Det är just det som är
finessen...
Postat: 20 april 2008, 23:14:10
av jonnorberg
Just att addera -2 är jag med på, men hur skriver man -2 binärt?
/Jon
Postat: 21 april 2008, 06:49:50
av Swech
1111111101 = -2 10 bitars tal
Vid fler bitar fyll på med fler 1 i början....