Eksamen høsten 1999 Datamaskinarkitektur
Les nøye gjennom oppgavene før du begynner og pass på å besvare
alle spørsmålene. Alle hjelpemidler er tillatt. Deloppgavene vil bli vektlagt likt ved sensur,
bortsett fra 3c, 3d, 4c og 4d som vil få vekt 2.
Oppgave 1
a) Skriv desimaltallet 24.600 på binær form. Ta med nok siffer etter komma til at nøyaktigheten
blir omtrent den samme. Vis fremgangsmåten.
b) Skriv hei! som ASCII-kode med odde paritet.
c) Forenkle det boolske utrykket
mest mulig ved hjelp av å bruke regneregler fra boolsk algebra.
d) Bruk Karnaugh-diagram til å forenkle følgende boolske funksjon mest mulig:
. Skriv deretter funksjonen F enklest mulig som et produkt av summer.
e) Representer tallene A = -4 og B = 22 på 2'er komplement form med fortegn og utfør
beregningen A + B. Vis at svaret stemmer.
f) Konstruer en komplett adderer (full adder) ved hjelp av to 4-til-1 linjers multipleksere
og en NOT-port.
g) Konstruer en JK-vippe fra en D-vippe og logiske porter. Tegn kretsen.
Oppgave 2
a) Forklar kort forskjellen mellom en Moore og en Mealy sekvensiell krets.
Du skal nå designe en sekvensiell krets med ett input x og ett output U. Kretsen skal
gi output U = 1 hvis og bare hvis antall enere den har mottatt via input x er delelig med 3. Den skal
altså ha output lik 1 etter å ha mottatt 0, 3, 6, 9, ... etc. enere som input.
b) Tegn et tilstandsdiagram for kretsen. Bruk færrest mulig tilstander.
c) Kretsen skal designes med JK-vipper. Gi et binært nummer til hver tilstand og skriv ned
tilstands-tabellen. Inkluder vippe-input i tabellen.
d) Bruk Karnaugh-diagram til å finne de boolske uttrykkene for vippe-inngangene og for output U.
Bruk eventuelle ubrukte tilstander til å forenkle kretsen.
e) Tegn kretsen.
f) Er kretsen du har designet av Moore eller Mealy-type ? Begrunn svaret.
Oppgave 3
Fibonaccitall er en tallrekke som dukker opp i mange forskjellige sammenhenger i naturen, bl. a. i
biologi. Rekken
genereres ganske enkelt ved at neste ledd i rekken er summen av de to foregående. De to første tallene i
rekken er satt til 1, 1 og resten kan da genereres. Tredje tall i rekken blir 1 + 1 = 2 som gir 1, 1, 2. Fjerde tall blir
1 + 2 = 3, femte tall blir 2 + 3 = 5 etc. slik at rekken blir 1, 1, 2, 3, 5, 8, 13, 21 ,34,
.
I denne oppgaven skal du laget et digitalt system med en datapath og en kontrollenhet som genererer
Fibonaccirekken. I de første deloppgavene skal en adderer og et register designes, som etterpå
blir byggeklosser som skal brukes til å lage en datapath.
a) Tegn en figur som viser hvordan man kan sette sammen fire komplette
adderere (full adder) til en kombinatorisk krets som legger sammen
de to positive 4-bits binære tallene
og
og
leverer resultatet som tallet
gjennom fire output (Tegn de fire addererene som 'svarte bokser' med 3 input og 2 output, ikke ta med
detaljene inni dem). Kretsen skal i tillegg ha et output V som er logisk 1 hvis det resulterer i en overflow når
A og B legges sammen, og logisk 0 hvis summen ikke er for stor til å representeres med 4 bit.
b) Tegn en figur som viser hvordan man kan sette sammen fire D-vipper og NOT, AND og OR-porter til et
4-bits register med parallell load. I tillegg til 4 bit inn og ut skal registeret ha et input som
må settes til logisk 1 for at registeret skal loades parallelt.
c) I design av datapath skal du betrakte og tegne enhetene i de forrige deloppgavene som 'svarte bokser' som vist
i Fig. 1. Output og input til datapath skal være som i figuren. Sekvensen av Fibonaccitall skal kunne leses av
fra de fire F-bitene.
Sett sammen en slik adderer og to slike registere, R0 og R1, til en datapath som vil være i stand til å generere
Fibonaccitall. Du kan anta at det binære tallet 1 er lagret i både R0 og R1 i utgangspunktet.
Tegn inn alle koblinger
mellom elementene i datapath og skriv navn på output og input.
Figure:
3c) Adderer, register og datapath
 |
d) Du skal nå designe en kontrollenhet som skal styre datapath. Den skal ha to output L0 og L1 og
to input G og V. Output L0 og L1 skal styre datapath, slik at den genererer en sekvens av Fibonaccitall som
kan leses fra datapaths fire F-output.
Input G lik logisk 1 skal gi kontrollenheten beskjed om at prosessen med å generere Fibonaccitall
skal begynne. Anta at det binære tallet 1 er lagret i begge registerne i datapath i utgangspunktet.
Input V kommer fra datapath og betyr overflow; dette input skal gi beskjed om at prosessen
er avsluttet og at kontrellenheten skal returnere til utgangspunktet. Tegn et ASM-diagram for en kontrollenhet
som styrer datapath som skissert ovenfor.
e) Implementer ASM-diagrammet ved å bruke en D-vippe for hver tilstandsboks og oversette direkte til en
tegning av en komplett og detaljert krets med vipper og porter. Husk å tegne inn outputene L0 og L1.
f) Lag en enkel tegning av det digitale systemet som viser hvordan du vil koble sammen datapath, representert
ved en boks som i Fig. 1, og kontrollenhet representert ved en tilsvarende boks med input og output.
g) Hva er det største Fibonaccitallet denne kretsen kan lage ?
Oppgave 4
a) Forklar kort forskjellen mellom en prosedyre og en makro i et assemblerprogram.
b) Forklar hva som ligger i minnet etter at følgende assemblerprogram har blitt
kjørt:
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
.CODE
mov ax,@data
mov ds,ax
mov bx,0
mov cx,1
Merke:
mov ax,cx
mul cl
mul cx
mov ds:[bx],ax
add bx,2
inc cx
cmp cx,31
jne Merke
mov ah,4ch
int 21h
END
c) Skriv et assemblerprogram som genererer alle Fibonacci tallene (se oppgave 3) som er mindre enn
og som
legger dem etterhverandre i minnet som words.
d) Lag en assemblerprosedyre som finner ut hvilken av verdiene i ax, bx, cx og dx som er størst
og returnerer med den største verdien i ax.
-SLUTT-
This document was generated using the
LaTeX2HTML translator Version 99.1 release (March 30, 1999)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -show_section_numbers -split 0 -no_navigation exH99
The translation was initiated by Haarek Haugerud on 2000-05-29
Haarek Haugerud
2000-05-29