Schnell und kompakt: Signalcontroller für preissensitive Anwendungen DSP im Mikrocontroller-Pelz #####

Für viele preissensitive Anwendungen mit eingeschränktem Platzangebot benötigt man kostengünstige, aber dennoch leistungsfähige Mikrocontroller. Die neuen Signalcontroller der 56F801x-Familie von Freescale sind kompakte, aber – mit 32 MHz Takt – durchaus auch schnelle Signalcontroller. Sie lassen sich einfach wie Mikrocontroller einsetzen und programmieren, bieten aber die Leistungsvorteile eines Signalprozessors.

Schnell und kompakt: Signalcontroller für preissensitive Anwendungen

Für viele preissensitive Anwendungen mit eingeschränktem Platzangebot benötigt man kostengünstige, aber dennoch leistungsfähige Mikrocontroller. Die neuen Signalcontroller der 56F801x-Familie von Freescale sind kompakte, aber – mit 32 MHz Takt – durchaus auch schnelle Signalcontroller. Sie lassen sich einfach wie Mikrocontroller einsetzen und programmieren, bieten aber die Leistungsvorteile eines Signalprozessors.

Das Marktforschungsunternehmen Harbor Research definiert „Smart Devices“ als Geräte, die über eine gewisse Rechenleistung verfügen und sich vernetzen können. Diese Geräte steuern oder regeln komplexe Abläufe und optimieren die Regelvorschriften (Algorithmen) selbstständig, ohne dass sich jemand darum kümmern muss. Dies erfordert zum einen eine leistungsfähige Zentraleineinheit (CPU) und zum anderen die Möglichkeit, sich über (serielle) Schnittstellen mit anderen Geräten auszutauschen. Führen die Geräte Aufgaben aus wie z.B. Filterberechnungen, adaptive Regelalgorithmen oder die Steuerung von elektrischen Motoren, wird eine auf der Harvard-Architektur basierende CPU benötigt. Dies erlaubt den parallelen Zugriff auf Speicher und die Ausführung komplexer Befehle in einem Taktzyklus. Zusätzlich zur Leistungssteigerung erfordern Preisdruck und Miniaturisierung die Integration möglichst vieler Funktionen in einem Mikrocontroller. Freescale Semiconductor hat für diese Aufgaben eine digitale Signalcontroller-Familie (DSC) entwickelt, die diese Anforderungen erfüllt. Sie eignet sich unter anderem besonders für folgende Anwendungen: digitale Leistungswandler, Schaltregler, Haushaltsgeräte, alle Arten von Motorsteuerungen, intelligente Sensoren und Aktoren, Mess- und Medizingeräte usw.

DSC – Digitaler Signalprozessor mit Mikrocontroller-Eigenschaften

Die DSC-56F801x-Signalprozessoren wurden für preissensitive Anwendungen entwickelt, die zwar eine hohe Rechenleistung erfordern, typischerweise jedoch nur wenige Ein- und Ausgangspins aufweisen. Trotzdem sind viele Peripherie-Funktionen auf dem Chip integriert (Bild 1).

Der Kern der 56F801x-Controller ist eine typische Hybrid-CPU, die zum einen Signalprozessorleistung bietet und zum anderen auch typische Steuerungsaufgaben erledigt. Dazu unterstützt sie einen Software-Stackpointer, der es ermöglicht, Daten an Unterprogramme weiterzugeben oder Daten auf dem Stack vorzuhalten (lokale Variablen). Außerdem kann man in ANSI-C strukturiert programmieren und wiedereintrittsfähige Funktionen (z.B. im Multitasking-Betrieb) verwenden, die ein ablaufinvariantes Programm ermöglichen. Die CPU arbeitet mit Mehrzweck-Registern und einem orthogonalen Befehlssatz. Das erhöht den Code- und Compiler-Wirkungsgrad und erleichtert zudem die Programmierung. Als Daten kommen die gängigen Typen Integer (8, 16 und 32 bit), Fest- und Gleitkomma sowie die für die Signalverarbeitung typischen Bruch-Zahlen (Fractional) zum Einsatz. Die für Steuerungsaufgaben wichtigen Bitmanipulations- und Bitabfragebefehle, die charakteristisch für Mikrocontroller sind, sind darüber hinaus ebenfalls implementiert. Typisches Erbe eines Signalprozessors sind die MAC-Einheit (in einem Taktzyklus), Hardware-Schleifen, Modular-Arithmetik für Ringpuffer und die Unterstützung von „Fractional“- Arithmetik auf Hardware-Ebene.

Verbindung zur Außenwelt

Zur Kommunikation mit der Außenwelt stehen drei serielle Schnittstellen zur Verfügung. Mit der asynchronen seriellen Schnittstelle lassen sich z.B. die Standards RS 232, RS 485 oder LIN (Local Intercon-nect Network) implementieren. Durch die bei-den synchronen Schnittstellen SPI (Serial Peripheral Interface) und I2C kann man weitere Bausteine auf der Platine mit dem Signalcontroller verbinden. Derivate mit CAN-Interface werden die Familie später ergänzen. Die SCI kann durch einen 13-bit-Baudratenselektor unterschiedliche Baudraten erzeugen und ist auch für LIN-Anwendungen geeignet. So kann der Baustein entweder als LIN-Master oder als LIN-Slave konfiguriert werden. LIN-Treiber gibt es von Freescale.

Das richtige Timing

Die beiden ersten Bausteine verfügen über vier unabhängige 16-bit-Timer, die wahlweise auf- oder abwärts zählen können. Die Timer lassen sich als „Input-Capture“ zur Signalmessung oder als „Output-Compare“ zur Signalerzeugung konfigurieren. Als Taktquelle verwenden sie entweder den internen Systemtakt von maximal 32 MHz oder einen speziellen Peripherietakt, der dem Dreifachen des Systemtakts, also maximal 96 MHz entspricht. Jeder der Timer verfügt über einen individuellen Vorteiler, um entsprechende Zeiten generieren zu können. Die vier Timer sind auch bis zu 64 bit kaskadierbar, um sehr lange Zeiten oder bessere Auflösungen zu erreichen. Damit lassen sich Zählerwerte bis 264 erzeugen. Die Timer bieten verschiedene Betriebsarten: Im Stopp-Modus ist der Timer inaktiv und zählt nicht. Im „Count“-Modus zählt der Timer entweder fallende oder steigende Flanken, während er im „Edge-Count“-Modus fallende und steigende Flanken zählt. Im Signed-Count-Modus zählt der Ti-mer auf- oder abwärts – abhängig vom Signalpegel am zweiten Timer-Eingang. Im „Gated-Count“-Modus wird nur gezählt, wenn am zweiten Eingang ein „High“-Signal anliegt. Im „Triggered-Count“-Modus startet und stoppt eine steigende Flanke am zweiten Eingang den Timer. Im „One-Shot“-Modus kann der Timer Verzögerungszeiten generieren, damit beispielsweise das PWM-Signal den Analog/Digital-Wandelvorgang verzögert startet. Darüber hinaus lässt sich der Timer als PWM-Generator verwenden, der feste oder variable Periodendauern erzeugen kann.