Fredag 23. januar

Download Report

Transcript Fredag 23. januar

Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Kombinatorske kretser 1
En dekoder
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Kombinatorske kretser 2
En multiplekser
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Implementering av adderer
Fra eksemplet på whiteboard kan vi skrive:
s = cin ⊕ (x ⊕ y )
og fra sannhetstabell, men ikke algebraisk riktig:
cout = xy + c(x ⊕ y )
Dette betyr at kretsen kan implementeres med 2 XOR-porter, 2
AND-porter og 1 OR-port.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
2-er komplement 2
En annen måte å definere 2-er komplementet til et n-bits binært
tall N er å sette dette som Comp2 (N) = 2n − N.
Det er da lett å se at
Comp2 (Comp2 (N)) = N
hvor N er repsenter på 2-er komplement form.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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:
N = (4)10 = (00100)2
og
M = (7)10 = (00111)2
Vi vil beregne N − M, og beregner
Comp2 (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
Comp2 (11101) = 00010 + 1 = 00011 = (3)10
Dette ser vi at stemmer siden 4 − 7 = −3.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Hvorfor det virker
Vi kan skrive
A−B
som
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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”.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Et par elementære egenskaper til XOR
Vi har at
x ⊕0=x ·0+x ·0=x ·1=x
og at
x ⊕1=x ·1+x ·1=x ·1=x
Altså har vi
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Fulladderer med XOR for subtraksjon
Fulladderer/subtraherer
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Tidsdiagrammer
Klokkepuls
t
t−1
t
t+1
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 109 Hz.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Sekvensielle kretser 1
En SR-latch med NOR
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Sekvensielle kretser 2
En SR-vippe
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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)
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Sekvensielle kretser 3
En D-vippe
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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)
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Sekvensielle kretser 4
En JK-vippe
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Karakteristiske tabeller for JK-vippe
Karakteristisk tabell JK-vippe
K Q(t + 1) Operasjon
0 Q(t)
Ingen endring
1 0
Reset
0 1
Set
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
J
0
0
1
1
Karakteristisk likning:
Q(t + 1) = J(t)Q(t) + K (t)Q(t)
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Sekvensielle kretser 5
En T-vippe
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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)
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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.
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
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
A
0
1
B
1
1
D
0
1
C
0
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
Et eksempel 2
Tilstandstabellen, med T -vipper:
at
0
0
0
0
1
1
1
1
bt
0
0
1
1
0
0
1
1
xt
0
1
0
1
0
1
0
1
at+1
0
0
0
1
1
1
1
0
bt+1
0
1
1
0
0
1
1
0
Ta
0
0
0
1
0
0
0
1
Tb
0
1
0
1
0
1
0
1
Litt repetisjon Mer om ripple-carry adderer Eksempel med en sammenlikner Om multiplikasjon, subtraksjon og divisjon 2-er komp
The End
Spørsmål?