-
Die Echtzeitsimulation von komplexen, dynamischen Modellen stellt aufgrund der engen zeitlichen Randbedingungen selbst an moderne Rechenknoten hohe Anforderungen. In automotiven Hardware-in-the-Loop-Simulationen (HiL) werden solche Modelle vor allem dort eingesetzt, wo schnelle Regelkreise geschlossen werden müssen. Dies ist etwa bei der Simulation von Zylinderinnendrucksensoren der Fall, die bei der Verbrauchs- oder Abgasreduktion eine zunehmend größere Rolle spielen. Aber auch bei Regelstrecken die eine hohe Dynamik aufweisen, wie zum Beispiel bei Elektromotoren, sind kurze Zykluszeiten und geringe Latenzen unabdingbar. Diese können mit CPU-basierten Simulationen praktisch kaum mehr umgesetzt werden.
-
Field Programmable Gate Arrays (FPGAs) können Rechenknoten bei der Echtzeitsimulation unterstützen, indem sie die Berechnung von dynamischen Teilen eines Modells übernehmen. Durch die hohe Flexibilität und Möglichkeit der Parallelverarbeitung von Signalen lassen sich durch den Einsatz von FPGAs auch harte Echtzeitanforderungen leicht erfüllen. Die FPGAs können als Hardwarebeschleuniger für CPUs von Rechenknoten dienen. Entsprechend werden z.B. sehr dynamische Teile des Umgebungsmodells in das FPGA ausgelagert, so dass ausreichend präzise und schnelle Reaktionszeiten für das Steuergerät gewährleistet bleiben. Eine FPGA-Netzliste wird üblicherweise basierend auf einem FPGA Modell in einer Hardwarebeschreibungssprache in einem Build-Prozess erzeugt.
-
Die Modelle einer Regelstrecke werden durch steigende Anforderungen an die Genauigkeit zunehmend komplexer und somit auch schwer handhabbar. Im automotiven Hil-Umfeld werden solche Modelle in der Regel mit dem Toolset Matlab/Simulink von The MathWorks Inc. erstellt. Simulink bietet eine blockbasierte Sicht in der Form eines Blockschaltbilds auf solche Modelle. Modellteile können in einem Blockschaltbild zu Subsystemen zusammengefasst und untereinander mit Signalen verknüpft werden. Der Datenfluss zwischen diesen Blöcken wird dabei über Signalleitungen dargestellt.
-
Eine FPGA-basierte Simulation kann unter Zuhilfenahme des Xilinx System Generator (XSG) und des FPGA-Programming Blocksets von dSPACE, analog zur CPU-basierten Simulation, in einem Blockschaltbild mit Simulink modelliert werden.
-
Im Gegensatz zur CPU-Simulation wird dieses Modell allerdings nicht in eine iterative Programmiersprache übersetzt, sondern in eine FPGA-Netzliste, die eine kundenspezifische digitale Schaltung beschreibt. Die FPGA-Netzliste kann in einen FPGA-Konfigurationsdatenstrom übersetzt werden. Der FPGA-Konfigurationsdatenstrom konfiguriert einen FPGA so, dass die durch das Modell definierte Schaltung zur Laufzeit ausgeführt wird.
-
Aus der
DE102013101300A1 ist ein Verfahren zum Zugriff auf einen Signalwert eines FPGA zur Laufzeit bekannt.
-
Aufgabe der Erfindung ist es den Stand der Technik weiterzubilden.
-
Im Folgenden werden einige Begrifflichkeiten erklärt wie sie hier zu verstehen sind.
-
Unter dem Auslesen einer Variablen wird hier das Auslesen eines zu einem bestimmten Zeitpunkt in einem Register gespeicherten Wertes der Variablen verstanden. Unter der Speicherung einer Variablen in einem Register wird hier das Speichern des aktuellen Wertes der Variablen in einem Register verstanden. Variablen können beliebig viele Bits umfassen und auf mehrere Register verteilt werden.
-
Unter einem Schattenregister werden Register verstanden, die nicht für die im FPGA durchgeführten Berechnungen notwendig sind, sondern Werte von Variablen unabhängig von den laufenden Berechnungen speichern können. Die in den Schattenregistern gespeicherten Werte werden nicht in die laufenden Berechnungen einbezogen. Das Auslesen der Schattenregister kann über verschiedene bekannte Techniken erfolgen. Bspw. können Schattenregister über einen im FPGA vorhandenen „Readback-Mechanismus“ ausgelesen werden. Den „Readback-Mechanismus“ zeichnet aus, dass die Ausgänge der Schattenregister nicht weiterverbunden werden müssen. Es ist folglich kein Verdrahtungsaufwand für die Implementierung der Auslesetechnik notwendig. In einer alternativen Variante werden die Schattenregister über einen oder mehrere Multiplexer mit einem IO-Pin des FPGA verbunden. Es werden dadurch wesentlich weniger IO-Pins als Schattenregister zum Auslesen benötigt. In einer alternativen Variante werden die Schattenregister mit einem Adressdecoder verbunden. Über den Adressdecoder können die Schattenregister einzeln ausgelesen werden.
-
Unter einem Messraster wird hier periodische, aperiodische oder sporadische Auslösung eines Speicher- und Auslesevorgangs verstanden.
-
Unter synchron bzw. gleichzeitig ist hier insbesondere zu verstehen, dass bei getakteten Berechnungen zwei oder mehr Aktionen im gleichen Berechnungsschritt stattfinden. Bspw. kann das FPGA einen Taktgeber enthalten oder an einen Taktgeber angeschlossen sein, wobei das Taktsignal des Taktgebers eine Aktualisierung der Variablen bewirkt. Bevor ein weiteres Taktsignal die Variablen erneut aktualisiert werden alle gleichzeitigen bzw. synchronen Aktionen, bspw. eine synchrone Speicherung mehrerer Variablen, durchgeführt.
-
Unter einem Triggersignal wird hier ein Signal verstanden, das eine vorbestimmte Aktion auslöst. Ein Triggersignal kann bspw. eine Speicherung einer Variablen in einem Schattenregisters bewirken. Ein solches Triggersignal kann bspw. über ein Taktnetz im FPGA verteilt werden. Ein Taktnetz wird üblicherweise verwendet, um ein Taktsignal eines Taktgebers zu verteilen und dadurch, wie oben beschrieben, eine getaktete Berechnung im FPGA zu kontrollieren. Da in einem FPGA eine Vielzahl an Taktnetzen implementiert werden können, können ein oder mehrere Taktnetze für die Kontrolle der Berechnung und weitere Taktnetze für die Verteilung der Triggersignale genutzt werden.
-
Die vorliegende Erfindung betrifft ein Verfahren zum Auslesen von Variablen aus einem FPGA zur Laufzeit. Ebenfalls betrifft die Erfindung eine Datenverarbeitungseinrichtung mit einer Prozessoreinheit und einem FPGA, wobei die Datenverarbeitungseinrichtung zur Durchführung des obigen Verfahrens ausgeführt ist. Auch betrifft die Erfindung ein Computerprogrammprodukt mit Computer-implementierten Anweisungen, das nach dem Laden und Ausführen in einer geeigneten Datenverarbeitungseinrichtung die Schritte des obigen Verfahrens ausführt sowie ein digitales Speichermedium mit elektronisch auslesbaren Steuersignalen, die so mit einer programmierbaren Datenverarbeitungseinrichtung zusammenwirken können, dass das obige Verfahren ausgeführt wird.
-
Erfindungsgemäß ist ein Verfahren zum Auslesen von Variablen aus einem FPGA zur Laufzeit, wobei in dem FPGA eine erste Variable berechnet wird, wobei der ersten Variablen ein erstes Schattenregister und ein zweites Schattenregister zugeordnet sind, wobei die erste Variable einem ersten Messraster zugeordnet wird, wobei zu einem ersten Zeitpunkt das erste Messraster eine synchrone Speicherung aller dem ersten Messraster zugeordneten Variablen in einem der jeweiligen Variablen zugeordneten Schattenregister bewirkt, wobei die erste Variable einem zweiten Messraster zugeordnet wird, wobei zu einem zweiten Zeitpunkt das zweite Messraster eine synchrone Speicherung aller dem zweiten Messraster zugeordneten Variablen in einem der jeweiligen Variablen zugeordneten Schattenregister bewirkt, wobei die Schattenregister unabhängig voneinander ausgelesen werden.
-
Ein Vorteil des erfindungsmäßen Verfahrens ist, dass die Messpunkte der Messraster zeitlich dicht hintereinander liegen können, da der zweite Wert gespeichert werden kann, bevor der erste ausgelesen wurde. Durch das unabhängige Auslesen kann der schneller benötigte Wert zuerst ausgelesen werden, egal welcher zuerst gespeichert wurde. Es ist also weder notwendig den zuerst gespeicherten Wert auszulesen, bevor der zweite Wert gespeichert wird, noch ist es notwendig den zuerst gespeicherten Wert vor dem zweiten Wert auszulesen.
-
Es versteht sich, dass die Anzahl der Schattenregister vergrößert werden kann. Die Anzahl kann dabei bei der Erstellung des FPGA-Programms vom Nutzer direkt oder indirekt vorgegeben werden. Eine indirekte Vorgabe kann bspw. durch die Vorgabe der Anzahl der Messraster, die zur Laufzeit nutzbar sein sollen, erfolgen.
-
Eine Prozessoreinheit kann mit dem FPGA zu einer Datenverarbeitungseinrichtung verbunden werden und kann zur Steuerung des Auslesens verwendet werden. Dazu kann die Prozessoreinheit einen im FPGA vorhandenen Readback-Mechanismus ansprechen. Alternativ kann im FPGA-Programm eine von der Prozessoreinheit ansteuerbare Logik zum Ausgeben der gespeicherten Variablen implementiert werden. Eine solche ansteuerbare Logik kann bspw. ein Adressdecoder sein über den die einzelnen Schattenregister ansprechbar sind.
-
In einer vorteilhaften Ausgestaltung wird in dem FPGA eine zweite Variable berechnet, wobei der zweiten Variablen ein drittes Schattenregister zugeordnet ist, wobei die zweite Variable dem ersten Messraster zugeordnet wird, wobei zum ersten Zeitpunkt die zweite Variable synchron mit der ersten Variablen gespeichert wird.
-
Vorteilhaft ist hierbei, dass die Werte beider Variablen gleichzeitig gespeichert werden. Unter synchron bzw. gleichzeitig ist hier insbesondere zu verstehen, dass bei einer getakteten Berechnung im FPGA beide Variablen im gleichen Taktschritt gespeichert werden. Der FPGA ist also mit einem Taktgeber verbunden oder hat einen internen Taktgeber und in jedem Taktschritt werden die Werte der Variablen aktualisiert. Das erste Messraster bewirkt, dass zwei Variablenwerte, die im gleichen Taktschritt vorliegen, in zwei Schattenregistern gespeichert werden.
-
In einer vorteilhaften Ausgestaltung sind das erste Schattenregister und das zweite Schattenregister parallel geschaltet.
-
Unter parallel geschaltet ist hier zu verstehen, dass beide Register die gleiche Variable als Dateneingang erhalten. Die Speicherung der Variablen kann unabhängig für beide Schattenregister bewirkt werden. Bspw. kann das erste Schattenregister ein anderes Triggersignal empfangen als das zweite Schattenregister.
-
In einer besonders vorteilhaften Ausgestaltung bewirkt das erste Messraster eine Speicherung des Wertes der ersten Variablen im ersten Schattenregister und das zweite Messraster eine Speicherung des Wertes der ersten Variablen im zweiten Schattenregister.
-
Vorteilhaft ist, dass jedes Schattenregister fest einem Messraster zugeordnet wird. In einer speziellen Ausgestaltung erhält eine Vielzahl von Variablen die gleiche Anzahl an parallelen Schattenregistern. Die Anzahl der Schattenregister gibt dann die Anzahl der möglichen Messraster vor. Die feste Zuordnung ermöglicht ein leichtes Auslesen der Schattenregister, da jedes Schattenregister fest je einer Variablen und einem Messraster zugeordnet wird. Für jedes Messraster kann ein eigenes Triggersignal zu den zugeordneten Schattenregistern implementiert werden. Unter einem Triggersignal wird hier ein Signal verstanden, dass vom Messraster ausgelöst wird und eine Speicherung des am Eingang des Schattenregisters anliegenden Wertes bewirkt. Der Wert wird dann im Schattenregister behalten bis ein weiteres Triggersignal eintrifft. Ein solches Triggersignal kann bspw. in Form eines Taktnetzes implementiert werden. Ein Taktnetz wird üblicherweise verwendet, um eine getaktete Berechnung im FPGA zu kontrollieren. Da in einem FPGA eine Vielzahl an Taktnetzen implementiert werden können, können ein oder mehrere Taktnetze für die Kontrolle der Berechnung und weitere Taktnetze für die Verteilung der Triggersignale genutzt werden.
-
Es versteht sich, dass eine größere Anzahl an Schattenregistern parallel geschaltet werden kann. Je mehr parallele Schattenregister implementiert werden, umso mehr Messraster mit eigenem Triggersignal können genutzt werden. In einer Ausgestaltung wird die Anzahl der je Variable implementierten parallelen Schattenregister vom Nutzer bei der Erstellung des FPGA-Programms direkt vorgegeben. In einer alternativen Ausgestaltung wird die Anzahl der zur Laufzeit nutzbaren Messraster vom Nutzer bei der Erstellung des FPGA-Programms vorgegeben und ein Schattenregister je Messraster für jede Variable implementiert. Für jedes Messraster wird ein Taktnetz zur Verteilung des Triggersignals implementiert und für jede Variable das dem jeweiligen Messraster zugeordnete Schattenregister an das jeweilige Taktnetz angeschlossen.
-
In einer alternativen Ausgestaltung sind das erste Schattenregister und das zweite Schattenregister seriell geschaltet.
-
Unter seriell geschaltet ist hier zu verstehen, dass ein Datenausgang des ersten Schattenregister mit einem Dateneingang des zweiten Schattenregisters verbunden ist. Das zweite Schattenregister kann dadurch den im ersten Schattenregister gespeicherten Wert aufnehmen. Beide Schattenregister werden mit dem gleichen Triggersignal angesteuert.
-
Vorteilhaft an dieser Ausgestaltung ist, dass beide Messraster das gleiche Triggersignal nutzen. Es wird also nur ein Signal für beide Messraster benötigt. Dadurch ist die Nutzung von mehr Messrastern, als Taktnetze für die Verteilung der Triggersignale bereit stehen, möglich. In einer Ausgestaltung werden mehr Schattenregister als Messraster implementiert. Bspw. können je Variable doppelt so viele Schattenregister wie Messraster implementiert werden. Die Anzahl der Messraster kann vom Nutzer vorgegeben sein.
-
In einer weiteren Ausgestaltung bewirken das erste Messraster und das zweite Messraster eine Speicherung der ersten Variablen im ersten Schattenregister, wobei der im ersten Schattenregister gespeicherte Wert in das zweite Schattenregister verschoben wird, wobei entsprechend die Zuordnung der Schattenregister zu den Messrastern aktualisiert wird.
-
Die Aktualisierung der Zuordnung der Schattenregister zu den Messrastern kann bspw. in Form eines „Stage-Counters“ geschehen. Der „Stage-Counter“ gibt zu jedem Zeitpunkt an, welches Schattenregister welchem Messraster zugeordnet ist. Das Triggersignal des jeweiligen Messrasters wird an den „Stage-Counter“ übermittelt und die Zuordnung aktualisiert. Das erste Schattenregister wird also zum ersten Zeitpunkt dem ersten Messraster und zum zweiten Zeitpunkt dem zweiten Messraster zugeordnet.
-
Bei einem weiteren Triggersignal geht der im zweiten Schattenregister gespeicherte Wert verloren, daher ist es vorteilhaft mehr seriell geschaltete Schattenregister zu implementieren. Dann wird bei einem Triggersignal der in einem Schattenregister gespeicherte Wert jeweils in das nächste Schattenregister verschoben. In einer vorteilhaften Ausgestaltung wird die Anzahl der zur Laufzeit nutzbaren Messraster vom Nutzer vorgegeben und je Variable doppelt so viele Schattenregister implementiert wie Messraster vorgegeben werden.
-
In einer weiteren Ausgestaltung ist jedem Messraster ein Triggersignal zugeordnet.
-
Jedes Messraster löst das ihm zugeordnet Triggersignal aus. Bei einer parallelen Implementierung der Schattenregister wird das Triggersignal nur an die dem Messraster zugeordneten Schattenregister weitergeleitet. Bei einer seriellen Implementierung der Schattenregister wird das Triggersignal an alle Schattenregister und ggf. an einen „Stage-Counter“ weitergeleitet.
-
In einer vorteilhaften Ausgestaltung wird die Zuordnung der ersten Variable zu einem Messraster zur Laufzeit geändert.
-
Die Zuordnung der Variablen zu den Messrastern bestimmt welche Schattenregister ausgelesen werden. Durch die Änderung der Zuordnung zur Laufzeit kann der Ausleseaufwand dynamisch angepasst werden, da nur diejenigen Schattenregister ausgelesen werden, deren Inhalt benötigt wird. Die Änderung kann die Zuordnung zu dem zweiten Messraster, die Zuordnung zu einem dritten Messraster, oder die Zuordnung zu keinem Messraster sein.
-
In einer Ausgestaltung umfasst ein Auslesevorgang das Auslesen aller mit einem Messraster verknüpften Variablen, die zu einem Zeitpunkt synchron gespeichert wurden.
-
In einer vorteilhaften Ausgestaltung wird die Auslesereihenfolge der Schattenregister in einem Preemptive-Verfahren festgelegt.
-
Vorteilhaft an Preemtive-Verfahren ist, dass ein Auslesevorgang durch einen anderen Auslesevorgang unterbrochen werden kann. Dadurch können kurzfristig benötigte Daten schneller ausgelesen werden, da nicht der laufende Auslesevorgang abgewartet werden muss. Der unterbrochene Auslesevorgang kann an der Unterbrechungsstelle wieder gestartet werden und muss nicht komplett wiederholt werden. Preemptive-Verfahren sind aus dem Stand der Technik bekannt.
-
In einer alternativen Ausgestaltung wird die Auslesereihenfolge in einem Non-Preemptive-Verfahren festgelegt.
-
Non-Preemtive-Verfahren sind vorteilhaft, wenn das Unterbrechen und/oder Starten von Auslesevorgängen zusätzlichen zeitlichen und/oder Implementierungs-Aufwand bedeutet. In Non-Preemptive-Verfahren werden Auslesevorgänge immer komplett ausgeführt und nicht unterbrochen. Non-preemptive-Verfahren sind aus dem Stand der Technik bekannt.
-
In einer Ausgestaltung bewirkt zumindest ein Messraster periodisch eine Speicherung.
-
Eine periodische Speicherung der Variablen ist vorteilhaft, wenn die Daten in einer periodischen Berechnung weiterverarbeitet werden sollen. Bspw. können die Berechnungen im FPGA in Bezug zu einer Simulation auf einem Prozessor stehen, wobei die Simulation in periodischen Zeitschritten berechnet wird, wobei für vorbestimmte Zeitschritte die Variablen aus dem FPGA benötigt werden.
-
In einer Ausgestaltung bewirkt zumindest ein Messraster aperiodisch oder sporadisch eine Speicherung.
-
Eine aperiodische oder sporadische Speicherung ist vorteilhaft, wenn die Daten nur ab und an bspw. bei Auftreten vorbestimmter Bedingungen benötigt werden. Solche Bedingungen können bspw. bestimmte Berechnungsergebnisse der FPGA-Berechnungen oder Ereignisse wie das Eintreffen äußerer Signale von an den FPGA angeschlossene Komponenten oder die Anforderung durch einen Nutzer sein.
-
In einer Ausgestaltung werden die von einem Messraster gespeicherten Daten in einem vorbestimmten Zeitraum ausgelesen.
-
Das Auslesen in einem vorbestimmten Zeitraum ist vorteilhaft, wenn die ausgelesenen Werte in einem Echtzeitkontext weiterverarbeitet werden sollen. Bspw. kann die Datenverarbeitungseinrichtung eine Echtzeitsimulation durchführen oder die ausgelesenen Werte einer Echtzeitsimulation zur Verfügung stellen.
-
Im Folgenden wird die Erfindung anhand von Beispielen näher erläutert. Dabei zeigt:
- 1 Ein FPGA-Programm mit einer Variablen und zwei parallel geschalteten Schattenregistern,
- 2 Ein FPGA-Programm mit einer Variablen, zwei parallel geschalteten Schattenregistern und einer internen Auslösung der Speicherung,
- 3 Ein FPGA-Programm mit zwei Variablen und je zwei parallel geschalteten Schattenregistern für jede Variable,
- 4 Ein FPGA-Programm mit einer Variablen und zwei seriell geschalteten Schattenregistern,
- 5 Ein FPGA-Programm mit zwei Variablen und je zwei seriell geschalteten Schattenregistern für jede Variable,
- 6 Einen „Stage-Counter“ für zwei Messraster mit seriellen Schattenregister,
- 7 Ein FPGA-Programm mit „Stage-Counter“,
- 8a, b, einen zeitlichen Ablauf eines erfindungsgemäßen Verfahren.
-
1 zeigt ein FPGA-Programm 100, das auf einem FPGA implementiert wird. Ein FPGA-Programm wird häufig in Form eines Blockschaltbildes in einer grafischen Programmierumgebung erstellt, ein solches Blockschaltbild ist hier skizziert. Das FPGA-Programm 100 hat einen Dateneingang 101 über den Eingabedaten in das FPGA-Programm 100 fließen. Die Daten werden in einem ersten Logikblock 102 zu einer ersten Variablen 1 verarbeitet. Die erste Variable wird an einen zweiten Logikblock 103, ein erstes Schattenregister 2 und ein zweites Schattenregister 3 weitergeleitet. Der zweite Logikblock 103 erzeugt aus der ersten Variablen 1 Ausgabedaten, die über einen Datenausgang 105 ausgegeben werden. Ein Taktblock 104 liefert ein Taktsignal an den ersten Logikblock 102 und den zweiten Logikblock 103. Der Taktblock kann wie in diesem Beispiel Teil des FPGA-Programms sein, außerhalb des FPGA-Programms im FPGA implementiert sein oder ein Taktsignal kann von außen zum FPGA-Programm geführt werden. Mit jedem Taktschritt erzeugt der erste Logikblock 102 einen neuen Wert für die erste Variable 1. Ein Signal eines ersten Messrasters 4 bewirkt zu einem ersten Zeitpunkt t1, dass das erste Schattenregister 2 den aktuellen Wert der ersten Variablen 1 speichert. Ein Signal eines zweiten Messrasters 5 bewirkt zu einem zweiten Zeitpunkt t2, dass das zweite Schattenregister 3 den aktuellen Wert der ersten Variablen 1 speichert. Die in den Schattenregistern 2, 3 gespeicherten Werte können unabhängig voneinander ausgelesen werden. Das Auslesen kann beispielsweise über einen Readback-Mechanismus geschehen. Der Readback-Mechanismus ist nicht Teil des FPGA-Programms und daher nicht dargestellt. Es kann sein, dass bei der Erstellung des FPGA-Programms der Zugriff über den Readback-Mechanismus ermöglicht werden muss. Bspw. kann es nötig sein bei der Umwandlung eines Programmcodes oder Blockschaltbildes in einen Konfigurationsbitstrom den Zugriff über den Readback-Mechanismus explizit zu berücksichtigen. Der erste Zeitpunkt und der zweite Zeitpunkt können beliebig zueinander liegen. Es ist möglich, dass der zweite Zeitpunkt t2 während des Auslesens des ersten Schattenregisters 2 eintritt.
-
2 beschreibt ein alternatives FPGA-Programm 100. Im Folgenden werden nur die Unterschiede zu 1 beschrieben. Das Signal des ersten Messrasters 4 und das Signal des zweiten Messrasters 5 werden hier innerhalb des FPGA-Programms 100 durch einen Messrasterblock 106 erzeugt. Der Messrasterblock kann bspw. bei der Initialisierung des FPGA-Programms 100 konfiguriert werden und zur Laufzeit des FPGA-Programms 100 regelmäßig das Signal des ersten Messrasters 4 und das Signal des zweiten Messrasters 5 erzeugen.
-
3 beschreibt ein alternatives FPGA-Programm 100. Im Folgenden werden nur die Unterschiede zu 1 beschrieben. Der zweite Logikblock 103 erzeugt eine zweite Variable 6. Die zweite Variable 6 wird an einen dritten Logikblock 107, ein drittes Schattenregister 7 und ein viertes Schattenregister 7 weitergeleitet. Der dritte Logikblock erzeugt Ausgabedaten, die über den Datenausgang 105 ausgegeben werden. Das Taktsignal des Taktblocks 104 wird auch an den dritten Logikblock geliefert. Das Signal des ersten Messrasters 4 bewirkt, dass das erste Schattenregister 2 den aktuellen Wert der ersten Variablen 1 speichert und das dritte Schattenregister 7 den Wert der zweiten Variablen 6 speichert. Das Signal des zweiten Messrasters 5 bewirkt, dass das zweite Schattenregister 3 den aktuellen Wert der ersten Variablen 1 speichert und das vierte Schattenregister 8 den Wert der zweiten Variablen 6 speichert. Die vier Schattenregister 2, 3, 7, 8 können unabhängig voneinander ausgelesen werden. Es kann vorgesehen sein, dass mehrere Schattenregister in einem Auslesevorgang ausgelesen werden. Beispielsweise können das erste Schattenregister 2 und das dritte Schattenregister 7 in einem ersten Auslesevorgang ausgelesen werden und das zweite Schattenregister 3 und das vierte Schattenregister 8 in einem zweiten Auslesevorgang ausgelesen werden. Je nach vorgesehener Technik für das Auslesen ist es nicht möglich mehrere Auslesevorgänge gleichzeitig durchzuführen. In diesem Fall werden die Auslesevorgänge nacheinander ausgeführt. Es ist auch möglich, dass ein Auslesevorgang durch einen anderen unterbrochen wird und später fortgesetzt wird. Bspw. kann der erste Auslesevorgang zunächst das erste Schattenregister auslesen, dann vom zweiten Auslesevorgang unterbrochen werden und nachdem der zweite Auslesevorgang das zweite Schattenregister und das vierte Schattenregister ausgelesen hat liest der erste Auslesevorgang das dritte Schattenregister aus. Dies ist vorteilhaft, wenn die Daten des zweiten Auslesevorgangs schneller benötigt werden als die Daten des ersten Auslesevorgangs. Falls dem zweiten Messraster nur die erste Variable aber nicht die zweite Variable zugeordnet wird, wird im zweiten Auslesevorgang nur das zweite Schattenregister ausgelesen.
-
4 beschreibt ein alternatives FPGA-Programm 100. Im Folgenden werden nur die Unterschiede zu 1 beschrieben. Die erste Variable 1 wird an den zweiten Logikblock 103 und das erste Schattenregister 2 weitergeleitet. Der Ausgang des ersten Schattenregisters 2 ist mit dem Eingang des zweiten Schattenregisters 3 verbunden. Die Signale des ersten Messrasters und des zweiten Messrasters werden über eine gemeinsame Leitung 10 verteilt. Das Signal des ersten Messrasters auf der gemeinsamen Leitung 10 bewirkt zu einem ersten Zeitpunkt t1, dass die erste Variable im ersten Schattenregister 2 gespeichert wird. Das Signal des zweiten Messrasters auf der gemeinsamen Leitung 10 bewirkt zu einem zweiten Zeitpunkt t2, dass der im ersten Schattenregister 2 gespeicherte Wert im zweiten Schattenregister 3 gespeichert wird und die erste Variable 1 im ersten Schattenregister 2 gespeichert wird. Der zum ersten Zeitpunkt t1 gespeicherte Wert geht also nicht verloren sondern wird in das zweite Schattenregister 3 verschoben und im ersten Schattenregister 2 der aktuelle Wert gespeichert.
-
5 beschreibt ein alternatives FPGA-Programm 100. Im Folgenden werden nur die Unterschiede zu 4 beschrieben. Der zweite Logikblock 103 erzeugt eine zweite Variable 6. Die zweite Variable 6 wird an einen dritten Logikblock 107 und ein drittes Schattenregister 7 weitergeleitet. Der Ausgang des dritten Schattenregisters 7 ist mit dem Eingang des vierten Schattenregisters 8 verbunden. Der dritte Logikblock erzeugt Ausgabedaten, die über den Datenausgang 105 ausgegeben werden. Das Taktsignal des Taktblocks 104 wird auch an den dritten Logikblock geliefert.
-
Das Signal des ersten Messrasters 4 wird in einem Kombinationsblock 106 auf die gemeinsame Leitung 10 gelegt. Das gemeinsame Signal 10 bewirkt zu einem ersten Zeitpunkt t1, dass die erste Variable im ersten Schattenregister 2 gespeichert wird und die zweite Variable 6 im dritten Schattenregister 7 gespeichert wird. Das Signal des zweiten Messrasters 5 wird ebenfalls im Kombinationsblock 106 auf die gemeinsame Leitung 10 gelegt. Das gemeinsame Signal 10 bewirkt zu einem zweiten Zeitpunkt t2, dass der im ersten Schattenregister 2 gespeicherte Wert im zweiten Schattenregister 3 gespeichert wird, die erste Variable 1 im ersten Schattenregister 2 gespeichert wird, der im dritten Schattenregister 7 gespeicherte Wert im vierten Schattenregister 8 gespeichert wird und die zweite Variable 6 im dritten Schattenregister 7 gespeichert wird. Der zum zweiten Zeitpunkt t2 gespeicherte Wert geht also nicht verloren sondern wird in das vierte Schattenregister 8 verschoben und im dritten Schattenregister 7 der aktuelle Wert der zweiten Variablen gespeichert.
-
6 zeigt einen „Stage-Counter“. Ein „Stage-Counter“ 110 ist eine Möglichkeit bei seriell implementierten Schattenregistern wie in den 4 und 5 die Zuordnung der Schattenregister zu den Messrastern festzuhalten. Im „Stage-Counter“ 110 sind ein erster Zähler C1 und ein zweiter Zähler C2 implementiert. Der erste Zähler C1 gibt einen ersten Zählerwert 111 aus und der zweite Zähler C2 gibt einen zweiten Zählerwert 112 aus. Der erste Zählerwert 111 gibt an, in welchem der einer Variablen zugeordneten Schattenregister der zuletzt vom ersten Messraster 4 gespeicherte Wert gespeichert ist. Der zweite Zählerwert 112 gibt an, in welchem einer Variablen zugeordneten Schattenregister der zuletzt vom zweiten Messraster 5 gespeicherte Wert gespeichert ist. Das Signal des ersten Messrasters 4 bewirkt zum ersten Zeitpunkt t1, dass der erste Zähler C1 als ersten Zählerwert 111 „eins“ ausgibt und der zweite Zähler C2 den zweiten Zählerwert 112 um eins erhöht. Der erste Zählerwert 111 gibt damit an, dass die vom ersten Messraster 4 zum ersten Zeitpunkt t1 gespeicherte erste Variable 1 im ersten Schattenregister 2 gespeichert ist und von dort ausgelesen werden kann. Das Signal des zweiten Messrasters 5 bewirkt zum zweiten Zeitpunkt t2, dass der erste Zähler C1 den ersten Zählerwert 111 um eins erhöht und der zweite Zähler C2 als zweiten Zählerwert 112 „eins“ ausgibt. Der erste Zählerwert 111 gibt damit an, dass die vom ersten Messraster 4 zum ersten Zeitpunkt t1 gespeicherte erste Variable 1 im zweiten Schattenregister 3 gespeichert ist und von dort ausgelesen werden kann. Der zweite Zählerwert 112 gibt damit an, dass die vom zweiten Messraster 5 zum zweiten Zeitpunkt t2 gespeicherte erste Variable 1 im ersten Schattenregister 2 gespeichert ist und von dort ausgelesen werden kann. In 5 stellt bezogen auf die zweite Variable 6 das dritte Schattenregister 7 das erste Schattenregister dar und das vierte Schattenregister 8 das zweite Schattenregister dar. Entsprechend sind die Zählerwerte für die zweite Variable zu deuten. Für mehr Messraster werden im „Stage-Counter“ entsprechend mehr Zähler implementiert. Übersteigt ein Zählerwert die Anzahl der für eine Variable implementierten seriellen Schattenregister, so ist der Wert für das entsprechende Messraster verloren gegangen. Es ist daher vorteilhaft eine große Anzahl an Schattenregistern zu implementieren. Bspw. können je Variable doppelt so viele Schattenregister wie Messraster implementiert werden.
-
7 beschreibt ein alternatives FPGA-Programm 100. Im Folgenden werden nur die Unterschiede zu 5 beschrieben. Die Signale des ersten Messrasters 4 und des zweiten Messrasters 5 werden nicht nur an den Kombinationsblock 106 sondern auch an den „Stage-Counter“ 110 weitergeleitet. Der erste Zählerwert 111 und der zweite Zählerwert 112 werden an eine Ausleselogik 113 weitergeleitet. Die Ausleselogik 113 bestimmt welche Schattenregister ausgelesen werden. Die Ausleselogik 113 kann dazu mit dem Readback-Mechanismus verbunden sein oder die Informationen einem anderen Auslesemechanismus zur Verfügung stellen.
-
8a zeigt einen zeitlichen Ablauf eines erfindungsgemäßen Verfahrens. Zu einem Zeitpunkt t1 bewirkt das erste Messraster 4 eine Speicherung der dem ersten Messraster 4 zugeordneten Variablen in einem der jeweiligen Variablen zugeordneten Schattenregister. Während einer ersten Zeitdauer p1 werden die dem ersten Messraster 4 zugeordneten Schattenregister ausgelesen. Innerhalb der ersten Zeitdauer p1 liegt ein zweiter Zeitpunkt t2. Zu dem zweiten Zeitpunkt t2 bewirkt das zweite Messraster 5 eine Speicherung der dem zweiten Messraster 5 zugeordneten Variablen in einem der jeweiligen Variablen zugeordneten Schattenregister. Während einer zweiten Zeitdauer p2 werden die dem zweiten Messraster 5 zugeordneten Schattenregister ausgelesen. Die zweite Zeitdauer p2 liegt hier komplett hinter der ersten Zeitdauer p1.
-
8b zeigt einen alternativen zeitlichen Ablauf eines erfindungsgemäßen Verfahrens. Im Folgenden werden nur die Unterschiede zu 8a beschrieben. Die erste Zeitdauer p1 wird hier unterteilt in einen ersten Abschnitt p1.1 vor der zweiten Zeitdauer p2 und einen zweiten Abschnitt p1.2 hinter der zweiten Zeitdauer p2. Bezogen auf das FPGA-Programm aus 3 kann bspw. zunächst im ersten Abschnitt p1.1 vor der zweiten Zeitdauer p2 das erste Schattenregister 2 ausgelesen werden, in der zweiten Zeitdauer p2 das zweite Schattenregister 3 ausgelesen werden und in dem zweiten Abschnitt p1.2 nach der zweiten Zeitdauer p2 das dritte Schattenregister 7 ausgelesen werden. Bezogen auf das FPGA-Programm 100 aus 1 kann bspw. die erste Variable 1 eine Vielzahl von Bits aufweisen und zum ersten Zeitpunkt t1 in einer Vielzahl von Schattenregistern, die zusammen das erste Schattenregister 2 bilden, gespeichert werden. Im ersten Abschnitt der ersten Zeitdauer p1.1 wird ein Teil des ersten Schattenregisters 2 ausgelesen, in der zweiten Zeitdauer p2 das zweite Schattenregister 3 ausgelesen und im zweiten Abschnitt der ersten Zeitdauer p1.2 der restliche Teil des ersten Schattenregisters 2 ausgelesen. Bezogen auf das FPGA-Programm 100 aus 5 kann bspw. zum ersten Zeitpunkt t1 die erste Variable 1 im ersten Schattenregister 2 und die zweite Variable 6 im dritten Schattenregister 7 gespeichert werden. Im ersten Abschnitt der ersten Zeitdauer p1.1 wird das dritte Schattenregister 7 ausgelesen. Zum zweiten Zeitpunkt t2 wird der Wert des ersten Schattenregister 2 in das zweite Schattenregister 3 verschoben, der des dritten Schattenregisters 7 in das vierte Schattenregister 8 verschoben, die erste Variable im ersten Schattenregister 2 gespeichert und die zweite Variable 6 im dritten Schattenregister 7 gespeichert. Die Zuordnung der Schattenregister zu den Messrastern wird entsprechend aktualisiert. In der zweiten Zeitdauer p2 werden das erste Schattenregister 2 und das dritte Schattenregister 7 ausgelesen. Im zweiten Abschnitt der ersten Zeitdauer p1.2 wird das zweite Schattenregister 3 ausgelesen.
-
Es ist möglich auf einem FPGA mehrere FPGA-Programme 100 gleichzeitig zu betreiben. Für jedes einzelne FPGA-Programm 100 kann unabhängig von den anderen ein erfindungsgemäßes Verfahren genutzt werden. Mehrere FPGA-Programme 100 können sich ein Taktsignal eines Taktblocks 104 teilen oder mit unterschiedlichen Taktsignalen arbeiten. Ein FPGA-Programm 100 kann auch ein Unterprogramm eines größeren FPGA-Programms 100 sein.
-
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
-
- DE 102013101300 A1 [0006]