Organizarea Calculatoarelor LABORATOR 4 Implementarea şi simularea unui sumator/scăzător pe 4 biţi SCOPUL LUCRĂRII

Σχετικά έγγραφα
5.4. MULTIPLEXOARE A 0 A 1 A 2

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

III. Reprezentarea informaţiei în sistemele de calcul

Metode iterative pentru probleme neliniare - contractii

Curs 4 Serii de numere reale

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.


ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

riptografie şi Securitate

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Asupra unei inegalităţi date la barajul OBMJ 2006

Criptosisteme cu cheie publică III

Subiecte Clasa a VII-a

Subiecte Clasa a VIII-a

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Metode de interpolare bazate pe diferenţe divizate

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Instalare hardware. Configurare Software 1. Configurarea exemplul unui sistem de operare calculator Microsoft Windows 7.

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Curs 1 Şiruri de numere reale

MARCAREA REZISTOARELOR

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Laborator 11. Mulţimi Julia. Temă

Esalonul Redus pe Linii (ERL). Subspatii.


Tabelul tranziţiilor este prezentat mai jos. La construirea sumatorului folosim bistabile de tip JK: (3.1)

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

Integrala nedefinită (primitive)

Problema a II - a (10 puncte) Diferite circuite electrice

Cursul nr. 6. C6.1 Multiplexorul / Selectorul de date

CIRCUITE LOGICE CU TB

Subiecte Clasa a V-a

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Codificatorul SN74148 este un codificator zecimal-bcd de trei biţi (fig ). Figura Codificatorul integrat SN74148

Seminar 5 Analiza stabilității sistemelor liniare

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

Examen AG. Student:... Grupa:... ianuarie 2011

FLUXURI MAXIME ÎN REŢELE DE TRANSPORT. x 4

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Sisteme diferenţiale liniare de ordinul 1

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

a. 11 % b. 12 % c. 13 % d. 14 %

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Principiul Inductiei Matematice.

Subiecte Clasa a VIII-a

prin egalizarea histogramei

1.3 Baza a unui spaţiu vectorial. Dimensiune

Curs 2 Şiruri de numere reale

Ecuatii trigonometrice

Ovidiu Gabriel Avădănei, Florin Mihai Tufescu,

8 Intervale de încredere

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Lucrarea Nr. 5 Circuite simple cu diode (Aplicaţii)

1. Reprezentarea numerelor şi operaţii aritmetice în sisteme de calcul.

Progresii aritmetice si geometrice. Progresia aritmetica.

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Matrice. Determinanti. Sisteme liniare

Stabilizator cu diodă Zener

Lucrarea de laborator nr. 2

Să se arate că n este număr par. Dan Nedeianu

Proiectarea filtrelor prin metoda pierderilor de inserţie

LUCRAREA NR. 1 STUDIUL SURSELOR DE CURENT

10 REPREZENTAREA DIGITALĂ

III.2.2. Reprezentarea în virgulă mobilă

Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:

Examen AG. Student:... Grupa: ianuarie 2016

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

2.2.1 Măsurători asupra semnalelor digitale

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Sisteme liniare - metode directe

V O. = v I v stabilizator

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy

1. BAZE ŞI SISTEME DE NUMERAŢIE REPREZENTAREA DATELOR ÎN CALCULATOR ELEMENTE DE TEORIA CODURILOR... 36

Foarte formal, destinatarul ocupă o funcţie care trebuie folosită în locul numelui

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener

Transcript:

Organizarea Calculatoarelor LABORATOR 4 Implementarea şi simularea unui sumator/scăzător pe 4 biţi SCOPUL LUCRĂRII Pe baza sumatorului pe 4 biţi implementat anterior, se cere construirea unui sumator/scăzător cu operanzi reprezentaţi pe 4 biţi. Funcţionarea corectă a sumator/scăzătorul se va verifica prin simulare. Chestiuni teoretice Dacă nu vă mai amintiţi complementul faţă de 2, citiţi Anexa 1 (sau orice alt material!). Pentru a proiecta un bloc aritmetic care oferă la ieşire fie suma, fie diferenţa, este nevoie de un semnal care să decidă ce operaţie se face: adunare sau scădere. Numele acestui semnal va fi S1A0 (Scădere 1, Adunare 0). Dacă S1A0 este 0L se va face adunare iar dacă este 1L se va face scădere. Scăderea se va face prin adunarea complementului faţă de 2. Fie două numere întregi α şi β. Acestea se reprezintă în complement faţă de 2. A=C2(α) este reprezentarea în complement faţă de 2 a lui α iar B=C2(β) este reprezentarea în complement faţă de 2 a lui β. Rezultatul adunării sau scăderii se va numi ρ iar reprezentarea sa în complement fată de 2 este R=C2(ρ). În cazul adunării ρ = α + β se poate demonstra că C2(ρ) = C2(α) + C2(β) echivalent cu R=A + B + este adunare pentru numere fără semn. Adică este suficient să adună reprezentările în complement faţă de 2 ale lui α şi β ca şi când ar fi numere fără semn şi rezultatul este corect. Operaţia + se implementează hardware cu un sumator ca cel proiectat în laboratorul precedent. În cazul scăderii ρ = α - β se poate demonstra că C2(ρ) = C2(α) + [C2(β)] * echivalent cu R=A ADDU B * Adică trebuie să adunăm reprezentarea în complement faţă de 2 ale lui α cu reprezentarea lui β în complement faţă de 2 complementată. La fel ca mai sus, adunarea se face ca şi când ar fi numere fără semn şi rezultatul este corect. În concluzie blocul de adunare/scădere va implementa următoarele prelucrări exprimate în stil C: if (S1A0==0) R= A+B; //adunare else R= A+B * ; // scădere Complementul faţă de 2 al unui număr x se calculează cu formula: X * = not(x) + 1 Complementul faţă de 2 este egal cu complementul faţă de 1 plus 1. Complementul faţă de 1 se obţine inversând numărul bit cu bit. Înlocuind în prelucrarea stil C de mai sus obţinem: if (S1A0==0) R=A+B; else R=A+not(B)+1; //adunare // scădere 1

Adunam un 0 în cazul adunării pentru ca modul de implementarea sa devină mai clar: if (S1A0==0) R=A + B + 0; //adunare else R=A + not(b)+ 1; // scădere Implementarea hardware a sumator/scăzătorului conform specificării de mai sus necesită: 1. Un sumator pentru numere naturale, ca cel proiectat în laboratorul precedent. Pentru fiecare bit k=0..n-1 este nevoie de un sumator de un bit. 2. Primul operand al sumatorului este A=C2(α). 3. Al doilea operand al sumatorului este fie B dacă operaţia este adunare, fie negatul acestuia dacă operaţia este scădere. Pentru fiecare rang al celui de-al doilea operand vom selecta fie b k, fie not b k, cu un MUX2. Pentru a genera pe not b k este nevoie de un inversor. 4. Ci este 0L pentru adunare şi 1L pentru scădere. Se observă cu uşurinţă că Ci este chiar S1A0. Desfăşurarea lucrării Pasul 1: Terminarea sumatorului pe 4 biţi. În laboratorul precedent intrarea de transport a sumatorului pe 4 biţi a fost legată la masă astfel încât Ci este 0L tot timpul. Implementarea sumator/scăzătorului conform secţiunii Chestiuni teoretice foloseşte Ci pentru a aduna un 1 în cazul scăderii. Procedaţi după cum urmează: 1. Deschideți proiectul as4 din laboratorul 3 şi apoi deschideți sum4.sch 2. Ștergeți simbolul GND conectat la intrarea Ci a rangului zero. Conectaţi la acest Ci un marker IO cu numele Ci. 3. Creați simbolul lui sum4 după procedura descrisă în laboratorul 3 (Design Utilities Create Schematic Symbol). 4. Adăugaţi la proiect o nouă sursă de tip schematic cu numele as4. Pe această planşă vom desena sumator/ scăzătorul Pasul 2: Crearea schemei sumator/scăzătorului pe 4 biţi folosind magistrale. Deschideți planşa as4. Plasaţi pe aceasta magistrala B, cele 4 inversoare şi cele 4 MUX2. Încercaţi să obţineţi o schemă cât mai apropiată de cea din figura 1: 2

figura 1 Conectaţi intrările D0 ale celor 4 MUX-uri. Adăugaţi marcherul IO S1A0. Încercaţi să obţineţi o schemă cât mai apropiată de cea din figura 2. În această fază am obţinut al doilea operand al sumatorului: B dacă S1A0 este 0L (aducă adunare) sau not B dacă S1A0 este 1L. figura 2 Adăugaţi pe schemă sumatorul sum4 obţinut la pasul 1. La intrarea b(3:0) a lui sum4 adăugaţi o conexiune în T ca în figura 3. Această conexiune este de tip magistrală şi are un nume dat automat de ISE. Dacă plasaţi cursorul deasupra acestei magistrale va apare numele acesteia, ca în figura 3. În cazul schemei dumneavoastră, numele va fi diferit. 3

figura 3 Magistrala creată automat de ISE are aceeaşi dimensiune şi aceleași limite stânga dreapta ca pinul ierarhic b(3:0). Altfel spus numele magistralei se obține din numele pinului ierarhic înlocuind pe b cu XLXN_22. Schimbați numele acestei magistrale în BNB(3:0). BNB înseamnă B sau not B deoarece aici se vor conecta ieşirile celor 4 MUX2. Pentru a schimba numele magistralei adăugate apăsaţi butonul Add net name şi în câmpul Name introduceţi BNB(3:0). În continuare conectaţi ieşirile MUX-urilor la magistrala BNB, conectaţi intrarea Ci la S1A0 şi adăugaţi marcherii IO A(3:0), R(3:0) şi Co. Încercaţi să obţineţi schema din figura 4. figura 4 4

Verificaţi corectitudinea schemei şi salvaţi Pasul 3: Simularea sumator-scăzătorului. În cazul simplu al unui sumator pe 4 biţi, funcţionalitatea se poate verifică prin încărcarea proiectului în placa de dezvoltare. Dacă ceva nu funcţionează corect este relativ simplu, dat fiind complexitatea scăzută a proiectului, să ne dăm seama de locul din care provine eroarea. Cum se procedează în cazul proiectelor complexe, care umplu un FPGA din seria 5000, nu din seria 400? Răspunsul este Prin simulare! Pentru simularea sumatorului se vor parcurge următorii paşi: 1. Prima etapă constă în crearea unui fişier scris în limbaj de nivel înalt, de regula VHDL sau Verilog, în care să se specifice modul de comportare în timp a intrărilor şi în care se verifică dacă ieşirile corespunzătoare intrărilor generate sunt corecte. Acest tip de fişier se numeşte TEST BENCH. 2. ISE are o componentă grafică care permite generarea interactivă a unei jumătăţi de test bench, adică numai partea de generare a intrărilor, numite şi stimuli. Rularea cestei componente duce la crearea unui test bench scris în VHDL. 3. Pentru a crea un test bench adăugaţi la proiect o nouă sursă de tip Test Bench Vaweform, cu numele tbw (sau altul, dacă acesta nu vă place). Adăugarea unei noi surse se face din meniul Project New Source. Ghidaţi-va după figura 5. 4. Apoi suntem întrebaţi cărui fişier sursă îi va fi asociat test bench-ul, pentru a şti ce stimuli trebuie generaţi. Vom asocia test bench-ul modulului din vârful ierarhiei, şi anume as4, ca în figura 6. figura 5 figura 6 5. În continuare ISE propune anumiţi parametrii pentru generarea stimulilor. Selectaţi opţiunea Combinatorial dacă aceasta nu este deja selectată. Trebuie să obţineţi situaţia din figura 7. 5

figura 7 6. Acceptaţi restul stărilor apăsând butonul Finish. Veţi obţine situaţia din figura 8 sau ceva foarte asemănător figura 8 Dacă semnalele nu sunt ordonate ca în figura 8 puteţi să la reordonaţi trăgând de ele în poziţia dorită. Nu este obligatoriu. Comportarea în timp a unei magistrale se poate defini per componentă sau global. Pentru definirea per componentă se expandează magistrala prin apăsarea semnului + adiacent numelui. Ca urmare a acestei operaţii se vor afişa membrii magistralei şi aceştia pot fi modificaţi individual. Nu se va folosi această metodă!! Pentru definirea globală a valorii unei magistrale la un moment de timp se face clic în locul în care se doreşte schimbarea valorii. De exemplu, pentru a modifica valoarea lui A(3:0) la 100 ns faceţi clic în zona indicată de săgeata roşie din figura 8. Ca urmare va apare fereastra de dialog Set Value. Atenţie: în zona de la 0 la 100ns este perioada de reset. În acest interval valorile semnalelor nu se pot schimba! În fereastra Set Value introduceţi valoarea 5. 6

Pentru a testa complet funcţionarea sumator/scăzătorului ar trebui ca A(3:0), B(3:0) şi S1A0 să ia toate valorile posibile. Deoarece sunt 9 biţi în total numărul de combinaţii posibile este 512. Operaţie ( 0 +, 1 -) A(3:0) B(3:0) + +5 +2 + -5 +2 + +5-2 + -5-2 - +5 +2 - -5 +2 - +5-2 - -5-2 Specificarea tuturor combinaţiilor nu este greu de făcut deoarece editorul grafic de stimuli are suficiente capabilităţi în acest sens. Partea dificilă constă în verificarea corectitudinii ieşirii R(3:0). Dacă verificarea pentru un set de valori de intrare, de exemplu 5+(-3), ia 3 secunde, ar fi nevoie în total de 512*3 secunde, adică aproximativ 30 de minute. Pe lângă timpul lung necesar verificării există şanse mari ca să trecem cu vederea o eventuală eroare. Motivele expuse mai sus fac ca verificarea funcţionalităţii să se facă automat, în acest sens scriindu-se cod HDL. Deoarece nu aveţi suficiente cunoştinţe în acest moment, se va face doar o verificare preliminară a funcţionării sumator/scăzătorului. Verificarea se va face pentru 8 valori de intrare, conform tabelului alăturat. Bug: introduceţi echivalentul hexazecimal al combinaţiilor din tabelul alăturat conform reprezentării complementului faţă de 2 din figura 15. Specificarea decimal signed care ar fi fost ideală în acest caz nu funcţionează corect! După introducerea valorilor din tabel trebuie să obţineţi situația din figura 9: figura 9 7. Există mai multe opţiuni de simulare dintre care două sunt de interes: Behavioural şi Post Route. Simularea de tip Behavioural este cea mai rapidă dar toate întârzierile sunt zero. Simularea Post Route este cea mai exactă, toate întârzierile sunt vizibile, dar durează foarte mult. În laboratoarele următoare vom alege simularea Behavioural pentru a câştiga tip dar în acest laborator vom alege Post Route pentru a vedea modul real de funcţionarea proiectului. Pentru aceasta în fereastra Sources, lista Sources for, selectaţi opţiunea Post-Route Simulation, ca în figura 10. Ca urmare conţinutul ferestrelor Sources şi Processes se modifică pentru simulare. 8. In fereastra Processes selectaţi fişierul tbw şi apoi lansaţi în execuţie procesul Simulate Post- Place&.., conform figura 11. Aceasta va duce la lansarea simulatorului Modelsim. Va dura cam un minut. 7

figura 10 figura 11 9. Fereastra simulatorului este alcătuită din mai multe subferestre. Identificaţi fereastra Wave. În această fereastră se afişează evoluţia în timp a tuturor semnalelor din proiect. Ea joacă rolul ferestrei Watches din depanarea software. Detaşaţi fereastra Wave (undock) şi maximizaţi-o. Apoi, prin drag and drop, mişcaţi forma de undă Co în ultima poziţie. Ar trebui să obţineţi o situaţie asemănătoare cu cea din figura 12. 10. Pentru a afişarea cu semn a valorilor semnalelor selectaţi toate semnalele ce se vizualizează, faceţi clic dreapta, din meniul contextual ce va apare selectaţi Radix şi din noul meniu contextual selectaţi Decimal, ca în figura 12. figura 12 Rolul butoanelor marcate cu 1-5 în figura 12 este: 1 Selecţie. Pentru selectarea unei forme de undă şi pentru manevrarea cursoarelor. 2 Zoom mode. Pentru a mări o zonă selectată. 3,4 Este evident. 5 Zoom full. Afişează toată simularea. Mutaţi cursorul pe toate valorile de intrare şi verificaţi dacă valoarea ieşirii este corectă. Pentru a evidenţia întârzierile se procedează după cum urmează: 8

1. Mai întâi apăsați lupa neagră (Zoom full) pentru a afişa rezultatul întregii simulări într-un singur ecran. Trebuie să obţineţi situaţia din figura 12. În general Zoom full este prima acţiune executată după terminarea simulării. 2. Se expandează magistrala r. Pentru a expanda un bus apăsăm semnul + din dreptul numelui respectivului bus. 3. Se apasă Zoom mode ( ). Remarcaţi schimbarea formei cursorului. 4. Se poziţionează cursorul înainte de tranziţia din 0 în 1 a lui S1A0. 5. Se apasă butonul stânga al mouse-lui şi, cu butonul apăsat, se mişcă cursorul pentru a încadra tranziţiile lui a, b şi a lui S1A0, ca în figura 13. După ce se eliberează butonul mouse-lui ar trebui să se obţină situaţia din figura 14. figura 13 figura 14 Dacă rezultatele obţinute de dumneavoastră sunt la fel ca cele din figura 12 şi figura 14, chemaţi profesorul pentru validare. Dacă aţi ajuns aici aveţi nota 5. Continuaţi pentru notă mai mare. (opţional) 9

Pasul 4: Depășirea formatului - Overflow. (opţional) În schema sumatorului/scăzător pe 4 biţi semnalul Co poate fi folosit pentru a semnaliza depășirea formatului de reprezentare dacă operanzii sunt priviţi ca numere pozitive în gama 0-15. In schimb, dacă operanzii sunt priviţi ca numere cu semn reprezentate în complement fată de 2 în gama (-8) (+7), atunci Co nu poate fi folosit pentru a semnaliza depășirea. De exemplu adunăm 5+6 si obţinem: 0101+0110=1011. Adunăm două numere pozitive şi obţinem un număr negativ iar Co este 0! Pentru a semnaliza corect depășirea în cazul numerelor cu semn se analizează semnul lui A, semnul lui B, semnul rezultatului şi tipul operaţiei (adunare sau scădere). Se cere: 1. Să se scrie tabelul de adevăr pentru funcţia depășire, funcţie ce depinde de variabilele enumerate mai sus. 2. Să se implementeze această funcţie. Operaţie A(3:0) B(3:0) ( 0 +, 1 -) + +5 +4 + -5 +4 + +5-2 + -5-4 - +5 +2 - -5 +4 - +5-4 - -5-2 Se va testa cu valorile din tabela alăturată. Veţi obţine între 0 şi 5 puncte. 10

Anexa 1 Complementul faţă de 2 Dacă X=x n-1.x 1 x 0 este un număr binar pozitiv reprezentat pe n biţi complementul său faţă de 2 se notează X* şi se calculează ca X * = 2 n X. Operaţia 2 n X se numeşte complementare. Fie i un număr întreg ce aparţine intervalului [-2 n-1, 2 n-1 ). De exemplu dacă n=4, i [ 8,8). Reprezentarea în cod complementar (complement faţă de 2) a numărului i se notează cu C2(i) şi se calculează după următoarea regulă: i, ( i) = i = 2 i C2 * n i 0 i < 0 Pentru n=4 numerele i [ 8, 7] se reprezintă conform figurii următoare: figura 15 Codul complementar remarcabile: are o serie de proprietăţi 1. Numerele pozitive au bitul cel mai semnificativ 0 iar cele negative, 1 (vezi figura). Bitul cel mai semnificativ se numeşte bit de semn. 2. Aşa cum am construit sumatorul pe 4 biţi, să presupunem că am construi un scăzător pe 4 biţi prin cascadarea a 4 scăzătoare de un bit. Dacă un scăzător pe 4 biţi are de efectuat 5-2 rezultatul va fi: 0101-0010 0011, adică 3. Care este rezultatul operaţiei 2-5? Conform regulilor învăţate la clasa a VI-a, mai întâi ar trebui comparate modulele celor două numere, apoi se scade modulul cel mai mic din modulul cel mai mare şi se dă semnul din faţă operandului care modulul mai mare. Adică se face 5-2=3 şi apoi semnul lui 3 se schimbă. Dacă nu se ţine seama de regula de la clasa a VI-a şi scădem pe 5 din 2, obţinem: 1 0010-0101 1101, adică C2(-3) din figura 15 şi un împrumut care se va ignora. Scăderea fără compararea modulelor are nevoie doar de scăzător, dar rezultatul apare în complement faţă de 2. Dacă am vrea să implementăm scăderea ca la clasa a VI-a, pe lângă scăzător am mai avea nevoie de un comparator şi de două multiplexoare vectoriale. 3. Nu este nevoie de un sumator special pentru adunarea numerelor reprezentate in cod complementar. Adunarea numerelor reprezentate în cod complementar se face cu acelaşi hardware ca cel folosit pentru adunarea numerelor naturale. Rezultatul va apare însă în cod complementar. ATENTIE: Bitul de semn participă la calcule! 11

Un prim exemplu: 5+(-3), C2(5)=0101, C2(-3) =1101 0101+ 1101 10010, adică 2 din figura 15 şi un transport care se va ignora. Un al doilea exemplu: (-4) + (-3), C2(-4) = 1100, C2(-3)=1101 1100+ 1101 11001, adică -7 din figura 15 şi un transport care se va ignora. 4. Nu este nevoie de scăzător! In loc de scădere se adună scăzătorului cu semn schimbat şi rezultatul este întotdeauna corect. Nu contează dacă scăzătorul este pozitiv sau negativ! Fie α şi β două numere întregi. Operaţia α - β se poate efectua ca α +(-β). Singura problemă este că nu dispunem de numerele α şi β, ci de reprezentarea lor în cod complementar, adică de C2(α) şi de C2(β). Operaţia α - β = α +(- β) va executata de hardware ca C2(α)+C2(-β) Se poate arăta imediat că dacă C2(β) este reprezentarea în cod complementar a lui β, atunci: C2(-β)=2 n - C2(β) Adică C2(-β) se obţine prin complementarea lui C2(β)! Un prim exemplu: 5-(+2), C2(5) = 0101, C2(2) = 0010, C2(-2) = =10 4 0010=10000-0010=1110 0101+ 1110 10011, adică C2(3) şi un transport care se va ignora. Un al doilea exemplu: (-4) - (-3), C2(-4) = 1100, C2(-3) = 1101, C2(-(-3)) = 10 4-1101=10000-1101=0011 1100+ 0011 1111, adică C2(-1). Chiar dacă în loc de a scădea am adunat pe C2(-β), tot nu am scăpat de scădere. Termenul C2(-β) se obţine efectuând o scădere, şi anume 2 n -C2(β). Dacă nu scăpăm de ea ideea prezentată mai sus nu are nici o valoare practică (din punct de vedere al implementării). Aşa cum vom vedea în continuare, nu este nevoie să se efectueze o scădere pentru a obţine complementul unui număr. Complementarea se poate face prin 3 metode. Metoda de interes din punct de vedere al implementării este cea prin intermediul complementului fată de 1. Mai exact, cantitatea care trebuie complementată se inversează bit cu bit şi în final se adună un 1. De exemplu complementul lui 0010 este 1101+1=1110. Complementul faţă de 1 se notează ca operaţia de inversare : complementul faţă de 1 al lui B este B. Marele avantaj al acestei metode este că scăderea se transformă în inversarea bit cu bit a lui C2(B), plus adunarea unei unităţi. Inversarea necesită un LUT per rang pe când scăderea necesită două LUT-uri per rang. Economie de un LUT per rang! Ultima problemă constă în adunarea unei unităţi. Această operaţie se poate face prin intermediul intrări Cin a rangului 0. Această intrare este conectată la masă (0L) la sumatorul pe 4 biţi proiectat anterior. 12

În concluzie, dacă avem de adunat două numere α şi B reprezentate în cod complementar ca C2(α) şi C2(β), suma, reprezentată tot în cod complementar, se obţine ca: C2(σ)=C2(α)+C2(β) (1) Dacă avem de efectuat A-B diferenţă D se obţine ca: C2(δ)=C2(α)+ C 2( β ) +1 (2) Adunarea se face cu un sumator pentru numere naturale. Bitul de semn participă la adunare. 13