Digitaalipiirit/Aritmeettis-looginen yksikkö eli ALU

ALUn tehtävät

muokkaa

Aritmeettisloogisen yksikön (ALU) suoritettavaksi annettavia tehtäviä ovat laskenta (yhteen-, vähennys-, kerto- ja jakolaskut) ja loogisten operaatioiden suorittaminen. ALU on prosessorin perusrakenne osa, jopa yksikertaisimmat mikroprosessorit sisältävät ALUn, esimerkiksi ajastimen virkistämiseksi. Prosessori voi sisältää sen monimutkaisuudesta riippuen useita aritmeettisloogisia yksiköitä.

Yksinkertainen ALU

muokkaa

Suurin osa aritemeettisloogisista yksiköistä tekee seuraavia tehtäviä:

  • Yhteen- ja vähennyslaskut kokonaisluvuilla, monimutkaisemmat osaavat kerto- ja jakolaskutkin (vain kalliimmat)
  • Loogiset operaatiot (JA, TAI, EI ja EHDOTON-TAI)
  • Bittien siirto-ja pyöristysoperaatiot

Esimerkissä käytetään yksiköiksi jaettua 4-bittistä ALUa, joka on esitetty kokonaisuudessaan VHDL- koodilla VHDL-kieli_FPGA-suunnittelussa/4-bittinen_ALU.

Lohkokaavio

muokkaa

 

Kukin esimerkin ALU:ssa olevista toimintatavoista on jaettua omaksi yksikökseen.
Eri toimintatapaa vastaava toimintayksikkö valitaan demultiplekserillä. Demultiplekseri toimii päin vastoin kuin multiplekseri, eli sillä voidaan valita useista lähdöistä yksi. Tässä käytetään 3-bittistä demultiplekseri kahdeksan eri toimintatavan valintaan.
Toimintayksiköt ovat VHDL- kielellä luotuja piirikaaviosymboleita, joissa oletus arvoisesti kaikki lähdöt on nollia (0).

Tuloina ALU:ssa toimii :

  • Operation, jolla valitaan toimintatila, ohessa taulukko.
  • Nibble1 ja Nibble2, joille tehdään Operation -tulolla valittu vertailu- tai laskuoperaatio.

ALUn operaatiot (Operation- tulo) ja toimintatapa

Operation Toimintatapa
000 Tulojen aritmeettinen yhteenlasku
001 Tulojen erotus, jos Nibble2- tulo on suurempi kuin Nibble1- tulo, niin ylivuoto (Flag)
010 Tulojen JA (AND)
011 Tulojen TAI (OR)
100 Tulojen eksklusiivinen TAI (XOR)
101 Tulon Nibble1 EI (NOT Nibble1)
110 Tulon Nibble2 EI (NOT Nibble2)
muut Tulojen aritmeettinen erotus


ALU lähdöt:

  • Carry, jota käytetään mm. Summa -funktion tulossa, silloin kun operaation tulos ylittää Result -tulon väyläleveyden
  • Flag, kertoo vähennyslaskussa laskutoimituksen suunnan, Result = Nibble1 - Nibble2 => Flag = 0 vastaavasti Result = Nibble2 - Nibble1 => Flag = 1
  • Result -väylä, johon tulee varsinainen toimintatilan mukainen operaation tulos.

Simulaatio tulos

muokkaa

 

Kuten simulaatiotuloksesta nähdään tulojen Operation ollessa 2 (010) ja Nibble1 on F (1111), Nibble2 on 6 (0110) on lähtö Result 6 (0110).
Operation 0 (000) tarkoittaa SUM -operaatiota ja tällöin lähtö Result = 1010 (A) SUM 1100 (C) = 0110 (6) ja Carry = 1, koska oikea tulos on 10110 (16).
Operation 2 (010) tarkoittaa AND -operaatiota ja tällöin lähtö Result = 1111 (F) AND 0110 (6) = 0110 (6).
Operation 3 (011) tarkoittaa OR -operaatiota ja tällöin lähtö Result = 1000 (8) OR 0011 (3) = 1011 (B).