Sie sind auf Seite 1von 59

Termin 2 - MCT-2

WiSe21/22

Stephan Schulze

12. Oktober 2021

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 1 / 59
Gliederung

1 Zahlensysteme und Codes

2 Aufbau eines Rechnersystems

3 Der STM32F303RET6

4 Assembler

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 2 / 59
Abschnitt 1

Zahlensysteme und Codes

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 3 / 59
Unterabschnitt 1

Vorzeichenlose Zahlen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 4 / 59
Zahlensysteme und Codes
(Vorzeichenlose) Binärzahlen

Zahlen können mit 1“ und 0“ im Binärsystem (auch: Dualsystem,


” ”
Zweiersystem) (zur Basis 2) dargestellt werden.

Vorzeichenlos (= unsigned)

Beispiel für die Umrechnung binär → dezimal:

10112 = 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20 = 1110

Beispiel für die Umrechnung dezimal → binär:


11 : 2 = 5 Rest 1
5 : 2 = 2 Rest 1
2 : 2 = 1 Rest 0
1 : 2 = 0 Rest 1 → Ergebnis: 10112

n Bits erlauben so die Darstellung der Zahlen 0..2n − 1 Zahlen


Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 5 / 59
Zahlensysteme und Codes
Addition von vorzeichenlosen Binärzahlen

Üblich: Feste Bitbreite der Addierschaltung. Hier: n = 4

Beispiel 1: Beispiel 2:

0 0 1 1 (3) 1 0 1 1 (11)
+ 1 0 1 0 (10) + 0 1 1 1 (7)
1 1 1 1 1

1 1 0 1 (13) 1 0 0 1 0 (2)

→ Carry-Bit

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 6 / 59
Zahlensysteme und Codes
Subtraktion von vorzeichenlosen Binärzahlen

Beispiel 1: Beispiel 2:

1 1 0 1 (13) 0 0 1 0 (2)
- 0 0 1 1 (-3) - 0 1 1 1 (-7)
1 1 1 1 1

1 0 1 0 (10) 1 1 0 1 1 (11)

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 7 / 59
Zahlensysteme und Codes
Addition und Subtraktion von vorzeichenlosen Binärzahlen: Zahlenkreis

Abbildung 1: Zahlenkreis (vorzeichenlos) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 8 / 59
Unterabschnitt 2

Vorzeichenbehaftete Zahlen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 9 / 59
Zahlensysteme und Codes
Vorzeichenbehaftete Binärzahlen: Zweierkomplement (I)

Vorzeichenbehaftet (= signed)
höchstwertiges Bit = 0 → positive Zahl
höchstwertiges bit = 1 → negative Zahl

Clou“ der Zweierkomplement-Darstellung: Man kann mit einer



Addier-Schaltung subtrahieren, indem man das Zweierkomplement
addiert → Keine Fallunterscheidung notwendig

Zu einem gegebenen Bitmuster muss man zusätzlich wissen, ob es


eine vorzeichenlose oder eine vorzeichenbehaftete Binärzahl darstellt.
Beispiel: 11111111 kann 255 oder -1 heißen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 10 / 59
Zahlensysteme und Codes
Vorzeichenbehaftete Binärzahlen: Zweierkomplement (II)

Rezept Dezimalzahl → vorzeichenbehaftete Binärzahl


Positive Zahlen: wie gehabt
Negative Zahlen:
Von Vorzeichen befreit wie eine vorzeichenlose Zahl in Binärzahl mit n
Bits umrechnen
Alle Bits invertieren
1 addieren

Rezept vorzeichenbehaftete Binärzahl → Dezimalzahl


Positive Zahlen (oberstes Bit = 0): wie gehabt
Negative Zahlen (oberstes Bit = 1):
Alle Bits invertieren
1 addieren
Binärzahl wie eine vorzeichenlose Zahl in Dezimalzahl umrechnen und
dann mit einem Minuszeichen versehen.

n Bits erlauben so die Darstellung der Zahlen: −2n−1 ...(2n−1 − 1)


Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 11 / 59
Zahlensysteme und Codes
Addition und Subtraktion von vorzeichenbehafteten Binärzahlen: Zahlenkreis

Abbildung 2: Zahlenkreis (vorzeichenbehaftet) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 12 / 59
Zahlensysteme und Codes
Rechnen mit vorzeichenbehafteten Binärzahlen

Beispiel 1: Beispiel 2:

0 0 1 1 (3) 1 0 1 0 (-6)
+ 1 0 1 1 (+(-5)) + 1 1 0 1 (+(-3)
1 1 1

1 1 1 0 (-2) 1 0 1 1 1 (7)

→ Rechenwerke zeigen eine Bereichsüberschreitung bei


vorzeichenbehafteten Zahlen durch das Overflow-Bit (V) an.

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 13 / 59
Unterabschnitt 3

Gleitkommazahlen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 14 / 59
Zahlensysteme und Codes
Gleitkommadarstellung (I)

auch: Fließkommadarstellung, engl. floating point (vs.


Festkommazahl)
Beispiel Zehnersystem:

0, 002 = 0, 2 · 10−2

Mantisse und Exponent


Übliche binäre Darstellung nach IEEE 754:

entspricht betragsmäßig
Typ Größe Exponent Mantisse Dezimalstellen größte Zahl
single
(float)
32 bits 8 bits 23 bits 7-8 3, 403 · 1038
double 64 bits 11 bits 52 bits 15-16 1, 798 · 10308

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 15 / 59
Zahlensysteme und Codes
Gleitkommadarstellung (II)

Überschuss (Bias): 127 ↔ 1023


M0 = 1
Warum Gleitkommazahl?

Formeln:
Z = (−1)V · M · 2E e = E + Ueberschuss

→ Die Mantisse ist in der Regel ≥ 1.

Darstellung im Speicher:

V ex ... e0 (M0 ) M1 ... My

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 16 / 59
Unterabschnitt 4

Darstellungsformen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 17 / 59
Zahlensysteme und Codes
Die Zahlen 0 – 15 in verschiedenen Zahlensystemen

Dezimal Binär Hex


0 0000 0x00
1 0001 0x01
2 0010 0x02
3 0011 0x03
4 0100 0x04
5 0101 0x05
6 0110 0x06
7 0111 0x07
8 1000 0x08
9 1001 0x09
10 1010 0x0A
11 1011 0x0B
12 1100 0x0C
13 1101 0x0D
14 1110 0x0E
15 1111 0x0F
Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 18 / 59
Zahlensysteme und Codes
Gruppierung von Bits

4 Bits = 1 Hexadezimal-Ziffer = 1 Nibble = 1 Half-Byte


8 Bits = 2 Hexadezimal-Ziffern = 1 Byte
2 Bytes = 1 Halfword
4 Bytes = 1 Word
LSB = least significant bit
MSB = most significant bit

Bit7 Bit 0
Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1
(MSB) (LSB)

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 19 / 59
Zahlensysteme und Codes
ASCII-Code

Mit Hilfe des ASCII-Codes lässt sich mit einem Byte ein Buchstabe,
eine Dezimalziffer, ein Sonderzeichen oder ein Steuercode (z. B.
Carriage Return“) darstellen:

Abbildung 3: ASCII-Tabelle [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 20 / 59
Unterabschnitt 5

Übungsaufgaben

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 21 / 59
Zahlensysteme und Codes
Übungsaufgaben (I)

1 Rechne folgende Dezimalzahlen in vorzeichenbehaftete Binärzahlen (8


Bits) und Hexadezimalzahlen (2 Stellen) um:
a) 12 b) -17 c) 65 d) 77 e) 130

2 Rechne folgende Binär- bzw. Hexadezimalzahlen in Dezimalzahlen um.


Nimm einmal an, dass es sich um vorzeichenlose Zahlen handelt und
einmal, dass es sich um vorzeichenbehaftete Zahlen (8 Bits) handelt:
a) 010101002 b) 4D16 c) 111111102 d) F 016

3 Führe folgende Rechnungen unter Annahme eines Rechenwerkes mit n


= 8 Bits durch. Gib das Ergebnis hexadezimal und den Inhalt des C-
und des V-Bits nach der Rechnung an:
a) A316 + 2B16 b) 0816 + FE16 c) 6B16 + 3216 d) 6516 − C 116

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 22 / 59
Zahlensysteme und Codes
Übungsaufgaben (II)

4 Gib den mit 16 Bits üblicherweise darstellbaren Zahlenbereich (a) für


vorzeichenbehaftete Zahlen (Zweierkomplement) und (b) für
vorzeichenlose Zahlen an.
5 Stelle für vorzeichenbehaftete Zahlen mit 16 Bits hexadezimal dar:
die vom Betrag größte negative Zahl
+1
-1
die größte positive Zahl

6 Stelle die Zeichenkette 129“ im ASCII-Code dar und gib das



Ergebnis als Folge von Hexadezimalzahlen an.

7 Welche Zahl wird durch 0xC 3210201 im float-Format dargestellt?


Rückrechnung?

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 23 / 59
Abschnitt 2

Aufbau eines Rechnersystems

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 24 / 59
Aufbau eines Rechnersystems
Prinzipieller Aufbau eines Rechnersystems

Abbildung 4: Aufbau eines Rechnersystems [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 25 / 59
Aufbau eines Rechnersystems
Speicher (I)

RAM vs ROM

? ?
• Schreiben und Lesen • Schreiben eingeschränkt
• flüchtig
• nicht flüchtig
(→ Versorgungsspannung)

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 26 / 59
Aufbau eines Rechnersystems
Speicher (II)

Abbildung 5: ROM der Organisation 64K x 8 [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 27 / 59
Aufbau eines Rechnersystems
Prinzipieller Aufbau einer CPU

Abbildung 6: Aufbau einer CPU [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 28 / 59
Aufbau eines Rechnersystems
Geschichte der (Mikro-)Prozessoren

Abbildung 7: History (Intel) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 29 / 59
Aufbau eines Rechnersystems
Klassifikation von MP und Verwandte

Breite der Datenbusse/Register/ALU-OPs (4,8,16,32,64..)

Rechnerarchitektur
Von-Neumann
Harvard

Anwendung
Allzweckprozessoren (PCs)
Mikrocontroller
Signalprozessoren
...

Befehlssatz: RISC ↔ CISC

Zahlenformate (bspw. FPU)

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 30 / 59
Aufbau eines Rechnersystems
Übungsaufgaben

1 Wie viele Adressleitungen benötigt ein Speicherbaustein der


Organisation 8K x 4“?

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 31 / 59
Abschnitt 3

Der STM32F303RET6

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 32 / 59
Der STM32F303RET6
STM Allgemein

STM32: Familie von Mikrocontrollern von STMicroelectronics, > 500


Chips

Abbildung 8: STM Familie [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 33 / 59
Der STM32F303RET6
STM STM32F303RET6 Features

Core: ARM Cortex®-M4 32-bit CPU with 72 MHz, FPU


VDD voltage range: 2.0 V to 3.6 V
512 Kbytes of Flash memory, 64 Kbytes of SRAM
Low-power modes: Sleep, Stop and Standby
4 to 32 MHz crystal oscillator / Internal 8 MHz RC with x 16 PLL
option
51 fast I/Os
Four 12-bit ADCs 0.20 µs (22 channels)
Two 12-bit DACs
Seven analog comparators
Four operational amplifiers
14 timers
Calendar RTC with alarm, periodic wakeup from stop/standby
Communication interfaces: USB, CAN, 3 x I2 C, 5 x USARTs, 4 x SPI
Serial Wire Debugging (SWD) interface
Package: LQFP64 (10 mm x 10 mm)
Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 34 / 59
Der STM32F303RET6
STM32F303RET6 Peripherie

Abbildung 9: Peripherie [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 35 / 59
Der STM32F303RET6
Pinout und Beschaltung

Abbildung 10: Pinout STM32F303RET6 [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 36 / 59
Der STM32F303RET6
AF (I)

Abbildung 11: Alternative Funktionen (1) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 37 / 59
Der STM32F303RET6
AF (II)

Abbildung 12: Alternative Funktionen (2) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 38 / 59
Der STM32F303RET6
AF (III)

Abbildung 13: Alternative Funktionen (3) [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 39 / 59
Der STM32F303RET6
(Core) Register

Abbildung 14: Core-Register [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 40 / 59
Der STM32F303RET6
Memory Map

Abbildung 15: Memory Map [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 41 / 59
Der STM32F303RET6
NUCLEO-F303RE

Abbildung 16: NUCLEO-F303RE [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 42 / 59
Der STM32F303RET6
Pinbelegung NUCLEO-F303RE

Abbildung 17: NUCLEO-F303RE Pinbelegung [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 43 / 59
Abschnitt 4

Assembler

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 44 / 59
Unterabschnitt 1

Befehle und Register

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 45 / 59
Assembler
Condition Code Flags im Program Status Register (PSR)

Abbildung 18: PSR [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 46 / 59
Assembler
Befehle für Datentransport (Auswahl)

Befehl Operation
MOV Rd, #<imm16> Rd ← imm16
MOV Rd, <op2> Rd ← <op2>
LDR Rd, =<imm32> * Rd ← imm32

* Pseudo-Befehl: Wird tatsächlich, je nach Wert von imm32, durch andere


Befehle realisiert.

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 47 / 59
Assembler
Arithmetische/logische Operationen

Befehl Operation
ADDS Rd, Rn, <op2> Rd ← Rn + op2
SUBS Rd, Rn, <op2> Rd ← Rn - op2
ANDS Rd, Rn, <op2> Rd ← Rn & op2
BICS Rd, Rn, <op2> Rd ← Rn & ∼op2
ORRS Rd, Rn, <op2> Rd ← Rn | op2
EORS Rd, Rn, <op2> Rd ← Rnˆop2
LSLS Rd, Rn, <Rs|#imm5> Rd ← Rn  Rs|#imm5
LSRS Rd, Rn, <Rs|#imm5> Rd ← Rn  Rs|#imm5

S → Update PSR!

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 48 / 59
Assembler
Sprünge (Auszug)

Befehl Operation
B <label> Springe
BEQ <label> Springe, falls Z = 1 (equal)
BNE <label> Springe, falls Z = 0 (not equal)
BCS <label> Springe, falls C = 1 (carry set/higher or same)
BCC <label> Springe, falls C = 0 (carry clear/lower)
BHI <label> Springe, falls C = 1 und Z = 0 (higher)
BLS <label> Springe, falls C = 0 oder Z = 1 (less than or same)
Speichere die Adresse des nächsten Befehls im LR
BL<label>
und springe

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 49 / 59
Assembler
Speicherzugriff

Befehl Operation
LDR Rd, [Rn] Lade 32-Bit-Zahl aus Speicher
LDRH Rd, [Rn] Lade 16-Bit-Zahl aus Speicher
LDRB Rd, [Rn] Lade 8-Bit-Zahl aus Speicher
STR Rd, [Rn] Speichere 32-Bit-Zahl im Speicher
STRH Rd, [Rn] Speichere 16-Bit-Zahl im Speicher
STRB Rd, [Rn] Speichere 8-Bit-Zahl im Speicher
PUSH <reglist> Schreibt <reglist> auf Stack
POP <reglist> Holt <reglist> vom Stack

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 50 / 59
Assembler
Words und Half-Words

Speicheradressen sind immer Byte-Adressen, d. h. ein Word benötigt


4 Speicheradressen.

Bei Words wird das niederwertigste Byte an der niedrigsten Adresse


gespeichert ( little endian“):

Abbildung 19: Litte Endian [2]

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 51 / 59
Assembler
Manipulation von einzelnen Bits mit Masken

Mit einer ODER-Verknüpfung lassen sich gezielt Bits setzen.


Beispiel: orrs r5, r5, #0b00000101 → setzt Bits 0 und 2 von R5.

Mit einer UND-Verknüpfung lassen sich gezielt Bits löschen.


Beispiel: ands r5, r5, #0xffffff7f → löscht Bit 7 von R5.

Mit einer XOR-Verknüpfung lassen sich gezielt Bits invertieren.


Beispiel: eors r5, r5, #0b01000000 → invertiert Bit 6 von R5.

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 52 / 59
Unterabschnitt 2

Beispielprogramm

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 53 / 59
Assembler
Beispiel für ein Assembler-Programm: Blinklicht (I)

. syntax u n i f i e d
. cpu c o r t e x −m4

. equ RCC , 0 x40021000


. equ RCC AHBENR , RCC+0x14
. equ GPIOA , 0 x48000000
. equ GPIOA MODER , GPIOA+0
. equ GPIOA ODR , GPIOA+0x14

. section . text

. weak R e s e t H a n d l e r
. t y p e R e s e t H a n d l e r , %f u n c t i o n

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 54 / 59
Assembler
Beispiel für ein Assembler-Programm: Blinklicht (II)

Reset Handler :
l d r r0 , =RCC AHBENR
l d r r1 , [ r0 ]
o r r r1 , #0x00020000 // IOPAEN ( Takt P o r t A)
s t r r1 , [ r0 ]
l d r r0 , =GPIOA MODER
l d r r1 , [ r0 ]
o r r r1 , #0x00000400 // P i n A5 i s t Ausgang
s t r r1 , [ r0 ]
l d r r0 , =GPIOA ODR
mov r1 , #0

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 55 / 59
Assembler
Beispiel für ein Assembler-Programm: Blinklicht (III)

again :
s t r r1 , [ r 0 ]
mov r2 , #0x10000 // V e r z o e g e r u n g
m:
s u b s r2 , r2 , #1
bne m
e o r r1 , r1 , #0x0000020 // B i t 5 t o g g e l n
b again

. s e c t i o n . i s r v e c t o r , ” a”,% p r o g b i t s
. word e s t a c k
. word R e s e t H a n d l e r

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 56 / 59
Abschnitt 5

Anhang

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 57 / 59
Unterabschnitt 1

Quellen

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 58 / 59
Quellen I

Homepage von Herrn Prof. Dr. Gober


Linksammlung
https://prof.beuth-hochschule.de/gober/lehre/dokumentation-
mikrocontroller-stm32/
Unterlagen von Herrn Prof. Dr. Gober

Stephan Schulze (BHT Berlin / IAV GmbH) Termin 2 - MCT-2 12. Oktober 2021 59 / 59

Das könnte Ihnen auch gefallen