MC UE 2020 m L - Mikrocomputertechnik PDF

Title MC UE 2020 m L - Mikrocomputertechnik
Author xu Tian
Course Mikrocomputertechnik
Institution Technische Hochschule Nürnberg
Pages 81
File Size 1.7 MB
File Type PDF
Total Downloads 72
Total Views 150

Summary

Mikrocomputertechnik...


Description

Unterschrift Erstprüfer: ......................................

Note: ................

Unterschrift Zweitprüfer: ....................................

Punkte: .............

Mit Lösungen Übungen Mikrocomputertechnik, 2020/2021 Studiengang:

BEI  , BMED  , BMF 

Prüfer: Ort: Termin:

SoSe 2020: 8.8.2020, 14:30

Dauer:

Nur SoSe 2020: 60 min, ab WS wieder 90 min

Zugelassene Hilfsmittel:

keine

Name, Vorname:

................................................................................................

Matrikelnummer:

................................................................................................

Hiermit bestätige ich, einen Aufgabensatz von

Seiten erhalten und

vollständig abgegeben zu haben Unterschrift:

................................................................................................

Hinweise:  Keine Rotstifte und keine Bleistifte verwenden  Schreiben Sie Ihren Namen und Studiengang links oben auf jedes lose Blatt!  Die angegebenen Punktzahlen sind Richtwerte; Abweichungen sind möglich.  Lösungswege müssen klar erkennbar sein.  Einer stichpunktartigen Beschreibungsform ist der Vorzug zu geben.  Schreiben Sie Ihre Lösungen nur auf die Aufgabenblätter an die dafür vorgesehenen Stellen (). Es werden nur Lösungen auf diesen Aufgabenblättern bewertet.

Und nun: VIEL ERFOLG

Name:

Big Endian und Little Endian Speicherzugriffe Im Folgenden geht es um Speicherzugriffe verschiedener Prozessoren auf externe SRAMSpeicher mit unterschiedlichen Datenbusbreiten. Das LSBit und MSBit der Busbreite des Speichers ist über der obersten Speicherzelle angegeben. Die Tabellen zeigen die Speicherinhalte in der Einheit Byte, d.h. in jedem Kasten ist eine Speicherzelle der Größe 1 Byte enthalten. Diese Darstellung ist nicht zu verwechseln mit der Anzeige in einem Debugger. Bei den Aufgaben 1f und 1g steht links neben den Speicherzellen eine Adresse. D.h. nicht, dass damit die linke Speicherzelle gemeint ist, sondern definiert lediglich die niederwertigste Speicherzelle in dieser Zeile. Ziel der Aufgaben ist es Schreib- und Lesezugriffe von einem Little- oder Big Endian Prozessor auf Speicher zu trainieren. Die zentrale Frage lautet deher, was steht nach einem Datentansfer im betreffenden Prozessorregister und wie wurde der Speicherinhalt beeinflusst. Da es in der Realität auch möglich ist Speicher anzuschließen, die nicht die volle Datenbusbreite des Prozessors besitzen, ist genau darauf zu achten, auf welchen Datenbuspins der Transfer stattfindet. Als Speichertyp wird hier immer ein SRAM verwendet. Die Unterscheidung, ob es initialisiert ist oder nicht ist von Bedeutung. Ein SRAM enthält nach dem Anlegen der Versorgungsspannung einen zufälligen Wert. Er wird in der Darstellung mit XX (don’t care, 0 oder 1) gekennzeichnet. Dieser kann durch ein Initialisierungsprogramm überschrieben werden, muss aber nicht. Die Aufgaben dienen als praktische Ergänzung zum entsprechenden Kapitel im MCT-Skript. Dort wird Endianess definiert und anhand von Bildern nochmal erklärt, auch wenn es aus den Informatik Grundlagen schon bekannt ist.

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 2

Name:

Aufgabe 1a:

Little Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines unbekannten, 32 bit Little Endian Prozessors auf einen externen, 32 bit breiten SRAM-Speicher. Der Prozessor hat 4 interne 32 bit Register R0 - R3. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert das untere Byte, MOV16 die unteren zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Wert. Beispiele: MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV16

R0, #0x 10 80

= XX XX 10 80

MOV32

R1, #0x 80 00 00 80

= 80 00 00 80

Der Speicher und die restlichen Registerinhalte sind nicht initialisiert. Schreiben Sie über Bit 0 und Bit 31 die Adressen der Speicherzellen. Tragen Sie den Inhalt der Speicherzellen 0x1000 bis 0x1003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.



Σ10 0x1003 Bit 31

0x1002

0x1001

0x1000

Speicherzellen 0x1000…0x1003

Bit 0

MOV32

0x1000, R0

XX

XX

10

80

MOV16

0x1002, R1

00

80

10

80

ADD8

0x1000, R1

00

80

10

00

00

80

10

00

80

80

10

80

MOV8 ADD32

R0, 0x1001 0x1000, R1

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 3

Name:

Aufgabe 1b:

Big Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines unbekannten, 32 bit Big Endian Prozessors auf einen externen, 32 bit breiten SRAM-Speicher. Der Prozessor hat 4 interne 32 bit Register R0 - R3. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert das untere Byte, MOV16 die unteren zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Wert. Beispiele: MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV16

R0, #0x 10 80

= XX XX 10 80

MOV32

R1, #0x 80 00 00 80

= 80 00 00 80

Der Speicher und die restlichen Registerinhalte sind nicht initialisiert. Schreiben Sie über Bit 0 und Bit 31 die Adressen der Speicherzellen. Tragen Sie den Inhalt der Speicherzellen 0x1000 bis 0x1003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.

 0x1000 Bit 31

0x1001

0x1002

0x1003

Speicherzellen 0x1000…0x1003

Bit 0

MOV32

0x1000, R0

XX

XX

10

80

MOV16

0x1002, R1

XX

XX

00

80

ADD8

0x1000, R1

XX

XX

00

80

XX

XX

00

80

XX

XX

01

00

MOV8 ADD32

R0, 0x1001 0x1000, R1

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 4

Name:

Aufgabe 1c:

Big Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines unbekannten, 32 bit Big Endian Prozessors auf einen externen, 32 bit breiten SRAM-Speicher. Der Prozessor hat 4 interne 32 bit Register R0 - R3. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert das untere Byte, MOV16 die unteren zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Wert. Beispiele: MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV16

R0, #0x 10 80

= XX XX 10 80

MOV32

R1, #0x 80 00 00 80

= 80 00 00 80

Der Speicher und die restlichen Registerinhalte sind nicht initialisiert. Schreiben Sie über Bit 0 und Bit 31 die Adressen der Speicherzellen. Tragen Sie den Inhalt der Speicherzellen 0x1000 bis 0x1003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.

 0x1000 Bit 31

0x1001

0x1002

0x1003

Speicherzellen 0x1000…0x1003

Bit 0

MOV32

0x1000, R0

XX

XX

10

80

MOV16

0x1000, R1

00

80

10

80

ADD8

0x1000, R1

80

80

10

80

80

80

10

80

00

80

11

00

MOV8 ADD32

R0, 0x1001 0x1000, R1

Achtung: MOV16 ist anders als in Beispiel 1a (1000 statt 1002) !

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 5

Name:

Aufgabe 1d:

Little Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines unbekannten, 32 bit Little Endian Prozessors auf einen externen, 16 bit breiten SRAM-Speicher. Der Prozessor hat 4 interne 32 bit Register R0 - R3. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert das untere Byte, MOV16 die unteren zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Wert. Beispiele: MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV32

R0, #0x 10 20 30 40

MOV32

R1, #0x 50 60 70 80

Der Speicher und die restlichen Registerinhalte sind nicht initialisiert. Schreiben Sie über Bit 0 und Bit 31 die Adressen der Speicherzellen $1000 und $1001. Tragen Sie den Inhalt der Speicherzellen 0x1000 bis 0x1003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.

 0x1001 0x1003

0x1000 0x1002

Bit 15

MOV32

MOV16

ADD16

ADD8

ADD32

0x1000, R0

0x1000, R1

0x1002, R0

0x1000, R1

0x1000, #1

Bit 0

30

40

10

20

70

80

10

20

70

80

40

60

70

00

40

60

70

01

40

60

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 6

Name:

Aufgabe 1e:

Big Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines unbekannten, 32 bit Big Endian Prozessors auf einen externen, 16 bit breiten SRAM-Speicher. Der Prozessor hat 4 interne 32 bit Register R0 - R3. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert das untere Byte, MOV16 die unteren zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Wert. Beispiele: MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV32

R0, #0x 10 20 30 40

MOV32

R1, #0x 50 60 70 80

Der Speicher und die restlichen Registerinhalte sind nicht initialisiert. Schreiben Sie über Bit 0 und Bit 31 die Adressen der Speicherzellen $1000 und $1001. Tragen Sie den Inhalt der Speicherzellen 0x1000 bis 0x1003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.

 0x1000 0x1002

0x1001 0x1003

Bit 15

MOV32

MOV16

ADD16

ADD8

ADD32

0x1000, R0

0x1000, R1

0x1002, R0

0x1000, R1

0x1000, #1

Bit 0

10

20

30

40

70

80

30

40

70

80

60

80

F0

80

60

80

F0

80

60

81

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 7

Name:

Aufgabe 1f:

Big Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines 32 bit Big Endian Prozessors auf einen externen, 8 bit breiten SRAM-Speicher. Der Prozessor hat 2 interne 32 bit Register R0, R1. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOVn transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADDn addiert sie. Das Ergebnis steht in Ziel. n gibt die Länge in bit an. Siehe Übungen. Der Speicher und die Register sind nicht initialisiert. Tragen Sie den Inhalt der gegebenen Speicherzellen (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein. MOV32 R0, #0x10

= 00 00 00 10

MOV16 R1, #0x8000

= XX XX 80 00

MOV32 0x500000, R1

$500000

XX

$500001

XX

$500002

80

$500003

00

$500000

00

$500001

10

$500002

80

$500003

00

$500000

00

$500001

10

$500002

80

$500003

10

$500000

00

$500001

10

$500002

80

$500003

10

$500000

00

$500001 $500002

10 О О 10 -> 10 80

$500003

10

MOV16 0x500000, R0

ADD16 0x500002, R0

MOV32 R0, 0x500000

MOV8 0x500001, R0

О О О XX XX -> 00 10 О

О О

80 00 + 00 10 --------80 10 Keine О Änderung О = 00 10 80 10

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 8

Name:

Aufgabe 1g:

Little Endian Speicherzugriffe

10 Punkte

Im Folgenden geht es um Speicherzugriffe eines 32 bit Big Endian Prozessors auf einen externen, 16 bit breiten SRAM-Speicher. Der Prozessor hat 2 interne 32 bit Register R0, R1. Seine Assemblerprogramme werden in der Notation OpCode Ziel, Quelle eingegeben. MOV transportiert Werte zwischen Registern und Speicher in beide Richtungen, ADD addiert sie. Das Ergebnis steht in Ziel. MOV8 kopiert ein Byte, MOV16 zwei Byte und MOV32 vier Byte. ADD8 addiert ein Byte, ADD16 zwei Byte und ADD32 vier Byte. # kennzeichnet einen Zahlenwert. Beispiele:

MOV8

R0, 0x10 kopiert den Inhalt der Speicherzelle hex 10 in R0.

MOV8

R0, #0x10 schreibt die Zahl hex 10 in R0.

Initialisierungsprogramm der Register nach dem Power Up Reset: MOV32

R0, #0x 00 00 80 33

MOV32

R1, #0x 00 00 80 CD

Der Speicher ist nicht initialisiert. Schreiben Sie unter Bit 0 und Bit 15 die Adressen der Speicherzellen. Tragen Sie den Inhalt der Speicherzellen 0x2000 bis 0x2003 (alle Werte, auch führende Nullen und unbekannte Werte mit X) nach Ausführung des folgenden Programms ein.

 Bit15

R0 = 00 00 80 33 R1 = 00 00 80 CD

MOV8

0x2003, R0

Bit 0

0x2000

0x2001

0x2000

XX

XX

0x2002

XX

33

Adresse

0x2000

XX

XX

R1 = 00 00 XX XX

0x2002

XX

33

MOV8

0x2000

XX

XX

0x2002

33

33

0x2000

XX

XX

0x2002

33

33

0x2000

XX

XX

0x2002

XX

XX

MOV16

ADD8

R1, 0x2000

0x2002, R0

0x2001, R0

ADD16 0x2002, R1

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 9

Name:

Buszyklen Die Aufgabe zielt auf die Grundlagen in Kap. 2.4 und Kap. 3 des Skripts. Es werden keine Burstzugriffe, Pipelines und sonstige Maßnahmen zur Beschleunigung betrachtet. Ziel ist der direkte Anschluss an einen CPU-Bus, ohne zusätzliche Switchmatrizen, Busbreitenanpassungen und Beschleuniger. Nur die Betrachtunen in Kap. 2 und 3 sind maßgebend.

© Mikrocomputertechnik, Übungen / alte Prüfungen, angepasst auf ARM Cortex. Urbanek. Version 1.2

Seite 10

Name:

Aufgabe 2:

Buszyklen

10 Punkte

a) Welche beiden charakteristischen Kennzeichen besitzt ein synchroner Buszyklus?



- Transfer läuft in festem Bezug zum Takt ab (Synchrontakt) - keine Bestätigung

b) Welche beiden charakteristischen Kennzeichen besitzt ein asynchroner Buszyklus?



- kein Maximalwert für die Zeitdauer des Transfers - Quittungssignal

c) Welchen Buszyklus-Typ verwendet der M0 (synchron/asynchron) ?



Synchron

d) Welcher Buszyklus-Typ ist prinzipiell schneller – synchron oder asynchron und warum?



Synchron Weil er das Quittungssignal nicht abfragen muss

e) Wieviele Takte braucht ein synchroner Buszyklus minimal?



2 (Adressieren, Daten transferieren, Daten übernehmen, das braucht alles mindestens 1 Flanke => zwangsweise minimal 2 Taktzyklen)

f) Wieviele Takte braucht ein asynchroner Buszyklus minimal?



3 (zusätzlich Quittungssignal abtasten => zwangsweise minimal 3Taktzyklen)

g) Wie berechnet man die Anzahl der benötigten Takte eines Buszyklus aus de...


Similar Free PDFs