i G h øgskolen i oslo Emne: Datamaskinarkitektur Emnekode:lOl23 Faglig veileder: Lars Kristiansen. Gruppe(r):, ~', -~ Dato:. - - ~ U..) Eksamenstid: Eksamensoppgaven består av: ntall sider (inkl. I forsiden): O~,~, ntall oppgaver: 09.00-14.00 ntan vedlegg: Tillattehjelpemidler: llle trykte og skrevne hjelpemidler. I Kalkulator som ikke kan kommunisere med andre. Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle uklarheter i oppgaveteksten skal du redegjøre for de forutsetninger du legger tit grunn for løsningen. vdeling for ingeniørutdanning. Cort delersgate 30. 0254 Oslo. tit 2245 3200. faks: 22453205. iu@hio.no
Dette oppgavesettet består av fire oppgaver. Du kan anta at hver av de fire oppgavene teller omtrent like mye. Dersom du finner oppgaveteksten uklar eller ufullstendig, bør du ogplyse om hvilken tolkning som ligger til grunn for din besvarelse. Oppgave 1 Denne oppgaven dreier seg om assemblerprogrammer (for assembleren TSM). Oppgave a nta at registeret ax holder tallet O og at registeret bx holder tallet 2. Hvilket tall holder ax etter at de to instruksjonene add ax, bx add ax, bx er utført? egrunn svaret. (Slutt på oppgave 8.) Du har gitt tre prosedyrer les, skriv og randint. (Du skal altså ikke implementere disse prosedyrene.) Prosedyren les ber bruker om et heltall (i intervallet O,...,V6-1), leser inn dette heltallet og legger det i registeret u. Pr~yren forandrer ikke innholdet av andre registre enn ax. Prosedyren skri v skriver innholdet av registret ax til skjermen (og ufører deretter et linjeskift). Prosedyren forandrer ikke innholdet av registrer. Pr~yren randint genererer et tilfeldig tall (i intervallet 0,...,216-1) og legger det registeret bx. Pr~yren forandrer ikke innholdet av andre registre enn bx. Ingen av de tre pr~yrene forandrer innholdet av minnet (RM). (Dette er alt du trenger å vite om de tre pr~yrene. Du trenger ikke vite hvordan innmaten i prosedyrene ser ut.) Under finner du et assemblerprogram som trekker et tilfeldig tall ved å kalle prosedyren randint. Deretter kan en bruker gjette hvilket tall programmet har trukket. Programmet vil fortsette å be brukeren om å skrive inn tall inntil brukeren svarer med tallet programmet har trukket ut. Når det skjer, terminerer programmet.."odel SMLL STCK 100h DT < datadeklarasjoner >.CODE <0000 prosedyredeklarasjoner main proc near O STRTUP call gjenta:.exit randint main endp END call1es cmp ax, jne gjenta bx >
Oppgave b Modifiser programmet over slik at det terminerer dersom brukeren ikke gjetter riktig innen 100 forsøk. Umiddelbart før programmet terminer skal tallet som ble trukket ut skrives til skjermen. Modifiser programmet over slik at et nytt tall trekkes hver gang brukeren gjetter riktig. N år brukeren har gjettet riktig fem ganger, skal programmet terminere. Det skal informeres om at en gjetning var korrekt ved at tallet O skrives til skjermen. (ntall forsøk skal være ubegrenset. ) Oppgave d Du skal nok en gang modifisere programmet over. Programmet skal nå gi brukeren hjelp til å gjette riktig. Hver gang brukeren skriver inn et tall, skal programmet svare med å skrive ut den beste gjetningen så langt, dvs. det av de tallene brukeren har skrevet inn som ligger nærmest tallet programmet har trukket ut. (ntall forsøk skal være ubegrenset, og programmet skal terminere når brukeren har gjettet riktig en gang.) Oppgave 2 Oppgave a Funksjonen F er gitt ved det boolske uttrykket av logiske porter. Oppgave b (W + X)(Y + Z). Implementer F ved hjelp F\1nksjonen F er gitt ved F(X, Y, Z) = E m(o, 1, 7). Tegn en kombinatorisk krets som implementerer F. Kretsen skal inneholde så få porter som mulig, og den skal ikke inneholde noe annet enn ND-, OR- og NOT-porter. F\1nksjonen F er gitt ved sannhetsverditabellen Implementer F ved hjelp av logiske porter. ruk så få porter som mulig. Oppgave d F\1nksjonen F er gitt ved F(W, X, Y, Z) = E m(o, 1,2,3,7,11,15). Tegn en kombinatorisk krets som implementerer F. Kretsen skal inneholde så få porter som mulig, og den skal ikke inneholde noe annet enn ND-, OR- og NOT-porter. ruk Karnaugh-diagram, og vis fremgangsmåten. 2
~ Oppgave e Funksjonen F er gitt ved F(W, X, Y, Z) = E m(o, 1,2,4,5,8,10,12). Tegn en kombinatorisk krets som implementerer F. Kretsen skal inneholde så få porter som mulig, og den skal ikke inneholde noe annet enn ND-, OR- og NOT-porter. ruk Karnaugh-diagram, og vis fremgangsmåten. Oppgave f F\1nksjonen F er gitt ved F(W,X,Y,Z) = Em(1,9,13,14). Videre, har vi "don't care" betingelsene d(w, X, Y, Z) = E m(3, 4,5,12). Tegn en kombinatorisk krets som implementerer F under de gitte "don't care" betingelsene. Kretsen skal inneholde så få porter som mulig, og den skal ikke inneholde noe annet enn ND-, OR- og NOT-porter. ruk Karnaugh-diagram, og vis fremgangsmåten. Oppgave g F\1nksjonen F er gitt ved F(X,Y,Z) = }:::m(l,2,5,6). Implementer F ved hjelp aven 4-ti1-1 multiplekser og en NOT-port. (Du skal ikke bruke andre porter enn den ene NOTporten.) Oppgave h F\mksjonen F er gitt ved F = (X + Y)(X + Z). Implementer F utelukkende ved hjelp NND-porter. ruk så få NND-porter som mulig. Oppgave 3 X/Y:) \ '",/ ~ ~ 0/0 / ~ ~ / l/o O/l ~.- / J.I Figure Tilstandsdiagram Figur 1 viser et tilstandsdiagram over en sekvensiell krets. Kretsen har en inngang (input) X og en utgang (output) Y. 3
Oppgave a Implementer kretsen gitt ved tilstandsdiagrammet i figur 1. Du skal bruke D-vipper. Du trenger to slike vipper. Kall dem og. Tegn et kretsdiagram. Sørg for at kretsdiagrammet blir enklest mulig. Vis fremgangsmåten. (Slutt på oppgave a.) En JK-vippe har to innganger. Dersom vi kaller selve vippen for Q, så er det vanlig å. kalle disse inngangene JQ og KQ. Her er tabell som beskriver hvordan en JK-vippe virker: Jq KQ neste tilstand for Q Q o -1 Q (vippen beholder sin tilstand) (reset) (set) (vippen skifter tilstand) Oppgave b Implementer kretsen fra oppgave a ved hjelp av JK-vipper. Sørg for at kretsdiagrammet blir enklest mulig. Vis fremgangsmåten. I denne oppgaven skal du tegne et tilstandsdiagram som beskriver en sekvensiell krets. Kretsen som har en inngang X og en utgang Y, ligner på kretsen gitt med tilstandsdiagrammet i figur 1. Kretsen fra figur 1 gir output Y = 1 hver gang den har mottatt sekvensen 0101; ellers gir den output Y = O. Kretsen du skal tegne et tilstandsdiagram over, skal gi output Y = 1 hver gang den har mottatt sekvensen 11011; ellers skal den gi output Y = o. Legg merke til at sekvenser kan overlappe. (For eksempel inneholder sekvensen 11011011 to forekomster av sekvensen 11011.) Oppgave 4 Figure 2: 2-til-l multipleksere ~ Figur 2 viser en standard singel 2-til-l multiplekser og en standard kvadrupel 2-til-l multiplekser. En 2-til-l multiplekser har to input-linjer, og ett select-bit S. Den har en 4
output-linje C. Hvis = O, så C = j hvis = 1, så C =. (Ved å sette select-bitet, kan man altså styre en av linjene og gjennom multiplekseren.) Den single multiplekseren har kun ett bit på hver linje. Den kavdruple multiplekseren har fire bit på hver linje. ( = 321o, = 321og C = C3C2C1CO.) Oppgave a Sett sammen fire single 2- til-l multipleksere til en kvadrupel 2- til-l multiplekser. (Slutt på oppgave a.) Figure 3: LU som blant annet utfører bitvis "and" og bitvis "or" (oppgave b) Figur 3 viser en LU (arithmetic logical unit) med to styringsbit 81 og 82- Funksjonaliteten til LU'en er gitt ved tabellen Sl 50 Operasjon. eskrivelse av operasjon. - D = overfører til D D = not enerkomplement, dvs. D, = -: for i = O, 1, 2, 3 D = and bitvis "and", dvs. D, =,., for i = 0,1,2,3 D = or bitvis "or", dvs. D, =, +, for i = O, 1,2,3 itvis "and" betyr altså at and-operasjonen (boolsk multiplikasjon) utføres bit for bit, så f.eks 1100and0101 = 0100 og 1001 and 1111 = 1001. itvis "or" virker på samme måte med hensyn på or-operasjonen (boolsk sum). Oppgave b Implementer LU'en i figur 3 ved å tegne et kretsdiagram. Du kan bruke den kvadruple 2-til-l multiplekseren fra oppgave a. (Slutt på oppgave b.) Figur 4 viser en meget enkel LU med kun ett styringsbit S. Funksjonaliteten til LU'en er gitt ved tabellen s Operasjon. eskrivelse av operasjon. D = + addisjon D = - subtraksjon (Eventuelle utganger som markerer overflow etc. er irrelevante i denne sammenheng. 5
Figure 4: LU som utfører addisjon og subtraksjon (oppgave c) R2 RI Ro D Figure 5: LU som skal konstrueres i oppgave c Figur 5 viser nok en LU. Den har styringsbitene R2, RI,~' F\mksjonaliteten er gitt ved tabellen R:I Ri Ro Operasjon (bitvis "and") (bitvis "or") (addisjon) (subtraksjon) (overfører) (ener komplement) (inkrement) (dekrement) Sett sammen LV I fra figur 3 og LV Il fra figur 4 til LV III fra figur 5. Du kan bruke den kvadruple 2-til-l multiplekseren fra oppgave a og alle andre standard komponenter du måtte ønske, dvs. dekodere, multipleksere etc. 6