Flexible Peripherie macht es möglich Komplexe Funktionen auf einem Mikrocontroller

Um die Anforderungen einer Endanwendung erfüllen zu können, benötigt man meistens unterschiedliche Signale oder Logik. Statt durch komplexe Logikschaltungen auf der Platine lässt sich dies oft auch auf einfachem Wege erreichen, nämlich mittels Mikrocontroller mit flexiblen Peripherie­schaltungen.

Hier kommt die konfigurierbare Logikzelle (CLC – Configurable Logic Cell) ins Spiel. Microchip hat seine Auswahl an Peripherieschaltungen für die PIC-Mikrocontroller (MCUs) um eine CLC-Peripherieschaltung erweitert. Mit ihr kann der Anwender eine einfache, mit der MCU verschaltete Funktion konzipieren. Mit dieser CLC-Peripherieschaltung kann der Benutzer Kombinationen aus Signalen als Eingänge für eine Logikfunktion spezifizieren und den Ausgang dieser Logik zur Steuerung anderer Peripherieschaltungen und I/O-Pins verwenden. Damit ist es dem Benutzer möglich, flexibel eine Funktion seiner Wahl zu entwickeln. 

Um die Dinge einfach zu halten, wird die CLC in Microchips MPLAB-Code-Konfigurator (MCC) unterstützt. So können Entwickler Logik-Gatter per Drag-and-Drop in einem GUI-Format verschieben und Ein- und Ausgänge miteinander verbinden sowie auf Knopfdruck C-Code erzeugen. Damit lässt sich die Implementation der CLC-Module erheblich vereinfachen.

Coreunabhängige Peripherieschaltungen (CIPs – Core Independent Peripherals) erledigen ihre Aufgaben ohne zusätzlichen Code oder eine Überwachung ihres Betriebs durch die CPU. Die CLC ist eine solche CIP. Mit ihr lässt sich die Implementation komplexer Steuersysteme vereinfachen. Zugleich bietet sie dem Entwickler ein hohes Maß an Design-Flexibilität, um die CPU zu entlasten und damit die Mikrocontrollerleistung zu verbessern. Im Folgenden wird erläutert, wie man die CLC zur Implementierung einer Signalphasenerkennung, einer komplementären Wellenform-Generierung oder einer Überwachung von mehreren Parametern in einer Anwendung nutzen kann. Dank einer breiten Auswahl an Eingängen, Triggern und Ausgängen bietet die CLC viele Möglichkeiten. 

Übersicht 

Die CLC ist eine durch den Benutzer konfigurierbare Peripherieschaltung und ähnelt einem programmierbaren Logikbaustein (PLD – Programmable Logic Device), der aber in einen Mikrocontroller integriert ist. Interne und externe Eingänge lassen sich als Eingänge für die CLC auswählen. 

Die CLC erhält Eingangssignale von anderen Peripherieschaltungen oder von einem Eingangs-Pin. Anschließend führt sie die beabsichtigten Logikoperationen durch und liefert ein Ausgangssignal, das sich zur Steuerung anderer Peripherieschaltungen oder eines anderen I/O-Pins nutzen lässt.

Die CLC kann Signale empfangen. Beispiele dafür sind ein internes Taktsignal, das Ausgangssignal einer anderen Peripherieschaltung oder Peripherie-Ereignisse wie ein Timer-Eingangssignal. Die gewählten Eingangssignale lassen sich über die Signal-Gating-Stufe an die gewünschte Logikfunktion weiterleiten.

Die CLC unterstützt eine Reihe von Logikfunktionen wie AND, OR, NOT, XOR, NAND, NOR sowie XNOR. In der CLC dienen die Ausgangssignale der Daten-Gating-Stufe als Eingangssignale für die Stufe zur Auswahl der Logikfunktionen. Die Ausgangspolaritäts-Stufe schließlich ist die letzte Stufe in der CLC mit der sich die gewünschte Polarität des Signals bestimmen lässt.

Die CLC kann als eigenständige Peripherieschaltung zur Implementierung von sequenziellen und kombinatorischen Logikfunktionen genutzt werden und erlaubt damit den Aufbau schneller Ereignistrigger und -antworten. Man kann sie auch zusammen mit anderen Peripherieschaltungen verwenden, um deren Fähigkeiten zu erweitern. Dies ermöglicht eine kundenspezifische Implementation komplexer Funktionen in Hardware.

Als Core-unabhängige Peripherieschaltung verringert die CLC die CPU-Anforderungen für eine Anwendung. Sie verlagert viele einfache und von Logikereignissen abhängige Reaktionen von der CPU in die Peripherieschaltung. Da keine Software-Algorithmen benötigt werden, verringert sich damit auch der Flash- und RAM-Speicherbedarf.

Gegenüber in Software implementierten Logikfunktionen bieten in Hardware implementierte Logikfunktionen eine schnellere Reaktion auf Ereignisse. Darüber hinaus unterstützt die CLC ein höheres Maß an Integration komplett ohne externe Komponenten, wodurch sich die Gesamtgröße der Leiterplatte verringern lässt. 

Phasendetektor 

Die flexiblen Funktionsmerkmale und die Einfachheit der CLC ermöglichen eine Ausweitung der Designfähigkeiten einer PIC-MCU. Ein gutes Beispiel zur Demonstration der CLC-Fähigkeiten ist ein Phasendetektor. Ein Phasendetektor lässt sich für viele Anwendungen wie zum Beispiel Entfernungsmessungen nutzen. Eine solche Messung beruht auf dem folgenden Funktionsprinzip: Wird eine kontinuierliche HF-Welle in Richtung auf ein Ziel gesendet, so ist die Entfernung zum Ziel proportional zur Phasenverschiebung zwischen den gesendeten und den empfangenen Wellen. Die CLC lässt sich zur Messung der Phasendifferenz zwischen zwei Signalen der gleichen Frequenz nutzen. Die gesendeten und empfangenen Wellen dienen als Eingangssignale für die CLC. Die Phasendifferenz zwischen den beiden Signalen am CLC-Ausgang lässt sich dann zur Berechnung der Entfernung zwischen Quelle und Ziel nutzen. 

In der Phasendetektorimplementation mit einer CLC nutzt man die AND-OR Logikfunktion in der CLC zur Implementation einer XOR-Funktion. Diese dient zur Messung des Phasendifferenzwertes, wobei die D-Flip-Flop-Logikfunktion ermittelt, welches der Signale früher beziehungsweise später auftritt. Neben einer Nutzung von Rechtecksignalen kann man auch die Phasenlage zwischen anderen Arten analoger Signale wie etwa sinusförmigen Wellen messen. Bild 1 zeigt die Konfiguration eines per CLC implementierten Phasendetektors.

Die Quellsignale, deren Phasendifferenz gemessen werden soll, werden als Eingangssignale an zwei Komparatoren geführt. Diese sind als Nulldurchgangs-Detektoren konfiguriert, welche die analogen Eingangssignale in Rechteckwellen der gleichen Frequenz umwandeln. Sind die Quellsignale bereits Rechteckwellen, dann können sie entfallen. Die Rechteckwellen werden intern als Eingangssignale zu den verschiedenen CLC-Modulen geführt.

CLC1 und die Eingangssignal-Erfassungsschaltung (IC) dienen zur Ermittlung der Phasendifferenz-Größe. CLC1 ist in einer AND-OR-Logikfunktion konfiguriert, aus der ein XOR-Verhalten abgeleitet wird. Das per XOR veränderte Ausgangssignal von CLC1 wird extern als Quellsignal für IC geschaltet. Die Pulsbreite des per XOR modifizierten Ausgangssignals ergibt die Größe der Phasendifferenz zwischen den zwei Wellen, und wird vom IC gemessen. Liefert der CLC1-Ausgang kein Signal, dann sind die beiden Quellsignale phasengleich.

Um die Vor-/Nachlaufinformation der zwei Eingangswellenformen zu ermitteln, wird die CLC in einem D-FF-Modus konfiguriert, wobei eine Rechteckwelle als D-Eingang und die andere als Taktsignal verwendet werden. Der High- bzw. Low-Zustand am Ausgang von CLC2 signalisiert, ob das D-Eingangssignal in Bezug auf den Clock-Eingang phasenmäßig vor- oder nachläuft. Eine Messung des Phasenwinkels zwischen zwei Signalen der gleichen Frequenz ist für viele Anwendungen nützlich, so zum Beispiel bei Energiezählern, digitalen Stromversorgungen, in der Kommunikationstechnik sowie bei medizinischen Instrumenten. 

Komplementärer Wellenformgenerator 

Ein komplementärer Wellenformgenerator ist eine weitere Möglichkeit zur Nutzung einer CLC. Der CWG erzeugt aus einer Signalquelle am Eingang eine komplementäre Wellenform mit einem steuerbaren Totzeitbereich. Ein Totzeitbereich wird zwischen den zwei Signalen eingefügt, um einen Shoot-Through-Strom (Ströme, die auftreten, wenn bei Transistor-Gegentaktstufen beide Transistoren gleichzeitig leiten) in den unterschiedlichen Stromversorgungen zu vermeiden. 

Diese Anwendung zeigt, wie man die Flankenerkennung sowie die Interrupt-Fähigkeiten der CLC-Peripherieschaltung zur Erzeugung einer komplementären Wellenform mit einem Single-Capture/Compare/PWM-Modul als Signalquelle am Eingang nutzt.

Anwendungen wie beispielsweise Motorsteuerungen benötigen oft mehrere komplementäre Wellenform-Generatoren zur Steuerung ihres Betriebs. Das Multiple-Capture/Compare/PWM-Modul kann komplementäre Wellenformen mit nicht-überlappenden Signalen erzeugen, und dabei den Totzeitbereich an seinem Ausgang steuern. Erfordert allerdings die Anwendung mehrere MCCP-Instanzen als in einem Baustein verfügbar sind, dann kann ein SCCP in Kombination mit einer CLC verwendet werden

Die CLC-Peripherieschaltung lässt sich zusammen mit dem SCCP zur Erzeugung einer komplementären Wellenform mit dem benötigten Totzeitbereich nutzen, denn das SCCP allein kann keine nicht-überlappenden Signale generieren.

Ein Totzeitbereich lässt sich sowohl für Edge- wie auch für Centre-aligned-SCCP-Ausgangssignale hinzufügen. Bild 2 zeigt die Konfiguration aus CLC1, CLC2 und CLC3, mit der sich der Totzeitbereich des SCCP-Ausgangssignals im Edge-aligned-Modus steuern lässt.

Eine Vollbrücken-Motortreiberschaltung lässt sich beispielsweise mit einer MCCP-Peripherieschaltung ansteuern, deren Ausgang eine komplementäre Wellenform erzeugt. Müssen aber mehrere solcher Schaltungen angesteuert werden und die Anzahl der MCCP-Peripherieschaltungen im Baustein reicht dafür nicht aus, dann ist eine Kombination aus einem SCCP und einem CLC möglich. 

Überwachung mehrerer Parameter 

Viele Anwendungen erfordern die gleichzeitige Überwachung verschiedener Parameter wie etwa der Temperatur, des Drucks und der Feuchtigkeit. Sollten diese Parameter ihre oberen oder unteren Grenzwerte überschreiten, so sind bestimmte Aktionen erforderlich, um katastrophale Ereignisse zu verhindern. 

Mehrere Komparatoren stehen als Quelleingänge für die CLC zur Verfügung. In einem Mikrocontroller lässt sich ein Komparator zur Überwachung nur eines einzigen Parameters nutzen. Die Ausgangssignale mehrerer Komparatoren lassen sich mit Hilfe der CLC kombinieren, wodurch sich mehrere Parameter überwachen lassen.

Die benötigten Aktionen werden ausgeführt, wenn ein beliebiger oder alle überwachten Parameter einen bestimmten Grenzwert überschreiten. Bild 3 zeigt die CLC-Konfiguration zur Überwachung von zwei unterschiedlichen Parametern.

Eine praktische Anwendung dieser Schaltung wäre die Überwachung von Temperatur und Druck in einer Fertigungsanlage. So kann man die Anlage anhalten, wenn einer dieser Parameter einen voreingestellten Schwellwert überschreitet. Ähnlich könnte diese Schaltung auch zur Überwachung von Spannungspegeln in einer offline arbeitenden unterbrechungsfreien Stromversorgung dienen. 

Fazit 

Durch die Erweiterung des Peripherieschaltungs-Satzes um eine konfigurierbare Logikzelle kann der Anwender einfache, auf dem Baustein integrierte Logikdesigns in einen PIC-Mikrocontroller einbinden. Die Möglichkeit zur Kombination von Ausgangssignalen aus unterschiedlichen Peripherieschaltungen verbessert die Fähigkeiten bestehender Peripherieelemente und erweitert die mit einer solchen Schaltung realisierbaren Einsatzmöglichkeiten. 

Da in Hardware implementierte Logikfunktionen gegenüber software-implementierten Logikfunktionen schneller auf Ereignisse reagieren können, ermöglicht die CLC eine Beschleunigung der Arbeitsgeschwindigkeit des Gesamtsystems. Sie bietet darüber hinaus ein höheres Maß an Integration ohne die Notwendigkeit externer Logik-Gatter für die Implementation von Logikfunktionen und verringert dadurch die Anzahl der benötigten Bauteile sowie die Gesamtgröße einer Leiterplatte. Dank der CLC lassen sich außerdem unterschiedliche Eingangs-Quellensignale anhand verschiedener Logikgatter zur Erzeugung ganz anderer Signale kombinieren. Alle diese flexiblen Ein- und Ausgänge sowie Logikfunktionen lassen sich einfach anhand des GUI-gestützten Tools MPLAB-Code-Configurator (MCC) implementieren. Dieses Werkzeug generiert leicht lesbaren C-Code für die gewünschte Anwendung. (fr)

Referenzen 

[1] Anwendungsbericht „Extending PIC MCU Capabilities Using CLC“: http://ww1.microchip.com/downloads/en/AppNotes/00002133a.pdf