-
VERWANDTE ANMELDUNGEN
-
Die vorliegende Anmeldung beansprucht die Priorität vor der vorläufigen US-Anmeldung Nr.
62/864,198 , eingereicht am 20. Juni 2019, deren Inhalt hiermit in ihrer Gesamtheit aufgenommen wird.
-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft Mikrocontroller mit konfigurierbaren Logikzellen und insbesondere einen Mikrocontroller mit kombinatorischer Logikperipherie.
-
HINTERGRUND
-
Ein Mikrocontroller kann eine zentrale Verarbeitungseinheit (CPU), einen Programm- und Datenspeicher, Eingabe-Ausgabe-(I/0)-Ports und eine Vielzahl von Peripherien aufweisen, die auf einem integrierten Schaltungs- (IC-) Chip hergestellt sind. Der IC-Chip kann in einem IC-Gehäuse mit Verbindungsanschlüssen („Pins“) eingeschlossen (eingekapselt) sein, an die externe Schaltungen mit dem IC-Chip verbunden werden können. Elektrische Verbindungspunkte auf dem IC-Chip können „Pads“ sein und können mit Bonddrähten mit den Pins des IC-Gehäuses verbunden sein. Die IC-Chip-Pads werden für die I/O-Ports und die DC-Energie und die Masse des IC-Chips verwendet. Einige dieser Peripherien können kernunabhängige Peripherien (CIPs) sein, d. h. ein Peripheriegerät, das für den Betrieb nicht auf Eingaben der CPU angewiesen ist.
-
Konfigurierbare Logikzellen-Peripherien in Mikrocontrollern sind von einer Vielzahl von Mikrocontrollern bekannt, die von der Anmelderin der vorliegenden Anmeldung hergestellt werden. Beispielsweise beschreibt die 2015 veröffentlichte Anwendungsnotiz TB3133 von Swathi Sridar konfigurierbare Logikzellen, die in PIC©-Mikrocontrollern verfügbar sind, und wird hiermit durch Bezugnahme aufgenommen. Diese Vorrichtungen sind vielseitig und bieten einem Mikrocontroller eine wählbare Logikfunktion ohne die Komplexität typischer FPGAs, die auch eine zentrale Verarbeitungseinheit enthalten können. Diese Logikzellen-Peripherie ist klein im Vergleich zum Platzbedarf von FPGAs und erweitert die Mikrocontroller so, dass in vielen Anwendungen keine oder nur sehr wenig zusätzliche externe Logik erforderlich ist.
-
Viele Mikrocontroller weisen diese kernunabhängige Peripherie auf und können bis zu 8 konfigurierbare Logikzellen bereitstellen. Jede konfigurierbare Logikzelle (CLC) kann aus 8 verschiedenen Optionen ausgebildet werden, wie in 3 von TB3133 gezeigt. Bestimmte Konfigurationen weisen durch Implementieren oder Hinzufügen einer Flip-Flop-Funktion eine eingeschränkte sequentielle Funktionalität auf. Somit bieten diese Mikrocontroller die beliebte CLC-Peripherie zur Implementierung einfacher kombinatorischer und sequentieller Logikfunktionen. Insbesondere die kombinatorischen Elemente erfordern jedoch einen komplizierten Aufbau und bieten begrenzte Möglichkeiten. Viele Anwendungshinweise sind gezwungen, mehrere CLC-Peripherien zu verwenden, um das erforderliche kombinatorische Logiksystem zu erstellen. Der CLC ist eine leistungsstarke und vielseitige Peripherie, und es kann oft verschwenderisch sein, eine für einfache Überbrückungsanforderungen zuzuweisen.
-
Somit gibt es gewisse Einschränkungen und Beschränkungen, da beispielsweise nur eine vorgegebene Anzahl von Logikelementen in einer Logikzelle verfügbar ist.
-
ZUSAMMENFASSUNG
-
Was daher benötigt wird, ist eine flexiblere Logikzellen-Peripherie. Gemäß einer Ausführungsform kann ein Mikrocontroller eine zentrale Verarbeitungseinheit, einen Speicher, I/O-Ports und eine Vielzahl von Peripherieeinheiten aufweisen, wobei eine der Peripherieeinheiten eine konfigurierbare Logikzelle ist, wobei die konfigurierbare Logikzelle durch eine Nachschlagetabelle ausgebildet ist, die durch eine Vielzahl von Speicherzellen ausgebildet ist, die eine vorgegebene Anzahl von Eingangsadresssignalen empfangen, die aus einer Vielzahl von internen Signalen ausgewählt werden können, die von den Peripherieeinheiten bereitgestellt werden, oder externen Signalen, die von zumindest einem externen Pin bereitgestellt werden und ein Ausgangssignal erzeugen, und wobei die zentrale Verarbeitungseinheit ausgebildet ist, um zumindest ein Eingangssignal für die Nachschlagetabelle direkt bereitzustellen.
-
Gemäß einer weiteren Ausführungsform kann die konfigurierbare Logikzelle eine Eingangsmultiplexereinheit aufweisen, die ausgebildet ist, um die vorgegebene Anzahl der Eingangssignale aus den internen und externen Signalen des Mikrocontrollers auszuwählen, und weist weiterhin ein Spezialfunktionseingangsregister auf, das zwischen den Ausgang des Eingangsmultiplexers und einen Adresseingang der Nachschlagetabelle gekoppelt ist, wobei das Spezialfunktionseingangsregister die ausgewählten Eingangssignale empfängt und puffert und wobei die zentrale Verarbeitungseinheit ausgebildet ist, in das Spezialfunktionseingangsregister zu schreiben.
-
Gemäß einer weiteren Ausführungsform kann die konfigurierbare Logikzelle eine Eingangsmultiplexereinheit aufweisen, die ausgebildet ist, um die vorgegebene Anzahl von Eingangssignalen aus den internen und externen Signalen des Mikrocontrollers auszuwählen, und weist weiterhin ein Spezialfunktionseingangsregister auf, das mit Eingängen der Eingangsmultiplexereinheit gekoppelt ist, wobei die zentrale Verarbeitungseinheit so ausgebildet ist, dass sie in das Spezialfunktionseingangsregister schreibt, um der Nachschlagetabelle direkt Eingangssignale bereitzustellen.
-
Gemäß einer Ausführungsform kann ein Mikrocontroller eine zentrale Verarbeitungseinheit, einen Speicher, I/O-Ports und eine Vielzahl von Peripherieeinheiten aufweisen, wobei eine der Peripherieeinheiten eine konfigurierbare Logikzelle ist, wobei die konfigurierbare Logikzelle durch eine Nachschlagetabelle ausgebildet ist, die durch eine Vielzahl von Speicherzellen ausgebildet ist, die eine vorgegebene Anzahl von Eingangsadresssignalen empfangen, die aus internen Signalen ausgewählt werden können, die von den Peripherieeinheiten bereitgestellt werden, und zumindest einem externen Signal, das von zumindest einem externen Pin bereitgestellt wird und ein Ausgangssignal erzeugt, und wobei die zentrale Verarbeitungseinheit ausgebildet ist, um direkt Eingangsadresssignale für die Nachschlagetabelle bereitzustellen.
-
Gemäß einer weiteren Ausführungsform kann die konfigurierbare Logikzelle eine Eingangsmultiplexerschaltung aufweisen, die ausgebildet ist, um die vorgegebene Anzahl von Eingangsadresssignalen aus den internen Signalen und dem zumindest einen externen Signal auszuwählen, und weist weiterhin ein Spezialfunktionseingangsregister auf, das zwischen Ausgängen der Eingangsmultiplexerschaltung und einem Adresseingang der Nachschlagetabelle gekoppelt ist, wobei das Spezialfunktionseingangsregister die ausgewählten Eingangssignale empfängt und puffert und wobei die zentrale Verarbeitungseinheit ausgebildet ist, um aus dem Spezialfunktionseingangsregister zu lesen und in dieses zu schreiben. Gemäß einer weiteren Ausführungsform kann die konfigurierbare Logikzelle eine Eingangsmultiplexerschaltung aufweisen, die ausgebildet ist, um die vorgegebene Anzahl von Eingangssignalen aus den internen Signalen und dem zumindest einen externen Signal auszuwählen, und weist weiterhin ein Spezialfunktionseingangsregister auf, das mit Eingängen der Eingangsmultiplexerschaltung gekoppelt ist, wobei die zentrale Verarbeitungseinheit ausgebildet ist, um aus dem Spezialfunktionseingangsregister zu lesen und in dieses zu schreiben, um der Nachschlagetabelle direkt Eingangssignale bereitzustellen. Gemäß einer weiteren Ausführungsform können die Spezialfunktionsregister auf einen Datenspeicher speicherabgebildet sein. Gemäß einer weiteren Ausführungsform kann die Nachschlagetabelle eine Vielzahl von 1-Bit-Speicherzellen aufweisen. Gemäß einer weiteren Ausführungsform kann die Vielzahl von 1-Bit-Speicherzellen auf den Datenspeicher oder den Programmspeicher, der ein Flash-Speicher sein kann, speicherabgebildet werden. Gemäß einer weiteren Ausführungsform kann der Mikrocontroller weiterhin einen Direktspeicherzugriffscontroller aufweisen, der ausgebildet sein kann, um Daten in die Vielzahl von 1-Bit-Speicherzellen zu übertragen. Gemäß einer weiteren Ausführungsform kann der Mikrocontroller weiterhin einen Multiplexer aufweisen, der eine Vielzahl von Eingängen aufweist, die mit der Vielzahl von 1-Bit-Speicherzellen gekoppelt sind, wobei der Multiplexer gesteuert wird, um gemäß den Eingangsadresssignalen einen Ausgang einer der Speicherzellen auszuwählen. Gemäß einer weiteren Ausführungsform kann der Mikrocontroller weiterhin einen Adressdecoder aufweisen, der ausgebildet ist, um eine der Speicherzellen auszuwählen, die Eingangsadresssignalen entspricht, die an dem Adressdecoder empfangen werden. Gemäß einer weiteren Ausführungsform kann der Mikrocontroller weiterhin eine Logikschaltung aufweisen, die mit einem Ausgang der Nachschlagetabelle gekoppelt ist. Gemäß einer weiteren Ausführungsform kann die Logikschaltung einen Modus-Multiplexer aufweisen, der einen ersten Eingang aufweist, der mit dem Ausgang der Nachschlagetabelle gekoppelt ist, einen zweiten Eingang aufweist, der mit einem Ausgang eines ersten Flip-Flops gekoppelt ist, wobei ein Dateneingang des ersten Flip-Flop mit dem Ausgang der Nachschlagetabelle gekoppelt ist und ein Takteingang des Flip-Flops mit einem Takteingang der Logikschaltung gekoppelt ist, wobei der Modus-Multiplexer von einem Modus-Register gesteuert wird. Gemäß einer weiteren Ausführungsform kann der Multiplexer einen dritten Eingang aufweisen, der mit einem Ausgang eines UND-Gatters gekoppelt ist, wobei das UND-Gatter einen ersten Eingang aufweist, der mit dem Takteingang gekoppelt ist, und einen zweiten Eingang aufweist, der mit einem Ausgang eines zweiten Flip-Flops gekoppelt ist, wobei ein Dateneingang des zweiten Flip-Flops mit einem Ausgang der Nachschlagetabelle gekoppelt ist und ein Takteingang des zweiten Flip-Flops mit einem Ausgang eines XOR-Gatters gekoppelt ist, wobei ein erster Eingang des XOR-Gatters mit dem Takteingang gekoppelt ist und ein zweiter Eingang des XOR-Gatters mit dem Ausgang des zweiten Flip-Flops gekoppelt ist.
-
Gemäß einer weiteren Ausführungsform weist auf ein Verfahren zum Betreiben eines Mikrocontrollers eine zentrale Verarbeitungseinheit, einen Speicher, I/O-Ports und eine Vielzahl von Peripherieeinheiten auf, wobei eine der Peripherieeinheiten eine konfigurierbare Logikzelle ist, wobei die konfigurierbare Logikzelle ausgebildet durch eine Nachschlagetabelle ist, die durch eine Vielzahl von Speicherzellen ausgebildet ist, die eine vorgegebene Anzahl von Eingangsadresssignalen empfangen und ein Ausgangssignal erzeugen, und wobei die zentrale Verarbeitungseinheit ausgebildet ist, um Eingangsadresssignale für die Nachschlagetabelle direkt bereitzustellen, wobei das Verfahren aufweisen kann: Konfigurieren die Nachschlagetabelle durch Laden vorgegebener Daten in Speicherzellen der Nachschlagetabelle; Auswählen von Adresssignalen aus internen Signalen, die von den Peripherieeinheiten bereitgestellt werden, und externen Signalen, die von zumindest einem externen Pin bereitgestellt werden; Puffern der ausgewählten Adresssignale in einem Register oder Latch.
-
Gemäß einer weiteren Ausführungsform kann das Verfahren weiterhin das Überschreiben des Registers oder Zwischenspeichers durch die zentrale Verarbeitungseinheit unter Programmsteuerung aufweisen. Gemäß einer weiteren Ausführungsform kann das Konfigurieren der Nachschlagetabelle durchgeführt werden, indem Daten durch die zentrale Verarbeitungseinheit oder einen DMA-Controller in die Speicherzellen übertragen werden. Gemäß einer weiteren Ausführungsform kann das Konfigurieren der Nachschlagetabelle durch eine Speicherabbildung der Speicherzellen auf einen Flash-Speicher und durch Programmieren des Mikrocontrollers durchgeführt werden.
-
Figurenliste
-
Ein vollständigeres Verständnis der vorliegenden Offenbarung kann durch Bezugnahme auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen erlangt werden. Ähnliche Bezugszeichen in den Zeichnungen beziehen sich auf ähnliche Elemente, wobei:
- 1 einen Mikrocontroller mit einer Nachschlagetabelle - konfigurierbaren Logikzellen-Peripherie gemäß einer Ausführungsform veranschaulicht;
- 2 einen herkömmlichen Mikrocontroller mit einer konfigurierbaren Logikzellen-Peripherie veranschaulicht.
- 3 eine erste Ausführungsform einer Nachschlagetabelle - konfigurierbaren Logikzellen-Peripherie zeigt.
- 4 ein Blockdiagramm einer beispielhaften Nachschlagetabelle zeigt;
- 5 eine zweite Ausführungsform einer Nachschlagetabelle - konfigurierbaren Logikzellen-Peripherie zeigt.
-
DETAILLIERTE BESCHREIBUNG
-
Wenden wir uns nun den Zeichnungen zu und unter besonderer Berücksichtigung von 1 ist ein Diagramm eines Mikrocontrollers 100 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Der Mikrocontroller 100 weist einen Prozessorkern (MCU) oder eine CPU 102 auf, die als RISC-Kern ausgeführt sein können. Der Prozessorkern 102 ist typischerweise über einen Bus 106 mit einem oder mehreren On-Chip-Peripherieanordnungen verbunden, wie etwa analogen Peripherien 108 und digitalen Peripherien 110. Diese Peripherien 108, 110 können über eine oder mehrere externe Pin-Verbindungen 120, 122 mit externen Schaltungen verbunden sein und durch diese jeweiligen Pins Eingangssignale empfangen und/oder Ausgangssignale erzeugen. Einige Peripherien benötigen oder erzeugen jedoch möglicherweise keine externen Signale oder können nur ein oder mehrere Eingangssignale empfangen oder nur ein oder mehrere Ausgangssignale erzeugen. Die MCU (oder CPU) ist weiterhin entweder über den Bus 106, wie durch die gestrichelten Linien angezeigt, oder über einen separaten Speicherbus mit einem Speicherblock 103 gekoppelt. Der Speicherblock 103 kann je nach Implementierungsarchitektur separate Daten- (RAM) und Programmspeicher (ROM oder Flash-Speicher) aufweisen. Gemäß einer Ausführungsform können spezielle Funktionsregister der verschiedenen Peripherien, die für die Konfiguration und den Datentransfer verwendet werden, auf den Datenspeicher abgebildet werden. Es können mehrere externe Pins 116, 118, 120, 122, 124 bereitgestellt werden. Jeder dieser Pins kann ein Multifunktionspin sein und mit einem I/O-Port und entsprechenden Multiplexern (nicht gezeigt) gekoppelt sein, um die Multifunktion des jeweiligen Pins bereitzustellen. 1 zeigt nur eine Konfiguration, bei der Pin 120 als analoger Eingangspin für das analoge Peripheriegerät 108, Pin 122 als digitaler Eingangspin für das digitale Peripheriegerät 110, Pin 124 und 118 als Eingangs- und Ausgangspins für eine Nachschlagetabelle (LUT)-CLC 104 und Pin 116 als Mehrzweck-I/O-Pin verwendet werden.
-
Ein Direct Memory Access (DMA)-Controller 140 kann gemäß verschiedenen Ausführungsformen implementiert und mit dem Systembus 106 gekoppelt sein. Ein solcher DMA-Controller 140 kann konfigurierbar sein, um Daten zwischen dem Speicherblock 103 und beliebigen Peripherien einschließlich der LUT-CLC-Peripherie 104 oder zwischen den verschiedenen Peripherien zu übertragen.
-
Für alle externen Pins können verschiedene I/O-Ports für allgemeine Zwecke bereitgestellt werden, die die grundlegende I/O-Schnittstelle eines Mikrocontrollers ausbilden. 1 zeigt lediglich einen Ausgangstreiber 112, der mit einem externen Pin 116 gekoppelt ist. Wie gemäß Stand der Technik verstanden wird, kann ein GPIO-Port jedoch Eingangs- und Ausgangstreiber sowie Multiplexer aufweisen, um als Multifunktionspin zu arbeiten, und somit können externe Pins unter Programmsteuerung ihre Funktion mit verschiedenen Peripherien gemeinsam nutzen.
-
Außerdem weist jede LUT-CLC 104, wie unten ausführlicher erläutert wird, eine Nachschlagetabelle (LUT) anstelle von tatsächlichen Logikkomponenten auf, die unten ausführlicher erläutert werden. Jede LUT-CLCs 104 fungiert als Peripherievorrichtung und ist mit dem Bus 106 gekoppelt. Gemäß verschiedenen Ausführungsformen kann jede LUT-CLC 104 ein oder mehrere Spezialfunktionsregister (SFRs) 105 zur weiteren Konfiguration aufweisen oder diesen zugeordnet sein, wie unten ausführlicher erläutert wird. Darüber hinaus kann die LUT durch einen Block von dedizierten Speicherzellen ausgebildet werden, wobei diese Zellen auch auf den Datenspeicher 103 speicherabgebildet werden können. Alternativ können diese dedizierten Speicherzellen durch die CPU 102 unter Programmsteuerung geladen oder durch Kopieren des Inhalts eines dedizierten RAM- oder Flash-Bereichs des Speicherblocks 103 in die Zellen konfiguriert werden. Gemäß einer Ausführungsform können die dedizierten Speicherzellen der LUT-CLC 104 in den Datenspeicher oder den Flash-Speicher speicherabgebildet sein und könnten somit direkt durch die CPU 102 oder durch Programmieren des Mikrocontrollers 100 konfiguriert werden. Im Fall der Speicherabbildung der dedizierten Speicherzellen der LUT-CLC 104 auf den Flash-Speicher können die vom Mikrocontroller 102 bereitgestellten Flash-Speicher-Schreibroutinen verwendet werden, um eine LUT der LUT-CLC 104 neu zu konfigurieren oder zu initialisieren. Insbesondere kann der DMA-Controller 140 wie oben erwähnt konfigurierbar sein, um Daten in die Speicherzellen der LUT der LUT-CLC 104 zu übertragen.
-
Die dedizierten Register 105 der LUT-CLCs 104 sind wie andere Peripherien adressierbar, beispielsweise durch Memory-Mapping, und können logische Funktionen für ein System oder eine Systemanwendung bereitstellen. Diese können beispielsweise jede beliebige logische Funktion aufweisen, die von den Nachschlagetabellen bereitgestellt wird, wie unten ausführlicher erläutert wird.
-
In der veranschaulichten Ausführungsform kann die LUT-CLC 104 über den Bus 105 Eingaben von jedem der digitalen oder analogen Peripherien 108, 110 sowie externe Signale empfangen, die durch einen oder mehrere Pins 124 bereitgestellt werden, und einen Reset vom Prozessorkern 102. Wie oben erwähnt, können die Pins 124 gemäß verschiedenen Ausführungsformen ihre Funktion mit einem GPIO-Port-Pin teilen. Diese Peripherien können beispielsweise eine Pulsbreitenmodulations- (PWM-) Quelle, eine komplementäre Wellenformgenerator- (CWG-) Quelle, eine DSM-Quelle und DDS/Timer-Takteingänge oder irgendeine andere geeignete Peripherie aufweisen. Im Allgemeinen können Eingaben von I/O-Pins, beliebigen Peripherien und/oder internen Taktgebern herrühren. Wie detaillierter erläutert wird, können verschiedene interne und externe Eingangssignale durch einen Eingangsmultiplexer (in 1 nicht gezeigt) auswählbar und verfügbar sein, um der Nachschlagetabelle innerhalb der LUT-CLC 104 eine Adresse bereitzustellen, die dann abhängig von einer Programmierung der Nachschlagetabelle ein zugehöriges Ausgangssignal erzeugt, wodurch die gewünschte Logikfunktion implementiert wird. Das Ausgangssignal kann entweder ein einzelnes Signal sein, das durch einen Multiplexer (nicht gezeigt) zu einem Ziel geleitet werden kann, oder mehrere Ausgangssignale, die von einem jeweiligen Empfänger ausgewählt werden können. 1 zeigt mehrere Ausgangssignale 126. Erste und zweite Ausgangssignale der Signale 126 können ein Trigger sein, wie beispielsweise ein A/D-Trigger, oder ein Steuersignal für jeweilige analoge oder digitale Peripherien 108, 110. Ein drittes Ausgangssignal kann einen Interrupt an die CPU 102 bereitstellen. Ein viertes Ausgangssignal kann einen Ausgangstreiber eines Mehrzweck-I/O-Ports 112 steuern. Ein fünfter Ausgang kann direkt oder über einen Treiber (nicht gezeigt) zu einem externen Pin 118 geleitet werden. Zusätzliche Ausgaben und Ausgabefunktionen wie Anstiegsrate, Pull-up-Tristate-Schwellenwerte usw. können den Porttreibern 112 bereitgestellt werden, während andere an Pins bereitgestellt werden können, die als externe Pins 118 konfiguriert sind.
-
1 zeigt eine beispielhafte Konfiguration. Im Allgemeinen kann die LUT-CLC 104 jedoch Eingaben von jedem Subsystem empfangen, wie beispielsweise einer digitalen Peripherie, einem I/O-Port oder internen Statusbits oder Rücksetzsignalen, einschließlich beispielsweise Oszillatorausgabe, Systemtakte usw., und stellt Ausgaben an I/O-Pins, an Peripherien, einen Prozessorkern-Interrupt, I/O-Port-Steuerfunktionen, Statussignale, Systemtakt und sogar an andere LUT-CLCs 104 oder konventionelle CLCs bereit.
-
Wie oben angemerkt, wird die LUT-CLC 104 in einigen Ausführungsformen wie andere Peripherien adressiert und kann zur Laufzeit durch den Bus 106 und/oder durch die Speicherzuordnung konfiguriert werden. In einigen Ausführungsformen kann die LUT-CLC 104 zur Laufzeit unter Verwendung eines oder mehrerer Spezialfunktionsregister 105 konfiguriert werden. Somit ist die LUT-CLC 104 vollständig in den Prozessoradressen- und Datenbus integriert. Die Konfiguration kann je nach den Anforderungen der Anwendung statisch angewendet oder in Echtzeit aktualisiert werden.
-
In einigen Ausführungsformen kann die Konfiguration der LUT des LUT-CLC104 von Softwareregistern oder einem nichtflüchtigen Speicher herrühren. In einigen Ausführungsformen kann der nichtflüchtige Speicher gelesen und Daten können über die CPU 102 oder einen DMA-Controller 140 an die LUT der LUT-CLC 104 übertragen werden. In anderen kann der nichtflüchtige Speicher zur Konfiguration statisch verbunden sein. Weiterhin kann in einigen Ausführungsformen nach einer anfänglichen Konfiguration die Software die Konfiguration aktualisieren.
-
Herkömmliche Mikrocontroller mit einem CLC bieten keinen Mechanismus, um direkt von der Software Eingaben an einen CLC bereitzustellen, ohne zuerst durch einen anderen Pin oder eine andere Peripherie zu führen. Mit anderen Worten, es gibt keine Funktion zum Überschreiben von Eingaben. Stattdessen kann die CPU nur Eingangssignale aus einer Vielzahl von verfügbaren Eingangssignalen auswählen, hat jedoch keine Möglichkeit, ein Eingangssignal direkt bereitzustellen.
-
2 zeigt ein herkömmliches CLC-Peripheriegerät mit Eingangsmultiplexern CLCxSELy und einer Eingangsauswahleinheit CLCxGLS, die verschiedene Eingangssignale auswählt. Die Konfiguration wird durch spezielle Funktionsregister (nicht gezeigt) bereitgestellt, die den Block MODE steuern und die eine feste Anzahl unterschiedlicher Konfigurationen bereitstellen, wie im Block MODE gezeigt. Die wählbaren Optionen sind auf die acht verschiedenen gezeigten Konfigurationen beschränkt. Außer diesen acht Funktionen sind keine anderen Logikfunktionen verfügbar. Eine andere Signalkonditionierung kann vorhanden sein. Das Ausgangssignal (OUT oder CLCxCON.LCOUT) kann intern geroutet oder an einen externen Pin bereitgestellt werden, wie in 2 dargestellt.
-
Gemäß verschiedenen Ausführungsformen, wie zum Beispiel in 3 gezeigt, werden herkömmliche CLC-Kombinationslogikelemente, wie in 2 mit MODE gezeigt, durch ein oder mehrere Nachschlagetabellen- (LUT-) Elemente 230 (nur eines gezeigt) ersetzt. 3 zeigt, dass gemäß einer Ausführungsform innerhalb eines Mikrocontrollers vier LUT-Elemente 230 in einer einzelnen LUT-CLC-Peripherie implementiert werden können. Die LUT-Definition wird wie oben erwähnt durch Software konfiguriert. Die mehreren bereitgestellten LUTs können für eine parallele, eindeutige Eingangsverarbeitung ausgebildet sein, und Ergebnissignale können verwendet werden, um sequentielle Logikelemente 240 (nur eines gezeigt) mit komplizierteren Funktionen (z. B. JK-Flipflop mit 4 Eingängen) zu steuern. LUT-Eingänge können von Pins, Peripherien und zusätzlich von einem Register oder Latch 220 herrühren, das eine direkte Softwaresteuerung ermöglicht. Dieses Register oder Latch 220 arbeitet als Puffer, auf den die CPU zugreifen kann. Wie in der Ausführungsform von 3 gezeigt, sind vier Eingangssignale für die LUT 230 durch die Multiplexer 210a..d auswählbar und liefern der a LUT 230 entsprechende Adressen. Eine ähnliche Eingangsauswahlschaltung wird bereitgestellt, wenn mehr als eine LUT implementiert wird. Somit würden vier Auswahlschaltungen für vier LUTs implementiert. Diese vier Signale sind das Adresssignal für die LUTs 230, die jeweils den Ausgang von beispielsweise einer von sechzehn 1-Bit-Speicherzellen Mem_cell0... Mem_cell_15 auswählen. Jede LUT 230 wählt somit über die vier Adresssignale den jeweiligen Speicherzelleninhalt aus und stellt ihr jeweiliges Ausgangssignal an die nachfolgende konfigurierbare sequentielle Logik 240 oder den Ausgangspin 250 bereit. Gemäß einer Ausführungsform könnte dieses Ausgangssignal das an Pin 250 der LUT-CLC verfügbare Ausgangssignal ausbilden, wie durch die gestrichelte Linie für eine der LUTs 230 angezeigt. Wie in 3 gezeigt, kann jedoch eine konfigurierbare sequentielle Logik 240 für jede LUT 230 bereitgestellt werden, die unter CPU-Steuerung weitere Funktionen bereitstellen kann, wie im Folgenden unten ausführlich erläutert wird. Ein Ausgangssignal der konfigurierbaren sequentiellen Logik 240 wird dann dem externen Pin 250 zugeführt. Das Ausgangssignal jeder LUT 230 oder das am Ausgang der konfigurierbaren sequentiellen Logik 240 verfügbare Ausgangssignal kann auch intern als ein oder mehrere interne Signale OUT, CLCxCON.LCOUT für andere interne Module bereitgestellt werden, wie in 3 gezeigt. Die konfigurierbare sequentielle Logik 240 kann ein auswählbares Taktsignal CLCxCLK oder ein anderes Steuersignal zur weiteren Synchronisation oder zu anderen Zwecken empfangen.
-
Gemäß einer Ausführungsform kann beispielsweise ein spezifisches Vier-Bit-Eingangsregister 220 bereitgestellt werden, das ein ausgewähltes Eingangssignal durch die Multiplexer 210a..d empfängt. Wie in 3 gezeigt, ist dieses Register 220 zwischen den Eingangsauswahlmultiplexern 210a..d und der LUT 230 angeordnet. Jedes Registerbit Ina..d des Registers 220 ist einem der vier Eingänge für eine LUT zugeordnet. Diese Register können auf den Datenspeicher des Speicherblocks 103 speicherabgebildet werden, und somit kann ein Lesen oder Schreiben an ihnen durch die CPU 102 durchgeführt werden. Somit kann die CPU 102 nicht nur die aktuell ausgewählten Eingangssignale lesen, die an die LUT 230 geliefert werden, sondern kann auch diese Signale überschreiben, wodurch eine Softwaresteuerung bereitgestellt wird. Alternativ oder zusätzlich sind speicherabgebildete Spezialfunktionsregister (SFR) 260 vorgesehen, die als Eingangssignalquelle für die Multiplexer 210a..d ausgewählt werden könnten, um einen direkten Softwareeingang an die LUT 230 bereitzustellen. Alle Multiplexer 210 sind einzeln steuerbar, um wie gewünscht beliebige vier Eingangssignale an die LUT 230 bereitzustellen. Andere Ausführungsformen können mehr oder weniger als vier Eingangsadresssignale aufweisen und die zugehörigen LUTs 230 können daher mehr oder weniger komplex sein.
-
Die Benutzerkonfiguration der LUT 230 ermöglicht eine funktionsäquivalente Abwärtskompatibilität zu bestehenden CLC-Peripherien sowie die Realisierung beliebiger Logikfunktionen. Dies bedeutet, dass die meisten, wenn nicht alle Multi-CLC-Kombilogikschaltungen, wie beispielsweise in 2 gezeigt, durch eine einzelne LUT-Lösung ersetzt werden können. Die LUT-Eingabe von den Registern 220 oder 260 erhöht die Flexibilität im Vergleich zu herkömmlichen Logikzellen-Peripherien.
-
4 zeigt ein detaillierteres Beispiel einer LUT 230. Die LUT 230 weist in diesem Beispiel einen Speicherblock 450 mit n 1-Bit-Speicherzellen 420a..n und einen Adressdecoder 410 auf, der eine Vielzahl von Adressleitungen 440 empfängt. Der Adressdecoder 410 wählt gemäß einer bereitgestellten Adresse eine der Speicherzellen 420a..b aus, deren Ausgangssignal dann auf die Ausgangsleitung 430 gelegt wird. Die CPU 102 kann Zugriff auf die Speicherzellen 420a..n haben, um eine direkte Lese- und Schreibfunktionalität bereitzustellen. Ein solcher Zugriff kann jedoch auch durch eine Speicherabbildung der Speicherzellen 420a..n in den Adressraum des Datenspeichers oder des Flash-Speichers des Speicherblocks 103 erfolgen. Alternativ zu einem Adressdecoder 410, insbesondere in kleinen LUTs, kann ein einfacher Multiplexer, wie in 3 innerhalb des Blocks 230 angezeigt, verwendet werden, der eine von mehreren Speicherzellen auswählt. Jede andere herkömmliche Nachschlagetabellenschaltung kann gemäß verschiedenen Ausführungsformen implementiert werden.
-
Gemäß einer spezifischen Ausführungsform kann eine LUT 230 durch einen 16-Zellen-1-Bit-Wort-RAM ausgebildet werden, der von einer 4-Bit-Auswahlschaltung adressiert wird, wie in den 3 bis 5 gezeigt. Gemäß einer Ausführungsform sind zum Beispiel jede der 4 Adresseingangsleitungen mit einer Multiplexerschaltung verbunden, die beispielsweise vier Multiplexer 210a..d aufweist, die es ermöglicht, vier Eingangsbits aus vielen verschiedenen Quellen zu entnehmen. 3 zeigt nur drei Eingänge für jeden Multiplexer. Durch diese Multiplexer können jedoch mehrere unterschiedliche Signale ausgewählt werden. Darüber hinaus kann jeder Multiplexer 210a..d einen unterschiedlichen oder identischen Satz von Eingangssignalen empfangen. In einigen Ausführungsformen können sich Teilmengen der Eingangssignale für die Multiplexer 210a..d überlappen.
-
Wenn eine Registereingabe implementiert werden soll, kann dies entweder durch Hinzufügen eines Registers 260 zur Auswahlliste der Multiplexerschaltung, wie in 3 gezeigt, oder durch Einfügen eines Registers 220 zwischen den Ausgängen der Multiplexer 210a..d und den jeweiligen LUT-Eingängen erreicht werden, wie in den 3 und 5 gezeigt. Auf die zweite Weise übernimmt das Register 220 die Dominanz über die LUT-Eingangsleitung und wirkt als Puffer, der ein einfaches Überschreiben von Hardwaresignalen durch Software ermöglicht. Zu diesem Zweck kann die CPU 102 beispielsweise einen beliebigen Inhalt des Registers 220 während der Laufzeit überschreiben. Wie oben erwähnt, können gemäß einer Ausführungsform beide Register 220 und 260 implementiert sein. Alle Register können auf den Datenspeicher speicherabgebildet sein.
-
Diese Lösung gemäß einigen Ausführungsformen stellt 4 vollqualifizierte Eingaben für eine 16-Elemente-LUT 230 bereit. Dadurch kann jede Funktion mit 4 Variablen realisiert werden. Die Eingangsmultiplexer 210a..d können jeweils eine identische Auswahl aufweisen, wodurch eine symmetrische Eingangsauswahl ausgebildet wird, wobei jeder Multiplexer 210a..d mehr oder weniger Eingangssignale als die drei in 3 gezeigten Signale aufweisen kann. Andere Lösungen können jedoch z B. nur eine Anzahl von Eingängen bereitstellen, die nicht symmetrisch sind, d.h. jeder Eingangsmultiplexer 210a..d kann einen anderen Satz von Eingangssignalen empfangen. In der Ausführungsform von 3 bedeutet dies, dass nur begrenzte Funktionen mit 3 Variablen realisiert werden könnten. Andere Ausführungsformen können eine höhere Anzahl von Eingangsleitungen pro Eingangsmultiplexer 210a..d und/oder eine höhere Anzahl von Eingangssignalen für die LUT 230 implementieren, was die Anzahl von Speicherzellen erhöht, die zum Implementieren der LUT 230 benötigt werden.
-
Eingaben von den Registern 220 und/oder 260 ermöglichen eine Softwaresteuerung. Benutzer, die Ereignisse von mehreren getrennten Peripherien erzeugen möchten, können dies in Software tun und dieses Ereignis durch Schreiben des Eingangsregisters 220/260 an die LUT 230 melden. Außerdem kann ein Peripheriegerät wie ein DMA 140 (in 1 gezeigt) in die Register 220/260 schreiben, was bedeutet, dass die LUT-CLC bei Verwendung dieser Funktion sogar die Kernunabhängigkeit aufrechterhalten kann.
-
5 zeigt mehr Details einer möglichen Implementierung der konfigurierbaren sequentiellen Logik 240. Die LUT 230 ist hier wiederum als ein Multiplexer 270 und sechzehn 1-Bit-Speicherzellen 265 implementiert. Eingangsmultiplexer 210a..d können eine Vielzahl von internen/externen Signalen (nur zwei sind in 5 gezeigt) empfangen und werden von Auswahlregistern 385 gesteuert, die Teil der Spezialfunktionsregister 105 sind. Die Register 220 und 260 sind identisch mit den Registern 220 bzw. 260 von 3.
-
Ein Modus-Multiplexer 310 empfängt direkt an einem ersten Eingang das Ausgangssignal der LUT 230. Der Modus-Multiplexer 310 kann durch das Register 380 gesteuert werden, das wiederum Teil der Spezialfunktionsregister 105 sein kann. Ein zweiter Eingang des Modus-Multiplexers 310 empfängt ein Ausgangssignal vom D-Flip-Flop 320, dessen Eingang mit dem Ausgang der LUT 230 gekoppelt ist. D-Flip-Flop 320 ist taktgesteuert und empfängt ein Taktsignal CLCxCLK, das aus verfügbaren internen Takten durch einen Multiplexer 360 auswählbar ist, der durch das Taktauswahlregister 365 gesteuert wird, das wiederum Teil der Spezialfunktionsregister 105 sein kann. Ein dritter Eingang des Modus-Multiplexers 310 empfängt eine Ausgabe des UND-Gatters 340, dessen erster Eingang das wählbare interne Taktsignal CLCxCLK empfängt und dessen zweiter Eingang das Ausgangssignal des D-Flip-Flop 330 empfängt. Das D-Flip-Flop 330 empfängt das Ausgangssignal der LUT 230 als Eingangssignal und weist einen Takteingang auf, der mit einem Ausgang des XOR-Gatters 350 gekoppelt ist. Das XOR-Gatter 350 empfängt das Taktsignal CLCxCLK und das Ausgangssignal des D-Flip-Flops 330. Die D-Flip-Flops 320 und 330 können getrennt implementiert werden oder ein einzelner D-Flip-Flop kann für die beiden Betriebsarten verwendet und geteilt werden. Ein vierter oder mehr Eingänge des Modus-Multiplexers 310 können bereitgestellt werden oder nicht und können nach Wunsch weitere sequentielle Logik und daher LCMODEs bereitstellen. Die Ausführungsform von 5 zeigt drei mögliche LCMODEs, wobei der erste LCMODE = 0 keine sequentielle Logik aufweist, der zweite LCMODE = 1 den LUT plus D-Flip Flop-Modus bereitstellt und der dritte LCMODE = 2 den LUT plus D-Flip Flop und Feedback-Modus bereitstellt. Dieser dritte Betriebsmodus stellt eine sequentielle Logik zum Implementieren von Glitch-Filterung bereit, wobei herkömmliche Mikrocontroller mit CLCs 3 CLCs benötigen würden, um dies zu erreichen, während Ausführungsbeispiele der vorliegenden Anmeldung diese Aufgabe mit einer einzelnen Zelle erfüllen können. Beliebig viele Betriebsmodi bezüglich zusätzlicher sequentieller Logik können implementiert werden und keiner der gezeigten Modi LCMODE = 1 oder 2 ist erforderlich.
-
Der Modus-Multiplexer 310 kann durch das Modusregister 380 gesteuert werden, das eines der Konfigurationsregister 105 sein kann und den jeweiligen LCMODE bestimmt. Die Eingangsauswahl-Multiplexer 210 werden durch das Auswahlregister 385 gesteuert, das ein weiteres Konfigurationsregister von SFRs 105 sein kann. Eine weitere Logik 370, die von noch einem weiteren SFR 105 gesteuert wird, kann bereitgestellt werden, um das Ausgangssignal des Modus-Multiplexers 310 zu konditionieren. Die durch das Steuerregister 390 gesteuerte Logik 370 kann einen Wechselrichter, eine Open-Drain-Steuerung, steuerbare Pull-Up- oder Pull-Down-Widerstände und ähnliche Funktionen bereitzustellen und kann gemäß verschiedenen Ausführungsformen vollständig weggelassen werden. Das Steuerregister 390 kann wiederum Teil der Spezialfunktionsregister 105 sein. Bestimmte SFRs 105 können nach Wunsch Funktionen teilen. Beispielsweise kann ein einzelnes 32-Bit-SFR alle oder einige Konfigurationsoptionen steuern. Jedes Registerbit des SFR 105 kann dem Ein- oder Ausschalten einer bestimmten Funktion oder Option zugeordnet sein. Je nach Komplexität der Implementierung können mehrere Bits oder Bitgruppen in einem Register des SFR 105 zum Steuern der Eingangsauswahl-Multiplexer 210 und des Modus-Multiplexers 310 verwendet werden. Jedoch können separate Register 385, 380, 365, 390, wie in 5 gezeigt, für die Eingangsauswahl, die Konfiguration der konfigurierbaren Logik 240, die Logik 370 und die Taktauswahl 360 verwendet werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-