Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XBUS (16-bit NON MUX Data / Addresses)

Ähnliche Präsentationen


Präsentation zum Thema: "XBUS (16-bit NON MUX Data / Addresses)"—  Präsentation transkript:

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

2 CPU - Blockschaltbild CPU SFR Embedded Systems 25.9.2009 On-Chip
(EP)ROM CPU STK OV STK UV Exec. Unit Instr. Ptr. Instr. Reg. MDH SP MDL On-Chip Static RAM STK OV 16 Mul./Div.-HW Bit-Mask Gen. 32 STK UV 4-Stage Pipeline R15 R0 PSW ALU General R15 R0 Purpose Registers 16-bit SYSCON Barrel-Shifter BUSCON 0 BUSCON 1 BUSCON 2 BUSCON 3 BUSCON 4 ADDRSEL 1 ADDRSEL 2 ADDRSEL 3 ADDRSEL 4 16 Data Page Pointer Context Ptr. Code Seg.Ptr SFR Embedded Systems

3 Vierstufige Befehls-Pipeline
Fetch Decode Execute Write Back 1. Instr. 2. Instr. 3. Instr. 4. Instr. Time 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

4 Arithmetic Operations:
Arithmetic Logic Unit A B Logic Operations: and nand or nor exor exnor not Cout Cin ALU op flags Z Shift / Rotate: Arithmetic Operations: sll srl sla sra rol ror add sub inc dec neg s/ro : shift/rotate l/r : left/right l/a : logic (unsigned)/arithmetic (signed) Embedded Systems

5 Barrel Shifter D0 D1 D2 D3 D15 S0 S1 S14 Q0 Q1 Q2 Q3 Q15 1
D0 D1 D2 D3 D15 S0 S1 S14 Q0 Q1 Q2 Q3 Q15 Embedded Systems

6 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

7 2 kByte internes RAM - Plazierung der Registerbänke und des Stack
2KBytes internal RAM R14 R13 R12 0FDFE R11 R10 R15 R9 R8 RH7 RL0 RL1 RL2 RL3 RL4 RL5 RL6 RL7 R7 RH6 R6 RH5 R5 R0 Context pointer RH4 R4 RH3 R3 RH2 R2 0FC00 STKUV RH1 R1 RH0 R0 Stackpointer Underflow Stackpointer Stackpointer Overflow STKUV SP STKOV 0F600 STKOV Embedded Systems

8 Adressraum Gesamter Adressraum: Interner 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

9 Interner und externer Adressplan des C164CI
Bit-adressierbarer Bereich X-Bus Peripheral Segment 0 beinhaltet den internen Speicher Internes RAM 512 Bytes SFR’s 2k Externer Speicher Internes ROM / Flash E²PROM (kann auf Segm. 1 liegen) ESFR’s 0x000000 0x008000 0x00FE00 0x00FA00 0x00F600 0x00F200 0x010000 7 32k 0.5k Reserviert Bis zu 4 MBytes Code Segmente Daten Pages 1 2 3 6 5 4 11 10 9 8 15 14 13 12 Internal ROM/ FLASH 2*32k 0x020000 0x030000 0x040000 Full -CAN 0x00F000 0x00E800 Embedded Systems

10 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

11 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

12 Die Programmiersprache C für den Mikrocontroller C164
Speicherarten (Memory Types) Auswahl Adressraum near 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 Bit Pointer mit 16-Bit Adressberechnung, die Objektgröße beträgt 16 kByte. huge Bit Pointer mit 16-Bit Adressberechnung, die Objektgröße beträgt 64 kByte. xhuge Bit Pointer mit 32-Bit Adressberechnung, die Objektgröße beträgt 16 MByte. Embedded Systems

13 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

14 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 to unsigned int 2 Bytes 0 bis 65535 signed long 4 Bytes bis unsigned long 4 Bytes 0 bis 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

15 Integrierte Entwicklungsumgebung
µVision2 Editor / Project Management ANSI C Compiler Macro- Assembler Linker / Locater Library Manager C- Library RTX Tiny Real Time Operating System Debugger Simulator Emulator & PROM Programmer CPU & Simulator Monitor Target Debugging Peripheral Ab ins Praktikum Embedded Systems

16 Code-Adressierung mittels Segmentierung im 4 MByte Adressraum
Code Segment Pointer (CSP) zur Code-Adressierung 13 14 15 Code Seg. Pointer 7 6 5 8 13 14 16-Bit Instr. Pointer 15 7 8 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

17 Adressierung von Daten mittels Seitenauswahl (Paging) innerhalb des 4 MByte Adressraumes
Daten-Adressierung über Data Page Pointer (DPP) 13 16-bit Adresse 14 15 Auswahl eines Data Page Pointer 10-bit Seiten- nummer DPP3 DPP2 DPP1 DPP0 14-bit Physikalische 24-Bit Daten-Adresse (bis zu 22 aussen verfügbar beim C164) SFR Embedded Systems

18 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

19 Gemultiplexter Adress- und Daten-BUS
Verlängern des Adress-Setups Speicher-zugriffszeit Tri-State - Zeit A16..A21 Address ALE CS# A0..A15 D0..D15 (7) Address Data RD# RD-Delay A0..15 D0..15 (7) Address Data WR# WR-Delay SFR Embedded Systems

20 Integrierte Chip Select - Signale
CS0# P6.0 BUSCON0 CS1# P6.1 BUSCON1 ADDRSEL1 CS2# P6.2 BUSCON2 ADDRSEL2 CS3# P6.3 BUSCON3 ADDRSEL3 Aktiv für jenen Adressraum der nicht durch CS1#..CS3# abgedeckt wird. Die Basisadresse ist stets ein Vielfaches des Adressbereiches. (d.h. der Chip Select mit einem Adressbereich von 128kByte beginnt an einer 128kByte Grenze) A21 A20 A19 CS3# CS2# CS1# C B A G CS11 CS10 CS9 CS8 CS7 CS6 CS5 CS4 74ACT138 C164 0xB80000 0xB00000 0xA80000 0xA00000 0x980000 0x900000 0x880000 0x800000 Extra Memory-Mapped Chip-Selects P3.9 P3.8 P3.6 0xF00000 0xE00000 0xD00000 0xC00000 Extra IO-Mapped Alle mit gleichem Bus-Mode, Waitstates, usw. Embedded Systems

21 Anschluß von externen Speicherbausteinen mit 8 Bit- Organisation
MT5LC128K8D4 MT5LC128K8D4 MT5LC128K8D4 Fa. Micron SRAM 128k x 8 Zugriffszeit 25 ns ADDRSEL1 = 0x0406 BUSCON1 = 0x04CF RAM RAM C164 [20 MHz] WE# D0-7 A0-16 WE# OE# CE# D0-7 A0-16 OE# CE# WRL# WRH# RD# D0-15 A16-19 CS1# CS0# ALE AM27C040 Fa. AMD Eprom 512k x 8 Zugriffszeit 120 ns BUSCON0 = 0x04CE EN OE# CS# D0-7 A0-18 OE# CS# D0-7 A0-18 A1-15 ROM ROM 15-Bit D-Latch AM27C040 AM27C040 Embedded Systems

22 Anschluß von externen Speicherbausteinen mit 16 Bit- Organisation
IDT71016 IDT71016 Fa. IDT (Integrated Device Technology) SRAM 64k x 16 Zugriffszeit 20 ns ADDRSEL1 = 0x0405 BUSCON1 = 0x04CF RAM C164 [20 MHz] WE# BLE# BHE# OE# A0-15 CE# D0-15 WR# BHE# RD# D0-15 A16-17 CS1# CS0# ALE M27C202 Fa. ST Microelectronics ST Eprom 128k x 16 Zugriffszeit 100 ns BUSCON0 = 0x04CE EN A0 OE# CS# D0-15 A0-16 A1-15 ROM 16-Bit D-Latch M27C202 Embedded Systems

23 Sich überdeckende Adressbereiche
Inaktiver Bereich Aktiver Bereich Höchste Priorität XBCON0 Überlappen nicht zulässig BUSCON2 BUSCON4 BUSCON0 0x000000 0xFFFFFF BUSCON1 BUSCON3 Embedded Systems

24 Interrupt System Interrupt Controller
Kurze Interrupt-Reaktionszeiten: Min. 250ns, typisch 400ns 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 MHz) Embedded Systems

25 Interrupts und PEC - Priorisierung
Level 15 group 1 group 0 group 2 group 3 Level 14 PEC 0 PEC 6 PEC 5 PEC 4 PEC 3 PEC 2 PEC 1 PEC 7 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Group L e v e l 64 Level 1-13 group 1 group 0 group 2 group 3 (Level 0) group 1 group 0 group 2 group 3 Embedded Systems

26 Interrupt Processing Vektoren SFR Dave Embedded Systems 25.9.2009
Interrupt Control Register des auslösenden Peripherie-Elementes INTR Service: Retten: PSW, CSP, IP Neue CPU-Prio. im PSW. CSP und IP aus Peripherie-Vector oder Trap-Nummer INTR Flag ist gesetzt falls höhere Priorität Periph. Interrupt Prioritäts-Check Gruppen Check Periph. Interrupt Vergleich der Interruptpriorität mit der Laufzeit-Priorität der CPU Lösche INTR Flag Periph. Interrupt Externer Interrupt* PEC Service Periph. Interrupt 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

27 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 0xFFFF Peripheral Events Contoller Contr. Reg. INTR Service: Retten: PSW, CSP, IP Neue CPU-Prio. im PSW. CSP und IP aus Peripherie-Vector oder Trap-Nummer 8 PEC Kanäle Data Counter SRC Pointer Byte bzw. Word Transfer DEST Pointer Prioritäts- & Gruppen- Check 0x0000 Interrupt falls Data Counter = 0 SFR Embedded Systems


Herunterladen ppt "XBUS (16-bit NON MUX Data / Addresses)"

Ähnliche Präsentationen


Google-Anzeigen