1 / 37

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

kamana
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. Sel A Y ALU ALU CarryOut B CarryIn 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.

  4. Sel A Y ALU ALU CarryOut B CarryIn 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.

  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 S4 S3 S2 S1 S0 Cin Operacija 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 Y <= A and B Y <= A or B Y <= A xor B Y <= /A Y <= A Y <= shl A Y <= shr A Y <= 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 0 {0},{1} {0},{1} {0},{1} {0},{1} {0},{1} {0},{1} 0 0 0 0 0 0 0 0 0 Prenosi A Inkrementuje A Sabira A i B Sabira sa Carry-em A + komplement B Oduzimanje Dekrementuje A Prenosi A AND OR XOR Komplement A Prenosi A Pomera ulevo A Pomera udesno A Prenosi 0 Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Aritmetička Jedinica Logička Jedinica Logička Jedinica Logička Jedinica Logička Jedinica Pomeračka Jedinica Pomeračka Jedinica Pomeračka Jedinica Pomeračka Jedinica

  7. Postupak projektovanja • Korišćen je behavioralarhitekturni 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. 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 ? Razdvajanjemtipova operacijana 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) Implementacija ALU-a u VHDL-u

  9. Implementacija ALU-a u VHDL-u • Konkretno rešenje ALU-a ima sposobnost da obavlja sledećih 14različ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) Logička jedinica A (7:0) 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 jednecase 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; • whenothers => LogicUnit:=(others => 'X'); • endcase 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_CarryInodređ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; • whenothers => ArithUnit := (others => 'X'); • endcase 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čkojjedinici • Selekcija se vrši na osnovu stanja signala S2 (za S2=0selektuje se izlaz aritmetičke jedinice, a S2=1selektuje se izlazlogičke jedinice) • LA_MUX : if (Sel(2) = '1') then • ALU_NoShift := LogicUnit; • else • ALU_NoShift := ArithUnit; • endif 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'); • whenothers => Pomoc := (others => 'X'); • endcase 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 prenosaCarryOut Sel (1:0) Sel (4: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. 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

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

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

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

  20. Množač Rezultat Z Množenik X Množilac Y Blok šema množača • 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. MH MF MF MF MF MF MF MF 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. 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. x7 x6 x5 x4 x3 x2 x1 x0 y0 y1 MH MF MF MF MF MF MF MH y2 MF MF MF MF MF MF MF MH y3 MF MH MF MF MF MF MF MF y4 MF MF MF MF MF MF MF MH y5 MF MF MF MF MF MF MF MH z13 z12 z11 z10 z9 z8 z7 z6 z3 z1 z0 z5 z2 z4 Blok šema množača 8x6

  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. y1 MH MF MF MF MF MF MF MH z1 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.

  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)) xorizlaz(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); • endloop; • izlaz(7) := Carry; • j := j + 1; • endloop;

  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. x7 x6 x5 x4 x3 x2 x1 x0 y0 y1 MH MF MF MF MF MF MF MH y2 MF MF MF MF MF MF MF MH y3 MF MH MF MF MF MF MF MF y4 MF MF MF MF MF MF MF MH y5 MF MF MF MF MF MF MF MH z13 z12 z11 z10 z9 z8 z7 z6 z3 z1 z0 z5 z2 z4 Tok podataka i tok upravljanja

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

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

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

  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

More Related