Cuprins
- 1. Rezumat 2
- 2. Introducere 3
- 3. Fundamentare teoretică 5
- 3.1 Adunarea şi scaderea 5
- 3.1.1. Sumatorul cu propagarea succesivă a transportului 6
- 3.1.2. Sumatorul cu anticiparea transportului 7
- 3.1.3. Sumatorul cu salvarea transportului 8
- 3.1.4. Sumatorul cu selecţia transportului 10
- 3.2 Înmulţirea 10
- 3.2.1 Înmulţirea prin deplasare şi adunare 10
- 3.2.2. Metoda Booth 11
- 3.2.3. Înmulţirea matriceală pentru numere fără semn 12
- 3.2.4. Îmulţirea matriceală pentru numere cu semn (metoda Baugh - Wooley) 13
- 3.3 Împărţirea 15
- 3.3.1. Împărţirea cu refacerea restului parţial 15
- 3.3.2. Împărţirea fără refacerea restului parţial 16
- 3.3.3. Împărţirea matriceală 18
- 3.4 Operaţiile logice 20
- 3.4.1. Poarta ŞI (AND) 21
- 3.4.2. Poarta SAU (OR) 21
- 3.4.3. Poarta NU (NOT) 22
- 3.4.4. Poarta ŞI – NU (NAND) 22
- 3.4.5. Poarta SAU – NU (NOR) 23
- 3.4.6. Poarta SAU – EXCLUSIV (EXCLUSIVE - OR) 24
- 3.5 Operaţii pe biţi 25
- 3.5.1. Deplasarea logică 25
- 3.5.2. Deplasarea aritmetică 26
- 3.5.3. Rotaţia logică 26
- 4. Proiectare şi implementare 27
- 4.1. Modulul pentru adunare şi scădere 31
- 4.2. Modulul pentru înmulţire 34
- 4.3. Modulul pentru împărţire 36
- 4.5. Modulul pentru operaţiile logice 40
- 4.6. Modulul pentru operaţiile pe biţi 40
- 5. Rezultate experimentale 47
- 6. Concluzii 59
- Bibliografie 60
Extras din proiect
1. Rezumat
Obiectivul acestui proiect l-a constituit proiectarea, utlizând circuite elementare, a unei unităţi aritmetice şi logice şi simularea modelului funcţional. Unitatea aritmetică şi logică proiectată implementează operaţiile aritmetice, logice şi pe biţi elementare pentru numere întregi reprezentate în Complementul faţă de doi. Proiectarea a fost realizată utilizând limbajul VHDL, iar verificarea a fost efectuată cu utilitarul ISim din pachetul Xilinx ISE.
Pentru implementarea în VHDL s-a utilizat descrierea structurală, fiecare modul fiind realizat prin interconectarea unor circuite elementare. Unitatea aritmetică şi logică proiectată este pur combinaţională, astfel încât toate operaţiile implementate se execută într-un singur pas. Proiectarea sistemului s-a realizat ţinând cont de o serie de cerinţe de performanţă, cum ar fi: viteza, scalabilitatea, modularitatea, minimizarea spaţiului ocupat în cip, prin urmare, UAL poate fi integrată cu succes în structura oricărui sistem numeric de calcul şi conectată cu un minim de efort de proiectare cu orice alte module din sistemul respectiv.
2. Introducere
Unitatea aritmetică şi logică (UAL) este un element fundamental al oricărui sistem de calcul, care permite realizarea unei largi varietăţi de operaţii aritmetice şi logice.
Principalele operaţii aritmetice efectuate de UAL sunt adunarea, scăderea, înmulţirea şi împărţirea. Tehnicile utilizate pentru aceste funcţii de bază pot fi aplicate şi pentru funcţii mai complexe cum ar fi extragerea rădăcinii pătrate sau ridicarea la putere.
Operaţiile logice furnizate de UAL includ funcţiile logice de bază (ŞI, SAU, SAU EXCLUSIV, NEGAŢIA LOGICĂ), DEPLASAREA şi ROTAŢIA unui cuvânt binar. De asemenea, UAL poate determina dacă un număr este negativ sau pozitiv, dacă un număr este egal cu zero etc.
Obiectivul acestui proiect l-a constituit proiectarea, utlizând circuite elementare, a unei unităţi aritmetice şi logice şi simularea modelului funcţional. Proiectarea a fost realizată utilizând limbajul VHDL, iar verificarea a fost efectuată cu utilitarul ISim din pachetul Xilinx ISE.
Tabelul 1.1 cuprinde operaţiile furnizate de unitatea aritmetică şi logică.
Tabelul 1.1 Operaţiile unităţii aritmetice şi logice
Operaţie Operatori Descirere
Operaţii aritmetice Adunare A, B REZ A + B
Increment A, B REZ A + 1
Scădere A, B REZ A – B
Decrement A, B REZ A - 1
Înmulţire A, B REZ A * B
Împărţire A, B REZ A div B
Trecere prin ALU A REZ A
Comparaţie A, B
Test pentru zero sau negativ A, B
Operaţii logice ŞI logic A, B REZ A & B
SAU logic A, B REZ A | B
ŞI – NU logic A, B REZ ¬ (A & B)
SAU – NU logic A, B REZ ¬ (A | B)
SAU EXCLUSIV A, B REZ A xor B
NEGAŢIA logică
A REZ ¬ A
Operaţii pe biţi Deplasare logică la stânga A Rez(i+1) A(i), Rez(0) 0
Deplasare logică la dreapta A Rez(i) A(i+1), Rez(n) 0
Deplasare aritmetică la dreapta A Rez(i) A(i+1)
Rotaţie la stânga A Rez(0) A(n-1),
Rez(i+1) A(i)
Rotaţie la dreapta A Rez(n-1) A(0),
Rez(i) A(i+1)
Rotaţie la stânga prin carry A Rez(0) C,
Rez(i+1) A(i),
C A(n-1)
Rotaţie la dreapta prin carry A Rez(n-1) C,
Rez(i) A(i+1), C A(0)
Scriere flag transport - C 1
Scriere flag overflow - O 1
Scriere flag zero - Z 1
Ştergere flag transport - C 0
Ştergere flag overflow - O 0
Ştergere flag zero - Z 0
Operatorii UAL sunt numere întregi reprezentate în sistemul de numeraţie Complementul faţă de doi, pe un număr variabil de biţi. Pentru ilustrarea funcţionalităţii proiectului, numerele au fost reprezentate pe 32 de biţi.
Operaţiile de adunare şi scădere au fost implementate utilizând un sumator cu anticiparea transportului.
Pentru înmulţire şi împărţire s-au utilizat circuite combinaţionale matriceale. Comparativ cu circuitele secvenţiale, circuitele de înmulţire, respectiv împărţire combinaţională, conţin o logică suplimentară care permite ca rezultatul să fie calculat într-un singur pas.
Circuitul de înmulţire matriceală utilizează porţi ŞI pentru formarea produselor parţiale (prin înmulţirea biţilor înmulţitorului cu cei ai deînmulţitului şi deplasarea rezultatului cu numărul corespunzător de biţi) şi sumatore elementare pentru adunarea acestora.
Modulul de împărţire efectuează operaţia de împărţire fără refacerea restului parţial. Pentru implementarea circuitului s-a utilizat o matrice de celule identice care pot efectua operaţia de adunare sau de scădere.
Preview document
Conținut arhivă zip
- Unitate Aritmetica si Logica in VHDL si Simulare.doc