-
TECHNISCHES GEBIET
-
Ausführungsformen der vorliegenden Erfindung betreffen allgemein Digitalsignalprozessoren und insbesondere Ereignissequenzsteuerung in Digitalsignalprozessoren.
-
HINTERGRUND
-
Ein typisches Computerverarbeitungssystem (etwa eine universelle CPU, Digitalsignalprozessor („DSP“) MCU, MPU, FPGA, ASIC, ASSP oder ein beliebiger anderer Typ von Computerprozessor) weist einen Kernprozessor („Kern“) und mehrere spezielle Module auf, die damit in Kommunikation stehen. Der Kern führt DSP-bezogene und andere Verarbeitungsfunktionen aus, und die Module können Schreib-/Lesezugriffs- oder andere Speicher, Direktspeicherzugriff- (DSZ)-Vorrichtungen (direct-memory-access, DMA), Coprozessoren, Eingangs-/Ausgangs-Handler, Timer oder beliebige andere Schaltungen sein. Um ein Modul für die Durchführung eines Vorgangs (hier als „Ereignis“ bezeichnet) zu aktivieren, empfängt der Kernprozessor eine Anforderung, das Ereignis zu initiieren, und sendet beispielsweise durch Verwendung einer Software-Unterbrechung eine Initiierungsnachricht (hier als „Auslöser“ bezeichnet) an das Modul. Der Kern kann auf diese Weise Daten-, Adress- und/oder Steuersignale mit einem oder mehreren der Module austauschen, um beispielsweise Daten an ein Speichermodul zu senden oder von diesem zu laden.
-
Oft kommt es jedoch vor, dass ein Modul Daten (oder andere Informationen) direkt an ein anderes Modul sendet, ohne dass es notwendig ist, dass die Informationen einen Prozessor oder „Kern“ durchlaufen. Beispielsweise kann eine DSZ-fähige Vorrichtung (die den direkten Zugriff auf einen Speicher ohne Beteiligung des Kerns ermöglicht) direkt mit einem Speichermodul oder einer anderen DSZ-fähigen Vorrichtung interagieren. Der Kern wird allerdings nach wie vor benötigt, um die Initiierung des Ereignisses anzusetzen und auszulösen, was Overhead (z. B. Overhead durch Unterbrechungsbearbeitung und Dienstroutinen) im Kern erzeugt und dessen Leistung reduziert. Eine DSZ-Steuereinrichtung kann den Kern allenfalls von der Auslösung bestimmter DSZ-Ereignisse befreien, indem Ereignisse „in Ketten gereiht“ werden (d. h. der Abschluss eines ersten DSZ-Ereignisses löst ein zweites aus). Diese DSZ-Kettenreihung beschränkt sich jedoch auf bestimmte Arten von DSZ-Ereignissen und kann darüber hinaus nicht für andere Moduletypen (z. B. Nicht-DSZ-Module) benutzt werden. Es besteht daher Bedarf an einem robusten, programmierbaren System und Verfahren, um den Kernprozessor von verschiedenen Arten von Auslöseraufgaben zu befreien.
-
US 2005 / 0 034 017 A1 betrifft eine Datenverarbeitungsvorrichtung, die eine Querauslösung von Diagnoseprozessen in einer Vielzahl von Verarbeitungsgeräten steuert. Die Datenverarbeitungsvorrichtung weist ein Routing-Modul mit einer Vielzahl von Broadcast-Kanälen auf, wobei einer oder mehrere der Broadcast-Kanäle so betrieben werden können, dass sie das Auftreten eines diagnostischen Ereignisses auf einem oder mehreren der Vielzahl von Verarbeitungsgeräten anzeigen. Die Datenverarbeitungsvorrichtung weist auch ein Abbildungsmodul auf, das mit einer entsprechenden Verarbeitungsvorrichtung verbunden ist. Das Schnittstellenmodul leitet Diagnoseereignissignale von der zugehörigen Verarbeitungsvorrichtung programmierbar an einen oder mehrere der Vielzahl von Rundfunkkanälen weiter und ruft programmierbar Diagnoseereignissignale von anderen Verarbeitungsvorrichtungen als der zugehörigen Verarbeitungsvorrichtung von einem oder mehreren der Vielzahl von Rundfunkkanälen ab. Die abgerufenen Diagnoseereignisdaten werden verwendet, um das Auslösen eines Diagnoseprozesses auf dem zugehörigen Verarbeitungsgerät in Abhängigkeit von den abgerufenen Diagnoseereignisdaten zu erleichtern.
-
US 5 771 374 A betrifft eine Prozessoranordnung mit einer speicherprogrammierbaren Steuerung, die nach einem Kontaktplanverfahren arbeitet. Es ist eine Anzahl von Ereigniseingängen vorgesehen, die mit einem Unterbrechungspuffer verbunden sind, der wiederum mit einer Echtzeituhr verbunden ist, um Ereigniszeiten von an den Ereigniseingängen empfangenen Signalen aufzuzeichnen und Unterbrechungen zu erzeugen. Sequentielle Speicherplätze in einem zyklischen Puffer speichern Unterbrechungen und ihre Ereigniszeiten, wobei Ereignisse, die innerhalb eines vorgegebenen inkrementellen Zeitfensters auftreten, mit ihren Ereigniszeiten in einem Speicherplatz für dieses Zeitfenster gespeichert werden. Jeder Speicherplatz des zyklischen Puffers wird nacheinander bei jedem neuen Schritt des sequentiellen Prozesses überprüft. Die SPS ist so eingerichtet, dass sie auf alle im Puffer gespeicherten Ereignisse einwirkt, die von dem neuen Schritt des sequenziellen Prozesses betroffen sind, bevor sie zum nächsten Schritt des sequenziellen Prozesses übergeht.
-
KURZDARSTELLUNG
-
Im Allgemeinen schließen verschiedene Aspekte der hier beschriebenen Systeme und Verfahren eine Auslöser-Leitwegeinheit (trigger-routing unit) ein, die die Auslösung von Ereignissen koordiniert, ohne dass die Beteiligung eines Kernprozessors (core processor) notwendig ist. Die Auslöser-Leitwegeinheit kann dazu programmiert sein, ein erstes Modul, das ein Auslösersignal (d. h. einen „Auslöser-Master“) erzeugt, einem zweiten Modul zuzuordnen, das das Auslösersignal empfängt und ein diesem zugeordnetes Ereignis initiiert (d. h. ein „Auslöser-Slave“). In verschiedenen Ausführungsformen kann eine Vielzahl von Modulen Auslöser für ein einzelnes Empfängermodul erzeugen, ein einzelnes Modul kann einen Auslöser für eine Vielzahl von Empfängermodulen erzeugen, oder eine beliebige Kombination davon.
-
Die Begriffe „Auslöser“ („trigger“) und „Signal“ bezeichnen hier im weitesten Sinne ein Vorliegen (assertion) eines beliebigen Signaltyps, Befehls oder Statusindikators, die zu einer Zustandsänderung von einer oder mehreren Systemkomponenten führt. Darüber hinaus schließt das „Senden“ oder „Vorgeben“ („asserting“) eines Auslösers (oder das „Auslösen“ eines Ereignisses) nicht nur die direkte Übertragung eines Signals von einer Einheit zu einer anderen ein, sondern schließt im weiteren Sinne eine beliebige Handlung ein, die eine gewünschte Zustandsänderung in der Zieleinheit erreicht - beispielsweise das Setzen eines Statusbits, das von der Zieleinheit abgefragt wird. Der Begriff „Modul“ bezeichnet allgemein ein Hardwareelement (d. h. Schaltungen), soweit nicht anders angegeben, und kann ein einzelnes diskretes Element oder mehrere Elemente einschließen, die zusammenwirken, um eine genannte Funktion auszuüben.
-
In einem ersten Aspekt wird ein System zum Steuern einer Sequenz von Ereignissen gemäß Anspruch 1 offenbart.
-
Ein Programmierungseingang kann ein Speicherzuordnungsregister- („SZR“)-Signal (memory-mapped register, MMR) zum Programmieren der Mehrzahl von Registern empfangen. Ein Auslöser-Master-Register kann bei Empfang eines Programmierungssignals ein Auslösersignal initiieren. Ein ODER-Gate kann ein Auslösersignal vom Auslöser-Master-Register oder von einem der Mehrzahl von Master-Modulen annehmen. Die Auswahlschaltung kann mehr als eins der Mehrzahl von Slave-Modulen einem der Mehrzahl von Master-Modulen zuordnen. Das Master-Modul kann das gleiche Modul wie das Slave-Modul sein; das erste Ereignis und das zweite Ereignis können beide an dem Master-Modul durchgeführt werden. Ein Statusregister kann einen Status des Systems angeben, und ein Fehlerregister kann Informationen zu einem Fehler angeben, die in dem System aufgetreten sind. Ein globales Steuerregister kann einen globalen Status des Systems einstellen. Das Master-Modul kann eine erste Direktspeicherzugriff- (DSZ)-fähige Vorrichtung sein, oder das Slave-Modul kann eine zweite DSZ-fähige Vorrichtung sein.
-
In einem zweiten Aspekt wird ein Verfahren zum Steuern einer Sequenz von Ereignissen gemäß Anspruch 11 offenbart.
-
Das zweite Ereignis kann durch Programmieren eines Registers in der Auslöser-Leitwegeinheit ausgelöst werden. Fehlerinformationen im Zusammenhang mit einem Fehler beim Programmieren des Registers und/oder Statusinformationen im Zusammenhang mit der Auslöser-Leitwegeinheit können gespeichert werden. Das Register kann dazu programmiert sein, das eingehende Auslösersignal einem oder mehreren zusätzlichen Slave-Modulen zuzuordnen. Das abgehende Auslösersignal kann Ereignisse an dem oder den zusätzlichen Slave-Modulen initiieren.
-
In einem dritten Aspekt wird ein Prozessor gemäß Anspruch 17 offenbart.
-
Die Auslöser-Leitwegeinheit kann ferner einen Programmierungseingang zum Empfangen eines Speicherzuordnungsregister- („SZR“)-Signals zum Programmieren des Registers und/oder eines Auslöser-Master Registers zum Initiieren eines Auslösersignals bei Empfang eines Programmierungssignals aufweisen. Das Master-Modul und das Slave-Modul können DSZ-fähige Vorrichtungen sein.
-
Diese und weitere Aufgaben zusammen mit Vorteilen und Merkmalen der hier offenbarten vorliegenden Erfindung werden durch Bezugnahme auf die folgende Beschreibung, die begleitenden Zeichnungen und die Ansprüche deutlicher werden. Darüber hinaus versteht es sich, dass die Merkmale der verschiedenen hier beschriebenen Ausführungsformen einander nicht gegenseitig ausschließen und in verschiedenen Kombinationen und Abwandlungen existieren können.
-
Figurenliste
-
In den Zeichnungen bezeichnen gleiche Bezugszeichen in den verschiedenen Ansichten allgemein gleiche Teile. In der nachfolgenden Beschreibung werden verschiedene Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die folgenden Zeichnungen beschrieben; es zeigen:
- 1 ein Blockdiagramm, das ein Verarbeitungssystem darstellt, das eine Auslöser-Leitwegeinheit gemäß einer Ausführungsform der Erfindung aufweist; und
- 2 ein Blockdiagramm einer beispielhaften Implementierung einer Auslöser-Leitwegeinheit gemäß einer Ausführungsform der Erfindung.
-
DETAILLIERTE BESCHREIBUNG
-
1 stellt ein beispielhaftes System 100 dar, das eine Auslöser-Leitwegeinheit 102, einen Prozessorkern 104, einen oder mehrere Auslöser-Master 106 und einen oder mehrere Auslöser-Slaves 108 aufweist. Der Kern 102 kann ein beliebiger Mikroprozessor, Digitalsignalprozessor oder ein beliebiger anderer Typ von Anweisungsausführungsschaltung (instruction-executing circuitry) sein und kann einen oder mehrere Unterkerne aufweisen. Die vorliegende Erfindung ist nicht auf einen bestimmten Typ oder eine bestimmte Konfiguration des Kerns 104 beschränkt. Bei dem Auslöser-Master 106 und dem Auslöser-Slave 108 kann es sich um eine beliebige Art von Systemmodul handeln, darunter, ohne darauf beschränkt zu sein, Schreib-/Lesezugriffspeicher oder andere Speicher, Direktspeicherzugriff- („DSZ“)-Vorrichtungen und/oder Kanäle, Pin-Unterbrechungsblöcke, Pulsweitenmodulation-Synchronisationsblöcke, UARTs, USB-Schnittstellen, Coprozessoren, Eingangs-/Ausgangs-Handler, Timer oder beliebige andere Schaltungen.
-
Der Kern 104, die Auslöser-Masters 106 und die Auslöser-Slaves 108 können über einen Daten- und/oder Adressbus 110 kommunizieren, der einen Computerbus (z. B. an Industriestandardarchitektur- oder „ISA“-Bus), ein System-auf-einem-Chip-Bus (z. B. einen Advanced-eXtensible-Interface- oder „AXi“-Bus) oder einen beliebigen anderen Typ von Kommunikationsverbindung einschließen kann, wie im Stand der Technik bekannt. Der Bus 110 kann ferner Steuerschaltungen wie etwa eine DSZ-Steuereinrichtung aufweisen. Die Auslöser-Leitwegeinheit 102, der Kern 104, die Auslöser-Masters 106 und die Auslöser-Slaves 108 können ferner Steuersignale über einen Steuerungsbus 112 senden und empfangen, der separat vom Datenbus 110, Teil desselben oder derselbe wie dieser sein kann. Das System 100 kann ferner andere Kerne 104, Module, Speicher, Timer oder beliebige andere Typen von Schaltungen aufweisen; die vorliegende Erfindung ist nicht auf eine bestimmte Gruppe von Schaltungselementen beschränkt.
-
In verschiedenen Ausführungsformen gibt ein Auslöser-Master 106 ein Auslösersignal in Reaktion auf den Beginn oder den Abschluss eines Ereignisses (oder den Beginn oder den Abschluss eines Unterereignisses innerhalb eines größeren Ereignisses) vor. Dieses Auslösersignal wird an die Auslöser-Leitwegeinheit 102 (über den Datenbus 110 oder Steuerbus 112) übermittelt, wo es empfangen und an einen Auslöser-Slave 108 gesendet wird. In Reaktion auf den Empfang des Auslösersignals leitet der Auslöser-Slave eine Handlung (z. B. ein Ereignis oder andere Aufgabe) ein, und zwar ohne Interaktion mit oder Beteiligung von dem Kern 104 (beispielsweise kann die Handlung ohne das Vorliegen einer Unterbrechung von dem oder durch den Kern 104 initiiert werden). Das Auslösersignal kann eine ansteigende Flanke, eine abfallende Flanke, ein pegelbasiertes Signal oder einen Puls einschließen; die Auslöser-Leitwegeinheit 102 und die Auslöser-Slaves 108 können das Signal als vorliegend registrieren, wenn sie eine ansteigende Flanke, eine abfallende Flanke oder einen anderen Pegel des Auslösersignal feststellen.
-
Die dargestellte Ausführungsform 100 zeigt einen Auslöser-Master 106 und einen Auslöser-Slave 108; in anderen Ausführungsformen können Module sowohl als Auslöser-Master als auch Auslöser-Slaves dienen (z. B. als ein Master für ein erstes Ereignis oder an einem ersten Zeitpunkt und als ein Slave für ein zweites Ereignis oder an einem zweiten Zeitpunkt). Ein Auslöser-Master kann als sein eigener Slave dienen (d. h. der Master erzeugt ein Auslösersignal, das an die Auslöser-Leitwegeinheit 102 und dann zurück an den ursprünglichen Master gesendet wird, der sich dann als ein Auslöser-Slave für das Ereignis verhält). In dieser Ausführungsform können der Auslöser-Master/Slave dasselbe Ereignis (oder dieselbe Gruppe von Ereignissen) wiederholt ausführen, da dieses ständig sein eigenes Auslösersignal erzeugt; das Ereignis kann wiederholt werden, bis eine äußere Quelle auf das System einwirkt (wenn z. B. die Auslöser-Leitwegeinheit 102 neu programmiert wird).
-
Die Auslöser-Leitwegeinheit 102 kann dazu konfiguriert sein, eine Beziehung zwischen einem bestimmten Auslöser-Master 106 und einem bestimmten Auslöser-Slave 108 zuzuweisen, derart, dass das Vorgeben eines Auslösersignals durch den bestimmten Auslöser-Master ein Ereignis an dem bestimmten Slave auslöst. In anderen Ausführungsformen kann die Auslöser-Leitwegeinheit 102 derart konfiguriert sein, dass mehr als ein Auslöser-Master 106 ein Ereignis an einem Auslöser-Slave 108 auslösen kann, und/oder derart konfiguriert sein, dass ein Auslöser-Master 106 ein Ereignis an mehr als einem Slave 108 auslösen kann. Die vorliegende Erfindung ist in keiner der hier beschriebenen Ausführungsformen auf eine bestimmte Anzahl von auslösenden Masters 106 oder empfangenden Slaves 108 beschränkt, und ein Fachmann wird verstehen, dass Ausführungsformen der vorliegenden Erfindung auf unterschiedliche Kombinationen derselben angewandt werden können. Ein Auslöser-Master 106 kann somit dazu benutzt werden, das Auftreten eines Ereignisses an zwei oder mehr Auslöser-Slaves 108 zu synchronisieren, indem die Auslöser-Leitwegeinheit 102 dazu konfiguriert ist, das Auslösersignal, das von dem Auslöser-Master 106 erzeugt wird, auf zwei oder mehr Auslöser-Slaves 108 anzuwenden. In einer anderen Ausführungsform kann eine Vielzahl von Auslöser-Master-Signalen simultan oder zeitgleich erzeugt und auf zwei oder mehr Auslöser-Slaves 108 angewandt werden, um das Auftreten von Ereignissen an den Slaves 108 zu synchronisieren.
-
In einer Ausführungsform sind ein oder mehrere Register (oder andere Speichervorrichtungen) in der Auslöser-Leitwegeinheit 102 dazu programmiert, eine Beziehung zwischen dem oder den Auslöser-Masters 106 und dem oder den Auslöser-Slaves 108 herzustellen. Die Register können mit einem beliebigen im Stand der Technik bekannten Verfahren programmiert werden, etwa über Software-Anweisungen, über Debug-Modus- oder über Steuermodusanweisungen, über ein Speicherzuordnungsregister- („SZR“)-Protokoll, über Zugriff auf ein Steuerungsprotokoll (wie z. B. einen JTAG-Port) oder ein beliebiges anderes Mittel.
-
2 stellt ein System 200 dar, das eine Ausführungsform einer Auslöser-Leitwegeinheit 202, eine Mehrzahl von Auslöser-Masters 204 und eine Mehrzahl von Auslöser-Slaves 206 aufweist. Jedem Slave ist ein Slave-Auswahlregister 208 zugeordnet, das mit einem Code, einer Nummer oder einer Adresse programmiert sein kann, der bzw. die einem oder mehreren der Auslösersignale entspricht, die an der Auslöser-Leitwegeinheit 202 vom Auslöser-Master 204 eintreffen; es kann deshalb für jeden Auslöser-Slave ein separates Slave-Auswahlregister 208 oder ein separater Abschnitt eines Registers vorliegen. Das Slave-Auswahlregister 208 kann ferner ein Sperr-Bit enthalten, das, wenn es gesetzt ist, verhindert, dass die gegenwärtig gespeicherte Adresse überschrieben wird. In der dargestellten Ausführungsform wird das Slave-Auswahlregister 208 dazu benutzt, eine Auswahlleitung für einen Multiplexer 210 zu steuern, die eines der eingehenden Auslösersignale mit einem bestimmten Auslöser-Slave 206 verbindet. Ein Fachmann wird jedoch verstehen, dass jedes beliebige Verfahren zum Auswählen von einem oder mehreren der eingehenden Auslösersignalen und zum Zuweisen derselben zu einem oder mehreren der Auslöser-Slaves 206 anhand der Informationen im Slave-Auswahlregister 208 im Umfang der vorliegenden Erfindung liegt. In einer Ausführungsform weist jedes Slave-Auswahlregister 208 eine Größe von 32 Bit auf; die Bits 7:0 dienen dazu, eine von mehreren Auslösersignalquellen auszuwählen, und das Bit 31 dient zum Sperren des Registers.
-
In einer Ausführungsform kann ein Auslösersignal über eine Softwareanweisung vorgegeben werden (anstatt von einem Auslöser-Master 204 vorgegeben zu werden). In dieser Ausführungsform ist ein Master-Auslöseregister 212 in ähnlicher Weise wie die Slave-Auswahlregister 208 (oder in beliebiger anderer Weise) programmiert. Ein Decoder 214 decodiert den Inhalt des Master-Auslöseregisters 212 und erzeugt ein oder mehrere Softwareinitiierte (z. B. über die Programmierung eines MTR über Software) Auslösersignale. Diese Auslösersignale können mit den Signalen kombiniert werden, die von den Auslöser-Masters 204 erzeugt werden, indem beispielsweise ein ODER-Gate 216 (oder eine andere vergleichbare Logikfunktion) benutzt wird, derart, dass ein Ereignis an einem jeweiligen Auslöser-Slave 206 von einem Auslöser-Master 204 und/oder durch die Programmierung des Master-Auslöseregisters 212 ausgelöst werden. In einer Ausführungsform weist das Master-Auslöseregister 212 eine Größe von 32 Bit auf und ist in vier separate Acht-Bit-Register unterteilt. Eine Acht-Bit-Adresse kann in ein beliebiges der vier Acht-Bit-Register geschrieben werden, um ein Auslösersignal zu erzeugen (dessen Auslösung beispielsweise einen Übergang von einem Low-Zustand in einen High-Zustand einschließen kann).
-
Die Auslöser-Leitwegeinheit 202 kann zusätzliche Lese- und/oder Schreibregister 216 aufweisen, die zusätzliche Funktionen bereitstellen. Ein Fehlerregister kann dazu konfiguriert sein, Informationen zu einem Fehler aufzunehmen, etwa die Adresse, die einem ungültigen Versuch entspricht, in ein Slave-Auswahlregister 208 zu schreiben; der Versuch kann ungültig sein, da die Fehler erzeugende Adresse außerhalb eines gültigen Bereichs liegt oder weil sie ein gesperrtes Slave-Auswahlregister 208 angibt. In einer Ausführungsform ist das Fehlerregister ein 32-Bitregister, und die Bits 11:0 dienen zum Aufnehmen einer Fehleradresse. Die Fehleradresse kann dem ersten beobachteten Fehler dieser Art (d. h. nachfolgende Fehler überschreiben den zuerst beobachteten Fehler nicht) oder dem letzten beobachteten Fehler entsprechen (z. B. überschreiben nachfolgende Fehler den zuerst beobachteten Fehler). In einer Ausführungsform kann mehr als ein Fehler im Fehlerregister gespeichert sein; die vorliegende Erfindung ist nicht auf das Speichern einer bestimmten Anzahl von Fehlern oder das Speichern in einer bestimmten Reihenfolge beschränkt.
-
Die zusätzlichen Register 216 können ferner ein oder mehrere Statusregister aufweisen, um einen Status der Auslöser-Leitwegeinheit und/oder anderer Register darin anzugeben. Beispielsweise können ein oder mehrere Bits des Statusregisters angeben, ob eine ungültige an das Slave-Auswahlregister 208 und/oder das Master-Auslöseregister 212 bereitgestellt wurde. Ein zusätzliches Bit oder Bits können benutzt werden, um anzugeben, ob ein Sperr-Schreibfehler (lock-write error) aufgetreten ist (d. h. ob ein Versuch stattgefunden hat, das Slave-Auswahlregister 208, Master-Auslöseregister 212 oder ein anderes Register gegen Beschreiben zu sperren, und der Versuch fehlgeschlagen ist). Diese Statusbits können gelesen werden, um ihren Status zu bestimmen, und geschrieben, um ihren Status zurückzusetzen. Das Statusregister kann eine Größe von 32 Bit aufweisen.
-
Die zusätzlichen Register 216 können auch ein oder mehrere globale Steuerregister zum Bereitstellen von Steuerung und Funktionen aufweisen, die die gesamte Auslöser-Leitwegeinheit 202 betreffen. Beispielsweise kann das globale Steuerregister dazu benutzt werden, ein oder mehrere der anderen Register in der Auslöser-Leitwegeinheit 202 zu sperren, die Auslöser-Leitwegeinheit 202 zurückzusetzen und/oder die Auslöser-Leitwegeinheit 202 zu aktivieren. Ein oder mehrere Bits in dem globalen Steuerregister können ferner dazu benutzt werden, ein oder mehrere andere Bits im globalen Steuerregister zu sperren.
-
Die zusätzlichen Registern 216 können auch ein Revisionsidentifikationsregister aufweisen. Dieses Register kann ein Leseregister sein und kann ein oder mehrere Bits enthalten, die mit einer Seriennummer, Versionsidentifikationsnummer (die ein erstes Feld für eine Hauptversionsnummer und ein zweites Feld für eine inkrementelle Versionsnummer einschließen kann) oder beliebigen anderen Identifikations- oder Klassifikationsinformationen programmiert sind.
-
Fachleute werden verstehen, dass es viele Möglichkeiten gibt, die Auslöser-Leitwegeinheit 202 zu programmieren, und dass die vorliegende Erfindung nicht auf ein bestimmtes Verfahren beschränkt ist. In einer Ausführungsform wird die Programmierung derart durchgeführt, dass verhindert wird, dass ein Auslöser-Master ein Auslösersignal erzeugt, bevor ein Auslöser-Slave dazu konfiguriert wurde, es zu empfangen. Beispielsweise kann zuerst in das globale Steuerregister geschrieben werden, um die Auslöser-Leitwegeinheit 202 zu aktivieren, und dann kann in ein Slave-Auswahlregister 208 geschrieben werden, um einen Auslöser-Slave einem Auslöser-Master zuzuweisen. Der Auslöser-Slave kann dann aktiviert werden, um auf ein eingehendes Auslösersignal zu warten und es anzunehmen, und schließlich kann ein Auslöser-Master aktiviert werden, um einen Auslöser zu erzeugen.
-
Die Auslöser-Leitwegeinheit kann zusätzliche Merkmale enthalten. Beispielsweise kann ein Ereigniszähler verfolgen, wie häufig ein oder mehrere Auslöser auftreten. Eingehende Auslösersignale können gefiltert werden, und einige nicht an einen bestimmten Slave gesendet werden, indem beispielsweise ein Ereignisüberspringungszähler benutzt wird, der nur jeden N-ten Auslöser an einen Slave weiterleitet. Ein Ereignisintervallzähler kann benutzt werden, um die Zeit zu übermitteln, die seit einem letzten Auslöserereignis verstrichen oder abgelaufen ist. Ein Ereignis-Watchdog kann angeben, wann ein Ereignis für eine bestimmte Zeitspanne (z. B. eine Anzahl von Zyklen) abwesend ist, indem z. B. eine Unterbrechung ausgelöst wird. In einer Ausführungsform gibt ein erstes Auslöserereignis von einem ersten Master ein abgehendes Auslösersignal (definiert z. B. eine vorgebende Flanke einer abgehenden Wellenform) vor, und ein zweites Auslöserereignis von einem zweiten Master hebt ein abgehendes Auslösersignal (definiert z. B. eine aufhebende Flanke einer abgehenden Wellenform) auf (de-asserts). Die Auslöser-Leitwegeinheit kann Speicher zum Protokollieren oder Speichern von Auslöseranforderungen von einem oder mehreren Masters enthalten, wenn beispielsweise eine hohe Rate von Auslöseranforderungen vorliegt und/oder ein Slave belegt ist. Diese protokollierten oder gespeicherten Anforderungen können schwebend bleiben, bis sie bearbeitet werden können (wenn z. B. der Slave nicht mehr belegt ist). In einer Ausführungsform kann ein Auslöser an einen Ausgangs-Pin zu einem nicht auf dem Chip angeordneten Slave weitergeleitet werden. In verschiedenen Ausführungsformen können beliebige und alle diese Merkmale in der Auslöser-Leitwegeinheit oder in einer Peripherievorrichtung eines Auslöser-Slave implementiert sein.
-
Vorstehend wurden bestimmte Ausführungsformen der vorliegenden Erfindung beschrieben. Es wird jedoch ausdrücklich angemerkt, dass die vorliegende Erfindung nicht auf diese Ausführungsformen beschränkt ist, sondern vorgesehen ist, dass Ergänzungen und Modifikationen dessen, was hier ausdrücklich beschrieben wurde, ebenfalls in den Umfang der Erfindung fallen. Darüber hinaus versteht es sich, dass die Merkmale der verschiedenen hier beschriebenen Ausführungsformen einander nicht gegenseitig ausschließen und in verschiedenen Kombinationen und Abwandlungen existieren können, selbst wenn diese Kombinationen und Abwandlungen hier nicht ausdrücklich genannt werden, ohne vom Geist und Umfang der Erfindung abzuweichen. Abwandlungen, Modifikationen und andere Implementierungen des hier Beschriebenen werden vielmehr für Durchschnittsfachleute auf der Hand liegen, ohne vom Geist und Umfang der Erfindung abzuweichen. Daher darf die Erfindung nicht allein anhand der vorstehenden veranschaulichenden Beschreibung definiert werden.