Newsgroup: it.scienza.informatica
Titolo: sommatore e sottrattore logico

salve,
spero sia il newsgroup giusto.
mi date una dritta per il seguente problema? Serve a una mia giovane
amica.
realizzare un sommatore e un sottrattore a 4 bit, che gestisca il
riporto per la somma e il prestito per la differenza.
grazie
-> it.scienza.informatica (Moderated)
%followup-to
it.scienza.informatica

 wrote in message
news:3a06dab5...@news.libero.it...
: realizzare un sommatore e un sottrattore a 4 bit, che gestisca il
: riporto per la somma e il prestito per la differenza.
dimenticavo... il ragionamento sottostante e':
se x y c e' il rsultato quando e' che x (oy o c) uguale a 1? Per tutte
quelle somme per cui x e' uguale a uno ovviamente quindi chiamando P il
primo numero e S il secondo numero si potrebbe scrivere che
*x e' uguale a 1 per P1 or p2 or .. Pn*
P e' tale se la prima cifra e' uguale a c1 and la seconda a c2 etc
quindi
x = c1 and c2 and c3 and c4 OR -c1 and c2 and c3 and c4 ....
Ciao R.


 wrote in message
news:3a06dab5...@news.libero.it...
: salve,
:
: spero sia il newsgroup giusto.
:
: mi date una dritta per il seguente problema? Serve a una mia giovane
: amica.
:
: realizzare un sommatore e un sottrattore a 4 bit, che gestisca il
: riporto per la somma e il prestito per la differenza.
metodo per 2 bit
elencare tutte le possibili somme per 2 bit
input  (a b c d)       output (xy) carry bit (c)
00 + 00 = 00         0
00 + 01 = 01         0
[...]
01 + 11 = 00         1
10 + 11 = 01          1
[...]
chiamo A B C D gli addendi x y c il risultato con il resto.
per ogni input trasformo per ogni termine (out put =1) gli zeri in input
negati e gli uni input normali faccio l'and tra loro e li sommo (or) con
quelli derivati dagli altri termini.
y = (-A -B -C  D) + (A -B C D)...
C'e' modo anche per semplificare il tutto, ma e' troppo lungo a
spiegarsi.
Per costruire quello che dici tu bisogna o fare la stessa cosa per i 4 +
4 bit in input oppure mettere in cascata i due sommatori a 2 bit.
Qualsiasi testo di elettronica digitale dovrebbe aiutarti piu' di questo
post cmq.


Penso che tutto sia molto più semplice se limiti la somma ad un
solo bit, considerando un eventuale riporto dallo stadio
precedente e generando un riporto per lo stadio successivo.
Ho steso in due minuti una tabellina, da cui risulta che:
se S=somma R=riporto A e B:bit da sommare
i indica lo stadio cioè 0=bit meno significativo, 1= successivo
ecc. i-1 indica lo stadio precedente
	Si=(Ai XOR Bi) XOR Ri-1  
	Ri=((Ai XOR Bi) AND Ri-1) XOR (Ai AND Bi)
Non so se si puo' fare più semplice, questa richiede 5 funzioni
logiche in tutto.
Ovviamente per il bit meno significativo il tutto si puo'
semplificare in:
	S0=(A0 XOR B0)
	R0=(A0 AND B0)
Saluti.


 logiche in tutto.
provo con il mio metodo (ovvero quello standard) e provo a
semplificare
sia A1,A2 le cifre ad un bit da sommare
siano S, C la somma e il riporto (carry bit)
le matrici sono
S = f (A1, A2) cioe` la somma dei due bit
   0 1
0 0 1
1 1 0
ovvero XOR
che puo` anche essere scritto in forma normale (dipende da
quali porte base puoi avere usare o meno questa formula)
s = (a1 and not a2) or (a2 and not a1)
Che non puo` essere semplificato.
C = f(A1, A2) cioe il riporto
   0 1
0 0 0
1 0 1
ovvero AND
c = a1 and a2
ora si tratta di collegare in serie i microsommatori per
costruirne uno piu` grande con la tecnica del ripple
bit. Ovvero si procede come sopra solo che il bit meno
significativo (e anche l`unico in questo caso) viene
sommato il carry bit del microsommatore precedente.
I sommatori veri trattano il problema tutto insieme
almeno per 8 bit (tecnologia vecchia adesso arrivano
a 128 credo ) bisognerebbe saper e quali sono le condizioni
al contorno del problema. Se l`efficenza non e` un problema
questa e` la soluzione con minima fatica progettuale...
Ciao R.
