Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Aritmetičko logička jedinica ALU i Množač (8x6 Ripple-Carry)"— Presentation transcript:

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

2 Definicija ALU-a i tipovi operacija
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

3 Ulazni podaci ALU-a A Y B ALU prihvata sledeće tipove ulaznih signala:
Sel CarryIn CarryOut 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.

4 Izlazni podaci ALU-a A Y B Na izlazu u ALU dobijamo sledeće signale:
Sel CarryIn CarryOut 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.

5 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

6 Tablica ALU funkcija Operacija S4 S3 S2 S1 S0 Cin Carry Out Funkcija
Implementacioni blok Y <= A Y <= A + 1 Y <= A + B Y <= A + B + 1 Y <= A + /B Y <= A + /B + 1 Y <= A - 1 Y <= A and B Y <= A or B Y <= A xor B Y <= /A Y <= shl A Y <= shr A Y <= 0 {0},{1} Prenosi A Inkrementuje A Sabira A i B Sabira sa Carry-em A + komplement B Oduzimanje Dekrementuje A AND OR XOR Komplement A Pomera ulevo A Pomera udesno A Prenosi 0 Aritmetička Jedinica Logička Jedinica Pomeračka Jedinica

7 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.

8 Implementacija ALU-a u VHDL-u
Koji je pristup korišćen ? ALU je modelovana fragmentacijom strukture na : logičku jedinicu aritmetič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)

9 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 is port ( 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;

10 Struktura ALU-a Sel (4:0) Sel (4:3) Sel (1:0) Sel (2) A (7:0) B (7:0)
Logička jedinica B (7:0) Y (7:0) Pomerač mux Aritmetička jedinica CarryOut CarryIn

11 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) is when "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

12 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

13 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') then ALU_NoShift := LogicUnit; else ALU_NoShift := ArithUnit; end if LA_MUX; **napomena signali ALU_NoShift, LogicUnit i ArithUnit su interni

14 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) is when "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

15 Scenario toka podataka i toka upravljanja
1. Na ulaz ALU-a dovodimo ulazne signale A i B 2. Na ulaz dovodimo i ulazni prenos CarryIn 3. Selektorskim ulazima S0 i S1 biramo koja će se operacija izvršiti nad ulaznim podacima 4. Signali S0,S1 i CarryIn predstavljaju kod operacije koja će se izvršiti u aritmet. jedinici 5. Signali S0,S1 predstavljaju kod operacije koja će se izvršiti u logičkoj jedinici 6. Selektorski ulaz S2 upravlja multiplekserom, i njime se bira signal koji će biti propušten do pomerača 7. S2=0 označava aritmetičku jedinicu dok S2=1 označava logičku jedinicu 8. Selektorskim signalima S3 i S4 upravlja se pomeračem 9. Na izlazu pomerača se dobija izlazni signal Y i signal izlaznog prenosa CarryOut Sel (4:0) Sel (1:0) Sel (2) Logička jedinica Sel (4:3) A (7:0) B (7:0) Y (7:0) Shifter mux Aritmetička jedinica CarryOut CarryIn

16 Testiranje ALU-a 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)

17 Testiranje ALU-a Pokrenuti waveform za testiranje
Desnim klikom na waveform – add signals dodati signale

18 Testiranje ALU-a Desnim klikom na signal izabrati Stimulators i postaviti vrednost signala po bitovima Proveriti dobijene rezultate sa tablicom funkcija ALU-a

19 Definicija Množač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). Množač Množenik X Množilac Y Rezultat Z

20 Blok šema množača Rezultat Z Množač Množenik X Množilac Y
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

21 Postupak množenja 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

22 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.

23 Postupak rešavanja 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.

24 Postupak modelovanja 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 is port ( X: in unsigned (7 downto 0); Y: in unsigned (5 downto 0); Z: out unsigned (13 downto 0) ); end entity multipliers;

25 Postupak modelovanja (nastavak)
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. MF MH Ripple-Carry sabirač

26 Struktura MH modula MH modul predstavlja dvobitni sabirač, realizovan pomoću kola polusabirača i jednog AND kola. sum_out <= ((x_bit and z_bit) xor sum_in); c_out := ((x_bit and z_bit) and sum_in);

27 Struktura MF modula MF modul predstavlja dvobitni sabirač, realizovan pomoću kola potpunog sabirača i jednog AND kola. 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 );

28 Blok šema množača 8x6 y0 x0 x1 x2 x3 x4 x5 x6 x7 z0 y1 z1 y2 z2 y3 z3
MH MF y1 z1 MH MF y2 z2 MH MF y3 z3 MH MF y4 z4 MH MF y5 z5 z6 z7 z8 z9 z10 z11 z12 z13

29 Princip rešavanjna problema u VHDL-u (prvi stepen)
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. x7 x6 x5 x4 x3 x2 x1 x0 y0 z0

30 Princip rešavanjna problema u VHDL-u (drugi stepen)
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. MH MF y1 z1

31 Princip rešavanjna problema u VHDL-u
(treći stepen i ostali nivoi do kraja) 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;

32 Princip rešavanjna problema u VHDL-u
(treći stepen i ostali nivoi do kraja) 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

33 Tok podataka i tok upravljanja
y0 x0 x1 x2 x3 x4 x5 x6 x7 z0 MH MF y1 z1 MH MF y2 z2 MH MF y3 z3 MH MF y4 z4 MH MF y5 z5 z6 z7 z8 z9 z10 z11 z12 z13

34 Testiranje ALU-a 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)

35 Testiranje ALU-a Pokrenuti waveform za testiranje
Desnim klikom na waveform – add signals dodati signale

36 Testiranje ALU-a Desnim klikom na signal izabrati Stimulators i postaviti vrednost signala po bitovima Proveriti dobijene rezultate

37 Zaključak 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


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

Similar presentations


Ads by Google