Digitaalipiirit/Aritmeettis-looginen yksikkö eli ALU
ALUn tehtävät
[muokkaa | muokkaa wikitekstiä]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 | muokkaa wikitekstiä]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 | muokkaa wikitekstiä]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 | muokkaa wikitekstiä]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).