I I G høgsklen i sl Emne: Datamaskinarkitektur Emnekde:Ll34A Faglig veileder: Lars Kristiansen.~~uppe(r): Dat: 4.06.05 Eksamenstid: 09.00-;.00 Eksamensppgaven Antall sider (inkl Antall ppgaver: I Antall vedlegg: består av: frsiden): Tillatte hjelpemidler: Alle trykte g skrevne-hjelpemidler. Kalkulatr sm ikke kan kmmunisere med andre. Kandidaten må selv kntrllere at ppgavesettet er fullstendig. Ved eventuelle I uklarheter i ppgaveteksten skal du redegjøre fr de frutsetninger du legger til grunn fr løsningen. Avdeling fr ingeniørutdanning. Cn Adelersgate 30. 0254 sl. tlf 22453200. faks: U 45 3205. iu@hi.n
Denne eksamen består av fire ppgaver. Du kan anta at hver av de fire ppgavene teller mtrent like mye. Dersm du finner ppgave teksten uklar eller ufullstendig, så bør du pplyse m hvilken tlkning sm ligger til grunn Fr din besvarelse. ppgave I denne ppgaven skal du skrive assemblerprgrammer fr assembleren TASM. Du har gitt t prsedyrer les g skriv. (Du skal altså ikke implementere disse prsedyrene.) Prsedyren les ber bruker m et heltall (i intervallet 0,...,255), leser inn dette heltallet g legger det i registeret al. Prsedyren frandrer ikke innhldet av andre registre enn al. Den frandrer heller ikke innhldet av minnet (RAM). Prsedyren skriv skriver innhldet av registeret ax til skjermen (g ufører deretter et linjeskift). Prsedyren frandrer ikke innhldet av registre eller innhldet av minnet (RAM). (Dette er alt du trenger å vite m prsedyrene les g skriv. Du trenger ikke vite hvrdan innmaten i prsedyrene ser ut.) Pr- Under finner du et prgram sm leser tall fra bruker (ved å kalle prsedyren les). grammet leser inntil bruker gir tallet. Da terminer prgrammet..mdel small.stack 00h.data.c de les prc near < > røt les endp skriv prc near <.., > ret les endp rnain prc near.startup gjenta:.exit main end calles cmp al. jne endp ppgave a gjenta Utvid prgrammet ver slik at det umiddelbart før det terminerer skriver ut hvr mange tall sm ble skrevet inn. Utskriften gjøres ved å kalle prsedyren skri v. (Slutt på ppgave a.)
Vi skal se nærmere på kmmanden di v. Den utfører heltallsdivisjn på tall uten frtegn. Frmatet er di v <divisr> hvr <divisr> ikke kan være en knstant. Når <divisr> er en byte, utføres divisjnen ax/<divisr>, kvtienten legges i al g resten legges i ah. (Du vil finne kmmanden di v beskrevet i enhver standard lærebk, se f.eks. side 30 i Jnassens kmpendium. ) ppgave b U tvid prgrammet ver slik at det umiddelbart før det terminerer skriver ut hvr mange partall sm ble skrevet inn. Utskriften gjøres ved å kalle prsedyren skriv. Hint: Husk at et partall er et tall sm er delelig på 2. (Slutt på ppgave b.) Følgende interupt-kall stiller systemklkken: mv ah. 2Dh int 2h Interupt-kallet setter (i) timen til tallet i registeret ch (så det bør ligget et tall i intervallet,...,23 i ch), (li) minuttet til tallet i registeret cl (så det bør ligget et tall i intervallet,...,59 i cl) g (iii) sekundet til tallet i registeret db (så det bør ligget et tall i intervallet 0,...,59idh). ppgave c Skrivet prgram sm leser tre tall fra bruker ved å kalle prsedyren les. Deretter skal prgrammet stille systemklkken. Timen skal settes til det første tallet sm ble lest, minuttet til det andre g sekundet til det tredje. Dersm ett eller flere av de tallene sm leses inn ligger utenfr de meningsfylte intervallene, skal prgrammet terminere uten å frsøke å stille systemklkken. (Slutt på ppgave c.) I den neste delppgaven skal du kalle prsedyren feilmelding. (Du skal ikke implementere prsedyren.) Prsedyren skriver følgende melding til skjermen: "Data har feil frmat. Vil du frsøke igjen? (=Nei, l=ja)." Prsedyren frandrer ikke innhldet av registre eller innhldet av minnet (RAM). Dette er alt du trenger å vite m prsedyrene feilmelding. Du trenger ikke vite hvrdan innmaten i prsedyrene ser ut. ppgave d Utvid prgrammet fra ppgave c slik at prsedyren feilmelding kalles når bruker gir meningsløs input. Prsedyren skal først kalles etter at bruker har skrevet inn alle tre tallene. (Så dersm timen sm gis er meningsløs, skal feilmeldingen først skrives ut etter at både minuttet g sekundet er lest inn.) Hvis bruker svarer med på feilmeldingen, skal prgrammet terminere. Hvis bruker svarer med et tall frskjellig fra, skal bruker få anledning til å gi input en gang til. Feilmeldingen skal ikke skrives ut mer enn fem ganger. Den sjette gangen bruker gir meningsløs input, skal prgrammet terminere uten varsel.?
ppgave 2 ppgave a F\mksjnen F er gitt ved F(X,Y,Z) = }::::m(3,4,5,g,7). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, R- g NT-prter. ppgave b Funksjnen F er gitt ved F(X, Y, Z) = n M(,,2). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, R- g NT-prter. ppgave c Funksjnen F er gitt ved F = X Z + Y Z. Gi F sm en sum av mintermer. ppgave d Funksjnen F er gitt ved F(W,X,Y,Z) = }::::m(5,g,7,9,ll,3,4,5). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, R- g NT-prter. ruk Karnaugh-diagram, g vis fremgangsmåten. ppgave e Funksjnen F er gitt ved F(W, X, Y, Z) = }:::: m(, 4, 5, 8,2,3,4,5). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få. prter sm mulig, g den skal ikke innehlde ne annet enn AND-, R- g NT-prter. ruk Karnaugh-diagram, g vis fremgangsmåten. ppgave f Funksjnen F er gitt ved F(W, X, Y, Z) = Em(l, 3,2,3,4,5). Videre, har vi "dn't care" betingelsene d(w, X, Y, Z) = }:::: m(2, 8, 9, ). Tegn en kmbinatrisk krets sm implementerer F under de gitte "dn't care" betingelsene. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, R- g NT-prter. ruk Karnaugh-diagram, g vis fremgangsmåten. ppgave g funksjnen F er gitt ved F = X + YZ. Implementer F utelukkende ved hjelp av NRprter. ruk så få NR-prter sm mulig. (Du kan gså få bruke NT-prter, men det bør ikke være nødvendig.) ppgave h funksjnen F er gitt ved F = X(Y+Z). Implementer F ved hjelp av en 4-til- multiplekser g en NT-prt. (Du skal ikke bruke andre prter enn den ene NT-prten.) 3
ppgave 3 I denne ppgaven skal du lage arkitektur sm teller frekmster av bitsekvensen 00 i en strøm av bit. Legg merke til at sekvenser kan verlappe, f.eks. finnes det t frekmster av sekvensen i strømmen 000. Først skal vi se nærmere på en sekvensiell krets. Kretsen har en inngang X g en utgang Y. Hver gang kretsen har mttatt bitsekvensen 00 på inngangen X, skal den gi på utgangen Y j ellers skal den gi på utgangen Y. Her er et eksempel på hvrdan kretsen skal virke: tidspunkt input utput X y t tt t+ 2 t+ 3 t+ 4 t+ 5 t+ 6 t+ 7 t+ 8 t+ 9 t+ 0 t+ t+ 2 t+ 3 t () () J l ppgave a Tegn et tilstandsdiagram ver kretsen. ppgave b Implementer kretsen fra ppgave a ved hjelp av D-vipper. Du må bruke t slike vipper. Kall dem A g. Tegn et kretsdiagram. Sørg fr at kretsdiagrammet blir enklest mulig. Vis framgangsmåten. (Slutt på ppgave b.) En JK-vippe har t innganger. Dersm vi kaller selve vippen fr Q, så er det vanlig å kalle disse inngangene JQ g KQ. Her er tabell sm beskriver hvrdan en JK-vippe virker: ~.. : "!9 g l neste tilstand fr Q Q 'Q (vippen behlder sin tilstand) (reset) (set) (vippen skifter tilstand) 4
- Sekvensiell krets sm teller frekmster av 00 ppgave d Knstruer den sekvensielle kretsen sm vises i figur. ruk den sekvensielle kretsen fra ppgave a samt t 4-bits tellere av den typen sm er beskrevet ver. ppgave 4 Figur 2 viser en standard singel 2-til- multiplekser g en standard kvadrupel 2-til- multiplekser. En 2-til- multiplekser har t input-linjer A, g ett select-bit S. Den har en utput-linje. Hvis S =, så = A; hvis S =, så 0=. (Ved å sette select-bitet S, kan man altså styre en av linjene A g gjennm multiplekseren.) Den single multiplekseren har kun ett bit på hver linje. Den kavdruple multiplekseren har fire bit på hver linje. (A = A3A2AA, = 32 g 0=0302000,) ppgave a Sett sammen fire single 2-til-l multipleksere til en kvadrupel 2-til- multiplekser. (Slutt på ppgave a.j 5
A A " Figure 2: 2-til-l A multipleksere Figure 3: ALU sm utfører bitvis "and" g bitvis "r" Figur 3 viser en meget enkel ALV (arithmetic lgical unit) med kun ett styringsbit S Funksjnaliteten til ALU'en er beskrevet ved tabellen eskrivelse av pera8jn. s- persjn. - D = Aand D = Ar bitvis "and", dvs. Di = ~. i fr i = 0,,2,3 bitvis "r", dvs. D, = Ai + i fr i = 0,,2,3 itvis "and" betyr altså at and-perasjnen (blsk multiplikasjn) utføres bit (r bit, så (.eks 00and00 = 000 g 00 and = 00. itvis "r" virker på samme måte med hensyn på r-perasjnen (blsk sum). ppgave b Implementer ALU'en i figur 3 ved å tegne et kretsdiagram. Du kan bruke den kvadruple 2-til-l multiplckseren fra ppgave a. (Slutt på ppgave b.) 6
A SI S c. Figure 4: ALU fra bligatrisk ppgave. Figur 4 viser en ALU nesten identisk med ALU'en fra den andre bligatriske ppgaven våren 2005. (Den eneste frskjellen er at ALU'en i den bligatriske ppgaven i tillegg hadde et utput-bit C g et utput-bit V.) Det er ikke nødvendig å huske detaljer fra denne bligatriske ppgaven fr å besvare ppgaven under. Det hlder å vite at funksjnaliteten til ALU'en i figur 4 er gitt ved tabellen Sl 50 Gå =0 Gi - = - D = A + l (inkrement) D = A (verfører A til D) D = A + (addisjn) D = A + nt D = A-l (dekrement) D=A++l D = A + nt + l (subtraksjn) D = A (verfører A til D) tabellen betegner nt ener kmplementet til (bitvis "nt") A R2 RI R Figure 5: ALU sm skal knstrueres i ppgave c 7
Figur 5 viser nk en ALU. Den har styringsbitene R2,R,R. Funksjnaliteten er gitt ved tabellen R2 RI R perasjn (bitvis "and") (bitvis "r") (addisjn) (subtraksjn) (verfører) (enerkmplement) ppgave c l (inkrement) (dekrement) Sett sammen ALV I fra figur 3 g ALV Il fra figur 4 til ALV III fra figur 5. Du kan bruke den kvadruple 2-til-l multiplekseren fra ppgave a g alle andre standard kmpnenter du måtte ønske, dvs. dekdere, multipleksere etc. 8