Dagens temaer Sekvensiell logikk: Kretser med minne RS-latch: Enkleste minnekrets D-flipflop: Forbedring av RS-latch Presentasjon av obligatorisk oppgave (se også oppgaveteksten på hjemmesiden). 9.9.3 INF 3
Sekvensiell logikk Hvis output fra en krets kun er avhenghig av nåværende input, kalles den kombinatorisk. Hvis output fra en krets er avhengig av nåværende og tidligere input, kalles kretsen sekvesiell. Den må da inneholde minne eller hukommelse. Addisjonskretsen fra forrige forelesning er eksempel på en kombinatorisk krets. Alle datamaskiner inneholder en blanding av kombinatorisk logikk og hukommelse. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til. I det vanlige hurtigminnet (RAM) brukes en egen teknologi basert på lagring av ladinger (kondensatorer), mens inne i CPU en brukes hukommelse basert på logiske porter. 9.9.3 INF 3 2
Et klokkesignal er et digitalt signal som veksler mellom og med fast takt. Klokkeperiode Stigende flanke Fallende flanke I synkrone sekvensielle kretser skjer endringen(e) i output samtidig med endringen i et klokkesignal, eller når klokkesignalet enten er eller Iasynkrone sekvensielle kretser skjer endringene i output med en gang og uten noe klokkesignal. Selv om asynkrone kretser er raskere (endringrer skjer med engang, og ike synkront med klokkesignal), benyttes sjelden fordi de er mye vanskligere å designe og teste Noen signaler, som f.eks reset-signaler er ofte asynkrone. 9.9.3 INF 3 3
Kretsen vist under er et hukommelses-element og kalles RS-latch. Kretsen har to innsignaler: S(et) og R(eset), og to utganger Q og Q Q og Q er definert som inverterte verdier av hverandre, mens utgangsverdien normalt hentes fra Q-utgangen alene. RS-latchen brukes sjelden direkte, men andre typer hukommelses-celler bygger på den RS-latchen vist over er asynkron,siden den ikke benytter et klokkesignal for å bestemme når overgangen mellom to forskjellige verdier på utgangen skal finne sted. 9.9.3 INF 3 4
Analyserer kretsen for S = og R =. S= P Q=? a b a NAND b R= P2 Q = Kan ikke avgjøre hva utgangen fra NAND-porten merket P (dvs Q) er, fordi vi ikke vet hva inngangen merket q er for noe Utgangen fra port P2 er (dvs Q ), fordi en på en av inngangene alltid vil gi en på utgangen av en NAND-port. Dermed får vi at Q = q =, og vi kan da bestemme at utgangen fra port P (dvs Q) er lik. 9.9.3 INF 3 5
Tilfellet hvor S = og R = : S= Q= P a b a NAND b R= P2 Q =? Kan ikke avgjøre hva utgangen fra NAND-porten merket P2 (dvs Q ) er, fordi vi ikke vet hva inngangen merket q er for noe ennå. Kan bestemme hva utgangen fra port P er (dvs Q), fordi en på en av inngangene alltid vil gi en på utgangen av en NAND-port. Siden Q = q =, blir utgangen fra port P2 (dvs Q ) lik. 9.9.3 INF 3 6
Tilfellet S = og R = Kan verken bestemme P eller P2 fordi vi må kjenne den ene for å finne den andre: S= Q=? P a b a NAND b R= P2 Q =? For å finne ut av hva utgangen fra P og P2 er, må man besteme q og dermed Q (eller q og Q ). Siden Q både kan være og, må vi vite hva forrige inputkombinasjon var: S R Q Q Kommentar Etter S = og R = Etter S = og R = Kretsen husker forrige input-kombinasjon selvom input signalene S og R har endret seg. 9.9.3 INF 3 7
Det siste tilfellet: S = R =. S= Q= P a b a NAND b R= P2 Q = Både Q og Q er lik. men er i konflikt med definisjonen av Q og Q (inverterte av hverandre), og i design unngås denne kombinasjonen (S = R = ). Den endelige sannhetsverdi-tabellen for en SR-latch: S R Q Q Kommentar Etter S = og R = Etter S = og R = 9.9.3 INF 3 8
Svakheter med SR-latchen Utgangen vil endre seg så fort inngangen endrer seg. S = R = gir en ikke-definert tilstand på utgangene, og det kan være vanskelig å kontrollere at ikke S og R er samtidig Løsningen ligger i å utvide kretsen med 2 NANDporter (kalt D-latch eller D-flipflop): Inverteren sikrer at S og R ikke kan være samtidig. Når WE (Write Enable) er, er både S = R =, og derfor beholdes verdien Q har hele tiden. Kretsen har nå kun ett inngangs-signal, nemlig D. 9.9.3 INF 3 9
Når WE =, vil inngangssignalet D leses av, og føre til at ENTEN S = og R = (D = ) ELLER S = og R = (D = ). Når WE går til igjen, vil verdien Q forbli uendret helt til WE blir og D eventuelt endrer verdi. Ofte er WE-signalet koblet til et klokkesignal, slik at inngangssignalet avleses hver gang klokkensignalet (gjerne kalt Clk) er høyt. D-latch kan beskrives med en karakteristisk tabell. Nestetilstanden Q(t+) (eller endringen i output etter en endring i input) som funksjon av nåværede output Q(t) (mao. nåværende tilstand) og input D: Q(t) D Q(t+) Denne tabellen kan også uttrykkes som Q(t+) = D og kalles for en karakteristisk likning. 9.9.3 INF 3
Det finnes andre typer flipflop er med ulike karakteristiske tabeller: T-flipflop Q(t) T Q(t+) Q(t+) = TQ +T Q J K Q(t) Q(t+) JK-flipflop Q(t+) = JQ + K Q Hvilken flipflop som anvendes i en krets er avhengig av funksjonen den har. I tellere brukes T- flipflop er ofte, mens i registre og andre lagerceller for data brukes D-flipflop er. 9.9.3 INF 3
Internt i en CPU trengs en fleksibel type lagercelle som kan lagre et bit. Som regel trenger man å lagre hele byte, halvord eller ord, og gjøre samme operasjon på alle bitene. En en-bits lagercelle består som regel av en D- flipflop og ekstra logikk for å styre innlasting av data til lagercellen In Write Enable -bits lagercelle Out Write Enable bestemmer om ny verdi skal lastes inn eller ikke. Ved å sette sammen -bits celler i parallell, får man et register. Hvis man i tillegg kan laste data over i nabocellen, kalles det et skiftregister. 9.9.3 INF 3 2
Out In In Write Enable Shift Enable Shift Left bit Kontroll logikk Out In Write Enable Shift Enable Shift Left bit Kontroll logikk Out Write Shift Enable Shift Left Enable X X Ingen endring X out := in Kopier bit mot høyre Kopier bit mot venstre 9.9.3 INF 3 3
In[3] In[2] In[] In[] In[3] Out[3] bit bit bit bit Out[] In[] Out[3] Out[2] Out[] Out[] Ved en skiftoperasjon vil et bit falle ut enten ut av posisjon (ved høyreskift), eller posisjon n ved venstreskift. Hvis man gjør rotasjon sender man, bit et fra posisjon inn i posisjon n ved høyrerotasjon, og bit et fra posisjon n sendes inn i posisjon ved venstrerotasjon. Ved å skifte bitmønsteret som representerer et binært tall en plass mot høyre dividerer man med 2. Ved å skifte bitmønsteret som representerer et binært tall en plass mot venstre multipliserer man med 2. 9.9.3 INF 3 4