+ All Categories
Home > Documents > Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se...

Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se...

Date post: 27-Dec-2019
Category:
Upload: others
View: 10 times
Download: 0 times
Share this document with a friend
14
1 Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi simularea ALU MIPS SCOPUL LUCRĂRII Se cere desenarea şi simularea unităţii aritmetice si logice din MIPS. Unitatea logica şi aritmetică care se doreşte implementată este descrisă în Hennessy şi Patterson în subcapitolul 4.5, începând de la pagina 210. Schema implementată va fi organizată diferit faţă de cele prezentate in carte, deoarece se vor folosi nuclee Xilinx (IP cores). In carte se proiectează o celulă ALU, celulă ce conţine o poartă AND, o poartă OR, un sumator elementar şi un MUX4, iar apoi aceasta celula se multiplica de 32 de ori. Schema implementată în cadrul acestui laborator se bazează pe o abordare vectorială: se desenează un bloc care conţine 32 de porţi AND, un bloc care conţine 32 de porţi OR, un sumator pe 32 de biţi plus alte module care vor fi detaliate în cele ce urmează. Apoi aceste elemente se conectează prin intermediul unui MUX4 vectorial. Toate aceste elemente vectoriale se generează folosind componenta „IP(CoreGen & Architecture Wizard), componentă care permite generarea rapidă de blocuri logice complexe. Desfăşurarea lucrării Pasul 1: Crearea proiectului. Se face conform metodologiei prezentate în primul laborator. Proiectul se va numi AluMips. Pasul 2: Crearea schemei ALU. 1) Se creează fişierul Alu.sch, care va conţine schema unităţii logice si aritmetice. Se poate folosi drept ghid laboratorul 1. 2) Primul bloc care se va genera va conţine 32 de porţi AND cu 2 intrări. Acest bloc are intrările IA şi IB şi ieşirea O. IA, IB şi O sunt vectori de biţi de 32 de elemente. În continuare este specificat acest modul folosind un limbaj de descriere hardware (VHDL): IA, IB : IN bit_vector (31 downto 0); O : OUT bit_vector (31 downto 0); for i in 0 to 31 generate O(i) <= IA(i) AND IB (i); --adică 32 de porţi AND END GENERATE; Acest bloc va fi generat folosind interfaţă vizuală IP. Pentru aceasta se adaugă la proiect o nouă sursă de tip IP, cu numele v32and2, conform figurii 1.
Transcript
Page 1: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

1

Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi simularea ALU MIPS

SCOPUL LUCRĂRII Se cere desenarea şi simularea unităţii aritmetice si logice din MIPS. Unitatea logica şi aritmetică care se doreşte implementată este descrisă în Hennessy şi Patterson în subcapitolul 4.5, începând de la pagina 210. Schema implementată va fi organizată diferit faţă de cele prezentate in carte, deoarece se vor folosi nuclee Xilinx (IP cores). In carte se proiectează o celulă ALU, celulă ce conţine o poartă AND, o poartă OR, un sumator elementar şi un MUX4, iar apoi aceasta celula se multiplica de 32 de ori. Schema implementată în cadrul acestui laborator se bazează pe o abordare vectorială: se desenează un bloc care conţine 32 de porţi AND, un bloc care conţine 32 de porţi OR, un sumator pe 32 de biţi plus alte module care vor fi detaliate în cele ce urmează. Apoi aceste elemente se conectează prin intermediul unui MUX4 vectorial. Toate aceste elemente vectoriale se generează folosind componenta „IP(CoreGen & Architecture Wizard), componentă care permite generarea rapidă de blocuri logice complexe.

Desfăşurarea lucrării Pasul 1: Crearea proiectului. Se face conform metodologiei prezentate în primul laborator. Proiectul se va numi AluMips. Pasul 2: Crearea schemei ALU.

1) Se creează fişierul Alu.sch, care va conţine schema unităţii logice si aritmetice. Se poate folosi drept ghid laboratorul 1.

2) Primul bloc care se va genera va conţine 32 de porţi AND cu 2 intrări. Acest bloc are intrările IA şi IB şi ieşirea O. IA, IB şi O sunt vectori de biţi de 32 de elemente. În continuare este specificat acest modul folosind un limbaj de descriere hardware (VHDL):

IA, IB : IN bit_vector (31 downto 0);

O : OUT bit_vector (31 downto 0);

for i in 0 to 31 generate

O(i) <= IA(i) AND IB (i); --adică 32 de porţi AND

END GENERATE;

Acest bloc va fi generat folosind interfaţă vizuală IP. Pentru aceasta se adaugă la proiect o nouă sursă de tip IP, cu numele v32and2, conform figurii 1.

Page 2: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Figure 1

3. Se selectează tipul nucleului: Basic Elements -> Bus Gate, ca în figura 2, apoi se apasă Next,

iar în fereastra următoare (New Source Information) Finish :

Figure 2

Va apare prima pagină a fereastrei Bus Gate. În aceasta se introduce informaţia necesară generării celor 32 de porţi AND. După introducere, trebuie să se obţină situaţia din figura 3. 2

Page 3: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Figure 3

Se apasă butonul Next, ceea ce va duce la apariţia următoarei pagini.

Figure 4

3

Page 4: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

În această fereastră se schimbă valoarea pentru Output Option de la Registered la Non Registered. Se va obţine situaţia din figura 4. Apoi se apasă butonul Generate. 4. Componenta generată, v32and2, se plasează pe schemă. Se obţine situaţia din figura 5:

Figure 5

Deoarece în urma generării automate componenta v32and2 ocupă prea mult spaţiu, aceasta se va edita conform procedurii explicate în laboratorul 2, pasul 3, Edit simbol.

Figure 6

4

Page 5: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

În procedura de editare simbol, se mută IB(31:0) la 4 pătrăţele distanţă de IA(32:0), se mută ieşirea O(32:0) ca în figura 6, iar apoi se redimensionează dreptunghiul de încadrare (fig 6). După editare, simbolul va arăta ca în figura 7.

Figure 7

Figure 8

Apoi se accesează Object Properties (fig 7) şi se marchează atributul SymbolName ca vizibil (fig. 8). 5. Urmând aceeaşi paşi ca la generarea componentei IP v32and2, se generează componenta

v32or2. Singura deosebire constă în selectarea valorii OR în loc de AND în figura 3. După editarea simbolului, marcarea ca vizibil a numelui şi plasarea pe suprafaţa de desenare se va obţine situaţia din figura 9:

Figure 9

5

Page 6: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10)

Figure 10

cu atributele din figura 11, şi se apasă Generate. În cazul în care fereastra din figura 11 nu are loc pe ecran, (în cazul rezoluţiei 1024x 768) se setează Task bar pe autohide sau se modifica rezoluţia la 1280x1024. După editarea simbolului, plasarea acestuia pe suprafaţa de editare situaţia se va prezenta ca în figura 12.

6

Page 7: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Figure 11

Figure 12

7

Page 8: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

7. Următoarea componentă care se va genera este un sumator pe 32 de biţi. Pentru aceasta adăugaţi o nouă sursă de tip IP core cu numele sum32. de tipul Adder Substracter, conform figurii 13.

Figure 13

Figure 14

8

Page 9: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Prima pagină de configurare a sumatorului este prezentată în figura 14 iar cea dea doua in figura 15.

Figure 15

Deşi s-ar fi putut genera un sumator/scăzător, acest lucru nu ar fi fost conform cu prezentarea din curs şi din suportul de curs (Hennessy şi Patterson).

9Figure 16

Page 10: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

După generarea sumatorului, simbolul aferent acestuia se va edita şi se vor face primele conexiuni între blocuri. Trebuie să se obţină situaţia din figura 16. 8. În continuare se va genera blocul care calculează complementul faţă de 1 al operandului QT.

Descrierea acestui bloc este:

I : IN bit_vector (31 downto 0);

CTRL : IN bit;

O : OUT bit_vector (31 downto 0);

for i in 0 to 31 generate

O(i) <= I(i) XOR CTRL; --adică 32 de porţi XOR

END GENERATE;

Pentru generare, se foloseşte IP core de tip Bit Bus Gate cu setările din figura 17.

Figure 17

9. Pentru a implementa ieşirea ZERO din ALU se generează o poartă OR cu 32 de intrări, folosind IP core de tip Bit Gate, conform figurii 18. ZERO este folosită de instrucţiunea BEQ.

10

Page 11: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Figure 18

Figure 19

După generarea tuturor blocurilor, acestea se plasează şi se interconectează, obţinându-se schema din figura 19.

11

Page 12: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

10. In continuare se adaugă biţii de control ai ALU notaţi în curs C2 C1 C0. C2 controlează operaţia efectuată de sumator + complementator, iar C1 şi C0 controlează selecţia muxului. De asemenea, se precizează valoarea intrării MD a muxului, intrare folosită pentru instrucţiunea SLT. Aceasta trebuie să fie zero pe poziţiile 31 până la 1 şi bitul de semn al rezultatului scăderii – SD(31) – pe poziţia 0. Mai întâi se obţine constanta zero prin plasarea pe schemă a simbolului GND de care se conectează un fir terminat în aer care se etichetează cu ‚L’, ca în figura 20

Figure 20

După obţinerea constantei, intrarea ID se setează la valoarea: L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,SD(31). Dacă nu mai ţineţi minte lucrul cu magistrale citiţi în ISE-ECS Help -> Help Topics -> Procedures -> Working with Buses, în special subcapitolul Merging Bits into a Single Bus. În urma acestor operaţii trebuie să se obţină situaţia din figura 20. 11. In funcţie de câmpurile OP şi F din cuvântul instrucţiune MIPS trebuie sintetizate semnalele

de control C(2:0). Câmpul OPCODE pentru instrucţiunile considerate in curs sunt prezentate în tabelul următor. Tot în acest tabel sunt prezentate valorile OpUAL din figura 5.14 de la pagina 327 din Hennessy.

Mnemonic

instrucţiune

Câmpul OPCODE

543210

OpUAL

10

Câmpul funcţiunii F:543210

Control UAL:

C2C1C0LW 100011 00 xxxxxx 0 1 0 SW 101011 00 xxxxxx 0 1 0 BEQ 000100 01 xxxxxx 1 1 0 ADD 000000 10 100000 0 1 0 SUB 000000 10 100010 1 1 0 AND 000000 10 100100 0 0 0 OR 000000 10 100101 0 0 1 SLT 000000 10 101010 1 1 1

12

Page 13: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

Mai întâi se vor implementa funcţiile OpUAL. Se observă că OpUAL1 este nor între toţi biţii opcodului iar OpUAL0 este identic cu OPCODE(2). Rezultă implementarea din figura 21. Atenţie: Nu puteţi desena direct magistrale! Pentru aceasta procedaţi astfel: desenaţi mai întâi poarta NOR6, apoi firele, apoi bus taps. Trageţi un fir care are alura magistralei iar apoi ataşaţi I/O marcherul OP(5:0). În acest moment firul devine magistrală. Lipiţi magistrala de bus-taps (prin drag and drop) şi numiţi firele care conectează magistrala cu intrările porţii. Tot în figura 21 apare un repetor: BUF. Acesta este necesar pentru a obţine semnalul OpUAL0, deoarece în ISE un fir nu poate avea două etichete. Acest repetor va fi eliminat la implementare.

Figure 21

12. Implementaţi funcţiile C2 C1 C0, funcţii care depind de OpUAL1, OpUAL0 şi de F(3:0). Pasul 3: Simularea schemei. Se va face simularea schemei conform procedurii descrise în laboratorul începând cu pasul 5. Simularea se va face cu următorul test bench:

AND OR ADD SUB SLT LW SW BEQ

Figure 22

13

Page 14: Organizarea Calculatoarelor LABORATOR 4 – Implementarea şi ... · 6. În continuare se generează componenta IP v32mux4 de tipul Bus Multiplexer (fig. 10) Figure 10 cu atributele

14

Dacă aţi obţinut rezultatele corecte, chemaţi profesorul pentru validare. Pasul 4: Implementare depăşire numere cu semn. Să se implementeze detecţia depăşirii de format la adunarea/scădere dacă operanzii sunt cu numere cu semn. Semnalul care indică depăşirea se numeşte Overflow. Să se verifice corectitudinea implementării prin simulare, considerându-se toate cazurile posibile.


Recommended