Kein Folientitel

 Documents

 50 views
of 27
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
04EI C164CI Blockschaltbild C166-Core 16 64 K Data Dual Port ROM RAM (C164 CI-8RM) or Instr./Data 32 CPU Data 2 KByte OTP 16 (C164CI-8EM) PLL-Oscillator prog.…
Share
Transcript
04EI C164CI Blockschaltbild C166-Core 16 64 K Data Dual Port ROM RAM (C164 CI-8RM) or Instr./Data 32 CPU Data 2 KByte OTP 16 (C164CI-8EM) PLL-Oscillator prog. Multiplier: Watchdog XTAL 0.5; 1; 1.5; 2; 2.5; 3; 4; 5 PEC External Instr./Data XBUS (16-bit NON MUX Data / Addresses) P4.5/ CAN RTC RxD Full-CAN Interrupt Controller 13 ext. IR Interface V2.0B Interrupt Bus 16 active Peripheral Data P4.6/ CAN 16 TxD External Bus 10-Bit USART Sync. GPT1 CAPCOM 2 CAPCOM6 Unit for 8/16 bit ADC Channel PWM Generation Port 0 (SPI) T2 Timer 13 16 MUX only 8-Channels 8-Channel & ASC SSC T3 Timer 8 Timer 7 XBUS Control BRG BRG T4 1 Comp. 3/6 CAPCOM Channel Channels Port 4 Port 5 Port 3 Port 8 Port 1 164 CL 6 8 9 4 16 Embedded Systems 25.9.2009 Seite 1 04EI CPU - Blockschaltbild STK UV CPU STK OV Exec. Unit MDH SP Instr. Ptr. MDL STK OV On-Chip 16 Instr. Reg. Mul./Div.-HW STK UV Static 32 4-Stage RAM On-Chip Pipeline Bit-Mask Gen. (EP)ROM R15 PSW ALU R15 16-bit SYSCON Barrel-Shifter General BUSCON 0 ADDRSEL 1 BUSCON 1 Purpose BUSCON 2 ADDRSEL 2 BUSCON 3 ADDRSEL 3 Registers 16 R0 BUSCON 4 ADDRSEL 4 Context Ptr. R0 Data Page Pointer Code Seg.Ptr SFR Embedded Systems 25.9.2009 Seite 2 04EI Vierstufige Befehls-Pipeline Fetch 1. Instr. 2. Instr. 3. Instr. 4. Instr. Decode Execute Time Write Back 1 Machine Cycle = 100 ns at 20 MHz CPU clock  100ns effektive Befehlsausführungszeit (20 MHz fCPU)  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 Seite 3 04EI Arithmetic Logic Unit A B Logic Operations: and nand Cout Cin or nor flags ALU op exor exnor not Z Shift / Rotate: Arithmetic Operations: sll srl add sub sla sra inc dec rol ror neg s/ro : shift/rotate l/r : left/right l/a : logic (unsigned)/arithmetic (signed) Embedded Systems 25.9.2009 Seite 4 04EI Barrel Shifter 1 1 1 0 0 0 Q0 D0 1 1 1 0 0 0 Q1 D1 1 1 1 Q2 D2 0 0 0 1 1 1 Q3 D3 0 0 0 1 1 1 0 0 0 Q15 D15 S0 S1 S14 Embedded Systems 25.9.2009 Seite 5 04EI 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 Seite 6 04EI 2 kByte internes RAM - Plazierung der Registerbänke und des Stack R15 R14 2KBytes R13 internal RAM R12 0FDFE R11 R10 R15 R9 R8 RH7 RL7 R7 RH6 RL6 R6 RH5 RL5 R5 RH4 RL4 R4 R0 Context pointer RH3 RL3 R3 RH2 RL2 R2 0FC00 STKUV RH1 RL1 R1 RH0 RL0 R0 Stackpointer Underflow STKUV Stackpointer SP Stackpointer Overflow STKOV 0F600 STKOV Embedded Systems 25.9.2009 Seite 7 04EI Adressraum  Gesamter Adressraum: – 64 kByte nicht-segmentierter Adressraum – bis zu 4(16) MBytes segmentierter Adressraum: 64 kBbyte Code-Segmente und 16 kByte 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 (C164CI-8FM)  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 BUS- Kontrollsignale helfen externe Logik zu vermeiden. Embedded Systems 25.9.2009 Seite 8 04EI Interner und externer Adressplan des C164CI Segment 0 beinhaltet den internen Speicher Bis zu 4 MBytes 7 0 0x010000 Code Segmente Daten Pages 0.5k 512 Bytes 0x040000 SFR’s 0x00FE00 15 Internes 14 RAM 3 2k 0x00FA00 13 Internes 0x030000 12 RAM 0x00F600 11 Reserviert 0x00F200 10 2 0.5k 512 Bytes 9 ESFR’s 0x00F000 0x020000 8 Full -CAN 7 Reserviert Internal 0x00E800 6 ROM/ 1 Bit-adressierbarer Bereich FLAS 5 X-Bus Peripheral Externer H Speicher 0x010000 4 2*32k 3 0x008000 Internes 2 0 ROM / 1 32k Flash E²PROM (kann auf Segm. 1 liegen) 0x000000 0x000000 0 Embedded Systems 25.9.2009 Seite 9 04EI Die Programmiersprache C für den Mikrocontroller C164 C166 ist die Realisierung von ANSI-C für die Mikrocontroller-Familie C166. Der C166-Compiler sieht eine Reihe von Erweiterungen des ANSI-C Standards vor. Speziell solche, die direkt der Unterstützung der 166-Architektur dienen: C166-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 Seite 10 04EI Die Programmiersprache C für den Mikrocontroller C164 C166-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 C166-Compiler erzeugt für jede C-Funktion eine Register- maske, in der die durch die Funktion verwendeten Register aufgeführt werden. Diese können für Funktionsprototypen verwendet werden, um die Registerausnutzung zu optimieren. RTX166 tasks Durch das Schlüsselwort _task_ werden Funktionen als Tasks des Betriebssystems RTX166 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 Seite 11 04EI Die Programmiersprache C für den Mikrocontroller C164 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 SFR‘s far 32-Bit Pointer mit 16-Bit Adressberechnung, die Objektgröße beträgt 16 kByte. huge 32-Bit Pointer mit 16-Bit Adressberechnung, die Objektgröße beträgt 64 kByte. xhuge 32-Bit Pointer mit 32-Bit Adressberechnung, die Objektgröße beträgt 16 MByte. Embedded Systems 25.9.2009 Seite 12 04EI Die Programmiersprache C für den Mikrocontroller C164  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 near near nein 64k SMALL near near ja 64k COMPACT far near ja 64k HCOMPACT huge near ja 64k MEDIUM near far ja unbegrenzt LARGE far far ja unbegrenzt HLARGE huge far ja unbegrenzt Embedded Systems 25.9.2009 Seite 13 04EI Die Programmiersprache C für den Mikrocontroller C164 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 1.176E-38 bis 3.40E+38 double 8 Bytes 1.7E-308 bis 1.7E+308 pointer 2/4 Bytes Adresse des Objects Datentypen für 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. Embedded Systems 25.9.2009 Seite 14 04EI Integrierte Entwicklungsumgebung – µVision2 Editor / Project Management ANSI C Macro- Compiler Assembler C- Library RTX Tiny Real Time Library Manager Operating System Linker / Locater – Debugger Emulator & – Simulator PROM Programmer CPU & Monitor Peripheral Simulator Target Debugging Ab ins Praktikum Embedded Systems 25.9.2009 Seite 15 04EI Code-Adressierung mittels Segmentierung im 4 MByte Adressraum Code Segment Pointer (CSP) zur Code-Adressierung 15 14 13 8 7 6 5 0 15 14 13 8 7 0 Code Seg. Pointer 16-Bit Instr. Pointer 6-Bit Segment- nummer 16-Bit 22-Bit physikalische Code-Adresse (C164) 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 Seite 16 04EI Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes Daten-Adressierung über Data Page Pointer (DPP) 15 14 13 0 16-bit Adresse Auswahl eines Data Page Pointer DPP3 DPP2 14-bit DPP1 DPP0 Seiten- 10-bit nummer Physikalische 24-Bit Daten-Adresse (bis zu 22 aussen verfügbar beim C164) SFR Embedded Systems 25.9.2009 Seite 17 04EI 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 BUSCON0..4 Programmierbare Zeiten. Festlegung von CS# - Signalen. Auswahl der Breite des Daten-BUS 8 / 16 Bit. Special Function Register ADDRSEL1..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 Seite 18 04EI Gemultiplexter Adress- und Daten-BUS Verlängern Speicher- Tri-State - Zeit des Adress- zugriffszeit Setups A16..A21 Address ALE CS# A0..A15 Address Data D0..D15 (7) RD# RD-Delay A0..15 Address Data D0..15 (7) WR# WR-Delay SFR Embedded Systems 25.9.2009 Seite 19 04EI Integrierte Chip Select - Signale CS0# P6.0 BUSCON0 Aktiv für jenen Adressraum der CS1# P6.1 BUSCON1 ADDRSEL1 nicht durch CS1#..CS3# CS2# P6.2 BUSCON2 ADDRSEL2 abgedeckt wird. CS3# P6.3 BUSCON3 ADDRSEL3 Die Basisadresse ist stets ein Vielfaches des Adressbereiches. (d.h. der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze) C164 CS11 0xB80000 C164 CS11 0xF00000 CS10 0xB00000 CS10 0xE00000 A21 C CS9 0xA80000 P3.9 C CS9 0xD00000 A20 B CS8 0xA00000 P3.8 B CS8 0xC00000 A19 A CS7 0x980000 P3.6 A CS7 0xB00000 CS6 0x900000 CS6 0xA00000 CS5 0x880000 CS5 0x900000 CS3# G CS4 0x800000 CS3# G CS4 0x800000 CS2# 74ACT138 CS2# 74ACT138 CS1# CS1# Extra Memory-Mapped Extra IO-Mapped Chip-Selects Chip-Selects Alle mit gleichem Bus-Mode, Waitstates, usw. Embedded Systems 25.9.2009 Seite 20 04EI Anschluß von externen Speicherbausteinen mit 8 Bit- Organisation MT5LC128K8D4 MT5LC128K8D4 MT5LC128K8D4 RAM RAM Fa. Micron SRAM 128k x 8 A0-16 A0-16 D0-7 WE# WE# Zugriffszeit 25 ns D0-7 OE# OE# CE# CE# C164 [20 MHz] WRL# ADDRSEL1 = 0x0406 WRH# BUSCON1 = 0x04CF RD# D0-15 A16-19 CS1# CS0# ALE AM27C040 D0-7 A0-18 A0-18 D0-7 OE# OE# CS# CS# Fa. AMD EN Eprom 512k x 8 Zugriffszeit 120 ns A1-15 ROM ROM 15-Bit D-Latch BUSCON0 = 0x04CE AM27C040 AM27C040 Embedded Systems 25.9.2009 Seite 21 04EI Anschluß von externen Speicherbausteinen mit 16 Bit- Organisation IDT71016 IDT71016 RAM Fa. IDT (Integrated Device Technology) SRAM 64k x 16 A0-15 BHE# D0-15 BLE# WE# OE# Zugriffszeit 20 ns CE# C164 [20 MHz] WR# ADDRSEL1 = 0x0405 BHE# BUSCON1 = 0x04CF RD# D0-15 A16-17 CS1# M27C202 CS0# Fa. ST Microelectronics ALE ST Eprom 128k x 16 A0-16 D0-15 OE# CS# EN A0 Zugriffszeit 100 ns A1-15 BUSCON0 = 0x04CE ROM 16-Bit D-Latch M27C202 Embedded Systems 25.9.2009 Seite 22 04EI Sich überdeckende Adressbereiche Inaktiver Bereich Höchste Aktiver Bereich Priorität XBCON0 Überlappen nicht zulässig BUSCON2 BUSCON4 BUSCON1 BUSCON3 BUSCON0 0xFFFFFF 0x000000 Embedded Systems 25.9.2009 Seite 23 04EI Interrupt System  Interrupt Controller – Kurze Interrupt-Reaktionszeiten: Min. 250ns, typisch 400ns (@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 CPU- Eingriff – Reaktionszeiten: Min. 150ns, typisch 300ns mit einer CPU-Belastung von 100ns (@20 MHz) Embedded Systems 25.9.2009 Seite 24 04EI Interrupts und PEC - Priorisierung PEC 7 PEC 6 PEC 5 group 3 PEC 4 group 2 group 1 Group Level 15 group 0 3 2 1 0 15 64 PEC 3 14 PEC 2 PEC 1 group 3 group 2 13 PEC 0 group 1 12 Level 14 group 0 11 10 9 Level 8 group 3 7 group 2 group 1 6 Level 1-13 group 0 5 4 3 2 group 3 1 group 2 group 1 0 1 (Level 0) group 0 Embedded Systems 25.9.2009 Seite 25 04EI Interrupt Processing INTR Service: Interrupt Control Register des auslösenden Peripherie-Elementes INTR Flag ist gesetzt Retten: falls PSW, CSP, IP Periph. Interrupt Prioritäts-Check höhere Gruppen Check Priorität Neue CPU-Prio. Periph. Interrupt im PSW. Vergleich der Interruptpriorität mit CSP und IP aus der Laufzeit-Priorität Peripherie-Vector Lösche oder Trap-Nummer der CPU INTR Flag Periph. Interrupt Externer Interrupt* PEC Periph. Interrupt Service External Interrupt* 16 Prioritäts-Stufen 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 SFR Dave Embedded Systems 25.9.2009 Seite 26 04EI Peripheral Events Controller (PEC) Interrupt hat den Prioritäs- und Gruppen-Check erfüllt Interrupt Priorität 14 oder 15 Interrupt Priorität < 14 und Data Counter > 0 Interrupt Service PEC Service Memory Segment 0 0xFFFF Peripheral Events Contoller Contr. Reg. INTR Service: 8 PEC Data Counter Retten: PSW, CSP, IP Kanäle SRC Pointer Byte bzw. DEST Pointer Word Neue CPU-Prio. Transfer im PSW. CSP und IP aus Peripherie-Vector oder Trap-Nummer Prioritäts- & Gruppen- 0x0000 Check Interrupt falls Data Counter = 0 SFR Embedded Systems 25.9.2009 Seite 27
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks