8.9. Scădere binară


După cum sugerează și numele, un Binary Subtractor este un circuit de luare a deciziilor care scade două numere binare unul din altul, de exemplu X - Y, pentru a găsi diferența care rezultă între cele două numere.

Spre deosebire de Binary Adder care produce un bit SUM și un bit CARRY atunci când se adună două numere binare, Binary Subtractor produce DIFFERENCE, D folosind un bit BORROW, B din coloana anterioară. Deci, evident, operația de scădere este opusă celei de adunare.

Am învățat că semnul minus "-" este folosit pentru un calcul de scădere, iar atunci când un număr este scăzut din altul, este necesar un împrumut dacă scăzătorul este mai mare decât descăzutul. Luați în considerare scăderea simplă a celor două denarii (baza 10) de mai jos.

Nu putem scădea direct 8 din 3 în prima coloană deoarece 8 este mai mare de 3, așa că trebuie să împrumutăm un 10, numărul bazei, din următoarea coloană și să-l adunăm la descăzut pentru a produce 13 minus 8.

Scăderea unui număr binar din altul este exact pe aceeași idee ca și cea pentru scăderea a două cifre zecimale, dar deoarece sistemul de numere binare este un sistem de numere cu baza-2 care utilizează "0" și "1" drept cele două cifre independente, numerele binare mari care urmează să fie scăzute unul din celălalt sunt reprezentate prin cifre de "0" și "1".

Scădere binară

Scăderea binară poate lua mai multe forme, dar regulile de scădere sunt identice, indiferent de procesul pe care îl utilizați. Deoarece notația binară are doar două cifre, scăderea unui "0" din "0" sau "1" lasă rezultatul neschimbat ca 0-0 = 0 și 1-0 = 1. Scăderea unui "1" din "1" duce la un "0", dar scăderea "1" din "0" necesită un împrumut (BORROW). Cu alte cuvinte, 0 - 1 necesită un împrumut.

Scăderea binară a doi biți

Pentru problema simplă de scădere de 1 bit de mai sus, dacă bitul împrumutului este ignorat, rezultatul scăderii binare seamănă cu cel al unei Porți Exclusive-OR. Pentru a preveni orice confuzie în acest tutorial între o intrare binară a subtractorului, etichetată B, și ieșirea rezultatul bitului BORROW rezultat din subtractorul binar, de asemenea etichetat B, vom eticheta cei doi biți de intrare ca X pentru descăzut și Y pentru scăzător. Atunci tabelul de adevăr rezultant care este diferența dintre cei doi biți de intrare ai unui singur subtractor binar este dat de:

Ca și în cazul Binary Adder, diferența dintre cele două cifre este "1" doar atunci când aceste două intrări nu sunt egale, ca cele date de expresia Ex-OR. Dar, avem nevoie de o ieșire suplimentară pentru a produce bitul împrumutat când intrarea X = 0 și Y = 1. Din păcate, nu există nici o poartă standard logică care să producă o ieșire pentru această combinație particulară de intrări X și Y.

Dar știm că o poartă AND produce o ieșire "1" când ambele intrări X și Y sunt "1" (HIGH), deci dacă folosim un inversor sau o poartă NOT pentru a complementa intrarea X înainte de a fi trimisă la poarta AND, putem produce rezultatul împrumutului necesar atunci când X = 0 și Y = 1, așa cum se arată mai jos.

Atunci, prin combinarea porții Exclusive-OR cu combinația NOT-AND, rezultă un circuit simplu de subtractor digital binar cunoscut în mod obișnuit sub denumirea de Half Subtractor, așa cum este arătat.

Circuit Half Subtractor

Un Half Subtractor este un circuit logic care efectuează o operație de scădere pe două cifre binare. Half Subtractor produce o diferență și un împrumut (BORROW) pentru următorul etaj.

Half Subtractor cu Borrow-out

Din tabelul de adevăr al Half Subtractor se poate observa că ieșirea DIFFERENCE (D) este rezultatul porții Exclusive-OR, iar împrumutul Borrow-out (Bout) este rezultatul combinației NOT-AND. Atunci expresia booleană pentru un Half Subtractor este după cum urmează.

Pentru bitul DIFFERENCE :

D = X XOR Y = X ⊕ Y

Pentru bitul BORROW

Dacă comparăm expresiile booleene ale Half Subtractor cu Half Adder, putem vedea că cele două expresii pentru SUM (adder) și DIFFERENCE (subtractor) sunt aceleași și așa ar trebui să fie din cauza funcției de poartă exclusiv-OR. Cele două expresii Booleene pentru subtractorul binar BORROW sunt, de asemenea, foarte asemănătoare cu cele pentru CARRY din Adder. Atunci, tot ceea ce este necesar pentru a converti un Half Adder în Half Subtractor este inversarea intrării Descăzut X.

Un dezavantaj important al circuitului Half Subtractor atunci când este utilizat ca un subtractor binar este acela că nu există nicio prevedere pentru un împrumut (Borrow-in) din circuitul precedent atunci când se scad mai mulți biți de date unul din celălalt. Atunci, trebuie să producem ceea ce se numește circuit "full binary subtractor" pentru a ține cont de această intrare împrumutată de la un circuit anterior.

Circuit Full Binary Subtractor

Principala diferență dintre Full Subtractor și circuitul precedent Half Subtractor este că primul are trei intrări. Cele două intrări de date cu un singur bit X (descăzut) și Y (scăzător) sunt la fel ca înainte, plus o intrare suplimentară (Bin) de împrumut, pentru a primi împrumutul generat de procesul de scădere dintr-un etaj anterior, după cum se arată mai jos.

Diagrama bloc a unui Full Subtractor

Atunci circuitul combinațional al unui "Full Subtractor" efectuează operația de scădere pe trei biți binari care produc ieșiri pentru diferența D și împrumutul Bout. La fel ca și circuitul sumator binar, Full Subtractor poate fi gândit ca doi Half Subtractori conectați împreună.

Diagrama logică completă a unui Full Subtractor

Deoarece circuitul de subtractor de mai sus reprezintă două jumătăți de Half Subtractor legați împreună, tabelul de adevăr pentru Full Subtractor va avea opt combinații de intrări diferite, deoarece există trei variabile de intrare, biții de date și intrarea împrumutată BIN. De asemenea, include ieșirile diferență D și borrow-out, bitul BOUT.

Tabelul de adevăr al unui Full Subtractor

Atunci, expresia Booleană pentru un Full Subtractor este după cum urmează.

Pentru bitul DIFFERENCE (D):

care pot fi simplificate:

Pentru bitul BORROW OUT (BOUT):

care simplificată și ea:

Subtractor binar de n-biți

Ca și în cazul sumatorului binar, putem avea un număr n de full binary subtractor de 1-bit conectate sau „ în cascadă“, împreună pentru a scădea două numere paralele de n-biți unul din altul. De exemplu, două numere binare pe 4 biți. Am spus mai înainte că singura diferență dintre un Full Adder și un Full Subtractor a fost inversarea uneia dintre intrări.

Deci, prin utilizarea unui Adder de n-biți și un număr n de inversoare (porți NOT), procesul de scădere devine o adunare astfel că putem folosi notația complement față de doi pe toți biții din Scăzător și setarea intrării de transport (carry) a celui mai puțin semnificativ bit la un "1" logic (HIGH).

Subtractorul binar folosind complementul lui 2

Atunci, putem folosi un IC full-adder de 4-biți, cum ar fi 74LS283 și CD4008 pentru a efectua scăderea pur și simplu prin utilizarea complementului față de doi pe Scăzător, intrările B, deoarece X - Y este același ca spunând X+(-Y) care este egal cu X plus complementul față de doi al lui Y.

Dacă vrem să folosim încă o dată Adder pe 4 biți, tot ce trebuie să facem este să setăm intrarea carry-in (CIN) la logic "0" (LOW). Deoarece putem utiliza un IC Adder pe 4 biți, cum ar fi 74LS83 sau 74LS283, ca un full-adder sau un full-subtractor, acestea sunt disponibile ca un singur circuit adder/subtractor cu o singură intrare de control pentru selectare între cele două operații.