ITPE2400/DATS2400: Datamaskinarkitektur Forelesning 6: Mer om kombinatoriske kretser Aritmetikk Sekvensiell logikk Desta H. Hagos / T. M. Jonassen Institute of Computer Science Faculty of Technology, Art and Design Oslo and Akershus University College of Applied Sciences 23. Januar 2015
Oversikt 1 Litt repetisjon 2 Mer om ripple-carry adderer 3 Eksempel med en sammenlikner 4 Om multiplikasjon, subtraksjon og divisjon 5 2-er komplement representasjon 6 Ripple-carry adderer/subtraktor 7 Byggestenene for sekvensielle kretser
Kombinatorske kretser 1 En dekoder
Kombinatorske kretser 2 En multiplekser
Implementering av adderer Fra eksemplet på whiteboard kan vi skrive: s = c in (x y) og fra sannhetstabell, men ikke algebraisk riktig: c out = xy + c(x y) Dette betyr at kretsen kan implementeres med 2 XOR-porter, 2 AND-porter og 1 OR-port.
En sammenlikner Spesifikasjon: En likhets-sammenlikner som avgjør om to binære ord er like eller ikke. Input: To ord A(0 : 3) og B(0 : 3) Output: Ett bit, E, hvor E = 1 ved likhet, E = 0 ellers. Husk: XOR gir 0 ved likhet, 1 ved ulikhet. Holder å se på ett bit. Se eksempel whiteboard.
Aritmetiske operasjoner Aritmetiske operasjoner: addisjon, subtraksjon, multiplikasjon, divisjon. Vi kan implementere disse i hardware nesten som regning vi gjør for hånd. Multiplikasjon: Shift og addisjon. Divisjon: Shift og subtraksjon. Lettest med hele tall uten fortegn.
2-er komplement 1 2-er komplementet av et binært ord på n bits oppnåes ved å invertere alle bits, deretter addere 1, eventuelt mente kastes. Vi representerer hele tall på n bit på 2-er komplement form ved at mest signifikante bit er fortegn, 0 for +, 1 for på følgende måte: Positive tall på vanlig måte Negative tall, ta 2-er komplement av tilsvarende positive tall. Merk: 0 har unik representasjon.
2-er komplement 2 En annen måte å definere 2-er komplementet til et n-bits binært tall N er å sette dette som Comp 2 (N) = 2 n N. Det er da lett å se at Comp 2 (Comp 2 (N)) = N hvor N er repsenter på 2-er komplement form.
Et par eksempler Anta at vi har 5 bits til rådighet, vi må bruke ett bit (et mest signifikante) til fortegn, og derfor bare fire bit til størrelse. Da er: og N = (4) 10 = (00100) 2 M = (7) 10 = (00111) 2 Vi vil beregne N M, og beregner Comp 2 (M) = 11000 + 1 = 11001. Vi får da at N M = N + ( M) = 00100 + 11001 = 11101 Beregner vi nå 2-komplementet til resultatet ser vi at Comp 2 (11101) = 00010 + 1 = 00011 = (3) 10 Dette ser vi at stemmer siden 4 7 = 3.
Hvorfor det virker Vi kan skrive som A B A + ( B) Dette gir at subtraksjon er en addisjon, ved at vi tar 2-er komplementet av B og deretter addere dette til A. Vi kan få problem med overflow (har sett eksempel på dette tidligere). Dette oppstår bare med tall av like fortegn.
Reglene Heltall A og B er representert på 2-er komplement form med fortegn. Addisjon: A + B: På vanlig måte, hvis mente (carry) på mest signifikante bit: overflow. Subtraksjon: A B: Ta 2-er komplement av B, addér, siden A B = A + ( B). Dette gir oss en enkel overflow regel i vår fulladderer, hvis mente (carry) inn på minst signifikante bit er lik mente ut, ikke overflow, hvis ulikt, overflow.
Et par elementære egenskaper til XOR Vi har at og at Altså har vi x 0 = x 0 + x 0 = x 1 = x x 1 = x 1 + x 1 = x 1 = x x 0 = x og x 1 = x Dette er det som gjør at vår Ripple-carry adderer/subtraktor som kommer på de neste sidene fungerer.
Adderer/subtraktor 2-er komplement representasjonen gjør at vi kan bruke samme krets til både addisjon og subtraksjon med små modifikasjoner. Merk at vi bruker mente inn på minst signifikante bit, som flagg på addisjon, eller subtraksjon. Diagram gitt på neste slide.
Fulladderer med XOR for subtraksjon Fulladderer/subtraherer
Tidsdiagrammer Klokkepuls t 1 t t+1 t Synkronisering (det at forandringer skjer ved bestemte tidspunkt) er viktig i komplekse systemer. I en datamaskin brukes en klokke (klokkepuls) for dette. Måleenhet: Hz (Hertz), hvor Hz=s 1, (svigning per sekund). Moderne prossessorer opererer typisk i området gigahertz (GHz), eller altså i størrelsesorden 10 9 Hz.
Tabeller og diagrammer Det er flere måter å fremstille funksjonaliteten til en flip-flop (vippe). Disse er (nesten) ekvivalente, men med tilpasset bruksomåde. Logisk diagram: Koblingsdiagram med porter. Dette digrammet kan brukes for å finne de andre tabellene og karakteristisk likning. Karakteristisk tabell: Tabell som angir funksjonaliteten, gitt ved input og nåtilstand. Tabellen sier ikke noe om hvordan flip-flop-en (vippen) er koblet. Karakteristisk likning: Boolesk uttrykk som angir nestetilstand uttrykt ved nåtilstand og input. Tabellen sier ikke noe om hvordan flip-flop-en (vippen) er koblet. Eksitasjonstabell: Tabell som gir sammenheng mellom nestetilstand, nåtilstand og input. Tabellen brukes for å finne inngangslikningene til en flip-flop ved design av sekvensielle
Sekvensielle kretser 1 En SR-latch med NOR
Sekvensielle kretser 2 En SR-vippe
Karakteristiske tabeller for SR-vippe Karakteristisk tabell SR-vippe S R Q(t + 1) Operasjon 0 0 Q(t) Ingen endring 0 1 0 Reset 1 0 1 Set 1 1? Udefinert Eksitasjonstabell SR-vippe Q(t) Q(t + 1) S R Operasjon 0 0 0 X Ingen endring 0 1 1 0 Set 1 0 0 1 Reset 1 1 X 0 Ingen endring Karakteristisk likning: Q(t + 1) = S(t) + R(t)Q(t)
Sekvensielle kretser 3 En D-vippe
Karakteristiske tabeller for D-vippe Karakteristisk tabell D-vippe D Q(t + 1) Operasjon 0 0 Reset 1 1 Set Eksitasjonstabell D-vippe Q(t + 1) D Operasjon 0 0 Reset 1 1 Set Karakteristisk likning: Q(t + 1) = D(t)
Sekvensielle kretser 4 En JK-vippe
Karakteristiske tabeller for JK-vippe Karakteristisk tabell JK-vippe J K Q(t + 1) Operasjon 0 0 Q(t) Ingen endring 0 1 0 Reset 1 0 1 Set 1 1 Q(t) Komplement Eksitasjonstabell JK-vippe Q(t) Q(t + 1) J K Operasjon 0 0 0 X Ingen endring 0 1 1 X Set 1 0 X 1 Reset 1 1 X 0 Ingen endring Karakteristisk likning: Q(t + 1) = J(t)Q(t) + K(t)Q(t)
Sekvensielle kretser 5 En T-vippe
Karakteristiske tabeller for T-vippe Karakteristisk tabell T-vippe T Q(t + 1) Operasjon 0 Q(t) Ingen endring 1 Q(t) Komplement Eksitasjonstabell T-vippe Q(t) Q(t + 1) T Operasjon 0 0 0 Ingen endring 0 1 1 Komplement 1 0 1 Komplement 1 1 0 Ingen endring Karakteristisk likning: Q(t + 1) = T(t) Q(t)
Design av sekvensielle kretser Spesifikasjon. Lag tilstandsdiagram fra spesifikasjon. Lag tilstandstabell. Tilordne binære koder til tilstandene. Utled vippe input likningene fra tilstandstabellen og eksitasjonstabeller. Utled output likningene. Forenkle. Lag logisk diagram.
Et eksempel 1 Tilstandsdiagram for en teller modulo 4 som teller på SET, men ikke ellers, altså en input, og telle på hver klokkesykel som input x = 1. 0 0 A 1 B 1 1 D 1 C 0 0
Et eksempel 2 Tilstandstabellen, med T -vipper: a t b t x t a t+1 b t+1 T a T b 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1
The End Spørsmål?