Bildergalerie
Bild 1: Blockdiagramm eines RX210 Mikrocontrollers.
Bild 2: Diagramm des „Interrupt Controllers“.
Bild 3: Im Kern des DOC sitzt eine einfache ALU mit den drei Grundfunktionen: Sie kann 16-Bit-Daten jeweils vergleichen, addieren oder voneinander subtrahieren, um dann anhand einer vorgegebenen Bedingung einen Interrupt auszugeben.
Bild 4: Einige der verschiedenen DTC-Betriebsarten.
Bild 5: System-Blockdiagramm eines Anwendungsbeispiels. Über eine Kombination aus DTC und DOC wird ermittelt, ob ein programmierbarer Schwellenwert überschritten wurde.
Tabelle 1: A/D-Wandler Transfer Request an Data Transfer Controller (DTC).

Mikrocontroller mit neuartigem Peripherie-Controller

In die Mikrocontroller der Baureihe RX210 hat Renesas erstmals einen Data Operating Circuit (DOC) integriert. Die Mikrocontroller mit diesem integrierten Peripheriecontroller werden für eine breite Palette von Kommunikations- und Steuerungstechnik-Anwendungen wie Motorsteuerung, intelligente Sensorik, Metering, tragbare Geräte, Low-Power-Modems und viele andere Industrie- und Unterhaltungselek-tronikanwendungen angeboten. Diese Bausteine sind mit vielen unterschiedlichen Speichergrößen und in zahlreichen Gehäuse-Optionen erhältlich.

Die Mikrocontroller-Familie RX200 von Renesas Electronics enthält erstmals einen Data Operating Circuit (DOC) und zählt zur neuesten Generation von Strom-sparenden Mikrocontrollern mit extrem niedriger Versorgungsspannung. Sie kombiniert einen leistungsfähigen 32 Bit RX CISC-CPU-Kern mit einer neuen Generation eines stromsparenden Niederspannungs-Halbleiterprozesses.

Das erste Produkt aus der RX200-Familie ist der RX210. Dieser Baustein enthält alle gängigen Funktionsmerkmale eines typischen RX-Mikrocontrollers und bietet zugleich eine Reihe neuer und innovativer Peripheriefunktionen sowie eine umfassende Ausstattung an Standard-Peripherieelementen. Zu diesen zählen beispielsweise bis zu neun serielle Schnittstellen, leistungsfähige Motorsteuerungs-Timer, eine Echtzeit-Uhr sowie weitere Features für eine optimale Systemintegration. Bild 1 zeigt das Blockdiagramm eines RX210. Der Artikel konzentriert sich auf den Betrieb einer der interessantesten und mit Sicherheit außergewöhnlichsten Peripheriefunktionen im RX210, den Data Operation Circuit.

Eine der wichtigsten Design-Anforderungen bei der Erstellung der ursprünglichen Designstudie für den RX210-Mikrocontroller bestand darin, so viele I/O-Funktionen wie möglich zu implementieren, die jeweils unabhängig von der CPU arbeiten können. Dies würde die Reaktionszeit auf interne und externe Echtzeit-Ereignisse minimieren und die Notwendigkeit verringern, dass die CPU eine große Anzahl von Interrupts abarbeiten müsste, was wiede-rum die Gesamtleistung des Systems erhöhen würde.

Vor dem Hintergrund dieser Designkriterien wurden im RX210 viele intelligente Peripherieelemente implementiert. Der Mikrocontroller enthält Features wie einen 4-Kanal Direct Memory Access Controller (DMAC) und einen Data Transfer Controller (DTC), um automatische Daten-Transfers zwischen Speicher und Peripherieelementen sowie Peripherieelementen und Speicher ohne CPU-Beteiligung zu ermöglichen. Weiter unten im Artikel wird der DTC genauer diskutiert, denn dieser ist im Einsatz mit einem DOC besonders nützlich.

Event Link Controller

Ebenfalls im RX210 implementiert ist ein Event Link Controller, über den ein beliebiges Hardware-Ereignis in einem Peripherieelement des Mikrocontrollers direkt ein anderes Peripherieelement steuern kann. So lässt sich ein I/O-Pin zum Beispiel direkt per Hardware mit einem Timer verknüpfen, so dass der Timer bei einer Zustandsänderung am Pin startet oder etwa einen Zählerstand inkrementiert. Ein Timer könnte auch an den A/D-Wandler angeschlossen werden, um zum Beispiel alle 12 ms einen bestimmten Eingang abzutasten. Im Zusammenspiel mit dem DMAC oder einem DTC könnte man auch das Ergebnis einer A/D-Wandlung ohne CPU-Beteiligung in den SRAM verschieben. Dies ermöglicht eine extrem schnelle Hardware-Reaktion auf Echtzeit-Events ohne Intervention der CPU, so dass die CPU für die Verwaltung anderer wichtiger Aufgaben frei bleibt. Vor allem aber – und dies wird weiter unten noch eingehender gezeigt – ermöglichen viele dieser Funktionen eine direkte Verbindung verschiedener Peripherieelemente, die im Zusammenspiel mit dem DOC den Aufbau extrem leistungsfähiger, flexibler und programmierbarer Hardware-Subsysteme im Inneren des Mikrocontrollers ermöglichen (Bild 2).

Data Operations Circuit

Bei Weitem das interessanteste und wahrscheinlich auch leistungsfähigste Peripherieelement im RX210 ist der Data Operations Circuit – vor allem wenn dieser gemeinsam mit einigen der anderen innovativen Funktionen im RX210 eingesetzt wird.

Im Kern des DOC befindet sich eine einfache Arithmetic Logic Unit (ALU). Diese einfache ALU hat nur drei Grundfunktionen: Sie kann 16-Bit-Daten jeweils vergleichen, addieren oder vonei-nander subtrahieren, um dann anhand einer vorgegebenen Bedingung einen Interrupt auszugeben (Bild 3).

Im 16-Bit-Vergleichsbetrieb wird ein erster Referenzwert in den DOC geladen; dann wird der damit zu vergleichende 16-Bit-Datenwert geladen und per Hardware mit dem Referenzwert verglichen. Je nach Programmierung kann der DOC dann einen Interrupt erzeugen, wenn das Vergleichsergebnis wahr oder falsch ist.

Bei der Nutzung des 16-Bit-Additionsmodus wird ein erster 16-Bit-Wert in den DOC übernommen. Weitere 16-Bit-Werte werden anschließend in den DOC geladen (ein Wert oder mehrere sind möglich) und zum ursprünglichen Wert addiert. Sobald alle erforderlichen Werte geladen sind, wird das Ergebnis auf Überlauf überprüft und es wird bei Bedarf ein Interrupt erzeugt. Dieser einfache Mechanismus ermöglicht eine Entscheidung, wenn ein bestimmter Schwellenwert überschritten wurde. Dies ist beispielsweise ideal für eine automatische Pegelüberwachung mithilfe des A/D-Wandlers.

Nutzt man den 16-Bit-Subtraktions-Modus, so wird zunächst der erste 16-Bit-Wert in den DOC geladen. Weitere 16-Bit-Werte werden anschließend in den DOC übernommen (ein Wert oder mehrere sind möglich) und von dem ursprünglichen Wert abgezogen. Sobald alle erforderlichen Werte geladen sind, wird das Ergebnis auf eine Bereichsunterschreitung überprüft und bei Bedarf ein Interrupt erzeugt. Auch dieser einfache Mechanismus ermöglicht das Fällen einer Entscheidung, wenn ein bestimmter Schwellenwert unterschritten wird.

Data Transfer Controller

Die besondere Leistung des Data Operation Circuit besteht darin, dass sich diese drei einfachen Funktionen ohne jegliche CPU-Beteiligung für einfache Entscheidungen über das Systemverhalten nutzen lassen. Damit können erstmals einfache Entscheidungen direkt in der Mikrocontroller-Hardware gefällt werden, so dass Peripherieschaltungen anhand einfacher Vergleichsoperationen da-rüber entscheiden können, wie die von ihnen erzeugten Daten verwaltet werden sollen.

Der DOC lässt sich im Zusammenspiel mit dem DMAC oder speziell dem DTC für die Automatisierung der Weitergabe von Daten und Vergleichsinformationen an den DOC einsetzen. Hier sind viele Anwendungen für den DOC denkbar. Beispielsweise kann der DOC zusammen mit einer UART-Schnittstelle zur automatischen Erkennung einer Eingangs-Adresse verwendet werden und die CPU alarmieren, wenn die Adresse gültig ist. Alternativ lässt sich der DOC zusammen mit einem A/D-Wandler in einem Pegel-Messsystem einsetzen, wo er automatisch erkennen kann, wann der Pegel eine vorprogrammierte Schwelle überschreitet. Der Einsatz des DOC bietet viele Vorteile für derartige Funktionen. So könnte sich die CPU beispielsweise auf andere Aufgaben mit höherer Priorität konzentrieren, und nur dann vom DOC über einen Interrupt alarmiert werden, wenn eine bestimmte Bedingung erfüllt ist. Die CPU könnte sogar zur Senkung des Stromverbrauchs in einen Sleep-Modus versetzt und nur dann über einen Interrupt aufgeweckt werden, sobald ein gültiger Alarmzustand über eine DOC-Vergleichsoperation erkannt wird.

DOC mit DTC kombinieren

Um zu verstehen, wie man den DOC mit dem DTC kombinieren kann, ist es wichtig zu verstehen, wie der Data Transfer Controller selbst funktioniert. Er wurde mit dem Ziel entwickelt, einen einfachen aber extrem flexiblen Mechanismus für die Übertragung von Daten zwischen einem Peripherieelement und dem Speicher oder umgekehrt zu ermöglichen. Der DTC bietet so ein hohes Maß an Flexibilität im Betrieb, indem er für die Durchführung der Daten-Transfers einen einfachen, programmierbaren Controller anstelle eines großen, spezialisierten Hardware-Blocks nutzt, wie dieser beim DMA-Controller zum Einsatz kommt. Dies ermöglicht eine umfassende Programmierbarkeit, wobei der Baustein alle notwendigen Konfigurationsinformationen für den Transfer nicht in einem festen Satz von Chip-internen Registern speichert, sondern in einem kleinen Block im Chip-internen SRAM. Dadurch lässt sich der DTC-Controller nicht nur zum Aufbau von einem oder zwei Daten-Transferkanälen einsetzen, sondern bei Bedarf auch für 10 oder 20. Dazu benötigt man für jeden zu definierenden Kanal einen kleinen SRAM-Block zur Ablage der Kanal-Konfigurationsinformationen. Der größte Nachteil dieser Technik: Bei jedem Transfer werden jeweils einige Zyklen für das Auslesen der im SRAM abgelegten Konfigurationsdaten benötigt, bevor sich der jeweilige Transfer ausführen lässt. Damit ist ein DTC-Transfer in der Regel langsamer als ein DMA-Transfer.

Der DTC kann bis zu 256 mal 1 Byte oder mehr als nur 1 Byte zwischen einer Peripherieschaltung und dem Speicher oder umgekehrt übertragen. Die Ursprungs- und Zieladressen für den Transfer können jeweils die gleiche Adresse sein; alternativ lassen sich die Adressen zur Bildung einer Pufferstruktur auch unabhängig voneinander inkrementieren oder dekrementieren.

Am Ende des Transfers kann der DTC einen Interrupt erzeugen und der CPU damit signalisieren, dass die Daten bereitstehen. Alternativ kann der Interrupt auch einen zweiten DTC-Transfer anstoßen. Dieser Mechanismus lässt sich bei Bedarf auch zur Verkettung mehrerer Transfers verwenden. Diese Verkettungs-Betriebsart (Chain Mode) ist besonders nützlich, wenn mehrere Datenblöcke zwischen Peripherieschaltungen verschoben werden müssen. Chain Mode ist besonders für den Einsatz zusammen mit dem DOC interessant, weil sich dann mehrere Transfers von verschiedenen Speicher- oder Peripherie-Adressen durch eine einzige Interrupt-Quelle triggern lassen. So können zum Beispiel mit nur einem Interrupt – wie etwa dem A/D-Wandler-Interrupt – Vergleichsdaten in den DOC geladen und über eine Verkettung eines zweiten Transfers Daten aus dem A/D-Wandler zum Vergleich in den DOC geladen werden; dabei läuft der gesamte Vorgang automatisch und ohne Beteiligung der CPU ab. Die Möglichkeit, dass ein Interrupt eine komplexe Abfolge unterschiedlicher Transfers anstoßen kann, ist nicht nur beim Einsatz mit dem DOC besonders interessant. Bild 4 zeigt einige der verschiedenen DTC-Betriebsarten.

Der DTC lässt sich auch in einen Repeat-Modus setzen, in dem er jeden Transfer zusätzlich für eine vorgegebene Anzahl von Durchläufen wiederholt. Für die meisten Anwendungen ermöglicht die Flexibilität des DTCs einen sehr guten Kompromiss zwischen Geschwindigkeit, Flexibilität und natürlich auch Bauteilkosten. Automatische Transfers lassen sich fast ohne Einschränkungen zwischen beliebigen Peripherieelementen und dem Speicher einrichten. Der Data Transfer Controller ist eine geeignete Lösung zur Automatisierung einer Datenübertragung zwischen Peripherieschaltungen und dem Speicher ganz ohne Beteiligung der CPU. Wenn man den DTC in der Chain Betriebsart bei der Übertragung von Daten zum DOC einsetzt, dann können einfache Tests an vielen Datenblöcken ohne jegliche CPU-Beteiligung ausgeführt werden, so dass das Bauelement selbst die Fähigkeit erhält, einfache Entscheidungen zu fällen.

Einfaches Systembeispiel

Nachdem nun die Grundfunktionen des DOC und des DTC klar sind, folgt nun ein einfaches Systembeispiel. Bei diesem System handelt es sich um einen einfachen Pegel-Detektor mit mehreren Eingängen, der den Group-Scan-Modus eines 12-Bit-A/D-Wandlers zur Erfassung von jeweils vier Eingangssignalen nutzt, und über eine Kombination aus DTC und DOC ermittelt, ob ein programmierbarer Schwellenwert überschritten wurde. Nach der anfänglichen System-Konfigurierung geht die CPU in den Sleep-Modus, um Strom zu sparen. Aus diesem Modus wird sie nur aufgeweckt, wenn ein Interrupt vom DOC kommt. Dieser Interrupt signalisiert, dass einer der Schwellwerte überschritten wurde. Bild 5 zeigt das zugehörige System-Blockdiagramm.

Im Group-Scan-Modus tastet der A/D-Wandler kontinuierlich der Reihe nach jeden Eingang ab und legt die Ergebnisse im SRAM ab. Nachdem alle vier Eingänge abgetastet wurden, erzeugt der A/D-Wandler einen DTC-Request. Mithilfe des Chain-Modus stößt dieser Request eine Kette von acht Daten-Transfers zwischen dem Speicher und dem DOC an. Dabei werden vom Chip-internen SRAM die beiden Vierer-Sätze der A/D-Wandlerergebnisse und ein entsprechender Schwellenwert übertragen, mit dem jedes A/D-Wandlerergebnis verglichen werden soll.

Im vorliegenden Fall wird der DOC so initialisiert, dass er jeden Wert vergleicht und ein Interrupt erzeugt, wenn bestimmte Schwellenwerte überschritten werden. Sobald der A/D-Wandler, der DOC und der DTC initialisiert sind, wird jeder Wandler-Eingang ohne jegliche CPU-Beteiligung kontinuierlich im Hintergrund abgefragt. Die CPU kann andere Tasks verwalten oder sogar in einen Low-Power-Modus versetzt werden und wird erst dann aufgeweckt, wenn einer der Eingänge den relevanten Wert überschreitet. Viele andere Low-Level-Tasks lassen sich auf gleiche Weise mithilfe dieser Kombination aus DOC und DTC automatisieren. Diese Technik zur Automatisierung von Low-Level-Funktionen ist außerordentlich leistungsstark. Sie kann bei der Entwicklung von Low-Level-Softwaretreibern für diese Aufgaben sowohl Entwicklungszeit als auch Entwicklungskosten sparen. Darüber hinaus verbessert sie durch eine Automatisierung der Basisfunktionen ohne die Notwendigkeit einer CPU-Beteiligung auch die Systemleistung.

Die RX210-Familie von Renesas verbindet als erste Bausteinserie intelligente Peripheriefunktionen wie den Data Operation Circuit mit anderen Peripheriefunktionen, wie beispielsweise den Data Transfer Controller. DOC und DTC ermöglichen zusammen flexible und leistungsfähige Lösungen für die Automatisierung von Low-Level I/O-Funktionen in vielen verschiedenen Anwendungen.