25.9.2009embedded systemsseite 1 c166-core port 5 port 3 cpu dual port ram 2 kbyte interrupt...

27
25.9.2009 Embedded Systems Seite 1 04EI 164C L XTAL C166- C166- Core Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data USART ASC BRG GPT1 16 16 16 16 32 PEC 64 K ROM (C164 CI-8RM) or OTP (C164CI-8EM) Interrupt Bus Data Data Port 8 BRG SSC Sync. Channe l (SPI) PLL-Oscillator prog. Multiplier: 0.5; 1; 1.5; 2; 2.5; 3; 4; 5 XBUS (16-bit NON MUX Data / Addresses) T2 T4 T3 13 ext. IR Full-CAN Interface V2.0B active RTC 10-Bit ADC Timer 7 Timer 8 Port 1 Timer 13 1 Comp. Channel 3/6 CAPCOM Channels CAPCOM6 Unit for PWM Generation 8 9 4 16 6 16 Port 4 8-Channels External Bus 8/16 bit MUX only & XBUS Control CAPCOM 2 8-Channel C164CI Blockschaltbild P4.6/ CAN TxD P4.5/ CAN RxD Port 0

Upload: stephan-schnetzler

Post on 06-Apr-2015

112 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 1

04EI

164CL

XTAL

C166-CoreC166-Core

Port 5 Port 3

CPU

Dua

l Por

t

RAM

2 KByte

Interrupt Controller

Watchdog

Peripheral Data

External InstrData

InstrData

USART

ASC

BRG

GPT1

16

16

16

1632

PEC

64 K ROM

(C164 CI-8RM)or

OTP(C164CI-8EM)

Interrupt Bus

Data

Data

Port 8

BRG

SSC

Sync Channel(SPI)

PLL-Oscillatorprog Multiplier

05 1 15 225 3 4 5

XB

US

(16-

bit N

ON

MU

X D

ata

Add

ress

es)

T2

T4

T3

13 ext IR

Full-CANInterfaceV20Bactive

RTC

10-BitADC

Tim

er 7

Tim

er 8

Port 1

Tim

er 1

3

1 CompChannel

36 CAPCOMChannels

CAPCOM6 Unit forPWM Generation

8 9 4 16

6

16

Port 4

8-Channels

External Bus816 bit

MUX onlyamp

XBUSControl

CAPCOM 2

8-Channel

C164CI Blockschaltbild

P46 CAN TxD

P45 CANRxD

Port

0

2592009Embedded Systems Seite 2

04EI

On-Chip(EP)ROM

SP

STK OV

STK UV

CPU - Blockschaltbild

CPUCPU

MDL

MDH

Barrel-Shifter

ALU

16-bit

MulDiv-HW

Bit-Mask Gen

Code SegPtr

On-ChipStaticRAM

R15

R0

STK OV

STK UV

4-StagePipeline

32

16

16

Exec Unit

Instr Ptr

Instr Reg

SYSCON

BUSCON 0

BUSCON 1

BUSCON 2

BUSCON 3

BUSCON 4

ADDRSEL 1

ADDRSEL 2

ADDRSEL 3

ADDRSEL 4

Context PtrData Page Pointer

SFR

PSW

General

R15

R0

Purpose

Registers

2592009Embedded Systems Seite 3

04EI

Fetch

Decode

Execute

Write Back

1 Instr 2 Instr 3 Instr 4 Instr

Time

1 Machine Cycle = 100 ns at 20 MHz CPU clock

Vierstufige Befehls-Pipeline

100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung

der Pipeline Optimierte Sprungausfuumlhrung

ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen

Jump Cache

ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich

2592009Embedded Systems Seite 4

04EI

Arithmetic Logic Unit

ALU

A B

Z

Cin

op

Cout

flags

Arithmetic Operations

Logic Operations

Shift Rotate

add subinc decneg

and nandor norexor exnornot

sll srlsla srarol ror

sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)

2592009Embedded Systems Seite 5

04EI

Barrel Shifter

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

D0

D1

D2

D3

D15

S0 S1 S14

Q0

Q1

Q2

Q3

Q15

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 2: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 2

04EI

On-Chip(EP)ROM

SP

STK OV

STK UV

CPU - Blockschaltbild

CPUCPU

MDL

MDH

Barrel-Shifter

ALU

16-bit

MulDiv-HW

Bit-Mask Gen

Code SegPtr

On-ChipStaticRAM

R15

R0

STK OV

STK UV

4-StagePipeline

32

16

16

Exec Unit

Instr Ptr

Instr Reg

SYSCON

BUSCON 0

BUSCON 1

BUSCON 2

BUSCON 3

BUSCON 4

ADDRSEL 1

ADDRSEL 2

ADDRSEL 3

ADDRSEL 4

Context PtrData Page Pointer

SFR

PSW

General

R15

R0

Purpose

Registers

2592009Embedded Systems Seite 3

04EI

Fetch

Decode

Execute

Write Back

1 Instr 2 Instr 3 Instr 4 Instr

Time

1 Machine Cycle = 100 ns at 20 MHz CPU clock

Vierstufige Befehls-Pipeline

100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung

der Pipeline Optimierte Sprungausfuumlhrung

ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen

Jump Cache

ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich

2592009Embedded Systems Seite 4

04EI

Arithmetic Logic Unit

ALU

A B

Z

Cin

op

Cout

flags

Arithmetic Operations

Logic Operations

Shift Rotate

add subinc decneg

and nandor norexor exnornot

sll srlsla srarol ror

sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)

2592009Embedded Systems Seite 5

04EI

Barrel Shifter

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

D0

D1

D2

D3

D15

S0 S1 S14

Q0

Q1

Q2

Q3

Q15

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 3: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 3

04EI

Fetch

Decode

Execute

Write Back

1 Instr 2 Instr 3 Instr 4 Instr

Time

1 Machine Cycle = 100 ns at 20 MHz CPU clock

Vierstufige Befehls-Pipeline

100ns effektive Befehlsausfuumlhrungszeit (20 MHz fCPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstuumltzung

der Pipeline Optimierte Sprungausfuumlhrung

ndashFuumlr Sprungbefehle (Jump Cond Jump Call Return) wird normaler Weise nur ein zusaumltzlicher Maschinenzyklus benoumltigt um den Befehl an der Zieladresse zu holen

Jump Cache

ndashFuumlr die Ausfuumlhrung von Schleifen ist kein zusaumltzlicher Maschinenzyklus erforderlich

2592009Embedded Systems Seite 4

04EI

Arithmetic Logic Unit

ALU

A B

Z

Cin

op

Cout

flags

Arithmetic Operations

Logic Operations

Shift Rotate

add subinc decneg

and nandor norexor exnornot

sll srlsla srarol ror

sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)

2592009Embedded Systems Seite 5

04EI

Barrel Shifter

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

D0

D1

D2

D3

D15

S0 S1 S14

Q0

Q1

Q2

Q3

Q15

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 4: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 4

04EI

Arithmetic Logic Unit

ALU

A B

Z

Cin

op

Cout

flags

Arithmetic Operations

Logic Operations

Shift Rotate

add subinc decneg

and nandor norexor exnornot

sll srlsla srarol ror

sro shiftrotatelr leftrightla logic (unsigned)arithmetic (signed)

2592009Embedded Systems Seite 5

04EI

Barrel Shifter

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

D0

D1

D2

D3

D15

S0 S1 S14

Q0

Q1

Q2

Q3

Q15

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 5: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 5

04EI

Barrel Shifter

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

D0

D1

D2

D3

D15

S0 S1 S14

Q0

Q1

Q2

Q3

Q15

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 6: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 6

04EI

General Purpose Register (GPR)

16 GPRs bilden eine Registerbankbestehend aus maximal

ndash 8 Word-Registern und

ndash 8 Word-Registern mit Bytezugriff auf das niederwertige und houmlherwertige Byte

Die GPRs sind bit-addressierbar Die Registerbaumlnke koumlnnen beliebig im internen RAM

angeordnet werden Der Platz der aktiven Registerbank wird durch den

Context Pointer (CP) festgelegt CP kann leicht veraumlndert werden um eine andere

Registerbank auszuwaumlhlen - ldquoSwitch Contextrdquo-Befehl

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 7: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 7

04EI

0F600

R8R9R10R11R12R13R14R15

RH0RH1RH2RH3RH4RH5RH6RH7

RL0RL1RL2RL3RL4RL5RL6RL7

Context pointer

0FDFE

2KBytesinternal RAM

R6

R0R1R2R3R4R5

R7

STKOV

STKUV

R15

R0

0FC00

Stackpointer UnderflowStackpointer

Stackpointer Overflow

STKUV

STKOV

2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack

SP

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 8: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 8

04EI

Gesamter Adressraumndash 64 kByte nicht-segmentierter Adressraum

ndash bis zu 4(16) MBytes segmentierter Adressraum64 kBbyte Code-Segmente und 16 kByte Daten-Pages

ndash ldquovon Neumannrdquo-Architektur die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist

Interner Adressraumndash 2 KByte RAM

ndash 64 KBytes FlashOTP ROM (C164CI-8FM)

Flexible externe BUS-Konfigurationenndash bis zu 22-Bit Adress-BUS 8-Bit Daten-BUS (gemultiplexed)

ndash bis zu 22-Bit Adress -BUS 16- Bit Daten-BUS (gemultiplexed)

ndash 5 voumlllig unabhaumlngige Konfigurations-Register

ndash 4 programmierbare ldquoChip Selectsrdquo und programierbare BUS-Kontrollsignale helfen externe Logik zu vermeiden

Adressraum

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 9: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 9

04EI

Interner und externer Adressplan des C164CI

Bit-adressierbarer Bereich

X-Bus Peripheral

Segment 0 beinhaltet den internen Speicher

Internes RAM

512 BytesSFRrsquos

2kInternes

RAM

ExternerSpeicher

InternesROM

Flash Esup2PROM(kann auf Segm 1 liegen)

512 BytesESFRrsquos

0x000000

0x008000

0x00FE00

0x00FA00

0x00F600

0x00F200

0x0100007 0

32k

05k

Reserviert

Bis zu 4 MBytes

Code Segmente Daten Pages

0

1

2

3

3

2

1

0

7

6

5

4

11

10

9

8

15

14

13

12

InternalROMFLAS

H232k0x010000

0x020000

0x030000

0x040000

Full -CANFull -CAN0x00F000

0x00E800Reserviert

05k

0x000000

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 10: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 10

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166 ist die Realisierung von ANSI-C fuumlr die Mikrocontroller-Familie C166

Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor Speziell solche die direkt der Unterstuumltzung der 166-Architektur dienen

C166-Bezeichnung Erlaumluterung

memory types Als Ergaumlnzung zur Speicherklasse kann zu jeder Variablenvereinbarung ein Speichertyp mit angegeben werden Dies erlaubt eine vom aktuellen Speichermodell unabhaumlngige Adressierung von Variablen in verschiedenen Adressraumlumen des 166-Systems Folgende Typen sind definiertnear idata bdata sdata far huge xhuge

sfr Dient der Deklaration von Special-Function-Register (SFR) der 166-Familie

sbit Deklaration von Bits innerhalb von SFRs

bit Datentyp bit Ruumlckgabewert Uumlbergabeparameter von Funktionen koumlnnen vom Typ bit sein

bit-addressable Variable im bitadressierbaren Bereich koumlnnen mittels bdata als Speichertyp vereinbart werden

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 11: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 11

04EI

Die Programmiersprache C fuumlr den Mikrocontroller C164

C166-Bezeichnung Erlaumluterung

registerbank (using) Jede Funktion kann eine Vereinbarung enthalten in der die zu benutzende Registerbank angegeben wird

interrupt Funktionen koumlnnen als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw ndashvektors

register mask Der C166-Compiler erzeugt fuumlr jede C-Funktion eine Register-maske in der die durch die Funktion verwendeten Register aufgefuumlhrt werden Diese koumlnnen fuumlr Funktionsprototypen verwendet werden um die Registerausnutzung zu optimieren

RTX166 tasks Durch das Schluumlsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 spezifiziert

Neue Schluumlsselwoumlrter (Keywords)Speicherarten near idata bdata sdata far huge xhugeDatentypen bit sfr sbitFunktionen interrupt _task_ using

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 12: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 12

04EI

Speicherarten (Memory Types)

Auswahl Adressraum

near 16-Bit Adressen bis zu 64 kBytes

idata On-chip RAM (schnellster Zugriff)

bdata Bit-adressierbares On-chip-RAM

sdata System Page (0xC000-0xFFFF) inklusive SFRlsquos

far 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 kByte

huge 32-Bit Pointer mit 16-Bit Adressberechnung die Objektgroumlszlige betraumlgt 64 kByte

xhuge 32-Bit Pointer mit 32-Bit Adressberechnung die Objektgroumlszlige betraumlgt 16 MByte

Die Programmiersprache C fuumlr den Mikrocontroller C164

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 13: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 13

04EI

Entsprechend den Speicherarten koumlnnen Speichermodelle als Voreinstellungen vorgegeben werden die immer dann Anwendung finden wenn bei der Variablen- oder Funktionsdefinition keine Speicherart explizit angegeben wird

Dies erfolgt mittels der Preprozessordirektive pragma speichermodell

Die Programmiersprache C fuumlr den Mikrocontroller C164

Speichermodell Variable Funktionen Segmentierung Codeumfang

TINY near near nein 64kSMALL near near ja 64kCOMPACT far near ja 64kHCOMPACT huge near ja 64kMEDIUM near far ja unbegrenztLARGE far far ja unbegrenztHLARGE huge far ja unbegrenzt

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 14: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 14

04EI

Datentypen Speicherumfang und Wertebereich

Datentyp Speicherumfang Wertebereich

bit 1 Bit 0 oder 1

signed char 1 Byte -128 bis +127

unsigned char 1 Byte 0 bis 255

signed int 2 Bytes -32768 to + 32767

unsigned int 2 Bytes 0 bis 65535

signed long 4 Bytes -2147483648 bis +2147483642

unsigned long 4 Bytes 0 bis 4294967295

float 4 Bytes 1176E-38 bis 340E+38

double 8 Bytes 17E-308 bis 17E+308

pointer 24 Bytes Adresse des Objects

Die Programmiersprache C fuumlr den Mikrocontroller C164

Datentypen fuumlr den Zugriff auf Special Function Registers (SFR)

sbit 1 Bit 0 or 1

sfr 2 Bytes 0 to 65535

spezielle Datentypen in C166 die in ANSI-C nicht definiert sind

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 15: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 15

04EI

Integrierte Entwicklungsumgebung

C-Library

ANSI CCompiler

Macro-Assembler

ndash Debuggerndash Simulator

Emulator amp

PROM Programmer

RTX TinyReal TimeOperatingSystem

ndash microVision2Editor Project Management

Library

Manager

Linker Locater

CPU ampSimulator

Monitor

Target DebuggingPeripheral

Ab ins Praktikum

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 16: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 16

04EI

Code-Adressierung mittels Segmentierungim 4 MByte Adressraum

Code Segment Pointer (CSP) zur Code-Adressierung

22-Bit physikalische Code-Adresse (C164)

6-Bit Segment-nummer

16-Bit

0131416-Bit Instr Pointer

15 780131415Code Seg Pointer7 6 58

Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert

Der Code Segment Pointer (CSP) wird nur durch absolute Spruumlnge bzw indirekt beim Ruumlcksprung aus Unterprogrammen vom Stack veraumlndert

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 17: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 17

04EI

Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes

Daten-Adressierung uumlber Data Page Pointer (DPP)

14-bit

013 16-bit Adresse1415

Auswahl einesData Page Pointer

10-bitSeiten-nummer

DPP3DPP2DPP1

DPP0

Physikalische 24-Bit Daten-Adresse

(bis zu 22 aussen verfuumlgbar beim C164)

SFR

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 18: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 18

04EI

External Bus Controller

Ermoumlglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen moumlglich

Special Function Register BUSCON04Programmierbare ZeitenFestlegung von CS - SignalenAuswahl der Breite des Daten-BUS 8 16 Bit

Special Function Register ADDRSEL14Programmierbare Ausschnitte aus dem Adressraum fuumlr den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 19: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 19

04EI

Gemultiplexter Adress- und Daten-BUS

Address

Address

Address

Data

Data

A16A21

ALE

CS

A0A15D0D15 (7)

RD

A015D015 (7)

WR

Verlaumlngern des Adress-Setups

Speicher-zugriffszeit

Tri-State - Zeit

WR-Delay

RD-Delay

SFR

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 20: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 20

04EI

Integrierte Chip Select - Signale

Die Basisadresse ist stets ein Vielfaches des Adressbereiches(dh der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze)

A21A20A19

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xB800000xB000000xA800000xA000000x9800000x9000000x8800000x800000

Extra Memory-MappedChip-Selects

P39P38P36

CS3CS2CS1

CBA

G

CS11CS10

CS9CS8CS7CS6CS5CS4

74ACT138

C164 0xF000000xE000000xD000000xC000000xB000000xA000000x9000000x800000

Extra IO-MappedChip-Selects

Alle mit gleichem Bus-Mode Waitstates usw

CS0 P60 BUSCON0CS1 P61 BUSCON1 ADDRSEL1CS2 P62 BUSCON2 ADDRSEL2CS3 P63 BUSCON3 ADDRSEL3

Aktiv fuumlr jenen Adressraum der nicht durch CS1CS3 abgedeckt wird

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 21: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 21

04EI

Anschluszlig von externen Speicherbausteinenmit 8 Bit- Organisation

C164[20 MHz] W

E

WE

O

E

OE

O

E

OE

CS

CS

C

E

CE

D

0-7

D0

-7D

0-7

D0

-7A

0-1

6

A0

-16

A0

-18

A0

-18

MT5LC128K8D4 MT5LC128K8D4

AM27C040 AM27C040

RAMRAM

ROM ROM

MT5LC128K8D4Fa Micron SRAM 128k x 8Zugriffszeit 25 ns

ADDRSEL1 = 0x0406BUSCON1 = 0x04CF

AM27C040Fa AMD Eprom 512k x 8Zugriffszeit 120 ns

BUSCON0 = 0x04CEA1-15

15-Bit D-Latch

EN

WRLWRH

RD

D0-15

A16-19

CS1CS0

ALE

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 22: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 22

04EI

BH

E

OE

O

E

CS

C

E

D0

-15

D0

-15

A0

-15

A0

-16

IDT71016

M27C202

RAM

ROM

IDT71016Fa IDT (Integrated Device Technology)SRAM 64k x 16Zugriffszeit 20 ns

ADDRSEL1 = 0x0405BUSCON1 = 0x04CF

M27C202Fa ST MicroelectronicsST Eprom 128k x 16Zugriffszeit 100 ns

BUSCON0 = 0x04CE

BL

E

WE

C164[20 MHz]

A1-15

16-Bit D-Latch

EN

WR

BHERD

D0-15

A16-17

CS1CS0

ALE

A0

Anschluszlig von externen Speicherbausteinenmit 16 Bit- Organisation

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 23: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 23

04EI

Sich uumlberdeckende Adressbereiche

XBCON0

BUSCON2 BUSCON4

BUSCON1 BUSCON3

BUSCON0

0x000000

0xFF

FF

FF

Inaktiver Bereich

Aktiver BereichHoumlchste Prioritaumlt

Uumlberlappen nicht zulaumlssig

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 24: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 24

04EI

Interrupt System

Interrupt Controller

ndash Kurze Interrupt-ReaktionszeitenMin 250ns typisch 400ns (20 MHz)

ndash Geringer Overhead fuumlr ISRrsquos

ndash Leistungsfaumlhige Priorisierungin 15 Prioritaumltsstufen zu je 4 Gruppen

ndash Hardware Traps detektieren Laufzeitfehler

ndash Software Traps

Peripheral Events Controller (PEC)

ndash Entlastet die CPU von einfachen und haumlufig auftretenden ISRrsquos

ndash Interruptgesteuerter ldquoDMA-aumlhnlicherrdquo Datentransfer ohne CPU-Eingriff

ndash Reaktionszeiten Min 150ns typisch 300ns mit einer CPU-Belastung von 100ns (20 MHz)

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 25: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 25

04EI

3 2 1 0151413121110

9876543210

Group

L e

v e

l

1

64

Level 15 group 1group 0

group 2group 3

Level 14group 1

group 0

group 2group 3

PEC 0

PEC 6 PEC 5PEC 4

PEC 3PEC 2 PEC 1

PEC 7

Level 1-13group 1

group 0

group 2group 3

(Level 0) group 1group 0

group 2group 3

Interrupts und PEC - Priorisierung

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 26: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 26

04EI

Interrupt Processing

INTR Flag ist gesetzt

Periph Interrupt

Externer Interrupt

External Interrupt

Prioritaumlts-Check

Vergleich derInterruptprioritaumlt mit der Laufzeit-Prioritaumlt

der CPU

16 Prioritaumlts-Stufen

fallshoumlhere

Prioritaumlt

Interrupt Control Register des ausloumlsenden Peripherie-ElementesINTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

PECService

Externe Interrupts sind zB statt des ldquoCapturerdquo Eingangs moumlglich

13 ext Interrupts (+ NMI) einschlieszliglich 4 ldquoschnellerdquo Interrupts32 Peripherie Interrupts

4 Gruppen

Gruppen Check

LoumlscheINTR Flag

Periph Interrupt

Periph Interrupt

Periph Interrupt

SFR DaveVektoren

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)
Page 27: 25.9.2009Embedded SystemsSeite 1 C166-Core Port 5 Port 3 CPU Dual Port RAM 2 KByte Interrupt Controller Watchdog Peripheral Data External Instr./Data Instr./Data

2592009Embedded Systems Seite 27

04EI

Interrupt hat den Prioritaumls- und Gruppen-Check erfuumlllt

Interrupt Prioritaumlt lt 14 Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0Interrupt Prioritaumlt 14 oder 15und Data Counter gt 0

Interrupt Service PEC Service

8 PECKanaumlle

Data Counter

SRC Pointer

DEST Pointer

Contr Reg

Memory Segment 0

0xFFFF

0x0000

Byte bzwWordTransfer

INTR Service

RettenPSW CSP IP

Neue CPU-Prio im PSW

CSP und IP ausPeripherie-Vector oder Trap-Nummer

Interrupt falls Data Counter = 0

Prioritaumlts- amp Gruppen-

Check

Peripheral Events Controller (PEC)

Peripheral Events Contoller

SFR

  • Kein Folientitel
  • CPU - Blockschaltbild
  • Vierstufige Befehls-Pipeline
  • Arithmetic Logic Unit
  • Barrel Shifter
  • General Purpose Register (GPR)
  • 2 kByte internes RAM - Plazierung der Registerbaumlnke und des Stack
  • Adressraum
  • Interner und externer Adressplan des C164CI
  • Die Programmiersprache C fuumlr den Mikrocontroller C164
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
  • Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
  • External Bus Controller
  • Gemultiplexter Adress- und Daten-BUS
  • Integrierte Chip Select - Signale
  • Anschluszlig von externen Speicherbausteinen mit 8 Bit- Organisation
  • Anschluszlig von externen Speicherbausteinen mit 16 Bit- Organisation
  • Sich uumlberdeckende Adressbereiche
  • Interrupt System
  • Interrupts und PEC - Priorisierung
  • Interrupt Processing
  • Peripheral Events Controller (PEC)