1 / 21

Tutorium Tech II

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.

kyna
Download Presentation

Tutorium Tech II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tutorium Tech II Daniel BetzWintersemester 2011/12

  2. 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 Daniel Betz • daniel.betz@daniel-betz.com

  3. 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 Processor Status Word Daniel Betz • daniel.betz@daniel-betz.com

  4. 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 Befehle Daniel Betz • daniel.betz@daniel-betz.com

  5. 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“ Adressierung Daniel Betz • daniel.betz@daniel-betz.com

  6. 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 Adressierung Daniel Betz • daniel.betz@daniel-betz.com

  7. 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 Befehle Daniel Betz • daniel.betz@daniel-betz.com

  8. 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 Befehle Daniel Betz • daniel.betz@daniel-betz.com

  9. 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 Direktiven Daniel Betz • daniel.betz@daniel-betz.com

  10. Aufgaben VHDL, aus Klausuren Daniel Betz • daniel.betz@daniel-betz.com

  11. _negiertes_Signal • Gruppe • Group • 4_gewinnt • mit_Mühe VHDL-BezeichnerSS08 Daniel Betz • daniel.betz@daniel-betz.com

  12. 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 Q(31..0) Lade D(31..0) SchieberegisterSS08 Daniel Betz • daniel.betz@daniel-betz.com

  13. 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) LSFR Takt Q31 Lade D(31..0) Schieber. mit RückkopplungSS08 Daniel Betz • daniel.betz@daniel-betz.com

  14. Aufgabe: VHDL-Strukturmodell • Skizze • Modell • Gegeben: Folgende Bausteine • entity nicht isport(an : IN std_logic;yn :OUTstd_logic);end; • entityund3 isport(au, bu, cu: IN std_logic;yu:OUTstd_logic);end; • entityoder4 isport(ao, bo, co, do : IN std_logic;yo:OUTstd_logic);end; Strukturelles VHDLWS08/09 Daniel Betz • daniel.betz@daniel-betz.com

  15. Aufgaben Assembler, aus Klausuren Daniel Betz • daniel.betz@daniel-betz.com

  16. Der C166 führt folgendes Programm aus:MOV R1,#0xCAFFADDR1,#13569 • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionSS06 Daniel Betz • daniel.betz@daniel-betz.com

  17. 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 EndiannessWS06/07 Daniel Betz • daniel.betz@daniel-betz.com

  18. Der C166 führt folgendes Programm aus:MOVR1,#50000ADDR1,#0x3CB0 • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionWS06/07 Daniel Betz • daniel.betz@daniel-betz.com

  19. Gegeben ist folgender ASM-Code für den C166:INDEX EQU4V1 DW9, 99, 10, 13, 5V2 DW0xbebe, 0xadeMOVR0, #INDEXMOVR1,#V2 + 2 ;?1MOVR2,[R0 + #V1] ;?2MOVR3,[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? Adressierung und AusführungSS07 Daniel Betz • daniel.betz@daniel-betz.com

  20. Zum Abschluss noch eine Wissensfrage… • Das „F“ in FPGA steht für … und das bedeutet: … FPGA-WissenSS07 Daniel Betz • daniel.betz@daniel-betz.com

  21. Danke für die Aufmerksamkeit Bis nächste Woche! Daniel Betz • daniel.betz@daniel-betz.com

More Related