Dagens temaer Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture Kort repetisjon fra forrige gang Kombinatorisk logikk Analyse av kretser Eksempler på byggeblokker Forenkling vha. Karnaugh-diagram INF2270 1/24
Boolsk algebra Brukes for å beskrive funksjoner i digitale kretser Tre grunnleggende funksjoner: AND, OR og NOT Andre funksjoner som NAND, NOR, XOR og XNOR avledes fra AND, OR og NOT En Boolsk funksjon kan beskrives enten vha. Sannhetsverditabell eller Funksjonsuttrykk To funksjoner er ekvivalente hvis de for alle input-kombinasjoner gir samme output INF2270 2/24
Boolske regneregler Regneregler i boolsk algebra: a + a = 1 a + a = a a + 0 = a a x a =0 a x a = a a x 1 = a a + 1 = 1 a x 0 = 0 (a ) = a a + b = b + a ab = ba (Kommutativ) a + (b + c) = (a + b) + c a(bc)=(ab)c (Assosiativ) Regnereglene kan brukes til å forenkle uttrykk: Eksempel 1: ab + ab = a(b + c) = ab + ac a + bc = (a + b)(a + c) (Distributiv) Eksempel 2:abc + a bc + a bc (a + c) = INF2270 3/24
Boolske funksjoner Beskrives med funksjonsuttrykk eller sannhetsverditabell Eksempel 1: Funksjon med 2 variable: F = ab + a b a b F Eksempel 2: Funksjon med 3 variable a b c G a b abc a c ab G= abc + a c + ab INF2270 4/24
Digitale kretser Digitale kretser bygges ofte med med Logiske Porter Logiske porter er også en grafisk fremstilling av en boolsk operasjon En logisk port i en elektrisk krets er laget av transistorer INF2270 5/24
Design og analyse av logiske kretser En kombinatorisk krets har ingen hukommelse, dvs at output-verdiene kun er avhengig av nåværende input-verdier. I en sekvensiell krets er output-verdiene avhengige av både nåværende og tidligere input-verdier, mao. har den hukommelse. Design er prosessen med å sette sammen mindre blokker til større moduler, mens analyse er å finne ut hva en krets gjør. For å kontrollere at et design implementerer den ønskede funksjonen må man teste og analysere kretsen etter at den er ferdig. Som regel ikke mulig å teste fullstendig for alle input-kombinasjoner INF2270 6/24
Eksempel: kretsanalyse Steg 1: Sett symboler på utgangen(e) og mellomsignaler, dvs signaler mellom porter: INF2270 7/24
Steg 2: Utled likningene for mellomsignalene og sett inn inngangssignalene: x 1 = x 2 = x 3 = x 4 = x 5 = x 6 = Steg 3: Utled tilslutt uttrykket for utgangssigalet F ved å sette inn verdiene for x 4, x 5 og x 6 som funksjon av inngangssignalene a, b og c F= x 4 + x 5 + x 6 = INF2270 8/24
Kretsdesign Vanligvis brukes bare NAND eller bare NOR-porter for å implementere boolske funksjoner. NAND (NOR) funksjonen er universell: Den kan implementere enhver boolsk funksjon. Bruker følgende regler: de Morgans teorem (ab) = a + b (a ) = a INF2270 9/24
Trenger ofte større byggeblokker enn bare AND, OR og NOT-porter (eller NAND/NOR) når man designer kretser. Mange mye brukte moduler har egne navn: Multiplexer Dekoder Enkoder Adder Latch (1-bits minnekrets) Flip-flop (1-bits minnekrets) Skiftregister (Fler-bits minnekrets) INF2270 10/24
Multiplekser (MUX) Multiplekseren sender ett av mange input-signaler ut på en output-linje. Hvilken inputlinje (a 0 -a 3 ) som velges å koble mot utgangen bestemmes av selectsignalene, S 0 og S 1 Antall input-linjer er alltid en potens av 2 (1, 2, 4, 8, 16, osv.) Kan implementeres slik: S 1 S 0 F 0 0 a 0 0 1 a 1 1 0 a 2 1 1 a 3 INF2270 11/24
Demultiplexer (DEMUX) Demultiplekseren gjør det motsatte av multiplekseren og sender ett inputsignal ut på en av mange output-linjer. Hvilken outputlinje som velges bestemmes av select-signalene Antall output-linjer er alltid en potens av 2 INF2270 12/24
Dekoder En dekoder setter én av 2 n outputlinjer til 1, avhengig av input-verdien på n input-linjer (konverterer fra 2-talls- til 1-tallssystemet) INF2270 13/24
Sannhetsverditabellen for en dekoder er som følger Dekoderen kan implementeres slik (for 3-bit): INF2270 14/24
Enkoder En enkoder utfører motsatt operasjon av en dekoder og setter 2 n outputsignaler som funksjon av verdien på n inputsignaler INF2270 15/24
Karnaughdiagram Spesiell sannhetsverdi-tabell som brukes til å forenkle Boolske funksjoner Tabellen tegnes som et rutenett med 2 n ruter for en funksjon med n variable Langs sidene merkes de ruter hvor hver variabel er 1 (ikke-invertert) og 0 (invertert) Eksempel: Karnaughdiagram for funksjon med 2 variable a og b INF2270 16/24
Karnaughdiagram for funksjon med 3 variable Krav for Karnaughdiagrammer: overgang mellom naboruter: Kun en variabel forrandres fra 0 til 1 eller 1 til 0 mellom naboruter INF2270 17/24
Karnaughdiagram for funksjon med 4 variable Krav for Karnaughdiagrammer: overgang mellom naboruter: Kun en variabel forrandres fra 0 til 1 eller 1 til 0 Merk at diagrammet folder rundt kantene, i overgangene fra kant til kan endres bare en variabel INF2270 18/24
Forenkling av funksjoner Steg 1: Tegn Karnaugh-diagram av riktig størrelse Steg 2: Sett et 1 i de rutene der for hvor funksjonen er 1, og 0 ellers Eksempel: Karnaugh-diagram for funksjonen F = ab + ac + abc INF2270 19/24
Forenkling av funksjoner (forts.) Steg 3: Kombinér/gruppèr naboruter med 1 til så store som mulig rektangler med 1, 2, 4, 8 osv. ruter (antall ruter i grupperingene må være multiplum av 2). Ruter med 1 kan godt deles av flere rektangler for å få dem så store som mulig. Kanter/hjørner er naboer med andre kanter/hjørner Eksempel: F=ab + ac + abc INF2270 20/24
Forenkling av funksjoner (forts.) Steg 4: For hvert rektangel fra steg 3, finn ut hvilke variable som ikke skifter verdi innen rektangelet Steg 5: De variablene som ikke endrer verdi innenfor et rektangel AND es sammen og utgjør et ledd i den forenklede funksjonen Steg 6: Den forenklede funksjonen består av alle leddene fra steg 5 OR et sammen INF2270 21/24
Eksempel Forenkle funksjonen F= xyz + x y z + xzw + xy zw INF2270 22/24
Merknad til Karnaughdiagram (1) Karnaugh-diagram brukes sjelden for funksjoner med 5 eller mer variable INF2270 23/24
Merknad til Karnaughdiagram (2) Hvor man plasserer variabelnavnene spiller ingen rolle, bare man får listet opp alle mulige kombinasjoner og kun en variabel skifter verdi fra naborute til naborute INF2270 24/24