37
Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry) tori: Milena Dukić 10204 Iva Ćirković 10180

Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

  • Upload
    kamana

  • View
    55

  • Download
    1

Embed Size (px)

DESCRIPTION

Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry). Autori: Milena Dukić 10204 Iva Ćirković 10180. Definicija ALU-a i tipovi operacija. - PowerPoint PPT Presentation

Citation preview

Page 1: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-

Carry)

Autori: Milena Dukić 10204 Iva Ćirković 10180

Page 2: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

ALU je kombinaciona logička mreža, i deo je centralne procesorske jedinice koja izvršava veći broj aritmetičkih i logičkih operacija nad ulaznim podacima celobrojnog tipa.

Tipovi operacija koje ALU, u konkretnom slučaju, izvršava su:

Logičke operacije AND OR XOR Komplement

Aritmetičke operacije

+ sabiranje

- oduzimanje

Definicija ALU-a i tipovi operacija

Page 3: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Ulazni podaci ALU-a

ALU prihvata sledeće tipove ulaznih signala:

Ulazne operande A i B: n-to bitni podaci nad kojim se izvršavaju aritmetičke i logičke operacije.

Ulazni prenos CarryIn: jednobitna informacija, koja predstavlja ulazni prenos.

Selektorski ulazi: k-to bitna informacija koja definiše tip operacije koju obavlja ALU.

ALU

A

B

Y

Sel

CarryIn

CarryOut

ALU

Page 4: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Izlazni podaci ALU-a

Na izlazu u ALU dobijamo sledeće signale:

Izlazni signal Y: n-to bitni signal koji predstavlja rezultat operacije obavljene nad ulaznim operandima.

Izlazni prenos CarryOut: jednobitni signal koji odgovara izlaznom prenosu aritmetičkih operacija.

ALU

A

B

Y

Sel

CarryIn

CarryOut

ALU

Page 5: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Zadatak

Modelovati Aritmetičko Logičku Jedinicu (ALU), koja će:

- kao ulazne podatke prihvatati:

dva 8-bitna operanda A i B,

jednobitni ulazni prenos CARRY_IN iz prethodne operacije

- kao izlaze generisati:

8-bitni rezultat obavljenje operacije Z,

jednobitni izlazni prenos aritmetičke operacije CARRY_OUT,

-za upravljanje radom ALU-a koristi se:

5-bitni selektorski signal SEL

Page 6: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Tablica ALU funkcija

Aritmetička JedinicaAritmetička JedinicaAritmetička JedinicaAritmetička JedinicaAritmetička JedinicaAritmetička JedinicaAritmetička JedinicaAritmetička Jedinica

Logička JedinicaLogička JedinicaLogička JedinicaLogička Jedinica

Pomeračka JedinicaPomeračka JedinicaPomeračka JedinicaPomeračka Jedinica

Prenosi AInkrementuje ASabira A i BSabira sa Carry-emA + komplement BOduzimanjeDekrementuje APrenosi A

ANDORXORKomplement A

Prenosi APomera ulevo APomera udesno APrenosi 0

0{0},{1}{0},{1}{0},{1}{0},{1}{0},{1}{0},{1}0

0000

0000

Y <= AY <= A + 1Y <= A + BY <= A + B + 1Y <= A + /BY <= A + /B + 1Y <= A - 1Y <= A

Y <= A and BY <= A or BY <= A xor BY <= /A

Y <= AY <= shl AY <= shr AY <= 0

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0

Implementacioni blok

FunkcijaCarry Out

OperacijaS4 S3 S2 S1 S0 Cin

Page 7: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Postupak projektovanja

Korišćen je behavioral arhitekturni model koji opisuje samo ponašanje komponente, zanemarujući njenu unutrašnju strukturu

Kombinaciona logika, kojom je modelovan konkretan ALU, trenutno reaguje na promene ulaznih signala.

Page 8: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Implementacija ALU-a u VHDL-u

Koji je pristup korišćen ?

ALU je modelovana fragmentacijom strukture na :logičku jedinicuaritmetičku jedinicu pomeračku jedinicu

Šta je prednost ovog pristupa ?

Razdvajanjem tipova operacija na aritmetičke, logičke i operacije pomeranja obezbedilo je lakše kreiranje VHDL kôda

Razdvajanjem ALU-a na pomerač, aritmetičku i logičku jedinicu poboljšale su se performanse sa aspekta brzine rada (kraće je vreme propagacije signala)

Page 9: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Implementacija ALU-a u VHDL-u Konkretno rešenje ALU-a ima sposobnost da obavlja sledećih 14 različitih

operacija : osam aritmetičkih

četiri logičke

dve pomeračke

Ulazni operandi : A i B kao osmobitni

CarryIn jednobitni

Izlazni operandi : Y osmobitni

CarryOut jednobitni

Selektorski ulazi : Sel kao petobitni

entity ALU isport ( Sel: in unsigned(4 downto 0); CarryIn: in std_logic; A,B: in unsigned(7 downto 0); Y: out unsigned(7 downto 0); CarryOut: out std_logic);

end ALU;

Page 10: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Struktura ALU-a

Logičkajedinica

Aritmetičkajedinica

Pomerač

Sel (4:0)Sel (1:0) Sel (2) Sel (4:3)

A (7:0)

B (7:0)

CarryIn

Y (7:0)mux

CarryOut

Page 11: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Implementacija logičke jedinice

Logička jedinica modelovana je korišćenjem jedne case naredbe

Na osnovu selektorskih ulaza, Sel(1:0), određuje se operacija koja će se izvršiti

LOGIC_UNIT: case Sel(1 downto 0) iswhen "00" => LogicUnit := AA and BB;when "01" => LogicUnit := AA or BB;

when "10" => LogicUnit := AA xor BB;when "11" => LogicUnit := not AA;when others => LogicUnit:=(others => 'X');

end case LOGIC_UNIT;

**napomena : signali AA, BB i LogicUnit su interni signali

Page 12: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Implementacija aritmetičke jedinice Aritmetička jedinica modelovana je korišćenjem case naredbe

Na osnovu internog signala Sel0_1_CarryIn određuje se aritmetička operacija koja će se izvršiti nad ulaznim operandima

Sel0_1_CarryIn := Sel(1 downto 0) & CarryIn;ARITH_UNIT: case Sel0_1_CarryIn is

when "000" => ArithUnit := AA;when "001" => ArithUnit := AA + 1;when "010" => ArithUnit := AA + BB;when "011" => ArithUnit := AA + BB + 1;when "100" => ArithUnit := AA + not BB;when "101" => ArithUnit := AA - BB;when "110" => ArithUnit := AA - 1;when "111" => ArithUnit := AA;when others => ArithUnit := (others => 'X');

end case ARITH_UNIT; **napomena : signali AA, BB i ArithUnit su interni signali

Page 13: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Multiplekser-MUX između jedinica

Mux bira izlaz iz aritmetičke ili logičke jedinice i usmerava ga ka pomeračkoj jedinici

Selekcija se vrši na osnovu stanja signala S2 (za S2=0 selektuje se izlaz aritmetičke jedinice, a S2=1 selektuje se izlaz logičke jedinice)

LA_MUX : if (Sel(2) = '1') thenALU_NoShift := LogicUnit;

elseALU_NoShift := ArithUnit;

end if LA_MUX;

**napomena signali ALU_NoShift, LogicUnit i ArithUnit su interni

Page 14: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Pomeračka (shift) jedinica

Izbor operacije u pomeračkoj jedinici vrši se na osnovu selektorskog signala Sel(4:3)

SHIFT : case Sel(4 downto 3) iswhen "00" => Pomoc := ALU_NoShift;when "01" => Pomoc := Shift_left(ALU_NoShift, 1);when "10" => Pomoc := Shift_right(ALU_NoShift, 1);when "11" => Pomoc := (others => '0');when others => Pomoc := (others => 'X');

end case SHIFT;

**napomena: signal Pomoc je interni signal

Page 15: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Logičkajedinica

Aritmetičkajedinica

Shifter

Sel (4:0) Sel (1:0) Sel (2)

Sel (4:3)A (7:0)

B (7:0)

CarryIn

Y (7:0)

mux

CarryOut

1. Na ulaz ALU-a dovodimo ulazne signale A i B

Scenario toka podataka i toka upravljanja

2. Na ulaz dovodimo i ulazni prenos CarryIn3. Selektorskim ulazima S0 i S1 biramo koja će se operacija izvršiti nad ulaznim podacima4. Signali S0,S1 i CarryIn predstavljaju kod operacije koja će se izvršiti u aritmet. jedinici5. Signali S0,S1 predstavljaju kod operacije koja će se izvršiti u logičkoj jedinici6. Selektorski ulaz S2 upravlja multiplekserom, i njime se bira signal koji će biti propušten do pomerača7. S2=0 označava aritmetičku jedinicu dok S2=1 označava logičku jedinicu8. Selektorskim signalima S3 i S4 upravlja se pomeračem9. Na izlazu pomerača se dobija izlazni signal Y i signal izlaznog prenosa CarryOut

Page 16: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Pokrenuti VHDL i učitati ALU projekat

Selektovati ime koda na levoj strani ekrana koji želimo da pokrenemo (u ovom slučaju to je alu.vhd)

Testiranje ALU-a

Page 17: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Pokrenuti waveform za testiranje

Desnim klikom na waveform – add signals dodati signale

Testiranje ALU-a

Page 18: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Desnim klikom na signal izabrati Stimulators i postaviti vrednost signala po bitovima

Proveriti dobijene rezultate sa tablicom funkcija ALU-a

Testiranje ALU-a

Page 19: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Definicija : Množač predstavlja kombinacionu logičku mrežu, koja prihvata na ulazu dva binarna n-to bitna podatka, množenik X i množilac Y, a na izlazu generiše 2n-bitni rezultat Z.

Rezultat predstavlja proizvod množenika i množioca (Z=X*Y).

Definicija Množača 8x6 Ripple-Carry

MnožačMnoženik X

Množilac Y

Rezultat Z

Page 20: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Množenik X, prvi operand predstavljen n-bitnim signalom na ulazu množača

Množilac Y, drugi operand predstavljen n-bitnim signalom na ulazu množača

Rezultat Z, predstavlja rezultat množenja u obliku 2n-bitnog signala na izlazu množača

Blok šema množača

MnožačMnoženik X

Množilac Y

Rezultat Z

Page 21: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Kao i kod decimalnog množača, prvo se formira parcijalni proizvod bita najmanje težine množilaca (Y0) sa svim bitovima množenika.

Postupak se ponavlja za svaki sledeći bit množioca.

U svakom koraku vrši se pomeranje parcijalnog proizvoda za jednu binarnu poziciju ulevo u odnosu na prethodni proizvod, kako bi proizvodi bili pozicionirani u skladu sa težinama bitova množioca.

Da bi dobili konačan rezultat, svi parcijalni proizvodi se sabiraju

Postupak množenja

Page 22: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Zadatak

Modelovati množač 8x6, koji će na ulazu imati kao operande 8-bitni množenik A i 6-bitni množilac B, na izlazu će se dobiti 14-bitni signal Z koji predstavlja rezultat množenja signala na ulazu.

Page 23: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

U ovom primeru realizovan je množač koji obavlja množenje neoznačenih celih brojeva.

Ulazni podaci, množenik i množilac su osmobitni i šestobitni, respektivno, dok je izlazni podatak četrnaestobitni.

Množenje se obavlja prema algoritmu množenja počev od cifre najmanje težine množioca, formiranjem parcijalnih proizvoda počev od proizvoda najmanje težine i njihovim sabiranjem.

Postupak rešavanja

Page 24: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

U konkretnom slučaju za modeliranje množača korišćena je arhitektura specificirana na behavioral nivou, koja opisuje ponašanje komponente, zanemarujući njenu unutrašnju strukturu.

Imajući u vidu da je množač kombinaciona logička mreža, za sintezu je korišćena kombinaciona logika (bez vremenskih parametara, sve operacije koje se obavljaju trenutno reaguju na promenu ulaznih signala)

entity multipliers isport (

X: in unsigned (7 downto 0);Y: in unsigned (5 downto 0);Z: out unsigned (13 downto 0)

);end entity multipliers;

Postupak modelovanja

Page 25: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Množača tipa 8x6 bita, implementiran je korišćenjem paralelnih sabirača sa serijskim prenosom (RCA-Ripple-Carry Adder)

Ripple Carry sabirač čine 8 dvobitnih sabirača serijski povezani u nizu.

Postupak modelovanja (nastavak)

MFMFMFMFMFMFMF MH

Ripple-Carry sabirač

Page 26: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

MH modul predstavlja dvobitni sabirač, realizovan pomoću kola polusabirača i jednog AND kola.

Struktura MH modula

x _ b ity _ b itsu m _ in

su m _ o u t

c_ o u tc_ o u t

su m _ o u t

c_ in

x _ b ity _ b it

H a lfad d e r

H a lfad d e r

ili

sum_out <= ((x_bit and z_bit) xor sum_in);c_out := ((x_bit and z_bit) and sum_in);

Page 27: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

MF modul predstavlja dvobitni sabirač, realizovan pomoću kola potpunog sabirača i jednog AND kola.

Struktura MF modula

sum_out <= ((x_bit and y_bit) xor sum_in) xor c_in;c_out := ((x_bit and y_bit) and sum_in) or (((x_bit and y_bit) xor sum_in) or c_in );

x _ b ity _ b itsu m _ in

su m _ o u t

c_ o u tc_ in

F u llad d e r

Page 28: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Blok šema množača 8x6

y0

x0x1x2x3x4x5x6x7

z0

MHMFMFMFMFMFMFMF

y2

z2

MHMFMFMFMFMFMFMF

y3

z3

MHMFMFMFMFMFMFMF

y4

z4

MHMFMFMFMFMFMFMF

y5

z5z6z7z8z9z10z11z12z13

MHMFMFMFMFMFMFMH

y1

z1

Page 29: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Prvi parcijalni proizvod se dobija množenjem Y0 bita sa signalom X(X7:X0)

Množenje se obavlja AND kolom

Bit najmanje težine, prvog parcijalnog proizvoda, direktno upisujemo u izlazni signal na mestu bita najmanjne težine Z0.

Rezultat množenjna upisujemo u pomoćnu promenljivu tipa vektor veličine 8 bita.

Princip rešavanjna problema u VHDL-u

(prvi stepen)

y0x0x1x2x3x4x5x6x7

z0

Page 30: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Za sabiranje parcijalnih proizvoda koristi se paralelni sabirač sa serijskim prenosom(Ripple Carry sabirač) koji je realizovan pomoću MH i MF modula

Na ulaz sabirača se dovode signali :

bit Y1

signal X(X7:X0)

pomoćnu promenljivu - signal proizvoda iz predhodnog stepena

Bit najmanje težine proizvoda, direktno upisujemo u izlazni signal na mestu bita težine Z1.

Rezultat množenjna upisujemo u pomoćnu promenljivu tipa vektor veličine 8 bita.

Princip rešavanjna problema u VHDL-u

(drugi stepen)

MHMFMFMFMFMFMFMH

y1

z1

Page 31: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Predhodni postupak ponavljamo do kraja, u naredna četri stepena.

j := 2;for h in 1 to 4 loop

Z(h+1) <= ((X(0) and Y(h+1)) xor izlaz(0));Carry := ((X(0) and Y(h+1)) and izlaz(0));for i in 1 to 7 loop

izlaz(i-1) := ((X(i) and Y(j)) xor izlaz(i)) xor Carry;Carry := ((X(i) and Y(j)) and izlaz(i)) or (((X(i) and Y(j)) xor izlaz(i)) and

Carry);end loop; izlaz(7) := Carry;j := j + 1;

end loop;

Princip rešavanjna problema u VHDL-u

(treći stepen i ostali nivoi do kraja)

Page 32: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Na kraju, sadržaj pomoćne promenljive upisujemo u izlazni signal.

Z(6) <= izlaz(0);Z(7) <= izlaz(1);Z(8) <= izlaz(2);Z(9) <= izlaz(3);Z(10) <= izlaz(4);Z(11) <= izlaz(5);Z(12) <= izlaz(6);Z(13) <= izlaz(7);

Time je postupak množenja završen

Princip rešavanjna problema u VHDL-u

(treći stepen i ostali nivoi do kraja)

Page 33: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Tok podataka i tok upravljanja

y0

x0x1x2x3x4x5x6x7

z0

MHMFMFMFMFMFMFMF

y2

z2

MHMFMFMFMFMFMFMF

y3

z3

MHMFMFMFMFMFMFMF

y4

z4

MHMFMFMFMFMFMFMF

y5

z5z6z7z8z9z10z11z12z13

MHMFMFMFMFMFMFMH

y1

z1

Page 34: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Pokrenuti VHDL i učitati MULTIPLIERS projekat

Selektovati ime koda na levoj strani ekrana koji želimo da pokrenemo (u ovom slučaju to je multipliers.vhd)

Testiranje ALU-a

Page 35: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Pokrenuti waveform za testiranje

Desnim klikom na waveform – add signals dodati signale

Testiranje ALU-a

Page 36: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

Desnim klikom na signal izabrati Stimulators i postaviti vrednost signala po bitovima

Proveriti dobijene rezultate

Testiranje ALU-a

Page 37: Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)

VHDL je jedan od najčešće korišćenih jezika za opis hardware-a (standard IEEE 1076)

Prednosti upotrebe VHDL-a :

jednostavna i efikasna implementacija

skraćeno vreme dizajniranja

lakša detekcija grešaka

jednostavno testiranje

visok nivo apstrakcije

maksimalno tačan i pouzdan dizajn uz najmanju cenu u najkraćem roku razvijanja

Zbog svojih prednosti VHDL se često koristi za dizajniranje komponenata, i razvoj složenih sistema

Zaključak