C 164 CI Blockschaltbild C 166 Core Data
C 164 CI Blockschaltbild C 166 -Core Data (C 164 CI-8 RM) or OTP CPU Instr. /Data 32 Data 16 Dual Port 64 K ROM 16 RAM 2 KByte (C 164 CI-8 EM) PLL-Oscillator prog. Multiplier: Watchdog 0. 5; 1; 1. 5; 2; 2. 5; 3; 4; 5 Interrupt Controller RTC 13 ext. IR 16 Interrupt Bus Peripheral Data 16 Port 4 BRG T 4 Port 3 Port 5 Timer 13 8/16 bit MUX only & XBUS Control 10 -Bit USART Sync. GPT 1 CAPCOM 2 CAPCOM 6 Unit for PWM Generation Channel ADC T 2 (SPI) 8 -Channels ASC SSC T 3 Timer 8 External Bus Timer 7 16 XBUS (16 -bit NON MUX Data / Addresses) P 4. 6/ CAN Tx. D Full-CAN Interface V 2. 0 B active Port 0 P 4. 5/ CAN Rx. D PEC External Instr. /Data 1 Comp. Channel Port 8 Port 1 6 8 Embedded Systems 9 25. 9. 2009 4 3/6 CAPCOM Channels 16
CPU - Blockschaltbild CPU STK UV Exec. Unit MDH SP Instr. Ptr. MDL STK OV Instr. Reg. 32 4 -Stage Pipeline On-Chip (EP)ROM PSW SYSCON Mul. /Div. -HW 16 STK UV Bit-Mask Gen. ALU 16 -bit Barrel-Shifter BUSCON 0 BUSCON 1 ADDRSEL 1 BUSCON 2 ADDRSEL 2 BUSCON 3 ADDRSEL 3 BUSCON 4 ADDRSEL 4 Data Page Pointer STK OV Context Ptr. On-Chip Static RAM R 15 General Purpose Registers 16 R 0 Code Seg. Ptr SFR Embedded Systems 25. 9. 2009 2
Vierstufige Befehls-Pipeline Fetch Decode 1. Instr. 2. Instr. 3. Instr. 4. Instr. Execute Time Write Back 1 Machine Cycle = 100 ns at 20 MHz CPU clock ¨ ¨ 100 ns effektive Befehlsausführungszeit (20 MHz f. CPU) Drei Pre-Fetch-Schritte in Wortbreite (Bus Controller) zur Unterstützung der Pipeline Optimierte Sprungausführung – Für Sprungbefehle (Jump, Cond. Jump, Call, Return, . . . ) wird normaler Weise nur ein zusätzlicher Maschinenzyklus benötigt, um den Befehl an der Zieladresse zu holen Jump Cache – Für die Ausführung von Schleifen ist kein zusätzlicher Maschinenzyklus erforderlich Embedded Systems 25. 9. 2009 3
Arithmetic Logic Unit A B Logic Operations: Cout Cin ALU flags op Shift / Rotate: Z Arithmetic Operations: add sub inc dec neg Embedded Systems and nand or nor exnor not sll sla rol sra ror s/ro : shift/rotate l/r : left/right l/a : logic (unsigned)/arithmetic (signed) 25. 9. 2009
Barrel Shifter D 0 D 1 D 2 D 3 D 15 1 1 1 0 0 0 1 1 1 0 0 0 S 0 Embedded Systems S 1 25. 9. 2009 Q 0 Q 1 Q 2 Q 3 Q 15 S 14 5
General Purpose Register (GPR) ¨ 16 GPRs bilden eine Registerbank bestehend aus maximal – 8 Word-Registern und – 8 Word-Registern mit Bytezugriff auf das niederwertige und höherwertige Byte ¨ ¨ Die GPRs sind bit-addressierbar Die Registerbänke können beliebig im internen RAM angeordnet werden Der Platz der aktiven Registerbank wird durch den Context Pointer (CP) festgelegt CP kann leicht verändert werden um eine andere Registerbank auszuwählen - “Switch Context”-Befehl. Embedded Systems 25. 9. 2009 6
2 k. Byte internes RAM - Plazierung der Registerbänke und des Stack RH 7 RH 6 RH 5 RH 4 RH 3 RH 2 RH 1 RH 0 Stackpointer Underflow Stackpointer Overflow RL 7 RL 6 RL 5 RL 4 RL 3 RL 2 RL 1 RL 0 R 15 R 14 R 13 R 12 R 11 R 10 R 9 R 8 R 7 R 6 R 5 R 4 R 3 R 2 R 1 R 0 2 KBytes internal RAM 0 FDFE R 15 R 0 Context pointer 0 FC 00 STKUV SP STKOV 0 F 600 STKOV Embedded Systems 25. 9. 2009 7
Adressraum ¨ Gesamter Adressraum: – 64 k. Byte nicht-segmentierter Adressraum – bis zu 4(16) MBytes segmentierter Adressraum: 64 k. Bbyte Code-Segmente und 16 k. Byte Daten-Pages – “von Neumann”-Architektur, die intern mit Mehrfach-BUS-Strukturen zur Vermeidung des BUS-Bottlenecks ausgestattet ist ¨ Interner Adressraum – 2 KByte RAM – 64 KBytes Flash/OTP ROM (C 164 CI-8 FM) ¨ Flexible externe BUS-Konfigurationen – bis zu 22 -Bit Adress-BUS / 8 -Bit Daten-BUS (gemultiplexed) – bis zu 22 -Bit Adress -BUS / 16 - Bit Daten-BUS (gemultiplexed) – 5 völlig unabhängige Konfigurations-Register – 4 programmierbare “Chip Selects” und programierbare BUSKontrollsignale helfen externe Logik zu vermeiden. Embedded Systems 25. 9. 2009 8
Interner und externer Adressplan des C 164 CI Segment 0 beinhaltet den internen Speicher 7 0. 5 k 0 512 Bytes SFR’s Internes RAM 2 k Internes RAM Reserviert 0. 5 k 512 Bytes ESFR’s Full -CAN Reserviert 0 x 010000 Code Segmente Daten Pages 0 x 040000 0 x 00 FE 00 15 14 0 x 00 FA 00 3 0 x 030000 0 x 00 F 600 0 x 00 F 200 13 12 11 2 10 9 0 x 00 F 000 0 x 020000 8 7 0 x 00 E 800 1 Bit-adressierbarer Bereich X-Bus Peripheral Bis zu 4 MBytes 6 5 Externer Speicher 0 x 010000 4 Internal ROM/ FLASH 2*32 k 3 32 k Internes ROM / Flash E²PROM (kann auf Segm. 1 liegen) Embedded Systems 0 x 008000 0 2 1 0 x 000000 25. 9. 2009 0 x 000000 0 9
Die Programmiersprache C für den Mikrocontroller C 164 C 166 ist die Realisierung von ANSI-C für die Mikrocontroller-Familie C 166. Der C 166 -Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor. Speziell solche, die direkt der Unterstützung der 166 -Architektur dienen: C 166 -Bezeichnung Erläuterung memory types Als Ergänzung zur "Speicherklasse" kann zu jeder Variablenvereinbarung ein "Speichertyp" mit angegeben werden. Dies erlaubt eine vom aktuellen "Speichermodell" unabhängige Adressierung von Variablen in verschiedenen Adressräumen des 166 -Systems. Folgende Typen sind definiert: near, idata, bdata, sdata, far, huge, xhuge. sfr Dient der Deklaration von "Special-Function-Register" (SFR) der 166 -Familie sbit Deklaration von Bits innerhalb von SFR's. bit Datentyp bit. Rückgabewert, Übergabeparameter von Funktionen können vom Typ bit sein. bit-addressable Variable im bitadressierbaren Bereich können mittels bdata als Speichertyp vereinbart werden. Embedded Systems 25. 9. 2009 10
Die Programmiersprache C für den Mikrocontroller C 164 C 166 -Bezeichnung Erläuterung registerbank (using) Jede Funktion kann eine Vereinbarung enthalten, in der die zu benutzende Registerbank angegeben wird. interrupt Funktionen können als Interrupt-Service-Routinen vereinbart werden durch Angabe des Interruptnamens bzw. –vektors. register mask Der C 166 -Compiler erzeugt für jede C-Funktion eine Registermaske, in der die durch die Funktion verwendeten Register aufgeführt werden. Diese können für Funktionsprototypen verwendet werden, um die Registerausnutzung zu optimieren. RTX 166 tasks Durch das Schlüsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX 166 spezifiziert. Neue Schlüsselwörter (Keywords): Speicherarten: near, idata, bdata, sdata, far, huge, xhuge Datentypen: bit, sfr, sbit Funktionen: interrupt, _task_, using Embedded Systems 25. 9. 2009 11
Die Programmiersprache C für den Mikrocontroller C 164 Speicherarten (Memory Types) Auswahl Adressraum near 16 -Bit Adressen bis zu 64 k. Bytes idata On-chip RAM (schnellster Zugriff) bdata Bit-adressierbares On-chip-RAM sdata System Page (0 x. C 000 -0 x. FFFF) inklusive SFR‘s far 32 -Bit Pointer mit 16 -Bit Adressberechnung, die Objektgröße beträgt 16 k. Byte. huge 32 -Bit Pointer mit 16 -Bit Adressberechnung, die Objektgröße beträgt 64 k. Byte. xhuge 32 -Bit Pointer mit 32 -Bit Adressberechnung, die Objektgröße beträgt 16 MByte. Embedded Systems 25. 9. 2009 12
Die Programmiersprache C für den Mikrocontroller C 164 ¨ ¨ Entsprechend den Speicherarten können 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 Speichermodell Variable Funktionen Segmentierung Codeumfang TINY SMALL COMPACT HCOMPACT MEDIUM LARGE HLARGE near far huge near near far far nein ja ja ja 64 k 64 k unbegrenzt Embedded Systems 25. 9. 2009 13
Die Programmiersprache C für den Mikrocontroller C 164 Datentypen: Speicherumfang und Wertebereich Datentyp Speicherumfang bit # 1 Bit signed char unsigned char signed int 2 Bytes unsigned int signed long unsigned long float 4 Bytes double 8 Bytes pointer 2/4 Bytes Wertebereich 0 oder 1 1 Byte -128 bis +127 1 Byte 0 bis 255 -32768 to + 32767 2 Bytes 0 bis 65535 4 Bytes -2147483648 bis +2147483642 4 Bytes 0 bis 4294967295 1. 176 E-38 bis 3. 40 E+38 1. 7 E-308 bis 1. 7 E+308 Adresse des Objects Datentypen für den Zugriff auf Special Function Registers (SFR) sbit # sfr # 1 Bit 2 Bytes 0 or 1 0 to 65535 # spezielle Datentypen in C 166, die in ANSI-C nicht definiert sind. Embedded Systems 25. 9. 2009 14
Integrierte Entwicklungsumgebung – µVision 2 Editor / Project Management Macro. Assembler ANSI C Compiler CLibrary RTX Tiny Library Real Time Operating System Manager Linker / Locater – Debugger – Simulator Emulator & PROM Programmer CPU & Peripheral Simulator Embedded Systems Monitor Target Debugging 25. 9. 2009 Ab ins Praktikum 15
Code-Adressierung mittels Segmentierung im 4 MByte Adressraum Code Segment Pointer (CSP) zur Code-Adressierung 15 14 13 0 8 7 6 5 Code Seg. Pointer 15 14 13 8 7 16 -Bit Instr. Pointer 0 6 -Bit Segmentnummer 16 -Bit 22 -Bit physikalische Code-Adresse (C 164) Der Instruction Pointer (IP) wird nach jeder Befehlsholphase inkrementiert Der Code Segment Pointer (CSP) wird nur durch absolute Sprünge, bzw. indirekt beim Rücksprung aus Unterprogrammen vom Stack verändert. Embedded Systems 25. 9. 2009 16
Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes Daten-Adressierung über Data Page Pointer (DPP) 15 14 13 16 -bit Adresse 0 Auswahl eines Data Page Pointer DPP 3 DPP 2 DPP 1 DPP 0 10 -bit 14 -bit Seitennummer Physikalische 24 -Bit Daten-Adresse (bis zu 22 aussen verfügbar beim C 164) SFR Embedded Systems 25. 9. 2009 17
External Bus Controller ¨ ¨ ¨ Ermöglicht variables Timing von CPU-Steuersignalen mittels Software Realisiert bis zu 4 Chip-Select-Signale Auswahl von 4 Adressbereichen möglich Special Function Register BUSCON 0. . 4 Programmierbare Zeiten. Festlegung von CS# - Signalen. Auswahl der Breite des Daten-BUS 8 / 16 Bit. Special Function Register ADDRSEL 1. . 4 Programmierbare Ausschnitte aus dem Adressraum für den Zugriff auf externe Komponenten mit den Eigenschaften der zugeordneten BUSCONx- Register. Embedded Systems 25. 9. 2009 18
Gemultiplexter Adress- und Daten-BUS Verlängern des Adress. Setups Speicherzugriffszeit A 16. . A 21 Tri-State - Zeit Address ALE CS# A 0. . A 15 D 0. . D 15 (7) Address Data RD# RD-Delay A 0. . 15 D 0. . 15 (7) Address Data WR# WR-Delay Embedded Systems 25. 9. 2009 SFR 19
Integrierte Chip Select - Signale CS 0# CS 1# CS 2# CS 3# P 6. 0 P 6. 1 P 6. 2 P 6. 3 BUSCON 0 BUSCON 1 BUSCON 2 BUSCON 3 Aktiv für jenen Adressraum der nicht durch CS 1#. . CS 3# abgedeckt wird. ADDRSEL 1 ADDRSEL 2 ADDRSEL 3 Die Basisadresse ist stets ein Vielfaches des Adressbereiches. (d. h. der Chip Select mit einem Adressbereich von 128 k. Byte beginnt an einer 128 k. Byte Grenze) C 164 A 21 A 20 A 19 C B A CS 3# CS 2# CS 1# G CS 11 CS 10 CS 9 CS 8 CS 7 CS 6 CS 5 CS 4 0 x. B 80000 0 x. B 00000 0 x. A 80000 0 x. A 00000 0 x 980000 0 x 900000 0 x 880000 0 x 800000 74 ACT 138 Extra Memory-Mapped Chip-Selects C 164 P 3. 9 P 3. 8 P 3. 6 C B A CS 3# CS 2# CS 1# G CS 11 CS 10 CS 9 CS 8 CS 7 CS 6 CS 5 CS 4 0 x. F 00000 0 x. E 00000 0 x. D 00000 0 x. C 00000 0 x. B 00000 0 x. A 00000 0 x 900000 0 x 800000 74 ACT 138 Extra IO-Mapped Chip-Selects Alle mit gleichem Bus-Mode, Waitstates, usw. Embedded Systems 25. 9. 2009 20
Anschluß von externen Speicherbausteinen mit 8 Bit- Organisation RAM WE# OE# CE# D 0 -7 A 0 -16 C 164 [20 MHz] MT 5 LC 128 K 8 D 4 WE# OE# CE# D 0 -7 A 0 -16 MT 5 LC 128 K 8 D 4 Fa. Micron SRAM 128 k x 8 Zugriffszeit 25 ns ADDRSEL 1 = 0 x 0406 BUSCON 1 = 0 x 04 CF WRL# WRH# RD# D 0 -15 A 16 -19 EN OE# CS# D 0 -7 A 0 -18 ALE A 1 -15 15 -Bit D-Latch Embedded Systems OE# CS# D 0 -7 A 0 -18 CS 1# CS 0# ROM AM 27 C 040 Fa. AMD Eprom 512 k x 8 Zugriffszeit 120 ns BUSCON 0 = 0 x 04 CE AM 27 C 040 25. 9. 2009 21
Anschluß von externen Speicherbausteinen mit 16 Bit- Organisation IDT 71016 WE# BLE# BHE# OE# CE# D 0 -15 A 0 -15 RAM C 164 [20 MHz] WR# IDT 71016 Fa. IDT (Integrated Device Technology) SRAM 64 k x 16 Zugriffszeit 20 ns ADDRSEL 1 = 0 x 0405 BUSCON 1 = 0 x 04 CF BHE# RD# D 0 -15 A 16 -17 A 0 OE# CS# D 0 -15 A 0 -16 EN CS 1# CS 0# ALE A 1 -15 ROM 16 -Bit D-Latch Embedded Systems M 27 C 202 Fa. ST Microelectronics ST Eprom 128 k x 16 Zugriffszeit 100 ns BUSCON 0 = 0 x 04 CE M 27 C 202 25. 9. 2009 22
Sich überdeckende Adressbereiche Inaktiver Bereich Höchste Priorität Aktiver Bereich XBCON 0 Überlappen nicht zulässig BUSCON 4 BUSCON 2 BUSCON 1 BUSCON 3 BUSCON 0 0 x. FFFFFF 0 x 000000 Embedded Systems 25. 9. 2009 23
Interrupt System ¨ ¨ Interrupt Controller – Kurze Interrupt-Reaktionszeiten: Min. 250 ns, typisch 400 ns (@20 MHz) – Geringer Overhead für ISR’s – Leistungsfähige Priorisierung in 15 Prioritätsstufen, zu je 4 Gruppen – Hardware Traps detektieren Laufzeitfehler – Software Traps Peripheral Events Controller (PEC) – Entlastet die CPU von einfachen und häufig auftretenden ISR’s – Interruptgesteuerter “DMA-ähnlicher” Datentransfer ohne CPUEingriff – Reaktionszeiten: Min. 150 ns, typisch 300 ns mit einer CPU-Belastung von 100 ns (@20 MHz) Embedded Systems 25. 9. 2009 24
Interrupts und PEC - Priorisierung PEC 7 group 3 Level 15 PEC 3 group 2 Level 14 group 3 group 2 Level 1 -13 group 3 (Level 0) Embedded Systems group 2 group 1 PEC 2 group 2 PEC 5 PEC 1 group 0 25. 9. 2009 PEC 4 Group group 0 3 2 1 0 PEC 0 group 0 Level group 3 PEC 6 group 0 15 64 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 25
Interrupt Processing INTR Service: Interrupt Control Register des auslösenden Peripherie-Elementes INTR Flag ist gesetzt Periph. Interrupt Prioritäts-Check Periph. Interrupt Vergleich der Interruptpriorität mit der Laufzeit-Priorität der CPU falls höhere Priorität Retten: PSW, CSP, IP Gruppen Check Neue CPU-Prio. im PSW. CSP und IP aus Peripherie-Vector oder Trap-Nummer Lösche INTR Flag Periph. Interrupt Externer Interrupt* Periph. Interrupt External Interrupt* 16 Prioritäts-Stufen PEC Service 4 Gruppen * Externe Interrupts sind z. B. statt des “Capture” Eingangs möglich 32 Peripherie Interrupts 13 ext. Interrupts (+ NMI) einschließlich 4 “schnelle” Interrupts Vektoren Embedded Systems 25. 9. 2009 SFR Dave 26
Peripheral Events Controller (PEC) Interrupt hat den Prioritäs- und Gruppen-Check erfüllt Interrupt Priorität 14 oder 15 und Data Counter > 0 Interrupt Priorität < 14 Interrupt Service PEC Service Memory Segment 0 0 x. FFFF Peripheral Events Contoller INTR Service: 8 PEC Kanäle Retten: PSW, CSP, IP Neue CPU-Prio. im PSW. CSP und IP aus Peripherie-Vector oder Trap-Nummer Prioritäts- & Gruppen. Check Contr. Reg. Data Counter Byte bzw. Word Transfer SRC Pointer DEST Pointer 0 x 0000 Interrupt falls Data Counter = 0 SFR Embedded Systems 25. 9. 2009 27
- Slides: 27