Kombinatorisen logiikan laitteet Kombinatorinen logiikka tarkoittaa logiikkaa, jossa signaali kulkee suoraan sisääntuloista ulostuloon Sekventiaalisessa logiikassa myös aiemmat syötteet vaikuttavat ulostuloon (muisti) Käsiteltävät piireihin kuuluvat mm. yhteenlaskimet, ALUt, dekooderit, vertailijat ja rotaatiopiirit
Kombinatorisen logiikan laitteet In C o m b in a tio n a l L o g ic C irc u it In O ut C o m b in a tio n a l L o g ic C irc u it S ta te C o m b in a tio n a l O u t = f ( In ) S e q u e n tia l O u t = f ( I n, P r e v io u s I n ) O ut
Yhteenlasku Yhteenlasku tapahtuu -järjestelmässä laskemalla luvun kaksi alinta numeroa yhteen ja siirtämällä mahdollinen muistinumero seuraavaksi ylempien numeroiden yhteenlaskuun Biteillä lasku tapahtuu samalla tavalla, mutta vaihtoehtoja tulokselle on vähän syötebiteillä on vain 4 erilaista mahdollista arvoa
Yhteenlasku Piireissä erityinen huomio kohdistuu muistinumeroon jos bittejä on monta, saadaan ylimpien bittien yhteenlaskuun tarvittava muistibitti vasta kun alemmat bitit on laskettu yhteen Yhteenlaskupiireissä optimointi tarkoittaa muistibitin polun lyhentämisen ja piirin koon tasapainottamista Tasapainon määrää piirin aikakriittisyys suorituspolulla
Eri yhteenlaskimia Ripple-carry adder Koko pienin, nopeus hitain Muistibitti siirtyy aina alemmasta laskennasta ylempään Carry-look-ahead generator Lasketaan muistibitin arvoa eteenpäin Lisää veräjiä, mutta nopeampi suoritus
Yhteenlasku 2:n komplementilla Yhteenlasku onnistuu helposti 2:n komplementtiesityksessä Jos laskusta saadaan muistibitti, se heitetään pois Jos operandien merkki on sama, mutta tuloksen eri, on kyseessä ylivuoto
Yhteenlasku 2:n komplementilla Totuustaulu esittää yhteenlaskimen toiminnan bittien A ja B yhteenlaskulle, kun otetaan muistibitti huomioon Jos A ja B ovat nollia, ei muistibittiä välitetä Jos A B, välitetään muistibitti eteenpäin Jos A=B=, luodaan muistibitti
Yhteenlasku 2:n komplementilla Määritellään seuraavat funktiot: Generate: Gi = Ai Bi Propagate: Pi = Ai Bi Delete: Di = A i B I
Full adder A C in B F u ll adder C out Sum Määritellään seuraavat funktiot: Generate: Gi = Ai Bi Propagate: Pi = Ai Bi Delete: Di = A i B I S = A B C i = A B C i + A B C i + A B C i + A B Ci C o = A B + B C i + A C i Summa ja Carry-out voidaan nyt ilmaista seuraavasti: S (G,P) = P Ci Co (G,P) = G + PCi
Ripple-carry adder Pahimmassa tapauksessa viive on td=o(n), missä n=bittien lukumäärä Monessa tilanteessa turhan hidas Yhteenlaskua suoritetaan prosessorissa koko ajan
Carry-look-ahead adder Hitaus ripple-carryssa johtui siitä, että laskennan piti edetä biteittäin vähiten merkitsevistä eniten merkitseviin bitteihin Tilanne voidaan korjata laatimalla kaavat muistibitin laskemiseen eteenpäin, ei siis vain seuraavaa bittiä varten C = G + PC C2 = G + PC = G + PG + PPC C3 = G2 + P2C2 = G2 + P2G + P2PG + P2PPC C4 = G3 + P3C3= G3 + P3G2 + P3P2G + P3P2PG + P3P2PPC
Carry-look-ahead (CLA) adder Nyt voidaan adderiin lisätä logiikkaa, joka osaa laskea lyhyellä suorituspolulla muistibitit Sen tuloksena voidaan yhteenlasku suorittaa biteittäin rinnakkain eikä peräkkäin Yleensä lasketaan 4 bittiä eteenpäin Jos tarvitaan enemmän bittejä, voidaan laatia muistibitin laskijoista hierarkia, jossa tarvitaan log4 n tasoa (n=bittien määrä)
Carry-look-ahead adder Aiempi kaava oli C = G + PC C2 = G + PC = G + PG + PPC C3 = G2 + P2C2 = G2 + P2G + P2PG + P2PPC C4 = G3 + P3C3= G3 + P3G2 + P3P2G + P3P2PG + P3P2PPC Se voidaan myös kirjoittaa muotoon Generate G*= G3 + P3G2 + P3P2G + P3P2PG Propagate P*=P3P2PP ja C4 = G* + P*C Tämä on Carry-look-ahead generator, jolla voidaan laskea C4 suoraan ilman tarvetta laskea C..C3:a
Carry-look-ahead adder
Carry-look-ahead adder
CLA viive vs ripple-carry viive
Carry-look-ahead adder C a r r y C h a in C (X,Y ) to C 4 R ip p le D e la y 9,2 (2 3,4 ) O n e -L e v e l C L A 4,8 ( 3, ) T w o -L e v e l C L A 4,8 ( 3, ) C (X,Y ) to C 8 3 8,4 (4 2,6 ) 9,6 ( 7,8 ) 5,6 ( 6,2 ) C ( X,Y ) to C 2 5 7,6 (6,8 ) 4,4 (2 2,6 ) 6,4 ( 7, ) C ( X,Y ) to C 6 7 6,8 (8, ) 9,2 (2 7,4 ) 4,8 ( 9,4 )
Kertolasku binaariluvuilla x + M u lt ip lic a n d M u lt ip lie r P a r t ia l p r o d u c t s R e s u lt
Kertolasku binaariluvuilla x xy 2 x3 x2 x x y4 y3 y2 y y x 4y x 3y x 2y x y x y xy 2 x 4y x 3y x 2y x y x y + xy2 22 x 4y 2 x 3y 2 x 2y 2 x y 2 x y 2 xy3 23 x 4y 3 x 3y 3 x 2y 3 x y 3 x y 3 xy4 24 x 4y 4 x 3y 4 x 2y 4 x y 4 x y 4 z9 x4 z8 z7 z6 z5 z4 z3 z2 z z
Kertolasku binaariluvuilla Kertolasku voidaan suorittaa addereilla Tässä ratkaisussa kriittisiä polkuja on monia: sekä summa- että X3 muistipolut X X 3 FA Z 7 3 6 X 3 X FA X X X 2 X X X FA 5 Y H A Z 4 X Y Z 3 3 Z 2 2 Z Y Y H A H A X FA FA Z X H A FA 2 X 2 2 FA FA Z X Z
Carry-save multiplier H A H A HA H A HA FA FA F A HA FA FA FA FA F A H A H A V e c t o r M e r g in g A d d e r Carry-save multiplierissa muistibitit siirtyvät vertikaalisesti
Wallace-tree multiplier y y 2 C FA y C y 3 i FA C i FA C y y 2 i 3 y 4 y 5 FA C i C i C i C i C i 4 C y y FA C y y i FA i C i 5 FA i FA C S Normaali carry-save C S Wallacen puurakenne
Wallace-tree multiplier
2:n komplementin vähennin Vähennyslasku voidaan tehdä siten, että otetaan B:stä komplementti, lisätään ja lasketaan A:n kanssa yhteen Tässä tapauksessa :n lisääminen onnistuu parhaiten laittamalla sisääntulomuistibitti ykköseksi
Logical unit LU Tavoitteena on saada loogiset funktiot samaan piiriin Jos on kaksi muuttujaa, saadaan totuustaulukkoon 4 riviä (mintermiä) Mintermeistä saadaan 24=6 erilaista kombinaatiota Kukin näistä vastaa yhtä mahdollista funktiota, jonka LU voi toteuttaa Haluttu funktio valitaan 4:llä kontrollibitillä
LU
ALU ALU suorittaa laskennan, eli aritmetiikan (+, -) sekä loogiset funktiot Se koostuu loogisesta summaimista sekä loogisesta ja aritmeettisesta osasta aritmeettinen osa huolehtii syötteiden käsittelystä aritmetiikan aikaansaamiseksi Looginen osa vastaavasti huolehtii logiikasta Kontrollibiteillä valitaan, halutaanko käyttää logiikkaa vai aritmetiikkaa (M) ja mikä funktio valitaan (SS)
ALU ALUmme pystyy siis suorittamaan 4 aritmeettista (+, -, increment ja decrement)ja 4 loogista operaatiota (AND, OR, NOT, identiteetti) syötteille Tarvitaan kolme kontrollibittiä valintaan Aritmeettiset operaatiot perustuvat yhteenlaskuun
Arithmetic extender Kontrollibitti M valitsee logiikan tai aritmetiikan välillä S ja S valitsevat halutun funktion c:aa käytetään aritmetiikassa X on syöte A, Y syöte B
AE:n johto
Logic extender LE:ssä toiminta kuten AE:ssä paitsi C on aina Y on aina (ei tarvita yhteenlaskua)
Logic extender
4-bittinen ALU
Dekooderi Dekooderi aktivoi n-bittisen osoitteen mukaan täsmälleen yhden 2n ulostulosta Laitteessa on myös Enable-syöte
4- bittinen dekooderi
3-8 dekooderi Dekooderissa on 3 osoitelinjaa ja 8 ulostuloa Se voidaan toteuttaa monella tavalla
Multiplekseri Multiplekseriä käytetään valitsemaan yksi sisääntulo monesta mahdollisesta Jos sisääntuloja on n, tarvitaan log2 n kontrollibittiä
4- Multiplekseri
8- Multiplekseri Tämä voidaan koota modulaarisesti pienemmistä osista
Väylä (Bus) Väylä liittää laitteita yhteen Vain yksi laite voi lähettää tietoa väylälle kerrallaan Väylälle kytkeydytään kolmitilaisen ajurin kautta Ajuria kontrolloi enable-bitti Kun enable on, on ajurin arvo Z (irti väylästä) Väylän käyttämiseen tarvittava logiikka tapahtuu ylemmällä tasolla
Priority Encoder Enkooderi saa monta syötettä, joista tasan yksi on kerrallaan Enkooderi antaa ulos tiedon siitä, mikä syöte oli Tieto annetaan binaarilukuna, joka kertoo syötteen numeron Ulostulo Any on, jos joku syöte on
4-2 enkooderi
8-3 enkooderi Monimutkaisemman enkooderin voi hierarkisesti koostaa useasta pienemmästä enkooderista ja selektorista
Vertailu Eräs usein tarvittu toiminto on kahden luvun suuruuksien vertailu Tämä kannattaa siis toteuttaa raudalla G=, A>B G=, A B L=, A<B L=, A B A=B: L= ja G= A B: L= ja G=
8-bittinen komparaattori N-bittisen (n>2) komparaattorin toiminnan pohjana on kaava Tässä Gi- on alempien bittien vertailu G ja vastaavasti Li- on alempien bittien L
Shiftit ja rotaatiot Eräs usein tarvittava operaatio on binaariluvun shiftaus ja rotaatio Shift: -> (vasen),-> (oikea) Rotaatio: -> (oikea), -> (vasen)
Shiftit ja rotaatiot Kuvassa oleva Barreltyyppinen rotaattori pystyy rotatoimaan -7 bittiä kerralla oikealle Kontrollibitit S, S ja S2 valitsevat rotaation määrän
ROM n x m bitin ROM-muistissa on n kappaletta m bitin sanoja Tällöin tarvitaan osoitelinjoja log2 n Bitit on tallennettu matriisiin, jossa kohtaavat ohjelmoitava OR-veräjä ja osoitteen aktivoima rivi ROM:issa ROMissa tieto pysyy OTP-ROMissa pystyy tietoa muuttamaan kerran (One Time Programmable)
ROMin käyttö totuustauluna
Ohjelmoitava logiikka (PLA) PLA toteuttaa vain ne rivit, joissa ulostulo ei ole Ohessa 4x8x4 PLA 4 osoitebittiä (6 sanaa) 8 aktiivista riviä 4 bittiä sanassa ANDit dekoodaavat osoitteen Tällä voi toteuttaa totuustaulun, jossa on 8 riviä, joissa on ykkösiä jonkun ulostulon kohdalla
Ohjelmoitava logiikka (PLA) Full Adderin toteutus PLAlla Totuustaulussa on vain 8 riviä, joissa joku ulostulo on, joten PLA onnistuu