Lösningsförslag till Tenta i Mikrodator

Relevanta dokument
Lösningsförslag till Tenta i Mikrodator

Övningsuppgifter i Mikrodatorteknik 4p/5p

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

F4: Assemblerprogrammering

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

F5: Högnivåprogrammering

F5: Högnivåprogrammering

F8: Undantagshantering

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Tentamen. Datorteknik Y, TSEA28

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Datorarkitekturer med Operativsystem

Digital- och datorteknik

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Tentamen Datorteknik Y, TSEA28 Datum

Digital- och datorteknik

CE_O5. Cacheminne. Hemlaboration 2.

Tentamen Datorteknik D del 2, TSEA49

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Digital- och datorteknik

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

Tentamen. Datorteknik Y, TSEA28

Föreläsningsanteckningar 5. Cacheminnen

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Digital- och datorteknik

Grundläggande datavetenskap, 4p

Adressavkodning - busskommunikation

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Digital- och datorteknik

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Digital- och datorteknik

Tentamen (Exempel) Datorteknik Y, TSEA28

Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL!

Kursplanering för Mikrodatorteknik 4p/5p

Tentamen (Exempel) Datorteknik Y, TSEA28

Programexempel för FLEX

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

F9: Minne. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden.

Stack och subrutiner Programmeringskonventionen

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Digital- och datorteknik

CE_O3. Nios II. Inför lab nios2time

Tentamen (Exempel) Datorteknik Y, TSEA28

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Tenta i Digitalteknik

Tentamen den 17 mars 2016 Datorteknik, EIT070

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Assemblerprogrammering del 3

Föreläsningsanteckningar 3. Mikroprogrammering II

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Laboration 2 i Datorteknik- Assemblerprogrammering II

Tentamen Datorteknik Y, TSEA28 Datum TER2, TER4, TERE Tid 14-18

Lösningar till tentamen i EIT070 Datorteknik

Tentamen Datorteknik Y, TSEA28 Datum TER2 och TER3 Tid 14-18

2 UPPBYGGNAD OCH FUNKTION

Tentamen Datorteknik Y, TSEA28 Datum TER1 och TER2 Tid 14-18

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

A-del motsvarande KS1

TSEA28 Datorteknik Y (och U)

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Digitala System: Datorteknik ERIK LARSSON

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

TSEA28 Datorteknik Y (och U)

Omtentamen i CDT204 - Datorarkitektur

HF0010. Introduktionskurs i datateknik 1,5 hp

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Digital- och datorteknik

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor. Maxpoäng: 60p

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Tentamen i Digitalteknik och Datorarkitektur DV1 5p

F9: Minne. Minneskonfiguration. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

LV6 LV7. Aktivera Kursens mål:

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

TSEA28 Datorteknik Y (och U)

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Transkript:

Lösningsförslag till Tenta i Mikrodator 050113 1. Vilka register finns det i processorn och vad används dessa till? D0 till D7: Dataregister som används för beräkningar A0 till A6: Adressregister som används till att lagra pekare till minnet A7: pekar på stacken och är dubblerad till USP och SSP som används beroende på vilken mod processorn befinner sig i, user mode eller supervisor mode. PC: Programräknaren pekar på den adress i minnet som nästa instruktion skall hämtas ifrån. SR: statusregistret styr några av processorns funktioner, avbrottsmask, trace och användarmod. Status från aritmetiska operationer indikeras i ett antal statusbitar. 2. Nämn och beskriv kortfattat två sätt att adressera data i ett cacheminne. Direktmappad cache: Cacheminnet är indelat i N stycken lika stora linjer. Primärminnet är indelat i K stycken block. Ett sådant block består i sin tur av N stycken linjer. En linje n i primärminnet kan endast lagras i motsvarande linje n i cacheminnet. Därav direktmappat. Associativ cache: En fullt associativ cache är precis som för den direktmappade indelad i N stycken linjer. En linje i primärminnet kan för en associativ adressering lagras i godtycklig linje i cacheminnet. Denna flexibla adressering gör också att sökningen i det associativa cacheminnet blir mer komplext och dyrare att implementera. 3. Vilken uppgift har UDS* och LDS*? UDS* och LDS* är övre respektive nedre datastrobe. LDS indikerar att den minst signifikanta byten skall adresseras. UDS indikerar att den mest signifikanta byten skall adresseras. 4. Vad står DMA för samt beskriv hur DMA fungerar? Adress Data Kontroll signaler Minn CPU I/O DMA står för Direct Memory Acess och är en metod för processorn att synkronisera mot I/Oenheter. När en I/O-enhet behöver överföra data till minnet så begär den att få ta över kontrollen över systembussen, dvs bli bussmästare. Processorn lämnar då över kontrollen till I/O som nu kan direkt överföra data till minnet utan att gå via processorn. Efter avslutad dataöverföring lämnas kontrollen över systembussen tillbaka till processorn.

5. Antag att register D1 innehåller $00000099. Ange D1, C-flaggans samt Z- flaggans värde efter att instruktionerna nedan har exekverats. Observera att a till f är enskilda instruktioner och inte ett program. a) EORI.B #$66,D1 XOR $66 = 0110 0110 $FF 1111 1111 C=0, Z = 0, D1=$000000FF b) ADDI.B #$66,D1 $66 = 0110 0110 ADD $FF 0 1111 1111 c) ADDI.B #$67,D1 $67 = 0110 0111 ADD $100 = 1 0000 0000 C=0, Z = 0, D1=$000000FF C=1, Z = 1, D1=$00000000 d) SUBI.B #$66,D1 $66 = 0110 0110 SUB $033 = 0 0011 0011 C=0, Z = 0, D1=$00000033 e) ASR.B #2,D1 ASR 2 $E6 = 1110 0110 C=0, Z = 0, D1=$000000E6 f) ROL.B #4,D1 ROL 4 C=1, Z = 0, D1=$00000099

6. Funktionsanrop i assembler. En funktion i C är deklarerade som följande: void printchar(int a, int b); Parametrarna a och b ska skickas till funktionen via stacken. a) Rita stackens innehåll efter hoppet till subrutinen printchar, precis innan första instruktionen i subrutinen exekverats. Stackpekaren pekar på adress $7000 innan anropet. Anropet till funktionen i assembler görs enligt följande: Funktionsanrop i C PrintChar(a,b); Funktionsanrop i assembler MOVE.W a,-(a7) MOVE.W b,-(a7) BSR printchar ADDA.L #4,A7 SP Stacken 6FF8 6FF9 Återhoppsadress 6FFA 6FFB 6FFC 6FFD b 6FFE 6FFF a 7000 00 b) Vilken funktion har instruktionen ADDA.L #4,A7? Instruktionen tar bort parametrarna a och b från stacken. (Med tar bort i detta samanhang menas att stackpekaren justeras +4.) 7. Adresseringsmetoder: Vad kommer D2 och A3 att innehålla efter att instruktionen har exekverats. Innehållet i minnet är specificerat av tabellen nedan. Instruktionerna är oberoende av varandra (inget program). D2 har värdet $00000000 och A3 $00004004 innan varje instruktion exekveras. a) MOVE.L $4004, D2 b) MOVE.W 4(A3), D2 c) MOVE.L -(A3), D2 d) MOVE.B -(A3), D2 e) MOVE.W -2(A3), D2 f) MOVE.W #$4004, D2 g) MOVE.B (A3)+,D2 h) MOVE.L (A3)+,D2

Adress (Hexadecimal) Innehåll (Hexadecimal) 4000 77 4001 21 4002 C3 4003 FD 4004 00 4005 14 4006 99 4007 74 4008 A6 4009 AA Deluppg. Instruktion D2 A3 A MOVE.L $4004, D2 $00149974 $00004004 B MOVE.W 4(A3), D2 $0000A6AA $00004004 C MOVE.L -(A3), D2 $7721C3FD $00004000 D MOVE.B -(A3), D2 $000000FD $00004003 E MOVE.W -2(A3), D2 $0000C3FD $00004004 F MOVE.W #$4004, D2 $00004004 $00004004 G MOVE.B (A3)+,D2 $00000000 $00004005 H MOVE.L (A3)+,D2 $00149974 $00004008 8. Assemblerprogrammering: Skriv en subrutin i 68000-assembler som skriver ut ett tal (0-15) till en display. På displayen presenteras talet som en hexadecimal siffra (0-F). Displayen är av samma typ som på labbkorten, dvs. en 7-segment display. Displayen är ansluten till ML4_OUT (porten är definierad). Varje bit i ML4_OUT är ansluten till en lysdiod i 7-segment displayen. Kopplingen mellan bitarna i ML4_OUT och lysdioderna är definierad i figuren nedan (T ex. b 0 är kopplad till den översta vågräta dioden). b 7 är kopplad till punkten på 7-segmentdiesplayen, så den sätter ni alltid till noll. In: ML4_OUT = Talet som ska skrivas ut till 7-segmentdisplayen (tal mellan 0-16) Ut: Inget ska returneras från subrutinen. Exempel: Nedre byten på D0 = %00110000 ska ge en etta på displayen och ML4_OUT = %00111111 ger en nolla.

ML4_OUT b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 b 0 b 1 b 5 b 6 b 2 b 4 b 3 b 7 Ex. för en nolla ML4_OUT = %00111111 b 7 =0 b 6 =0 b 5 =1 b 4 =1 b 3 =1 b 2 =1 b 1 =1 b 0 =1 ********************************************** * Subroutine: writetosevensegment * * Input parameters: D0.B number to be written * Output: none ********************************************** writetosevensegment: MOVEM.L D0/A0,-(SP) BRA startofsub *A0, D0 will be used and copied to the stack segmentlut: **SEGMENTS**76543210***** OUT_0 DC.B %00111111 OUT_1 DC.B %00110000 OUT_2 DC.B %01101101 OUT_3 DC.B %11111001 OUT_4 DC.B %01110010 OUT_5 DC.B %01011011 OUT_6 DC.B %01011111 OUT_7 DC.B %00110001 OUT_8 DC.B %01111111 OUT_9 DC.B %01111011 OUT_A DC.B %01110111 OUT_B DC.B %01011110 OUT_C DC.B %00001111 OUT_D DC.B %01111100 OUT_E DC.B %01001111 OUT_F DC.B %01000111 startofsub: ALIGN ANDI.L #$F,D0 * Only four bit parameter LEA segmentlut,a0 * A0 points at start of table ADDA.L D0,A0 * Add parameter to start of table MOVE.B (A0),ML4_OUT * Copy the 7-seg code that A0 points at MOVEM.L (SP)+,D0/A0 RTS * Retrieve old value of A0,D0

9. Sätt samman en minnesbank som är konstruerad av flera mindre minnesobjekt (se komponenten i figuren). Signaler till minnesbanken ska vara A(adress), D(data) samt CS*. Minneskapslarna som används för att konstruera minnesbanken har samma signaler som den färdiga minnesbanken har. Där CS* signalen är aktivt låg. Du ska indikera vilka adress/data-signaler som ska kopplas till de olika minneskapslarna. Minnesbanken ska vara 16Mbytes stor och organiserad med en 16 bitars databuss. Minnesbanken sätts samman med hjälp av minneskomponenter som har 4-bitars databuss och 21 bitars adressbuss. A(20:0) D(3:0) CS RAM Minne

10. A) Konstruera en fullständig adressavkodare (fullständig adressavkodning) som realiserar adresskartan definierad i uppgiften. Implementera med hjälp av logiska grindar och avkodare (specificerad i Appendix) Komponent ROM1 ROM2 RAM KOMP_1 KOMP_2 KOMP_3 KOMP_4 Adressområde 00 0000-0F FFFF 10 0000 1F FFFF 20 0000-2F FFFF 30 0000-30 00FF 40 0000-40 00FF 50 0000-50 00FF 60 0000-60 00FF

B) Hur många bytes är definierat för varje komponent i adresskartan? Komponent Adressbitar som omfattas av komponent Storlek ROM1 A 19 - A 0 2 20 = 1 Mbyte ROM2 A 19 - A 0 2 20 = 1 Mbyte RAM A 19 - A 0 2 20 = 1 Mbyte KOMP_1 A 7 - A 0 2 8 byte = 256 byte KOMP_2 A 7 - A 0 2 8 byte = 256 byte KOMP_3 A 7 - A 0 2 8 byte = 256 byte KOMP_4 A 7 - A 0 2 8 byte = 256 byte

11. A) Implementera följande IF-sats i 68000-assembler. Alla variabler är av 16-bit storlek och kan ersättas med register. if (tal1 > tal2) max = tal1; else max = tal2; condelse: conddone: move.w cmp.w bls move.w bra move.w tal1,d0 tal2,d0 condelse // Jump if tal1 <= tal2 tal1,max conddone tal2,max B) Implementera följande loop while(a<5){ kalle(); a++; } i assemblerkod. Där kalle är en subrutin och a är ett 16-bits tal i minnet. Loop: LoopExit: CMPI.W #5,a BCC LoopExit // Jump if a >= 5 BSR ADDQ.W kalle #1,a BRA Loop