21
Daniel Betz Wintersemester 2011/12 * Tutorium Tech II

Tutorium Tech II

  • Upload
    kyna

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

Tutorium Tech II. Daniel Betz Wintersemester 2011/12. Insgesamt 16 Register von je 16 Bit (=WORD) Breite „Untere“ 8 Register auch als 2 Register mit je 8 Bit (=BYTE) ansprechbar Alle Register sind Bit-adressierbar. Register C166-Familie. - PowerPoint PPT Presentation

Citation preview

Page 1: Tutorium Tech II

Daniel BetzWintersemester 2011/12

*Tutorium Tech II

Page 2: Tutorium Tech II

Daniel Betz • [email protected]

2

*Register C166-Familie

*Insgesamt 16 Register von je 16 Bit (=WORD) Breite

*„Untere“ 8 Register auch als 2 Register mit je 8 Bit (=BYTE) ansprechbar

*Alle Register sind Bit-adressierbar

22.11.2011

Page 3: Tutorium Tech II

Daniel Betz • [email protected]

3 22.11.2011

*Processor Status Word

*Speichert (u.a.) zusätzliche Ergebnis-Informationen zu ALU-Operationen

*C: Übertrag bei Addition und Subtraktion

*V: Überlauf der Signed-Darstellung

*N: Negatives Ergebnis

*Z: Null-Ergebnis

Page 4: Tutorium Tech II

Daniel Betz • [email protected]

4 22.11.2011

*Befehle

*Binäre Operationen

*„Überdeckung“ spart Speicher

*Erster Operand wird mit Ergebnis überschrieben

*Außerdem: Explizite Angabe von 3 Operanden

*Eher unwichtig

*Unäre Operationen

*z.B. Addition auf Akkumulator

*Auch nicht so wichtig

Page 5: Tutorium Tech II

Daniel Betz • [email protected]

5 22.11.2011

*Adressierung

*Direktoperand: Wert steht direkt im Code

*Markiert durch Raute #

*Auch für EQU-Konstanten

*Register-Adressierung: Register-Zugriffe

*Markiert durch Registername, z.B. R1 oder RH2

*Direktadressierung: Variablen-Zugriffe

*Für z.B. mit DW oder DB definierte Variablen

*Unterstützt „Pointer-Arithmetik“

Page 6: Tutorium Tech II

Daniel Betz • [email protected]

6 22.11.2011

*Adressierung

* Indirekte Adressierung: Pointer

* Für Variablen

*Mit der Raute wird statt dem Wert die Adresse verwendet: #Variable

*Mit eckigen Klammern wird die Adresse „aufgelöst“: [R0]

*Pointer-Arithmetik: Byte-Adressen

* Inkrement/Dekrement ähnlich C: [R0+], [R0-], [+R0], [-R0]

* Aber Achtung: Sprung von Zielregister abhängig – Byte (1) oder Word (2)

* Expliziter Sprung: [R0+#2], [R0-#3]

* Explizite Sprünge immer Byte-weise

Page 7: Tutorium Tech II

Daniel Betz • [email protected]

7 22.11.2011

*Befehle

*MOV: Daten kopieren

*PUSH/POP: Register(!) auf Stack legen und von Stack laden

*JMP: Springen zu Label

* cc_UC: Unbedingt

* cc_Z/cc_NZ: Wenn PSW.Z 1/0

* cc_V/cc_NV: Wenn PSW.V 1/0

* cc_N/cc_NN: Wenn PSW.N 1/0

* cc_C/cc_NC: Wenn PSW.C 1/0

* cc_EQ/cc_NE: Wenn gleich/ungleich (nach CMP)

*… und viele andere lustige Bedingungen

Page 8: Tutorium Tech II

Daniel Betz • [email protected]

8 22.11.2011

*Befehle

*CMP: Vergleichen

*CALL: Unterprogramm aufrufen

*Funktioniert im Prinzip wie JMP

*RET: Aus Unterprogramm zurückspringen

*ADD/ADDC: Addition ohne/mit Carry-Bit

*SUB/SUBC: Subtraktion ohne/mit Carry-Bit

*AND/OR/XOR: Bitweise Logik

*MOV, ADD, ADDC, SUB, SUBC und CMP können durch Anhängen von B (z.B. MOVB oder SUBCB) auch erzwungen Byte-weise arbeiten

Page 9: Tutorium Tech II

Daniel Betz • [email protected]

9 22.11.2011

*Direktiven

*EQU: Konstanten, wie #define

*Alle Vorkommnisse der Konstante werden beim Übersetzen durch den eigentlichen Wert ersetzt

*DB: Erstellt Byte-Variable mit Wert

*DW: Erstellt Word-Variable mit Wert

*DS: Erstellt Variable mit angegebener Größe ohne Wert

Page 10: Tutorium Tech II

Daniel Betz • [email protected]

10

*AufgabenVHDL, aus Klausuren

22.11.2011

Page 11: Tutorium Tech II

Daniel Betz • [email protected]

11 22.11.2011

*VHDL-BezeichnerSS08

*_negiertes_Signal

*Gruppe

*Group

*4_gewinnt

*mit_Mühe

Page 12: Tutorium Tech II

Daniel Betz • [email protected]

12 22.11.2011

*SchieberegisterSS08

*Aufgabe:

*32 Bit breites Register

*Schieben bei steigender Taktflanke

*Laden von D nach Q bei Lade = 1

*Hinweise:

*Schieberichtung ist nach „links“, also von Q(0) in Q(1) usw

*SerIn ist das neue Q(0)

*& ist der Konkatenations-Operator

Shifter

Takt

SerIn

Lade

D(31..0)

Q(31..0)

Page 13: Tutorium Tech II

Daniel Betz • [email protected]

13 22.11.2011

*Schieber. mit Rückkopplung

SS08

*Gegeben: Schieberegister von eben

*Aufgabe: Linear rückgekoppeltes Schieberegister

*XOR-Modell schreiben

*Skizze der Anordnung

*VHDL-Modell

*Hinweise:

*SerIn = (Q(31) XOR Q(23)) XOR Q(11)

*Ausgabe ist nur das Bit Q(31)

LSFRQ31

Takt

Lade

D(31..0)

Page 14: Tutorium Tech II

Daniel Betz • [email protected]

14 22.11.2011

*Strukturelles VHDL

WS08/09

* Aufgabe: VHDL-Strukturmodell

* Skizze

* Modell

* Gegeben: Folgende Bausteine

* entity nicht is port (an : IN std_logic; yn : OUT std_logic);end;

* entity und3 is port (au, bu, cu : IN std_logic; yu : OUT std_logic);end;

* entity oder4 is port (ao, bo, co, do : IN std_logic; yo : OUT std_logic);end;

Page 15: Tutorium Tech II

Daniel Betz • [email protected]

15

*AufgabenAssembler, aus Klausuren

22.11.2011

Page 16: Tutorium Tech II

Daniel Betz • [email protected]

16 22.11.2011

*Der C166 führt folgendes Programm aus:MOV R1,#0xCAFFADD R1,#13569

*Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum?

*Flags nach AdditionSS06

Page 17: Tutorium Tech II

Daniel Betz • [email protected]

17 22.11.2011

*EndiannessWS06/07

*Ein 32-Bit-Prozessor kann seine Byte Order zwischen Little Endian und Big Endian umstellen

*Die Zahl -123.456.789 wird an der Adresse 0x1000 gespeichert

*Gefragt: Das Byte an Adresse 0x1002 für beide Anordnungen

Page 18: Tutorium Tech II

Daniel Betz • [email protected]

18 22.11.2011

*Flags nach AdditionWS06/07

*Der C166 führt folgendes Programm aus:MOV R1,#50000ADD R1,#0x3CB0

*Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum?

Page 19: Tutorium Tech II

Daniel Betz • [email protected]

19 22.11.2011

*Adressierung und Ausführung

SS07

*Gegeben ist folgender ASM-Code für den C166:INDEX EQU 4V1 DW 9, 99, 10, 13, 5V2 DW 0xbebe, 0xadeMOV R0, #INDEXMOV R1,#V2 + 2 ;?1MOV R2,[R0 + #V1] ;?2MOV R3,[R1] ;?3MOV RH3,RL3 ;?4

*Welche Adressierungsarten werden an den markierten Stellen benutzt?

*Angenommen, die Adresse von V1 sei 0x100. Was steht nach Programmende in R0 bis R3?

Page 20: Tutorium Tech II

Daniel Betz • [email protected]

20 22.11.2011

*FPGA-WissenSS07

*Zum Abschluss noch eine Wissensfrage…

*Das „F“ in FPGA steht für … und das bedeutet: …

Page 21: Tutorium Tech II

Daniel Betz • [email protected]

21

*Danke für die Aufmerksamkeit

Bis nächste Woche!

22.11.2011