-
Hintergrund
-
Ein typischer Microcontroller kann eine Universal-Input/Output (I/O) Schnittstelle zur Kommunikation mit Geräten, welche sich außerhalb des Microcontrollers befinden, enthalten. In diesem Zusammenhang können die I/O-Terminals der I/O-Schnittstelle beispielsweise für folgende Zwecke verwendet werden: zum Abtasten von analogen Signalen; zum Übermitteln von digitalen Signalen; zum Erzeugen von Wellenformen; zum Bereitstellen von Signalen, welche im Zusammenhang mit zweiseitig gerichteten Kommunikationslinien stehen (eine zweiseitig gerichtete Kommunikationslinie eines seriellen Buses, zum Beispiel); und zum Bereitstellen von Signalen, welche für Kontrollanwendungen verwendet werden.
-
In spezielleren Beispielen kann die I/O-Schnittstelle Signale zur Kommunikation über ein Serial Peripheral Interface(SPI)-Bus, zur Kommunikation über ein Systemmanagement Bus (SMB) oder zum Bereitstellen einer Universal Asynchronous Receiver/Transmitter-(UART)-Schnittstelle erzeugen. In einem weiteren Beispiel kann der Microcontroller Puls Width Modulation (PWM) Signale erzeugen, die zur Motorkontrolle oder zum Wechseln von Steuerkontrollanwendungen verwendet werden können.
-
US 7,937,520 B2 offenbart einen sog. GPI-Controller (General Purpose Interface Controller), der einen Slave-Interfacecontroller und einen Master-Interfacecontroller umfasst, die für einen Austausch von Daten zwischen Master-Geräten und Slave-Geräten in einem elektronischen Gerät verwendet werden. Der Slave-Interfacecontroller empfängt von einem der Master-Geräte Daten und ein erstes Steuersignal und wandelt das erste Steuersignal in ein Anforderungssignal um. Der Master-Interfacecontroller empfängt von dem Slave-Interfacecontroller die Daten und das Anforderungssignal, wandelt das Anforderungssignal in ein zweites Steuersignal um, das von zumindest einem der Slave-Geräte erkannt wird, und leitet die Daten und das zweite Steuersignal an das Slave-Gerät weiter.
-
In dem Wikipedia-Artikel über ”Channel I/O” vom 28.10.2012 ist eine I/O Schnittstellenschaltung mit einem Channel-Prozessor beschrieben, der einen Speicher zur Abarbeitung von I/O Anweisungen aufweist.
-
Demgegenüber schafft die vorliegende Erfindung eine Vorrichtung umfassend: eine programmierbare Input/Output (I/O) Schnittstellenschaltung, die einen Controller und einen Speicher umfasst, wobei der Speicher dazu geeignet ist, eine Mehrzahl von Befehlen zu speichern, um die I/O Schnittstellenschaltung zu steuern, wobei die Befehle I/O Zustände der I/O Schnittstellenschaltung und Zeitdauern der I/O Zustände angeben, wobei wenigstens einer der Befehle ein Format hat, welches ein erstes Feld umfasst, um zu kontrollieren, ob ein dazugehöriges I/O Terminal einer I/O-Schnittstellenschaltung angesteuert wird und zum Abtasten während der Zeitdauer verwendet wird, ein zweites Feld, um zu kontrollieren, ob eine Datenrichtung für ein dazugehöriges I/O Terminal einer I/O Schnittstellenschaltung invertiert ist, ein drittes Feld, um die Zeitdauer zu kontrollieren, und ein viertes Feld, um den logischen Wert für ein dazugehöriges I/O Terminal der I/O Schnittstellenschaltung zu kontrollieren, wobei der Controller dazu geeignet ist, die Befehle auszuführen, um die I/O Schnittstellenschaltung in einer vordefinierten Abfolge in die I/O Zustände zu versetzen.
-
Nach einem weiteren Aspekt schafft die vorliegende Erfindung ein Verfahren zur Steuerung einer vorgenannten Vorrichtung, umfassend: Speichern einer Mehrzahl von Befehlen, um eine Input/Output (I/O) Schnittstellenschaltung zu steuern, wobei jeder Befehl wenigstens einen I/O Zustand für wenigstens einen I/O Terminal der I/O-Schnittstellenschaltung und eine Zeitdauer des I/O-Zustandes angibt; und Ausführen der Befehle unter Verwendung eines Controllers der I/O Schnittstellenschaltung, um den wenigstens einen I/O Zustand gemäß einer vordefinierten Abfolge zu steuern, wobei wenigstens einer der Befehle ein Format hat, welches ein erstes Feld umfasst, um zu kontrollieren, ob ein dazugehöriges I/O Terminal einer I/O-Schnittstellenschaltung angesteuert wird und zum Abtasten während der Zeitdauer verwendet wird, ein zweites Feld, um zu kontrollieren, ob eine Datenrichtung für ein dazugehöriges I/O Terminal einer I/O Schnittstellenschaltung invertiert ist, ein drittes Feld, um die Zeitdauer zu kontrollieren, und ein viertes Feld, um den logischen Wert für ein dazugehöriges I/O Terminal der I/O Schnittstellenschaltung zu kontrollieren.
-
Ferner ist die vorliegende Erfindung nach einem weiteren Aspekt gerichtet auf eine Vorrichtung mit einem integrierten Schaltkreis (IC) umfassend einen Prozessorkern, eine programmierbare Input/Output (I/O) Schnittstellenschaltung, die einen Controller und einen Speicher umfasst, wobei der Speicher dazu geeignet ist, eine Mehrzahl von Befehlen zu speichern, um die I/O Schnittstellenschaltung zu steuern, wobei die Befehle I/O Zustände der I/O Schnittstellenschaltung und Zeitdauern der I/O Zustände angeben, wobei wenigstens einer der Befehle ein Format hat, welches ein erstes Feld umfasst, um zu kontrollieren, ob ein dazugehöriges I/O Terminal einer I/O-Schnittstellenschaltung angesteuert wird und zum Abtasten während der Zeitdauer verwendet wird, ein zweites Feld, um zu kontrollieren, ob eine Datenrichtung für ein dazugehöriges I/O Terminal einer I/O Schnittstellenschaltung invertiert ist, ein drittes Feld, um die Zeitdauer zu kontrollieren, und ein viertes Feld, um den logischen Wert für ein dazugehöriges I/O Terminal der I/O Schnittstellenschaltung zu kontrollieren, wobei der Controller dazu geeignet ist, die Befehle auszuführen, um die I/O Schnittstellenschaltung in einer vordefinierten Abfolge in die I/O Zustände zu versetzen.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung ergeben sich aus den abhängigen Ansprüchen, der nachfolgenden Beschreibung und den Zeichnungen.
-
Figurenbeschreibung
-
1 zeigt ein schematisches Diagramm eines Systems gemäß einem Ausführungsbeispiel.
-
2 zeigt ein schematisches Diagramm einer Mikrocontrollereinheit (MCU) gemäß einem Ausführungsbeispiel.
-
3 zeigt ein Flussdiagramm, welches eine Technik zum Steuern einer Input-/Output (I/O)-Schnittstelle der MCUs nach 2 zeigt, gemäß einem Ausführungsbeispiel.
-
4 zeigt eine Abbildung einer Struktur eines I/O-Schnittstellen-Befehls gemäß einem Ausführungsbeispiel.
-
5 zeigt eine Abbildung einer Verwendung des I/O-Schnittstellen-Befehls, um ein Signal auf einem I/O-Terminals der I/O-Schnittstelle anzusteuern, gemäß einem Ausführungsbeispiel.
-
6 zeigt eine Abbildung der Verwendung des I/O-Schnittstellen-Befehls, um ein I/O-Terminal der I/O-Schnittstelle für eine zweiseitig gerichtete Kommunikation einzurichten, gemäß einem Ausführungsbeispiel.
-
7 zeigt ein schematisches Diagramm des I/O-Schnittstellen-Controllers von 2 gemäß einem Ausführungsbeispiel.
-
8 zeigt ein Zustandsdiagramm des I/O-Schnittstellen-Controllers gemäß einem Ausführungsbeispiel.
-
9 zeigt ein schematisches Diagramm eines Motorkontrollsystems gemäß einem Ausführungsbeispiel.
-
Detaillierte Beschreibung
-
Im Folgenden werden Techniken und Systeme offenbart, welche es erlauben, Input-/Output(I/O)-Schnittstellenbefehle auszuführen, um eine Universal I/O-Schnittstelle einer Mikrocontrollereinheit (MCU) zu kontrollieren. In diesem Zusammenhang ermöglichen es die Kontrolltechniken und Systeme, die im Folgenden offenbart sind, eine I/O-Schnittstelle zu verwenden, beispielsweise um deterministisch Wellenformen zu erzeugen, ein Abtastprotokoll zu kontrollieren, zur Durchlaufkontrolle einer zweiseitig gerichteten Kommunikation, zum Abtasten von Eingangssignalen, und zu vielem mehr. Außerdem können die I/O-Schnittstellenbefehle durch einen Universal-I/O-Controller der MCU ausgeführt werden, ohne dass der MCU-Prozessorkern in die Ausführung der Befehle involviert ist. Somit kann, als einer der möglichen Vorteile dieser Anordnung, der Zeitablauf einer Signalwellenform, die durch die MCU erzeugt wird, genau gesteuert werden, ohne unter dem Einfluss von beispielsweise unsicheren Verzögerungen oder Latenzen (Systembusverzögerungen, zum Beispiel) zu stehen, welche ansonsten durch die Ausführung von I/O-Befehlen durch den Prozessorkern auftreten können. Außerdem können die hier offenbarten Techniken und Systeme verwendet werden, um relativ präzise Wellenformen zu erzeugen, und sie können ebenso zur Erzeugung von zufälligen oder pseudozufälligen Wellenformen verwendet werden. Weitere Vorteile sind beabsichtigt und werden durch die nun folgende Beschreibung offensichtlich.
-
Als ein spezielleres Beispiel ist in 1 eine MCU 24 in einem Beispielsystem 10 abgebildet. In diesem Beispiel kontrolliert die MCU 24 verschiedene Aspekte von einer oder mehreren Komponenten 70. Die Komponenten 70 können beispielsweise eine oder mehrere der nun folgenden Vorrichtungen sein, abhängig von der speziellen Anwendung: ein Elektromotor, ein Haushaltsgerät, ein Warenbestandskontrollterminal, ein Computer, ein Tablet, ein intelligenten Stromzähler, eine kabellose Schnittstelle, eine Mobilfunkschnittstelle, eine interaktive Touchscreen-User Schnittstelle, und vieles mehr. Alle oder Teile der Komponenten der MCU 24 können Teil eines integrierten Schaltkreises (IC) oder eines Halbleiterpaketes 30, sein. Beispielsweise können alle oder Teile der Komponenten der MCU 24 auf einem einzelnen Die oder mehreren Dies (ein Multichipmodul, zum Beispiel) des Halbleiterpakets 30 hergestellt werden.
-
Wie in 1 gezeigt, weist die MCU 24 eine Universal I/O (GPIO) Schnittstelle 140 zum Zwecke der Erzeugung und des Empfangen von Input- und Output-Signalen über die I/O-Terminals 40 zur Kommunikation mit den Komponenten auf. Bezugnehmend auf 2 weist die MCU 24 unter ihren Komponenten einen Prozessorkern 150 und die GPIO-Schnittstelle 140 auf. Abhängig vom speziellen Ausführungsbeispiel kann es sein, dass die MCU 24 keine der Komponenten, die in 2 gezeigt werden, enthält, mit Ausnahme des Prozessorkerns 150 und der GPIO-Schnittstelle 140. Ebenso kann es sein, dass eine oder mehrere der Komponenten, die in 2 abgebildet sind, zusätzlich zum Prozessorkern 150 und der GPIO-Schnittstelle enthalten sind; weiterhin kann es sein, dass andere und/oder zusätzliche Komponenten als diese, die in 2 abgebildet sind, enthalten sind; usw. Somit können viele Ausführungsbeispiele erdacht werden, welche innerhalb des Schutzbereichs der angehängten Ansprüche liegen.
-
In einem Beispiel kann der Prozessorkern 150 ein 32-Bit Kern, wie zum Beispiel der Advanced RISC Machine (ARM) Prozessorkern, sein, welcher einen Reduced Instruction Set Computer (RISC) Befehlssatz ausführt. Im Allgemeinen kommuniziert der Prozessorkern 150 mit verschiedenen anderen Systemkomponenten der MCU 24, wie zum Beispiel mit einem Speicher-Controller oder Manager 160, über einen Systembus 130. Im Allgemeinen kontrolliert der Speichermanager 160 den Zugriff auf verschiedene Speicherkomponenten der MCU 24, wie z. B. einen Cache 172, einen nicht-flüchtigen Speicher 168 (einen Flash-Speicher, zum Beispiel) und einen flüchtigen Speicher 164 (einen Static Random Access Memory (SRAM), zum Beispiel).
-
Es sei angemerkt, dass 2 eine beispielhafte oder vereinfachte Darstellung der MCU-Architektur darstellt, da die MCU 24 viele andere Komponenten, Brücken, Busse und vieles mehr, in Übereinstimmung mit weiteren Ausführungsbeispielen, aufweisen kann, die nicht in 2 abgebildet sind. Beispielsweise kann die MCU 24, in Übereinstimmung mit einigen Ausführungsbeispielen, ein Bus-Matrix-Modul aufweisen, welches eine Arbitration auf der Slave-Seite implementiert und welches verwendet wird, um den Zugriff auf die Speichergeräte der MCU 24 zu steuern.
-
In Übereinstimmung mit einigen Ausführungsbeispielen weist die MCU 24 analoge und digitale Komponenten 90 auf, welche analoge und digitale Signale an das I/O-Terminal 90 übermitteln. Die Analogkomponenten können verschiedene Komponenten beinhalten, die analoge Signale empfangen, wie z. B. Analog zu Digital Umwandler (ADCs) und Vergleicher; ebenso kann die MCU 24 analoge Komponenten beinhalten, die ein Analogsignal zur Verfügung stellen, wie zum Beispiel einen Steuerungsstrom.
-
Die digitalen Komponenten der MCU 24 können mit dem Prozessorkern 150 über das Systembus 130 kommunizieren. Beispielsweise können die digitalen Komponenten eine Universal Series Bus (USB) Schnittstelle, einen Universal Asynchronous Receiver/Transmitter (UART), ein System Management Bus (SMB) Schnittstelle, ein Serial Peripheral Interface (SPI) und vieles mehr beinhalten. Im Allgemeinen kommunizieren diese digitalen Komponenten mit Geräten, welche außerhalb der MCU 24 liegen, mittels des I/O-Terminals 91.
-
In Übereinstimmung mit einem Ausführungsbeispiel beinhaltet die MCU-Einheit 24 einen Multiplexer 94, welcher das programmierbare Zuweisen der ausgewählten I/O-Terminals an die GPIO-Terminals 40, 50 ermöglicht. In diesem Zusammenhang kann die MCU 24 ein oder mehrere Register beinhalten, um das selektive Zuweisen der I/O-Terminals 40 an die Terminals 91 und die Konfiguration der Terminals als entweder fest zugeordnete Eingangs- oder Ausgangsterminals mittels der Bits der Register zu ermöglichen.
-
Wie in 2 abgebildet, kann die MCU 24 auch eine GPIO-Schnittstelle 140 aufweisen, welche selektiv zu einem oder mehreren der I/O-Terminals 91 zugewiesen werden kann (mittels einem oder mehreren Register), zur Steuerung von zu diesen Terminals 91 dazugehörigen Zuständen an den dazugehörigen I/O-Terminals 40, 50. In diesem Zusammenhang kann die GPIO-Schnittstelle 140, in Übereinstimmung mit Ausführungsbeispielen, ein oder mehrere Register 148 aufweisen, welche zur Festlegung der Flussrichtung der I/O-Kommunikation und zur Konfiguration von verschiedenen Aspekten des I/O-Terminals 91 programmiert werden können, wie im Folgenden genauer ausgeführt. Im Allgemeinen bildet die GPIO-Schnittstelle 140 ein vorgegebenes I/O-Terminal 91 auf ein vorgegebenes I/O-Terminal 149 ab und steuert den Zustand des I/O-Terminals 149, so wie es hierin offengelegt wird. Die I/O-Terminals 149 können, in Übereinstimmung mit Ausführungsbeispielen, an einem Multiplexer 94 eingerichtet sein, der verwendet werden kann, um die I/O-Terminals 149 selektiv auf die externen Terminals 40, 50 abzubilden. Für die beispielhaften Ausführungsformen, welche hier offengelegt werden, wird angenommen, dass vorgegebene I/O-Terminals 91 durch die Register 148 so konfiguriert sind, als dass sie zu der GPIO-Schnittstelle 140 geroutet werden, welche die I/O-Zustände der dazugehörigen I/O-Terminals 49 und 50 steuert.
-
In Übereinstimmung mit einem Ausführungsbeispiel weist die GPIO-Schnittstelle 140 einen Speicher 144 (einen First In-First Out (FIFO) basierten Speicher, zum Beispiel) auf, welcher die I/O-Schnittstellenbefehle 146 speichert, um die I/O-Zustände der I/O-Terminals 149 zu kontrollieren. In diesem Zusammenhang, und in Übereinstimmung mit einem Ausführungsbeispiel, speichert der Speicher 144 die Befehle 146 in einer vorgegebenen Reihenfolge, so dass die Befehle 146 durch einen Controller 142 der GPIO-Schnittstelle 140 in einer vordefinierten Ausführungsreihenfolge oder Sequenz empfangen und ausgeführt werden.
-
Wie hierin weiterhin offengelegt wird, kontrolliert jeder I/O-Schnittstellen-Befehl 146, sobald er durch den Controller 142 ausgeführt wird, die I/O-Zustände der Sätze von I/O-Terminals 149, für welche es vorgesehen ist, dass sie durch die GPIO-Schnittstelle 140 kontrolliert werden (durch die dazugehörigen Konfigurationsregisterbits). Für jedes I/O-Terminal 149, das kontrolliert werden soll, enthält jeder I/O-Schnittstellen-Befehl 146 sowohl Daten, welche einen dazugehörigen I/O-Zustand für den I/O-Terminal 149 repräsentieren oder angeben, als auch Daten, die eine Zeitdauer für diesen I/O-Zustand repräsentieren oder angeben. Wie hierin weiterhin hierin offengelegt wird, kann der I/O-Zustand ein Zustand sein, in welchem der I/O-Terminal 149 auf einen speziellen Logikwert angesteuert wird; ein Abtastzustand sein, in welchem der I/O-Terminal 149 ein externes Signal nach einer vordefinierten Zeitdauer abtastet; ein Zustand sein, der ein Abtastprotokoll definiert; ein Zustand sein, der ein zweiseitig gerichtetes Kommunikationsprotokoll definiert; und vieles mehr.
-
Die zeitlich aufeinander folgende Ausführung der I/O-Schnittstellenbefehle 146 durch den Controller 142, in Übereinstimmung mit Ausführungsbeispielen, geschieht ohne einen Eingriff durch den Prozessorkern 150. In diesem Zusammenhang und in Übereinstimmung Ausführungsbeispielen ruft der Controller 142 die I/O-Schnittstellenbefehle 146 in einer vordefinierten Ausführungsreihenfolge ab, so dass die dazugehörigen I/O-Zustände in einer vordefinierten Abfolge auftreten. Ein spezieller Vorteil dieser Anordnung ist, dass der Controller 142 keinen Bus verwenden muss, der eine unvorhersehbare Latenz aufweist, wie zum Beispiel den Systembus 130; und dass die I/O-Zustände der I/O-Terminals 149 als solche in einer vorbestimmten Art und Weise gesteuert werden können.
-
In Übereinstimmung mit Ausführungsbeispielen ist die GPIO-Schnittstelle 140, wie im Weiteren offenbart, so konstruiert, um einen Direct Memory Access (DMA) auf dem flüchtigen Speicher 164 auszuführen, um die Befehle 146 abzurufen und die Befehle 146 auf dem Speicher 144 zu speichern. Auf diese Art und Weise kann die GPIO-Schnittstelle 140, in Übereinstimmung mit Ausführungsbeispielen, einen solchen DMA-Zugriff ausführen, um die Befehle 146 wieder aufzufüllen, sobald die Anzahl der eingeleiteten I/O-Schnittstellenbefehle 146 auf dem Speicher 144 unter einen vordefinierten Grenzwert fällt.
-
Beispielsweise kann der Prozessorkern 150 die Befehle auf dem nicht flüchtigen Speicher 146 einreihen. In einem weiteren Ausführungsbeispiel kann der Prozessorkern 150 periodisch, oder auf den Empfang einer Unterbrechung (beispielsweise) vom GPIO-Schnittstellen-Controller 140 hin, welche angibt, dass ein Nachfüllen der Befehle 146 verlangt wird, mehr I/O-Schnittstellenbefehle 146 (falls verfügbar) vom flüchtigen Speicher 164 abfragen und die Befehle 146 mittels Schreiboperationen über den Systembus 130 auf dem Speicher 144 speichern. Somit ergeben sich viele Variationen, welche sich innerhalb des Schutzbereichs der sich im Anhang befindlichen Ansprüche befinden.
-
Somit beinhaltet eine Technik 250, unter Bezugnahme auf 3 und in Übereinstimmung mit Ausführungsbeispielen, die Verwendung (Block 254) eines Speichers, um Befehle zu speichern, um eine I/O-Schnittstelle zu steuern, wobei jeder Befehl wenigstens einen I/O-Zustand von wenigsten einem I/O-Terminal der I/O-Schnittstelle für eine Zeitdauer angibt, die ebenso durch den Befehl angegeben wird. Gemäß dieser Technik 250 werden die Befehle ohne das Eingreifen durch den Prozessorkern ausgeführt (Block 258), um die I/O-Zustände in einer vordefinierten Abfolge zu steuern.
-
4 bildet eine Beispielstruktur für einen I/O-Schnittstellen-Befehl 146 ab, in Übereinstimmung mit Ausführungsbeispielen. Beispielsweise kann der Befehl 146 ein Wort sein, oder 32 Bits, obwohl der Befehl 146 auch, in Übereinstimmung mit anderen Ausführungsbeispielen, weniger oder mehr als 32 Bits enthalten kann. In dem Beispiel von 4 weist der Befehl 146 ein Count-Feld 284 auf, welches Daten enthält, die die Dauer eines dazugehörigen I/O-Zustandes angeben. In manchen Ausführungsbeispielen enthält das Count-Feld 284 Daten, welche die Anzahl der Perioden eines festgelegten Takts wiedergeben. Der I/O-Schnittstellen-Befehl 146 weist des Weiteren ein Value-Feld 286 auf, welches Daten enthält, die die Werte wiedergeben oder anzeigen, zu welchen die I/O-Terminals 149 (siehe 2) angesteuert werden sollen.
-
Beispielsweise ist, in Übereinstimmung mit Ausführungsbeispielen, für den Fall, dass der MCU 24 16 I/O Terminals 149 aufweist, das Value-Feld 286 ein 16-Bit-Datenfeld, wobei jeder Bit entweder eine „1” (d. h. eine logische 1) oder eine „0” (d. h. eine logische 0) ist. Diese logischen Zustände kontrollieren abwechselnd die I/O-Zustände der dazugehörigen I/O-Terminals 149. Falls das Value-Feld 286 einen „1”-Bit beinhaltet, soll beispielsweise das dazugehörige I/O-Terminal 149 während der entsprechenden Dauer, welche im Count-Feld 284 angegeben wird, auf eine logische 1 angesteuert werden.
-
Zusätzlich zu den I/O-Zuständen und den Zeitdauern, welche durch das Value-Feld 286 und das Count-Feld 284 angegeben werden, kann der I/O-Schnittstellen-Befehl 146 weiterhin eine oder mehrere Kontrollbits beinhalten, um die I/O-Zustände der I/O-Terminals 149 genauer zu spezifizieren. Beispielsweise, und in Übereinstimmung mit Ausführungsbeispielen, kann der Befehl 146 ein Feld 282 (ein 1-Bit-Feld, zum Beispiel) beinhalten, welches angibt oder wiedergibt, ob die Richtungen des Kommunikationsflusses von bestimmten I/O-Terminals 149 während der dazugehörigen Dauer, welche in dem Count-Feld 284 angegeben wird, umgekehrt werden soll oder invertiert werden soll.
-
Im Speziellen und in Übereinstimmung mit Ausführungsbeispielen wird das Invertierungsfeld 282 in Kombination mit einem oder mehreren anderen statischen Registern 148 (siehe 2) der GPIO-Schnittstelle 140 verwendet, wie zum Beispiel einen Register 148, das auf einem bitweisen Niveau angibt, ob die dazugehörigen I/O-Terminals 149 von der Inversion, welche durch das Feld 282 vorgegeben wird, betroffen sind; und ein Kommunikationsflussrichtungsregister 148, welches im Allgemeinen statisch die Richtung des Kommunikationsflusses für die dazugehörigen I/O-Terminals 149 auf einer bitweisen Basis angibt.
-
In Übereinstimmung mit Ausführungsbeispielen beschreibt die folgende Wertetabelle den Befehlssyntax, der in Verbindung mit den I/O-Schnittstellenbefehlen
146 und den oben beschriebenen Registern verwendet wird:
invdiren | invdir | dir | value | gpio | gpio_out | gpio_oe |
0 | X | 1 | 0 | Drive 0 | 0 | 1 |
0 | X | 1 | 1 | Drive 1 | 1 | 1 |
0 | X | 0 | 0 | High Z | X | 0 |
0 | X | 0 | 1 | High Z | X | 0 |
1 | 1 | 0 | 0 | Drive 0 | 0 | 1 |
1 | 1 | 0 | 1 | Drive 1 | 1 | 1 |
1 | 0 | 0 | 0 | High Z | X | 0 |
1 | 0 | 0 | 1 | High Z | X | 0 |
1 | 1 | 1 | 0 | High Z | X | 0 |
1 | 1 | 1 | 1 | High Z | X | 0 |
1 | 0 | 1 | 0 | Drive 0 | 0 | 1 |
1 | 0 | 1 | 1 | Drive 1 | 1 | 1 |
Tabelle 1
-
In Tabelle 1 repräsentiert ein „X” einen Zustand hoher Impedanz, eine „1” repräsentiert einen Zustand einer logischen 1 und eine „0” repräsentiert einen Zustand einer logischen 0; „ INVDIREN” repräsentiert ein Bit, das zu dem statischen Register 149 gehört und welches angibt, ob eine Inversion für das dazugehörige I/O-Terminal 149 erlaubt ist; ”INVDIR” repräsentiert den Wert des Feldes 282 (siehe 4); ”DIR” repräsentiert die durch das Register 148 angegebene Richtung des statischen Kommunikationsflusses; ”VALUE” repräsentiert den Wert des I/O-Zustandes des Feldes 286; ”GPIO” repräsentiert den zum I/O-Terminal 149 gehörigen I/O-Zustand; ”GPIO_OUT” repräsentiert das dazugehörige Signal, welches auf dem I/O-Terminal 149 erscheint; und ”GPIO_OE” repräsentiert einen Zustand des I/O-Terminals 149, der einen Output ermöglicht (das Repräsentieren des Zustandes des dazugehörigen Buffers oder Treibers, der einen Output ermöglicht). Somit beeinflusst, in dem Beispiel der vierten Reihe der Tabelle 1, das Invertierungsfeld 282 nicht den I/O-Zustand, wenn das Bit, das die INVDIREN-Inversion ermöglicht, eine „0” ist. Umgekehrt sorgt im Beispiel der Linie 10 der Tabelle 1 ein aktiver INVDIR-Wert für das Feld 282 dafür, dass das I/O-Terminal 149 als ein Input-Terminal agiert, obwohl der DIR-Bit angibt, dass das Terminal 149 ein Output-Terminal ist, wenn der INVDIREN-Bit, der eine Inversion ermöglicht, aktiv ist.
-
Der Befehl 146 kann, in Übereinstimmung mit weiteren Ausführungsbeispielen, verschiedene andere Kontrollfelder beinhalten. Beispielsweise kann das Feld 286 (4) des Befehls 146 für ein Verzögerung-Feature verwendet werden. Auf diese Art kann das Feld 286 als ein Wert dienen, mit dem übereingestimmt werden muss, und der Controller 142 kann die I/O-Terminals 149 beobachten und die Ausführung des Befehls 146 wo lange zurückhalten, bis die Übereinstimmung auftritt. Ein externer Controller leitet die Übereinstimmung ein, indem er den Übereinstimmungswert (als Signal) an die I/O-Terminals 149 übermittelt. Die Übereinstimmung kann durch ein weiteres statisches Register (ein Verzögerungsmaskenregister) konfiguriert werden, um zu bestimmen, welches eine oder welche I/O-Terminals im Zuge der Werteübereinstimmung beobachtet werden müssen.
-
5 zeigt eine Abbildung 300, in der beispielhafte die I/O-Schnittstellenbefehle 146-1, 146-2 und 146-3 verwendet werden, um eine Wellenform auf einem dazugehörigen I/O-Terminal 149 zu erzeugen. Dabei werden, wie in 5 dargestellt, die I/O-Schnittstellenbefehle 146-1, 146-2 und 146-3 in einer vordefinierten Ausführungsreihenfolge ausgeführt (die zum Beispiel festgelegt ist durch die Reihenfolge, in der I/O-Schnittstellenbefehle 146 auf dem Speicher 144 gespeichert sind), so dass der I/O-Schnittstellen-Befehl 146-1 als erster ausgeführt wird, der I/O-Schnittstellen-Befehl 146-2 als zweites ausgeführt wird, und der I/O-Schnittstellen-Befehl 146-3 als letztes ausgeführt wird. Zum Zeitpunkt T0 führt der Controller 142 den I/O-Schnittstellenbefehl 146-1 aus, welcher angibt, dass der Terminal 149 für eine Zeitdauer von „5” (5 Taktperioden, zum Beispiel) auf eine logische 1 angesteuert werden soll. Somit vergehen vom Zeitpunkt T0 zum Zeitpunkt T1 fünf Taktperioden, und zur Zeit T1 fuhrt der Controller 142 den nächsten I/O-Schnittstellen-Befehl 146-2 aus, welcher von nun an den I/O-Zustand des I/O-Terminals 149 kontrolliert.
-
Wie für dieses Beispiel gezeigt, gibt der I/O-Schnittstellen-Befehl 146-2 an, dass der I/O-Terminal 149 für einen Count von „10” (beispielsweise 10 Taktperioden) auf eine logische 0 angesteuert werden soll, welche zwischen dem Zeitpunkt T1 und dem Zeitpunkt T2 auftritt. Mit dem Ablauf der 10 Taktperioden zum Zeitpunkt T2 führt der Controller 142 den I/O-Schnittstellen-Befehl 146-3 aus, welcher angibt, dass das I/O-Terminal 149 für ein Count von „7” auf einen logischen 1-Wert angesteuert werden soll. Somit demonstriert 5, als nicht-einschränkendes Beispiel, wie eine spezielle Wellenform, so wie eine PWM-Wellenform (als ein Beispiel) an einem bestimmten I/O-Terminal 149 unter Verwendung der I/O-Schnittstellenbefehle 146 für ein bestimmtes Output-Terminal erzeugt werden kann.
-
Andere I/O-Terminals 149 können als Input-Terminals gekennzeichnet sein. In diesem Zusammenhang können die I/O-Schnittstellenbefehle 146 ausgeführt werden, um ein Abtastintervall zu steuern, so dass der MCU 24 nach einer vordefinierten Count-Periode den Wert, der am I/O-Terminal 149 vorliegt, abtastet. Ein bestimmtes I/O-Terminal 149 kann, in Übereinstimmung mit Ausführungsbeispielen, hin- und herwechseln zwischen dem Zustand, ein gekennzeichnetes Input-Terminal zu sein, und dem Zustand, ein gekennzeichnetes Output-Terminal zu sein. Auf diese Art kann ein I/O-Terminal 149 zur zweiseitig gerichteten Kommunikation, wie zum Beispiel zur Kommunikation mittels eines seriellen Busses, mittels Handshaking, oder mittels anderer Wege, verwendet werden.
-
6 zeigt eine Abbildung 310 eines I/O-Zustandes für ein dazugehöriges I/O-Terminal, das sowohl als Input-Terminal als auch als Output-Terminal verwendet wird. In diesem Beispiel führt der Controller 142 nacheinander drei I/O-Schnittstellenbefehle 146 in der folgenden Reihenfolge aus: I/O-Schnittstellen-Befehl 146-4; I/O-Schnittstellen-Befehl 146-5; und I/O-Schnittstellenbefehl 146-6. Die Ausführung des I/O-Schnittstellen-Befehls 146-4 legt das I/O-Terminal 149 für die Zeit zwischen T0 und T1 als ein Input-Terminal fest, wobei der Zeitpunkt T0 und der Zeitpunkt T1 durch einen Count von „3” getrennt sind. In diesem Zusammenhang, abhängig von der speziellen Ausführungsform, kann die Ausführung des I/O-Schnittstellen-Befehls 146-4 die Richtung des Kommunikationsflusses des I/O-Terminals 149 invertieren oder nicht, abhängig von der statisch definierten Definition des statischen GPIO Registers.
-
Zu einem Zeitpunkt T1 führt der Controller 142 in diesem Beispiel den I/O-Schnittstellenbefehl 146-5 aus, welcher dafür sorgt, dass der GPIO-Schnittstellen-Controller 140 den I/O-Terminal 149 für ein Count von „6” auf einen logischen 0-Wert ansteuert, von einem Zeitpunkt T1 zum einem Zeitpunkt T2. Somit ist das I/O-Terminal 149 für eine Zeitdauer von T1 zu T2 ein Output-Terminal. Dies kann durch eine Invertierung der Flussrichtung des I/O-Terminals 149 (falls dieses statisch als Input-Terminal konfiguriert ist) festgelegt werden, abhängig von der speziellen Konfiguration. Zum Zeitpunkt T2 führt der Controller 142 den Befehl 146-6 aus, welcher dafür sorgt, dass das I/O-Terminal 149 ein Output-Terminal bleibt, jedoch den Wert, der angesteuert wird, für ein Count von „6” auf eine logische 1 ändert.
-
Beispielsweise kann der GPIO-Schnittstellen-Controller 140 das I/O-Terminal 149 von einem Zeitpunkt T0 zu einem Zeitpunkt T1 nutzen, um ein Signal, welches von einer anderen Einheit gesteuert wird, zu detektieren; und die zwei aufeinanderfolgenden logische 0 und logische 1 Levels können verwendet werden, um das detektierte Signal zu bestätigen. Somit kann die Darstellung 310 als ein Beispiel des Handshaking verstanden werden, obwohl es auch andere Anwendungsmöglichkeiten der Verwendung desselben I/O-Terminals 149 als beides sowohl Input als auch Output-Terminal in Übereinstimmung mit weiteren Ausführungsbeispielen geben kann.
-
Unter Bezugnahme auf 7 und in Übereinstimmung mit Ausführungsbeispielen weist der GPIO-Schnittstellen-Controller 140 zwei First In-First Out, (FIFO) Buffer auf: einen Befehls FIFO Buffer 360, der zumindest einen Teil des Speichers 144 bildet und die I/O-Schnittstellenbefehle 146 speichert, so dass sie durch den Controller 142 ausgeführt werden können; und ein Abtast-FIFO-Buffer 346, welcher die Daten, die durch die Input I/O-Terminals 149 erhalten worden sind, speichert. Im Allgemeinen sind die FIFO-Buffer 360 und 364 zwischen einer Systembus-Schnittstelle 366 und den Controller 142 gekoppelt, so wie es in 7 abgebildet ist, in Übereinstimmung mit Ausführungsbeispielen. Somit bieten die FIFO-Buffer 360 und 364, zum Beispiel, verschiedenen Taktraten zwischen dem Systembus 130 (siehe 2) und dem Controller 142 Platz.
-
In Übereinstimmung mit Ausführungsbeispielen weist der GPIO-Schnittstellen-Controller 140 weiterhin eine DMA-Schnittstelle 350 auf. Im Allgemeinen ist die DMA-Schnittstelle 350 so konstruiert, dass sie auf den nicht-flüchtigen Speicher 164 (siehe 2) zugreift, sobald die Anzahl der Befehle in dem FIFO-Buffer 360 unter einen vordefinierten Grenzwert fällt, um weitere Befehle in den FIFO-Buffer 360 einzubringen bzw. für den Buffer abzurufen. In diesem Zusammenhang kann die DMA-Schnittstelle 350 verschiedene Empfangs- und Übertragungs-DMA-Request verwenden und die Kommunikationslinien 352 aktivieren. In Übereinstimmung mit Ausführungsbeispielen können die Linien 352 mit einem Arbiter (nicht gezeigt) kommunizieren. In weiteren Ausführungsbeispielen kann die Systembusschnittstelle 366 so konstruiert sein, dass sie es dem Prozessorkern 150 ermöglicht, auf den Befehls-FIFO-Buffer 360 zuzugreifen, um die Speicherbefehle 146 in dem FIFO-Buffer 360 wieder aufzustocken oder zu speichern. Abhängig vom speziellen Ausführungsbeispiel kann die DMA-Schnittstelle 350 oder der Prozessorkern 150 auf den Abtast-FIFO-Buffer 364 zugreifen, um ein Flash-Furnishing der abgetasteten Daten von der GPIO-Schnittstelle abzurufen. Somit sind viele Variationen vorgesehen, welche alle vom Schutzbereich der sich im Anhang befindlichen Ansprüche abgedeckt werden.
-
In Übereinstimmung mit Ausführungsbeispielen wird der Controller 142 mit einem Taktsignal (genannt ”CLK” in 7) synchronisiert, welches wiederum selbst mit dem Takt des Systembusses 130 synchronisiert werden kann (mit derselben Frequenz oder einer anderen, wie gewünscht). Der Controller 142 empfängt des Weiteren ein Signal, welches ”KILL” genannt wird und welches dafür sorgt, dass der Controller 142 in asynchroner Art und Weise den Übergang der I/O-Zustände der I/O-Terminals 149 in vordefinierte ”sichere” Niveaus verursacht, sobald es ausgeführt wird (durch Ansteuerung auf ein logisches 1-Level, zum Beispiel). In diesem Zusammenhang und in Übereinstimmung mit Ausführungsbeispielen kann ein Register 148 des GPIO-Schnittstellen-Controllers 140 mit Bits programmiert sein, die mit einem vordefinierten sicheren Niveau für die dazugehörigen I/O-Terminals 149 korrespondieren. Im Allgemeinen verursachen die sicheren Niveaus keinen Schaden an dem System für den Fall, dass ein Fehlerzustand eintritt. Beispielsweise kann ein sicheres Niveau für ein Signal, welches verwendet wird, um einen Schalttransistor anzusteuern, eine logisches 1-Level sein, ein Level, welche in diesem Beispiel den Schalttransistor ausschalten würde. In anderen Anwendungen könnte ein sicheres Niveau für einen gegebenen I/O-Terminal 149 ein logisches 1-Level sein oder, alternativ, eine Bedingung bestehend aus drei Zuständen.
-
In manchen Ausführungsbeispielen ist der Controller 142 so konstruiert, dass er in Antwort auf die Detektion eines aktiven KILL-Signals die I/O-Terminals 149 in den jeweiligen sicheren Niveaus belässt, solange bis der nächste I/O-Schnittstellen-Befehl 146 ausgeführt wird. Somit bleiben die sicheren Niveaus erhalten für die Zeitdauer des aktuellen Zeitintervalls des zuletzt ausgeführten I/O-Schnittstellenbefehls 146. In anderen Ausführungsformen kann das KILL-Signal einen andauernden KILL-Zustand auslösen, einen sicheren Zustand, in welchem der Controller 142 die I/O-Terminals in ihren jeweiligen sicheren Niveaus belässt, solange bis der Prozessorkern 150 die GPIO-Schnittstelle 140 zurücksetzt. Somit ist der GPIO-Schnittstellen-Controller 140 in diesem andauernden sicheren Zustand effektiv deaktiviert, bis eine weitere korrektiv eingreifende Aktion durch den Prozessorkern 150 ausgeführt wird.
-
Der sichere Zustand kann intern durch den Controller 142 ausgelöst werden, in Übereinstimmung mit Ausführungsbeispielen. Beispielsweise und in Übereinstimmung mit Ausführungsbeispielen kann der Controller 142 den KILL-Zustand initiieren, sobald er eine logische Kombination von einem oder mehreren Input-Zuständen detektiert (wie an den I/O-Terminals 149 bemerkt, zum Beispiel). Somit sind viele Variationen beabsichtigt, welche alle durch den Schutzbereich der sich im Anhang befindlichen Ansprüche abgedeckt sind.
-
In Übereinstimmung mit einigen Ausführungsbeispielen kann der Controller 142 ein externes Signal, welches ”TRIGGER” genannt wird, empfangen, welches, wenn es aktiviert ist (angesteuert durch ein logisches 1-Level, zum Beispiel), die Controller 142 dazu veranlasst, mit der Ausführung der Befehle 146, welche in dem Befehls FIFO-Buffer 360 gespeichert sind, zu beginnen. Es sei angemerkt, dass, in Übereinstimmung mit einigen Ausführungsbeispielen, der Controller 142 beginnen kann, die Befehle 146 in Antwort auf ein internes Triggersignal, wie zum Beispiel ein Triggersignal, welches als Antwort auf eine bestimmte Kombination von logischen Levels erzeugt wurde, auszuführen.
-
Bezugnehmend auf 8 und in Übereinstimmung mit einigen Ausführungsbeispielen kann der Controller 142 ein dazugehöriges Zustanddiagramm 400 haben. Wenn er eingeschaltet wird, nimmt der Controller 142 einen IDLE Zustand ein, in welchem der Controller 142 verbleibt, bis ein Auslöseereignis auftritt, welches den Startpunkt der I/O-Wellenform auf einer Takt-zu-Takt-Basis kontrolliert. Es ist für den Fachmann offensichtlich, dass die Takt-zu-Takt-Kontrolle der I/O-Wellenform sehr akkurat durchgeführt werden kann, in Übereinstimmung mit Ausführungsbeispielen. In manchen Ausführungsbeispielen kann der Controller 142 so konstruiert sein (wie durch ein spezielles Registerbit konfiguriert, zum Beispiel), das ein ”Stillstandszeit” Intervall zu Beginn eines speziellen Taktes eingefügt wird. Dieses kann, zum Beispiel, verwendet werden, wenn Schaltsignale erzeugt werden, um sicherzustellen, dass spezielle Schaltsignale nicht zeitlich überlappen. Somit wird der Controller 142, wenn einige Befehle ausgeführt werden, die eine spezielle Kombination von I/O-Leveln erfüllen, anfänglich in einen DEAD TIME-Zustand übergehen, um die Stillstandszeit zu Beginn des Taktes zu gewährleisten.
-
Ausgehend vom DEAD TIME-Zustand oder vom IDLE-Zustand geht der Controller 142, auf die Ausführung eines I/O-Schnittstellen-Befehls 146 hin, in den ACTIVE Zustand über, welcher der Zustand ist, in dem der Controller 142 die I/O-Schnittstellenbefehle 146 ausführt, falls keine Probleme auftreten. Falls ein Problem auftritt, kann der Controller 142, beispielshalber und abhängig vom speziellen Ausführungsbeispiel, von dem ACTIVE TIME-Zustand in einen PERSIST KILL-Zustand übergehen, einen Zustand, in welchem der Controller 142 solange bleibt, bis der durch den Prozessorkern 150 zurückgesetzt wird.
-
Weiterhin kann der Controller 142 am Ende einer Taktdauer vom ACTIVE TIME-Zustand in einen WAIT TIME-Zustand übergehen, um auf ein spezielles Logik-Niveau zu warten (um beispielsweise ein spezielles Handshaking-Protokoll zu implementieren). Sobald er einen Input erhält, geht der Controller 142 von dem WAIT TIME Zustand zurück in den ACTIVE TIME Zustand über. Somit kann der Controller 142, wie in 8 dargestellt, von dem ACTIVE TIME Zustand in den DEAD TIME Zustand, den STALL Zustand, den WAIT TIME Zustand oder den PERSIST KILL Zustand übergehen.
-
Der Controller 142 geht in den STALL-Zustand über, sobald der FIFO-Buffer 360 am Ende der Zustandsdauer leer ist. In dem STALL-Zustand werden alle gültigen Befehle fortgeführt und somit Übergänge entweder in den DEAD TIME oder den ACTIVE TIME Zustand kontrolliert. Jedoch kann es auch sein, dass der Controller 142 im STALL-Zustand so konfiguriert ist, dass er deaktiviert ist, wodurch der Controller 142 zurück in den IDLE-Zustand übergeht. Es sei angemerkt, dass der PERSIST KILL-Zustand von jedem der Zustände ACTIVE TIME, DEAD TIME, WAIT TIME oder STALL erreicht werden kann, wie in 8 dargestellt.
-
Die MCU 24 kann in einer Vielzahl verschiedener Anwendungen verwendet werden. Zum Beispiel zeigt 9 eine Motorkontrollanwendung, in welcher ein MCU 24 eines Motorkontrollsystems 400 Input und Output Signale (I/O-Signale) generiert/empfängt, um einen Motor 474 zu kontrollieren. Dabei kann die GPIO-Schnittstelle 140 der MCU 24 Signale an ihren I/O-Terminals 40 generieren, um mit der Motorschnittstelle 470 zu kommunizieren (eine Schnittstelle, welche Treiber, Sensoren, und vieles mehr enthält); und im Zusammenhang mit dieser Kommunikation können die I/O-Terminals 40 Wellenformen mit der Motorschnittstelle kommunizieren (Pulse Width Modulation(PWM)-Signale, zum Beispiel), detektierte Ströme und Spannungen empfangen, Daten mittels einem oder mehreren seriellen Bussen kommunizieren, und vieles mehr. Die I/O-Terminals 40 der GPIO-Schnittstelle 140 können weiterhin Signale erzeugen/empfangen, um mit einer Nutzerkontrollschnittstelle 470 des Systems 400 zu kommunizieren, um den Zustand des Motors 474 oder der Motorschnittstelle 470 zu kommunizieren, detektierte Fehlerzustände zu kommunizieren, an den Nutzer gerichtete Befehle und Signale zu empfangen, und vieles mehr.
-
Auch wenn nur eine begrenzte Anzahl von Ausführungsbeispielen offenbart wurde, ist es für einen Fachmann klar, dass, ausgehend von den hier enthaltenen Offenbarungen, eine große Reihe von Modifikationen und Variationen möglich sind. Diese Modifikationen und Variationen sollen auch vom Schutzbereich der anhängigen Ansprüche abgedeckt sein.