DE102013101300A1 - Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit - Google Patents

Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit Download PDF

Info

Publication number
DE102013101300A1
DE102013101300A1 DE201310101300 DE102013101300A DE102013101300A1 DE 102013101300 A1 DE102013101300 A1 DE 102013101300A1 DE 201310101300 DE201310101300 DE 201310101300 DE 102013101300 A DE102013101300 A DE 102013101300A DE 102013101300 A1 DE102013101300 A1 DE 102013101300A1
Authority
DE
Germany
Prior art keywords
fpga
signal value
data
configuration
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE201310101300
Other languages
English (en)
Inventor
Heiko KALTE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering GmbH
Original Assignee
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dspace GmbH, Dspace Digital Signal Processing and Control Engineering GmbH filed Critical Dspace GmbH
Priority to DE201310101300 priority Critical patent/DE102013101300A1/de
Priority to CN201480008273.9A priority patent/CN104981807B/zh
Priority to EP14703849.1A priority patent/EP2954440B1/de
Priority to PCT/EP2014/052625 priority patent/WO2014122320A2/de
Priority to JP2015556530A priority patent/JP6436916B2/ja
Publication of DE102013101300A1 publication Critical patent/DE102013101300A1/de
Priority to US14/823,197 priority patent/US10311193B2/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Zugriff auf einen Signalwert eines FPGA (5) zur Laufzeit, umfassend die Schritte Laden einer FPGA Hardware Konfiguration (24) auf den FPGA (5), Ausführen der FPGA Hardware Konfiguration (24) auf dem FPGA (5), Anfordern eines Signalwertes des FPGA (5), Übertragen von Zustandsdaten aus einer funktionalen Ebene (6) des FPGA (5) in einen Konfigurationsspeicher (8) in dessen Konfigurationsebene (7), Auslesen der Zustandsdaten aus dem Konfigurationsspeicher (8) als Rücklesedaten, und Bestimmen des Signalwertes aus den Rücklesedaten. Die Erfindung betrifft außerdem ein Verfahren zum Durchführen eines FPGA Builds basierend auf einem FPGA Modell (20) in einer Hardwarebeschreibungssprache, umfassend die Schritte Erstellen einer FPGA Hardware-Konfiguration (24), Ermitteln von Speicherstellen (9) eines Konfigurationsspeichers (8) für Zustandsdaten wenigstens eines Signalwerts basierend auf der FPGA Hardware-Konfiguration (24), und Erstellen einer Liste mit zur Laufzeit zugreifbaren Signalwerten und den dazu korrespondierenden Speicherstellen (9).

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Zugriff auf einen Signalwert eines 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. Schließlich umfasst die vorliegende Erfindung ein Verfahren zum Durchführen eines FPGA Builds basierend auf einem FPGA Modell in einer Hardwarebeschreibungssprache.
  • 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. Eine solche Erweiterung für einen HiL-Simulator stellt beispielsweise das DS5203-FPGA Board von dSPACE dar. 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 Hardware-Konfiguration 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.
  • In einer CPU-basierenden Echtzeitsimulation wird das Blockschaltbild eines Modells mit Hilfe des Simulink Coders zunächst in C/C++ Quelldateien übersetzt. Diese werden anschließend über einen Compiler in eine ausführbare Applikation übersetzt, die auf einem Rechenknoten mit einem echtzeitfähigen Betriebssystem ausgeführt werden kann. Zusätzlich wird bei dem CPU-Build ein Trace-File erzeugt, welches ein Topologie File mit seiner grafischen Modellierung, beispielsweise in Simulink, darstellt.
  • Die Übersetzung eines Modells in eine CPU-Applikation hat zur Folge, dass die Berechnungen der Simulation sequenziell, in einer festen Schrittweite ausgeführt werden. Ein konsistentes Abbild aller Modellzustände oder Modell-Variablen, wie beispielsweise Daten auf den Signalleitungen oder Ein/Ausgabewerte der Blöcke, ist damit stets im Hauptspeicher des Rechenknoten vorhanden. Durch den direkten Zugang zum Hauptspeicher können die Modell-Variablen in einem Experimentiertool wie bspw. ControlDesk analysiert und/oder manipuliert werden. Ein wahlfreier Schreib-/Lese-Zugriff auf Variablen der HiL-Simulation ist möglich. Anhand des Trace Files können Signalwerte wie z.B. Motor-Drehzahl ausgewählt und durch eine Anzeige ausgeben oder manipuliert werden. Im HiL-Umfeld fasst man diese Vorgehensweise unter den Begriffen ”Messen“ und ”Verstellen“ zusammen.
  • 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 Hardwarebeschreibungssprache, die eine kundenspezifische digitale Schaltung beschreibt. Die Beschreibung der kundenspezifischen Schaltung wird durch einen Syntheseprozess in einen FPGA-Konfigurationsdatenstrom übersetzt.
  • Für einige FPGAs ist es möglich, zu Debug-Zwecken den kompletten Zustand des FPGA einzufrieren und auszulesen. Durch das geschlossene Ein-/Ausgabeverhalten des FPGAs ist es jedoch nicht möglich, analog zum Hauptspeicher eines Rechenknotens beliebig auf Modellzustände zuzugreifen und diese ggf. zu verändern. Jede Modell-Variable, die der Anwender messen oder verstellen möchte, muss durch explizite Modellierung über Signalleitungen an die Schnittstellen des FPGAs geführt werden. Im Anschluss an diese Anpassung muss das Modell neu übersetzt werden, was mehrere Stunden dauern kann. Dieser Umstand kann zu sehr langen Entwicklungszyklen von FPGA-basierten Echtzeitsimulationen führen.
  • Ausgehend von dem oben genannten Stand der Technik liegt der Erfindung somit die Aufgabe zugrunde, ein Verfahren, eine Datenverarbeitungseinrichtung, ein Computerprogrammprodukt sowie ein digitales Speichermedium mit elektronisch auslesbaren Steuersignalen der oben genannten Art anzugeben, welche einen Zugriff auf Modell-Variablen im FPGA zur Laufzeit und eine Verkürzung von iterativen Entwicklungszyklen bei der Erstellung von FPGA-basierten Echtzeitsimulationen ermöglichen.
  • Die Lösung der Aufgabe erfolgt erfindungsgemäß durch die Merkmale der unabhängigen Ansprüche. Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.
  • Erfindungsgemäß ist somit ein Verfahren zum Zugriff auf einen Signalwert eines FPGA zur Laufzeit angegeben, umfassend die Schritte Laden einer FPGA Hardware-Konfiguration auf den FPGA, Ausführen der FPGA Hardware-Konfiguration auf dem FPGA, Anfordern eines Signalwertes des FPGA, Übertragen von Zustandsdaten aus einer funktionalen Ebene des FPGA in einen Konfigurationsspeicher in dessen Konfigurationsebene, Auslesen der Zustandsdaten aus dem Konfigurationsspeicher als Rücklesedaten, und Bestimmen des Signalwertes aus den Rücklesedaten.
  • Erfindungsgemäß ist ferner eine Datenverarbeitungseinrichtung mit einer Prozessoreinheit und einem FPGA angegeben, wobei die Datenverarbeitungseinrichtung zur Durchführung des obigen Verfahrens ausgeführt ist.
  • Erfindungsgemäß ist auch ein Computerprogrammprodukt mit Computer-implementierten Anweisungen, das nach dem Laden und Ausführen in einer geeigneten Datenverarbeitungseinrichtung die Schritte des obigen Verfahrens ausführt, angegeben.
  • Weiterhin ist erfindungsgemäß ein digitales Speichermedium mit elektronisch auslesbaren Steuersignalen angegeben, die so mit einer programmierbaren Datenverarbeitungseinrichtung zusammenwirken können, dass das obige Verfahren auf der Datenverarbeitungseinrichtung ausgeführt wird.
  • Grundidee der vorliegenden Erfindung ist es also, den Zugriff auf den Signalwert des FPGA zur Laufzeit zu ermöglichen, indem während des Betriebs des FPGA Zustandsdaten aus dem FPGA ausgelesen und der Signalwert daraus bestimmt wird. Die Zustandsdaten werden ausgelesen und nach Bedarf kombiniert, wobei strukturelle Änderungen an dem FPGA nicht erforderlich sind. Auch eine Unterbrechung des Betriebs des FPGA ist nicht erforderlich. Somit kann auf Signalwerte des FPGA wahlfrei zugegriffen werden. Der Zugriff auf die Signalwerte kann wie von der Ausführung einer Software bekannt erfolgen, inklusive des Zugriffs über Topologie Files (Trace File) und einer grafischen Modellierung mit Simulink. Signalwerte wie z.B. eine Motor-Drehzahl können entsprechend ausgewählt und angezeigt bzw. manipuliert werden.
  • Vorteilhafterweise sind für die Implementierung des FPGA keine Änderungen erforderlich, sodass der Bedarf an Ressourcen und Performance des FPGA unverändert ist. Entsprechend hat der Zugriff auf den Signalwert kein Einfluss auf den normalen Betrieb, weder in Hinsicht auf die erzeugte FPGA Hardware-Konfiguration noch während der Ausführung. Zustände verschiedener Modellvariablen können konsistent gespeichert werden, um einen Zugriff zu ermöglichen. Ein Zugriff auf gewünschte Signalwerte kann erfolgen, ohne dass eine angepasste FPGA Hardware-Konfiguration erzeugt und in das FPGA übertragen werden muss, wodurch Entwicklungszeiten verkürzt werden können. Einfluss auf verfügbaren Ressourcen und das Echtzeitverhalten des FPGA werden vermieden oder reduziert. Insbesondere können ohne Veränderung der FPGA Hardware-Konfiguration verschiedene Signalwerte aus dem FPGA nach Bedarf ausgelesen werden.
  • Die Konfigurationsebene betrifft eine logische Ebene des FPGA, die zur Initialisierung des FPGA dient. Während eines initialen Konfigurationsprozesses werden die Konfigurationsdaten in den Konfigurationsspeicher geschrieben, wodurch sich die funktionale Ebene im Anschluss wie modelliert verhält. Während des Betriebs können dann z.B. durch einen Trigger alle Registerinhalte der funktionalen Ebene zurück in die Konfigurationsebene gespiegelt werden. Der Inhalt des Konfigurationsspeichers kann anschließend ausgelesen werden, um daraus den Signalwert zu bestimmen. Die Auswahl des Signalwerts kann beliebig während der Laufzeit geändert werden. Bevorzugt erfolgt ein Zugriff auf eine Mehrzahl Signalwerte.
  • Die Rücklesedaten können eine beliebige Dateneinheit des FPGA beinhalten. Die Rücklesedaten können einzelne Registerwerte oder größere Speicherblöcke des FPGA umfassen. Die Speicherblöcke können beispielsweise Readback-Spalten des FPGA sein.
  • Die Reihenfolge des angegebenen Verfahrens kann prinzipiell variieren und ist nicht auf die hier angegebene Reihenfolge beschränkt.
  • Die Datenverarbeitungseinrichtung kann prinzipiell beliebig ausgeführt sein. Das FPGA ist typischerweise als Erweiterungsmodul in der Datenverarbeitungseinrichtung angeordnet oder mit dieser verbunden. Die Datenverarbeitungseinrichtung kann mit einem entfernten Steuerungsrechner über eine Datenverbindung verbunden sein. Besonders bevorzugt erfolgt ein Zugriff auf den Signalwert über eine Applikation auf dem Steuerungsrechner.
  • Die Darstellung des Signalwerts kann als graphische Darstellung erfolgen. Dabei kann der Signalwert vorzugsweise aus einer Liste per „Drag and Drop“ auf dargestellte Instrumente zur Anzeige von Signalwerten gezogen werden.
  • Das Auslesen der Zustandsdaten aus dem Konfigurationsspeicher als Rücklesedaten beinhaltet keine Veränderung der Daten, sondern betrifft nur eine begriffliche Definition.
  • Das Bestimmen des Signalwertes aus den Rücklesedaten kann prinzipiell an beliebiger Stelle erfolgen, beispielsweise in dem FPGA, der CPU der Datenverarbeitungseinrichtung oder dem Steuerungsrechner. Entsprechend können die Zustandsdaten, die Registerdaten oder der Signalwert jeweils wie erforderlich übertragen werden.
  • Ein Zugriff auf den Konfigurationsspeicher des FPGA von außerhalb oder innerhalb des FPGA erfolgt über eine Schnittstelle. Eine übliche Architektur des Konfigurationsspeichers umfasst eine Schnittstelle mit 32 Bit Breite und einer Taktfrequenz von 100 MHz mit einer minimalen Auslesemenge von einem Frame. Damit ist eine Verwendung des Verfahrens im Sinne eines FPGA Debugger oder FPGA Scope mit einem zyklengenauen Zugriff im FPGA Takt mit heutzutage üblichen FPGAs nicht möglich. Ein Frame kann neben Registerwerten Informationen zu einer Look-Up Table sowie zur Multiplexer- bzw. Verdrahtungskonfiguration enthalten. Das Bestimmen des Signalwertes aus den Rücklesedaten umfasst vorzugsweise das Auffinden und Extrahieren von Registerwerten aus einem Frame.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Bestimmens des Signalwertes aus den Rücklesedaten das Abbilden der Rücklesedaten auf wenigstens einen Registerwert. Register stellen Speicher in der funktionalen Ebene dar, deren Daten einfach kopiert und zur Bestimmung des Signalwerts genutzt werden können. Dies ermöglicht die Identifikation der Daten zur Bestimmung des Signalwerts.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Bestimmens des Signalwertes aus den Rücklesedaten das Bestimmen des Signalwerts aus wenigstens einem Registerwert. Die Organisation des Signalwerts in dem wenigstens einen Register kann beliebig sein, weshalb die Registerinhalte verarbeitet werden müssen, um den Signalwert zu bestimmen. Insbesondere kann der Signalwert auf eine Mehrzahl Register verteilt sein, und die Inhalte der Register werden gemeinsam verarbeitet, um den Signalwert zu bestimmen.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Auslesens der Zustandsdaten aus dem Konfigurationsspeicher als Rücklesedaten das Ermitteln von für das Bestimmen des Signalwerts erforderlichen Bereichen des Konfigurationsspeichers und das Auslesen von Zustandsdaten der erforderlichen Bereiche des Konfigurationsspeichers als Rücklesedaten. Auszulesende Bereiche werden zur Laufzeit ermittelt, so dass der Zugriff auf den Konfigurationsspeicher ohne vorherige Anpassungen der FPGA Hardware-Konfiguration erfolgen kann. Durch das Ermitteln der erforderlichen Bereiche kann das Auslesen der Zustandsdaten auf diese Bereiche beschränkt werden, wodurch wenige Daten ausgelesen, übertragen und verarbeitet werden müssen.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Übertragens von Zustandsdaten aus einer funktionalen Ebene des FPGA in einen Konfigurationsspeicher in dessen Konfigurationsebene das Ermitteln von für das Bestimmen des Signalwerts erforderlichen Teilen der Zustandsdaten und das Sichern dieser Teile der Zustandsdaten in seinen Konfigurationsspeicher. Zu Übertragende Bereiche werden zur Laufzeit ermittelt, so dass das Übertragen der Zustandsdaten ohne vorherige Anpassungen der FPGA Hardware-Konfiguration erfolgen kann. Durch das Ermitteln der erforderlichen Bereiche kann das Sichern der Zustandsdaten auf diese Bereiche beschränkt werden, wodurch wenige Daten gesichert werden müssen.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Anforderns eines Signalwertes des FPGA das Bereitstellen einer Liste verfügbarer Signalwerte und die Auswahl eines Signalwerts aus dieser Liste. Die Liste kann prinzipiell zu einem beliebigen Zeitpunkt erstellt werden. Vorzugsweise wird die Liste unter Verwendung eines Modells der FPGA Hardware-Konfiguration erstellt. Besonders bevorzugt ist jedem Signalwert eine eindeutige Identifikationsnummer zugeordnet, über die der Zugriff erfolgt.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren das Setzen eines Signalwertes zur Übertragung an das FPGA, das Bestimmen von Rückschreibedaten aus dem Signalwert, das Schreiben der Rückschreibedaten als Zustandsdaten in den Konfigurationsspeicher des FPGA, und das Übertragen der Zustandsdaten aus dem Konfigurationsspeicher in die funktionale Ebene des FPGA. Es ergibt sich in Analogie zu dem zuvor beschriebenen lesenden Zugriff auf das FPGA ein schreibender Zugriff. Dieser Zugriff erfolgt ebenfalls zur Laufzeit ohne Beeinflussung des FPGA. Die zuvor beschriebenen Details zum lesenden Zugriff auf das FPGA sind jeweils individuell entsprechend für den schreibenden Zugriff anwendbar.
  • Es erfolgt also eine dynamische, partielle Re-Konfiguration des FPGAs, wobei die jeweils relevanten Anteile im FPGA überschrieben werden. Dabei muss beispielsweise ein Simulink Konstant Block auf eine rekonfigurierbare Look-Up Table abgebildet werden. Diese kann anschließend mittels partieller, dynamischer Re-Konfiguration zur Veränderung eines beliebigen Signalwerts genutzt werden.
  • Bei dem Übertragen der Zustandsdaten in die funktionale Ebene des FPGA können die Rückschreibedaten zu dem Signalwert zusätzliche Informationen umfassen. Daher werden vorzugsweise zuerst die Zustandsdaten ausgelesen als Basis für die Rückschreibedaten, und der Signalwert wird in diese Zustandsdaten eingefügt. Damit wird die Datenintegrität des FPGA gewährleistet.
  • Erfindungsgemäß ist weiterhin ein Verfahren zum Durchführen eines FPGA Builds basierend auf einem FPGA Modell in einer Hardwarebeschreibungssprache angegeben, umfassend die Schritte Erstellen einer FPGA Hardware-Konfiguration, Ermitteln von Speicherstellen eines Konfigurationsspeichers für Zustandsdaten wenigstens eines Signalwerts basierend auf der FPGA Hardware-Konfiguration, und Erstellen einer Liste mit zur Laufzeit zugreifbaren Signalwerten und den dazu korrespondierenden Speicherstellen.
  • Die Grundidee dieses Verfahrens ist also, bereits bei der Erstellung einer FPGA Hardware-Konfiguration erforderliche Daten über Signalwerte zu erfassen und derart zu verarbeiten, dass der Signalwert basierend auf erfassten Zustandsdaten zur Laufzeit des FPGA gebildet werden können.
  • Speicherstellen sind vorzugsweise Register des FPGA. Register können im Modell explizit modelliert werden oder beispielsweise durch Blöcke mit Verzögerung implizit modelliert werden. Das Modell wird vorzugsweise graphisch erzeugt.
  • Die Reihenfolge des angegebenen Verfahrens kann prinzipiell variieren und ist nicht auf die hier angegebene Reihenfolge beschränkt. Beispielsweise kann das Erstellen einer Liste mit zur Laufzeit zugreifbaren Signalwerten ausgehend von dem Modell in der Hardwarebeschreibungssprache zu einem früheren Zeitpunkt erfolgen.
  • Vorzugsweise ist das hier angegebene Verfahren zum Durchführen eines FPGA Builds Teil eines Build-Verfahrens für eine Datenverarbeitungseinrichtung mit einem FPGA, wobei die Datenverarbeitungseinrichtung das FPGA umfasst oder damit verbunden ist. Bei diesem Verfahren wird zusätzlich ein Build für die CPU der Datenverarbeitungseinrichtung durchgeführt, wobei in einem CPU Trace File Generator eine Erzeugung eines CPU Trace Files erfolgt. Zusätzlich wird die Liste mit zur Laufzeit zugreifbaren Signalwerten und den dazu korrespondierenden Speicherstellen, die hier als „Logic Allocation File“ bezeichnet ist, in ein maschinenlesbares File umgewandelt. Zusätzlich wird ein Trace File für das FPGA äquivalent zu dem Trace File der CPU erzeugt. In einem weiteren Schritt werden die Trace Files von CPU und FPGA in einem Trace File Merger zusammengefügt. Dadurch kann beispielsweise von einem Steuerungsrechner ein Zugriff auf Signalwerte unabhängig von der Implementierung für die Ausführung in der CPU oder dem FPGA erfolgen.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Erstellens einer Liste mit zugreifbaren Signalwerten und den dazu korrespondierenden Speicherstellen das Ermitteln einer Verknüpfung der Speicherstellen zur Bildung des Signalwerts. Die Liste enthält somit konkrete Angaben, wie ein Signalwert aus Zustandsdaten ermittelt wird.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren den zusätzlichen Schritt des Erzeugens eines FPGA-Codes zum Bestimmen eines Signalwertes, wobei der FPGA-Code das Auslesen der Zustandsdaten aus dem Konfigurationsspeicher als Rücklesedaten und das Bestimmen des Signalwertes aus den Rücklesedaten basierend auf der Liste mit auslesbaren Signalwerten und den dazu korrespondierenden Speicherstellen umfasst. Eine anschließende Verarbeitung der Zustandsdaten zur Bestimmung des Signalwertes kann somit vollständig in dem FPGA durchgeführt werden. Entsprechend ist von dem FPGA nur der bestimmte Signalwert zu Übertragen, wodurch dessen Schnittstelle entlastet wird.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren den zusätzlichen Schritt des Optimierens der FPGA Hardware-Konfiguration mit der Anordnung von Speicherstellen, die Zustandsdaten für einen Signalwert beinhalten, in einer Readback-Spalte des FPGA. Durch die Anordnung in einer Readback-Spalte wird der Zugriff auf die Zustandsdaten für einen Signalwert beschleunigt. Bei einer Anordnung aller Speicherstellen für einen Signalwert innerhalb einer Readback-Spalte kann darauf mit einer Operation zugegriffen werden. Es erfolgt somit eine Sortierung von Speicherstellen vor der Erzeugung der FPGA Hardware-Konfiguration.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren den zusätzlichen Schritt des Optimierens der FPGA Hardware-Konfiguration mit der Anordnung von Speicherstellen, die Zustände für einen Signalwert beinhalten, in benachbarten Bereichen des FPGA. Benachbarte Bereiche können eine einzelne Readback-Spalte des FPGA betreffen, oder eine Mehrzahl von benachbarten Readback-Spalten. Durch die benachbarte Anordnung wird der Zugriff auf die Speicherstellen beschleunigt. Bei einer Anordnung von Speicherstellen für zwei Signalwerte innerhalb einer Readback-Spalte kann auf beide mit einer Operation zugegriffen werden. Entsprechendes gilt für schreibende Zugriffe, wobei nur Signalwerte in das FPGA geschrieben werden können, die in einer Speicherstelle zumindest temporär darin vorliegen.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren den zusätzlichen Schritt des Hinzufügens von Speicherstellen an Ausgängen von logischen Blöcken zur Bereitstellung von Zustandsdaten. Die Speicherstellen, üblicherweise Register, ermöglichen das Auslesen von Zustandsdaten, um daraus Signalwerte zu bestimmen. Bei erhöhter Anzahl von verfügbaren Zustandsdaten kann ein Zugriff auf eine erhöhte Anzahl Signalwerte erfolgen.
  • In vorteilhafter Ausgestaltung der Erfindung ist das FPGA ein Xilinx FPGA. Das Xilinx FPGA bietet neben der Möglichkeit der auch wiederholten Konfiguration des FPGAs ebenso die Möglichkeit des partiellen Auslesens und Konfigurierens des FPGAs während des Betriebs.
  • Nachfolgend wird die Erfindung unter Bezugnahme auf die anliegende Zeichnung anhand bevorzugter Ausführungsformen näher erläutert.
  • Es zeigen
  • 1 eine schematische Darstellung eines Datenverarbeitungssystems mit einem Steuerungsrechner und einem Echtzeitsystem,
  • 2 eine Detailansicht eines FPGA des Echtzeitsystems aus 1,
  • 3 ein Diagramm eines Verfahrens zur Durchführung eines Builds für das Echtzeitsystem aus 1,
  • 4 eine Detailansicht eines FPGA Builds aus 3,
  • 5 eine Detailansicht der Organisation des Konfigurationsspeichers des FPGA aus 2 in Readback-Spalten,
  • 6 eine Schematische Darstellung von relevanten Speicherinhalten in Readback-Spalten des Konfigurationsspeicher, wobei die linke Darstellung eine Verteilung ohne Optimierung, die mittlere Darstellung eine Optimierung mit einer Konzentration von relevanten Speicherstellen in Readback-Spalten und die rechte Darstellung eine Optimierung mit einer benachbarten Anordnung von relevanten Readback-Spalten zeigt,
  • 7 die Modellhafte Repräsentation aller für das Verfahren wichtigen Informationen, wie Hierarchie des FPGA Models, Bitbreiten und Binärpunkt Positionen der Signale, sowie die Adressinformationen der einzelnen Register im FPGA Konfigurationsspeicher,
  • 8 eine Verteilung der Ergebnisse des Build Verfahrens aus 3 auf die verschiedenen Komponenten des Datenverarbeitungssystems aus 1.
  • Die 1 zeigt einen erfindungsgemäßen Aufbau eines Datenverarbeitungssystems 1 mit einem Steuerungsrechner 2, hier auch als Host-System gekennzeichnet, und einem Echtzeitsystem 3. Das Echtzeitsystem 3 ist mit dem Steuerungsrechner 2 über eine nicht explizit dargestellte Netzwerkverbindung verbunden.
  • Das Echtzeitsystem 3 umfasst einem Rechenknoten 4, auch als CN gekennzeichnet, mit einer nicht dargestellten CPU sowie ein FPGA 5, das in diesem Ausführungsbeispiel ein Xilinx FPGA ist. Das Echtzeitsystem 3 ist hier eine beliebige Datenverarbeitungseinrichtung. Das FPGA 5 ist schematisch in 2 gezeigt und umfasst eine funktionale Ebene 6 und eine Konfigurationsebene 7. In der Konfigurationsebene 7 ist ein Konfigurationsspeicher 8 mit einer Mehrzahl Speicherstellen 9 angeordnet. Die Konfigurationsebene 7 ist eine logische Ebene des FPGA 5 zu dessen Initialisierung. Während eines initialen Konfigurationsprozesses werden Konfigurationsdaten in den Konfigurationsspeicher 8 geschrieben und in die funktionale Ebene 6 übertragen. Die Speicherstellen 9 entsprechen Registern des FPGA 5.
  • Das FPGA 5 ist auf einem FPGA-Board 10 angeordnet und über eine Schnittstelle 11 mit einem Controller 12 für den Zugriff auf die Schnittstelle 11 verbunden. Die Schnittstelle 11 hat hier eine Breite von 32 Bit bei einer Taktfrequenz von 100 MHz mit einer minimalen Auslesemenge von einem Frame. Ein Frame kann neben Registerwerten Informationen zu einer Look-Up Table sowie zur Multiplexer- bzw. Verdrahtungskonfiguration enthalten. Auf dem FPGA-Board 10 ist ein FPGA Variable Mapping File 13 für den Zugriff durch den Controller 12 gespeichert.
  • Für die Nutzung des Echtzeitsystems 3 wird wie im Folgenden unter Bezug auf 3 beschrieben ein Build durchgeführt. Als Ausgangsbasis für den Build dienen ein FPGA Modell 20 sowie ein CPU-Modell 21, die beide mit Simulink erzeugt wurden. Aus dem FPGA Modell 20 werden in einem FPGA Build 22 über VHDL, einer verbreiteten Hardwarebeschreibungssprache, ein Logic Allocation File 23 und eine FPGA Hardware-Konfiguration 24 erzeugt. In dem Logic Allocation File 24 wird eine Liste mit Speicherstellen 9 des Konfigurationsspeichers 8 für Zustandsdaten von zur Laufzeit in dem FPGA 5 zugreifbaren Signalwerten in dem gespeichert. Auch werden Verknüpfungen der Speicherstellen 9 zur Bildung der Signalwerte ermittelt und in dem Logic Allocation File 24 gespeichert, so dass ausgehend von dem Logic Allocation File 24 ein Signalwert aus Zustandsdaten bestimmt werden kann.
  • Aus dem Logic Allocation File 24 wird das bereits zuvor genannte maschinenlesbare FPGA Variable Mapping File 13 erzeugt, welches die Zuordnungen von Speicherstellen 9 zu Signalwerten in einer maschinenlesbaren Form enthält. Aus dem CPU Modell 21 wird in einem CPU Build 26 eine auf der CPU des Echzeitsystems 3 ausführbare Applikation 27 erstellt. In einem CPU Trace File Generator 28 wird außerdem ausgehend von dem CPU Build 26 ein CPU Trace File 29 erzeugt. Analog wird in einem FPGA Trace File Generator 30 ein FPGA Trace File 31 erzeugt. In einem weiteren Schritt werden die Trace Files 29, 31 in einem Trace File Merger 32 zu einem vollständigen Trace File 33 zusammengefügt.
  • Das Build Verfahren liefert als Gesamtergebnis eine Download Applikation 34 für das Echtzeitsystem 3 mit der Applikation 27, dem vollständigen Trace File 33, dem FPGA Variable Mapping File 13 und der FPGA Hardware-Konfiguration 24.
  • Der FPGA Build 22 ist im Detail in 4 gezeigt. Als Eingabe erhält der FPGA Build 22 ein Blockschaltbild 40 eines FPGA-Subsystems, welches eine Kombination von primitiven Blöcken wie Addition, Multiplikation, usw. umfassen. Das Ergebnis des Prozesses ist eine Model.ini-Datei 41, die den fertigen Bitstrom sowie eine Interfacebeschreibung enthält. Die Interfacebeschreibung enthält eine Liste aller Schnittstellen, die im FPGA-Subsystem instanziiert sind. Über diese Beschreibung können zu den FPGA-Schnittstellen korrespondierende CPU-Schnittstellen erzeugt werden. Im ersten Schritt des FPGA Build 22 wird aus dem Blockschaltbild 40 des FPGA-Subsystems durch Xilinx System Generator (XSG), eine HDL-Beschreibung 42 generiert, die in diesem Ausführungsbeispiel eine VHDL-Beschreibung ist. Diese Beschreibung wird anschließend durch ein Synthesewerkzeug in eine Netzliste übersetzt.
  • Die Netzliste des Simulink-Modells wird mit den übrigen für die Readback-Funktionalität notwendigen Readback-Framework-Komponenten 46 zu einer vollständigen Netzliste 47 zusammengeführt. Das gesamte Design wird anschließend durch einen Implementierungsprozess in einen Bitstrom übersetzt und in der Model.ini-Datei 41 abgelegt.
  • Zwischen den Blockausgängen des Simulink Blockschaltbilds und den FPGA-Komponenten (D-FlipFlops) bzw. den zu den FPGA-Komponenten gehörigen Speicherstellen 9 im Konfigurationsspeicher 8 wird eine Beziehung hergestellt. Diese Abbildung wird sukzessive während des FPGA Builds 22 aufgebaut bzw. verfeinert und vom FPGA Trace File Generator 30 in einem FPGA Trace File 31 abgelegt.
  • Wird das Blockschaltbild eines FPGA-Subsystems durch den XSG in eine HDL übersetzt, so sind diese beiden Beschreibungen im Bezug auf ihre Struktur ähnlich. Dies lässt sich nutzen, um eine direkte Relation zwischen z.B. einem Blockausgang eines Simulink-Blocks und Ports einer HDL-Entity zu erstellen.
  • Das Verfahren umfasst zusätzlich das Optimieren der FPGA Hardware-Konfiguration 24 mit der Anordnung von Speicherstellen 9, die Zustandsdaten für einen Signalwert beinhalten, in einer Readback-Spalte des FPGA 5. Die Organisation des Konfigurationsspeichers 8 in Readback-Spalten ist in 5 gezeigt. Ein Frame umfasst eine 1-Bit breite und 1312-Bit lange Spalte im Konfigurationsspeicher 8 und erstreckt sich über eine CLB-Spalte der funktionalen Ebene 6. Eine Korrelation zwischen einem Bit innerhalb eines Frames und dem funktionalen Element, das es konfiguriert, kann durch die Xilinx Tools ermittelt werden. Zum Bestimmen eines Signalwerts ist somit nur ein Teil eines Frames von Interesse. Durch die Anordnung in einer Readback-Spalte wird der Zugriff auf die Zustandsdaten für einen Signalwert beschleunigt. Bei einer Anordnung aller Speicherstellen 9 für einen Signalwert innerhalb einer Readback-Spalte kann darauf mit einer Operation zugegriffen werden.
  • Wie in 6, linke Abbildung, gezeigt ist, sind relevante Readback-Spalten zunächst über den gesamten Konfigurationsspeicher 8 verteilt. Durch ein Optimieren der FPGA Hardware-Konfiguration 24 werden von Speicherstellen 9, die Zustände für einen Signalwert beinhalten, in benachbarten Bereichen des FPGA 5 angeordnet. Benachbarte Bereiche können eine einzelne Readback-Spalte des FPGA 5 betreffen, oder eine Mehrzahl von benachbarten Readback-Spalten. Durch die benachbarte Anordnung wird der Zugriff auf die Speicherstellen 9 beschleunigt. Durch eine Anordnung von Speicherstellen 9 für zwei Signalwerte innerhalb einer Readback-Spalte wird auf beide mit einer Operation zugegriffen. 6, mittlere Abbildung, zeigt eine Optimierung mit einer Konzentration von relevanten Speicherstellen 9 in einer reduzierten Anzahl von Readback-Spalten. Gemäß 6, rechte Abbildung, sind in einer weiteren Optimierung die relevanten Readback-Spalten zusätzlich benachbart in dem FPGA 5 angeordnet.
  • Eine Modellhafte Repräsentation aller für das Verfahren wichtigen Informationen, wie Hierarchie des FPGA Models, Bitbreiten und Binärpunkt Positionen der Signale, sowie die Adressinformationen der einzelnen Register im FPGA Konfigurationsspeicher ist in 7 dargestellt.
  • Ein Element vom Typ FPGASubsystem bildet die Wurzel jeder Readback-Modell Instanz. Das FPGA-Subsystem enthält in Anlehnung an die Modell-Hierarchie von Simulink rekursiv weitere Subsystem-Instanzen. Ein Subsystem kann in diesem Kontext sowohl als primitiver Block (z.B. Addierer), als auch als Simulink-Subsystem ausgeführt sein. Ein Name eines Subsystems bzw. Blocks und der Name der dazugehörigen HDL-Entity werden in den Eigenschaften name bzw. hdlInstance der Subsystem-Klasse gespeichert.
  • Jedes Subsystem kann mehrere Signale umfassen, welche Signale bzw. I/O-Ports im Simulink-Modell darstellen. Jedes Signal bekommt über die id-Eigenschaft einen eindeutigen Bezeichner. Da die Richtung der Signale (In/Out) keine Rolle spielt und Redundanzen bei der Modellierung zu vermeiden sind, stellt die Signal-Klasse per Konvention die Ausgänge der Blöcke bzw. Subsysteme im Simulink-Modell dar. Teilen sich mehre Subsysteme die gleichen Signale, kann über eine Instanz der SignalReference-Klasse auf Signale anderer Subsystem-Instanzen referenziert werden.
  • Ein Signal kann durch die Synthese mit einem Register assoziiert sein. Diese Assoziation findet sich ebenfalls zwischen der Signal- und Register-Klasse wieder. Die Beziehung zwischen einem Register und den Frames, in denen die Initialwerte des Registers gespeichert werden, wird über die entsprechenden Klassen modelliert. Die Eigenschaften eines Signal werden über die Properties-Klasse modelliert. Für das Zurücklesen und das anschließende Aufbereiten der Signale sind vor allem die Eigenschaften BinaryPoint, DataType und Width relevant.
  • Ein Register Element ist über die Frame-Klasse mit mehreren Bits assoziiert. Das Register verfügt, ebenso wie das Signal, über eine eigene width-Eigenschaft, da die Breite eines Signals und die Breite des dazugehörigen Registers unter Umständen variieren kann. Ein Bit gibt über die Bitposition (pos) zunächst an, um welches Bit des Registers es sich handelt. Außerdem enthält eine Bit-Instanz Informationen darüber, in welchem Wort (framewordOffset) innerhalb des Frames sich das Register-Bit befindet und mit welcher Bitmaske (mask) sich der Wert des Bits aus dem Framewort ausmaskieren lässt.
  • Das Readback-Modell ist in einer XML-Datei gespeichert. So kann das Modell toolübergreifend bearbeitet werden. Das Modell wird durch die Validierung gegen ein XSD-Schema syntaktisch und strukturell korrekt gehalten.
  • Das Verfahren umfasst den zusätzlichen Schritt des Erzeugens eines FPGA-Codes 44 als Readback Applikation zum Bestimmen eines Signalwertes, wobei der FPGA-Code 44 das Auslesen der Zustandsdaten aus dem Konfigurationsspeicher 8 als Rücklesedaten und das Bestimmen des Signalwertes aus den Rücklesedaten basierend auf der dem FPGA Variable Mapping File 13 umfasst.
  • 8 zeigt die Verteilung der Ergebnisse des Build Verfahrens auf die verschiedenen Komponenten. Aus dem Simulink Modell 20, 21 wird ein Build mit einem FPGA Build 22 durchgeführt. Es wird eine FPGA Hardware-Konfiguration 24 erzeugt und auf das FPGA 5 geladen. Die Applikation 27 wird auf den Rechenknoten 4 geladen, und das vollständige Tracefile 33 wird an den Steuerungsrechner 2 übertragen.
  • Im Betrieb werden die FPGA Hardware Konfiguration 24 auf dem FPGA 5 gestartet und ausgeführt. Die Applikation 27 wird auf dem Rechenknoten 4 gestartet und ausgeführt. Auf dem Steuerungsrechner 2 wird eine Steuerungssoftware 50 gestartet, die in diesem Ausführungsbeispiel eine dSPACE ControlDesk Software ist. Das ControlDesk 50 kommuniziert mit dem Echtzeitsystem 3 über den Rechenknoten 4, wie in 1 gezeigt ist.
  • Zur Anzeige eines Signalwertes des FPGA 5 während der Laufzeit kann dieser über das ControlDesk 50 angefordert werden. Der Zugriff auf verschiedene Signalwerte erfolgt über das vollständige Trace File 33 und eine grafische Modellierung mit Simulink. Die Darstellung des Signalwerts erfolgt als graphische Darstellung, wobei der Signalwert aus einer Liste per „Drag and Drop“ auf dargestellte Instrumente zur Anzeige von Signalwerten gezogen wird. Der Signalwert aus der Liste wird anhand einer eindeutigen Identifikationsnummer identifiziert.
  • Der Signalwert wird von dem ControlDesk 50 von dem Rechenknoten 4 angefordert. Dazu ist auf dem Rechenknoten 4 ein Data Acquisition Service 51 implementiert, der die Anforderung von dem ControlDesk 50 empfängt. Von dem Data Acquisition Service 51 wird der Signalwert von dem Controller 12 für den FPGA 5 angefordert. Dieser initiiert während des Betriebs des FPGA 5 das Übertragen von Zustandsdaten aus der funktionalen Ebene 6 des FPGA 5 in seinen Konfigurationsspeicher 8. Während des Betriebs werden so durch einen Trigger alle Registerinhalte der funktionalen Ebene 6 in die Konfigurationsebene 7 gespiegelt. In einer alternativen Ausführungsform werden aus dem FPGA Variable Mapping File 13 für das Bestimmen des Signalwerts erforderliche Teile der Zustandsdaten ermittelt und nur diese Teile in den Konfigurationsspeicher 8 gesichert.
  • Weiter werden in dem FPGA 5 von der Readback Applikation 44 Zustandsdaten aus dem Konfigurationsspeicher 8 als Rücklesedaten ausgelesen. Die ausgelesenen Rücklesedaten umfassen hier einen oder mehrere Frames, d.h. eine oder mehrere Readback-Spalten des FPGA 5. Dabei werden zunächst Readback-Spalten, die für das Bestimmen des Signalwerts erforderlich sind, ermittelt, und nur diese Readback-Spalten ausgelesen. Diese Informationen über die erforderlichen Readback-Spalten sind über das FPGA Variable Mapping File 13 zu ermitteln.
  • Basierend auf den Rücklesedaten wird in dem FPGA 5 der Signalwert bestimmt. Dazu werden Registerwerte aus den Frames gesucht und extrahiert. Die Informationen ergeben sich aus dem FPGA Variable Mapping File 13. Es erfolgt das Abbilden der Rücklesedaten auf wenigstens einen Registerwert. Dabei wird der Signalwert aus Zustandsdaten mehrerer Register gebildet soweit erforderlich. Entsprechend werden die Inhalte der Register gemäß des FPGA Variable Mapping Files 13 gemeinsam verarbeitet, um den Signalwert zu bestimmen.
  • Der so bestimmte Signalwert wird über die Schnittstelle 11 des FPGA 5 an den Controller 12 übertragen, der den Signalwert über den Data Acquisition Service 51 des Rechenknotens 4 an das ContolDesk 50 des Steuerungsrechners 2 überträgt.
  • In Analogie zu dem vorhergehend beschriebenen lesenden Zugriff auf einen Signalwert des FPGA 5 ist auch ein schreibender Zugriff möglich. Dabei wird ein Signalwert zur Übertragung an das FPGA 5 ausgewählt. Aus dem Signalwert werden Rückschreibedaten bestimmt, die als Zustandsdaten in den Konfigurationsspeicher 8 des FPGA 5 übertragen werden. Aus dem Konfigurationsspeicher 8 werden die Zustandsdaten in die funktionale Ebene 6 des FPGA 5 übertragen. Die zuvor beschriebenen Details zum lesenden Zugriff auf das FPGA 5 sind jeweils individuell entsprechend für den schreibenden Zugriff anwendbar.
  • Das Verfahren ist als Computerprogrammprodukt mit Computerimplementierten Anweisungen implementiert, das nach dem Laden und Ausführen in dem Echtzeitsystem 3 die Schritte des obigen Verfahrens ausführt.
  • Ein digitales Speichermedium stellt elektronisch auslesbare Steuersignale bereit, die so mit dem Echtzeitsystem 3 zusammenwirken, dass das obige Verfahren auf dem Echtzeitsystem 3 ausgeführt wird.
  • Bezugszeichenliste
  • 1
    Datenverarbeitungssystem
    2
    Steuerungsrechner
    3
    Echtzeitsystem, Datenverarbeitungseinrichtung
    4
    Rechenknoten
    5
    FPGA
    6
    funktionale Ebene
    7
    Konfigurationsebene
    8
    Konfigurationsspeicher
    9
    Speicherstellen
    10
    FPGA-Board
    11
    Schnittstelle
    12
    Controller
    13
    FPGA Variable Mapping File
    20
    FPGA Modell
    21
    CPU-Modell
    22
    FPGA Build
    23
    Logic Allocation File
    24
    FPGA Hardware-Konfiguration
    26
    CPU Build
    27
    Applikation
    28
    CPU Trace File Generator
    29
    CPU Trace File
    30
    FPGA Trace File Generator
    31
    FPGA Trace File
    32
    Trace File Merger
    33
    vollständiges Trace File
    40
    Blockschaltbild
    41
    Model.ini-Datei
    42
    HDL-Beschreibung
    43
    Readback File Generation
    44
    FPGA-Code, Readback Applikation
    46
    Readback-Framework-Komponenten
    47
    Netzliste
    50
    Steuerungssoftware, ControlDesk
    51
    Data Acquisition Service

Claims (17)

  1. Verfahren zum Zugriff auf einen Signalwert eines FPGA (5) zur Laufzeit, umfassend die Schritte Laden einer FPGA Hardware Konfiguration (24) auf den FPGA (5), Ausführen der FPGA Hardware Konfiguration (24) auf dem FPGA (5), Anfordern eines Signalwertes des FPGA (5), Übertragen von Zustandsdaten aus einer funktionalen Ebene (6) des FPGA (5) in einen Konfigurationsspeicher (8) in dessen Konfigurationsebene (7), Auslesen der Zustandsdaten aus dem Konfigurationsspeicher (8) als Rücklesedaten, und Bestimmen des Signalwertes aus den Rücklesedaten.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Bestimmens des Signalwertes aus den Rücklesedaten das Abbilden der Rücklesedaten auf wenigstens einen Registerwert umfasst.
  3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, dass der Schritt des Bestimmens des Signalwertes aus den Rücklesedaten das Bestimmen des Signalwerts aus wenigstens einem Registerwert umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Auslesens der Zustandsdaten aus dem Konfigurationsspeicher (8) als Rücklesedaten das Ermitteln von für das Bestimmen des Signalwerts erforderlichen Bereichen des Konfigurationsspeichers (8) und das Auslesen von Zustandsdaten der erforderlichen Bereiche des Konfigurationsspeichers (8) als Rücklesedaten umfasst.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Übertragens von Zustandsdaten aus einer funktionalen Ebene (6) des FPGA (5) in einen Konfigurationsspeicher (8) in dessen Konfigurationsebene (7) das Ermitteln von für das Bestimmen des Signalwerts erforderlichen Teilen der Zustandsdaten und das Sichern dieser Teile der Zustandsdaten in seinen Konfigurationsspeicher (8) umfasst.
  6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Anforderns eines Signalwertes des FPGA (5) das Bereitstellen einer Liste verfügbarer Signalwerte und die Auswahl eines Signalwerts aus dieser Liste umfasst.
  7. Verfahren nach einem der vorhergehenden Ansprüche, umfassend die zusätzlichen Schritte Setzen eines Signalwertes zur Übertragung an das FPGA (5), Bestimmen von Rückschreibedaten aus dem Signalwert, Schreiben der Rückschreibedaten als Zustandsdaten in den Konfigurationsspeicher (8) des FPGA (5), und Übertragen der Zustandsdaten aus dem Konfigurationsspeicher (8) in die funktionale Ebene (6) des FPGA (5).
  8. Verfahren zum Durchführen eines FPGA Builds basierend auf einem FPGA Modell (20) in einer Hardwarebeschreibungssprache, umfassend die Schritte Erstellen einer FPGA Hardware-Konfiguration (24), Ermitteln von Speicherstellen (9) eines Konfigurationsspeichers (8) für Zustandsdaten wenigstens eines Signalwerts basierend auf der FPGA Hardware-Konfiguration (24), Erstellen einer Liste mit zur Laufzeit zugreifbaren Signalwerten und den dazu korrespondierenden Speicherstellen (9).
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass der Schritt des Erstellens einer Liste mit auslesbaren Signalwerten und den dazu korrespondierenden Speicherstellen (9) das Ermitteln einer Verknüpfung der Speicherstellen (9) zur Bildung des Signalwerts umfasst.
  10. Verfahren nach dem vorhergehenden Anspruch 9 umfassend den zusätzlichen Schritt des Erzeugens eines FPGA-Codes (44) zum Bestimmen eines Signalwertes, wobei der FPGA-Code (44) das Auslesen der Zustandsdaten aus dem Konfigurationsspeicher (8) als Rücklesedaten und das Bestimmen des Signalwertes aus den Rücklesedaten basierend auf der Liste mit auslesbaren Signalwerten und den dazu korrespondierenden Speicherstellen (9) umfasst.
  11. Verfahren nach einem der vorhergehenden Ansprüche 8 bis 10 umfassend den zusätzlichen Schritt des Optimierens der FPGA Hardware-Konfiguration mit der Anordnung von Speicherstellen (9), die Zustandsdaten für einen Signalwert beinhalten, in einer Readback-Spalte des FPGA (5).
  12. Verfahren nach einem der vorhergehenden Ansprüche 8 bis 11 umfassend den zusätzlichen Schritt des Optimierens der FPGA Hardware-Konfiguration mit der Anordnung von Speicherstellen (9), die Zustände für einen Signalwert beinhalten, in benachbarten Bereichen des FPGA (5).
  13. Verfahren nach einem der vorhergehenden Ansprüche 8 bis 12 umfassend den zusätzlichen Schritt des Hinzufügens von Speicherstellen (9) an Ausgängen von logischen Blöcken zur Bereitstellung von Zustandsdaten.
  14. Datenverarbeitungseinrichtung (3) mit einer Prozessoreinheit und einem FPGA, wobei die Datenverarbeitungseinrichtung (3) zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 7 ausgeführt ist.
  15. Datenverarbeitungseinrichtung (3) nach dem vorhergehenden Anspruch 13, dadurch gekennzeichnet, dass das FPGA (5) ein Xilinx FPGA ist.
  16. Computerprogrammprodukt mit Computer-implementierten Anweisungen, das nach dem Laden und Ausführen in einer geeigneten Datenverarbeitungseinrichtung (3) die Schritte des Verfahrens nach einem der Ansprüche 1 bis 7 ausführt.
  17. Digitales Speichermedium mit elektronisch auslesbaren Steuersignalen, die so mit einer programmierbaren Datenverarbeitungseinrichtung (3) zusammenwirken können, dass das Verfahren nach einem der Ansprüche 1 bis 7 auf der Datenverarbeitungseinrichtung (3) ausgeführt wird.
DE201310101300 2013-02-11 2013-02-11 Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit Withdrawn DE102013101300A1 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE201310101300 DE102013101300A1 (de) 2013-02-11 2013-02-11 Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
CN201480008273.9A CN104981807B (zh) 2013-02-11 2014-02-11 在运行中改变fpga的信号值
EP14703849.1A EP2954440B1 (de) 2013-02-11 2014-02-11 Verändern eines signalwerts eines fpga zur laufzeit
PCT/EP2014/052625 WO2014122320A2 (de) 2013-02-11 2014-02-11 Verändern eines signalwerts eines fpga zur laufzeit
JP2015556530A JP6436916B2 (ja) 2013-02-11 2014-02-11 ランタイムにfpgaの信号値を変更するための方法、当該方法を実施するためのデータ処理装置、コンピュータプログラムおよびディジタル記憶媒体
US14/823,197 US10311193B2 (en) 2013-02-11 2015-08-11 Alteration of a signal value for an FPGA at runtime

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201310101300 DE102013101300A1 (de) 2013-02-11 2013-02-11 Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit

Publications (1)

Publication Number Publication Date
DE102013101300A1 true DE102013101300A1 (de) 2014-08-14

Family

ID=51226152

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201310101300 Withdrawn DE102013101300A1 (de) 2013-02-11 2013-02-11 Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit

Country Status (1)

Country Link
DE (1) DE102013101300A1 (de)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628085B1 (en) 2015-11-03 2017-04-18 Dspace Digital Signal Processing And Control Engineering Gmbh Method and device for accelerated access to signals of a programmable logic device
DE102017126094A1 (de) 2017-11-08 2019-05-09 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zum Auslesen von Variablen aus einem FPGA
CN111123084A (zh) * 2019-12-11 2020-05-08 中国电子科技集团公司第二十研究所 一种基于tcl语言的数字电路快速测试方法
CN112214373A (zh) * 2020-09-17 2021-01-12 上海金仕达软件科技有限公司 硬件监控方法、装置及电子设备
CN112272023A (zh) * 2020-10-23 2021-01-26 成都航天通信设备有限责任公司 一种基于fpga信号处理通道选择方法
CN115267685A (zh) * 2022-09-23 2022-11-01 江苏万邦微电子有限公司 内置微波信号状态数据回读的tr组件波控模块

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019416A1 (en) * 2007-07-12 2009-01-15 Chugh Mukesh K Customizable synthesis of tunable parameters for code generation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019416A1 (en) * 2007-07-12 2009-01-15 Chugh Mukesh K Customizable synthesis of tunable parameters for code generation

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Development System Reference Guide; XILINX; S. 1, 48, 333 und 482. Archiviert in http://web.archive.org/web/20120131155631/http://www.xilinx.com/itp/xilinx10/books/docs/dev/dev.pdf am 31.01.2012 [abgerufen am 13.09.2013] *
MONMASSON, Eric, et al. FPGAs in industrial control applications. Industrial Informatics, IEEE Transactions on, 2011, 7. Jg., Nr. 2, S. 224-243. *
PAIZ, Carlos, et al. FPGA-in-the-loop-simulations for dynamically reconfigurable applications. In: Field-Programmable Technology, 2009. FPT 2009. International Conference on. IEEE, 2009. S. 372-375. *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628085B1 (en) 2015-11-03 2017-04-18 Dspace Digital Signal Processing And Control Engineering Gmbh Method and device for accelerated access to signals of a programmable logic device
DE102015121128A1 (de) 2015-11-03 2017-05-04 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins
DE102015121128B4 (de) * 2015-11-03 2018-01-04 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins
DE102017126094A1 (de) 2017-11-08 2019-05-09 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zum Auslesen von Variablen aus einem FPGA
CN111123084A (zh) * 2019-12-11 2020-05-08 中国电子科技集团公司第二十研究所 一种基于tcl语言的数字电路快速测试方法
CN112214373A (zh) * 2020-09-17 2021-01-12 上海金仕达软件科技有限公司 硬件监控方法、装置及电子设备
CN112214373B (zh) * 2020-09-17 2022-04-12 上海金仕达软件科技有限公司 硬件监控方法、装置及电子设备
CN112272023A (zh) * 2020-10-23 2021-01-26 成都航天通信设备有限责任公司 一种基于fpga信号处理通道选择方法
CN112272023B (zh) * 2020-10-23 2023-06-20 成都航天通信设备有限责任公司 一种基于fpga信号处理通道选择方法
CN115267685A (zh) * 2022-09-23 2022-11-01 江苏万邦微电子有限公司 内置微波信号状态数据回读的tr组件波控模块

Similar Documents

Publication Publication Date Title
EP2765528B1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
EP2954440B1 (de) Verändern eines signalwerts eines fpga zur laufzeit
DE102009039231B4 (de) Einzeldurchgang-Kachelung
DE102013101300A1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE102019003851A1 (de) Systeme und Verfahren zum automatischen Realisieren von Modellen zu Co-Simulation
EP2799983B1 (de) Flexible Aufteilung der I/O Kanäle einer Hardware Komponente
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE69634227T2 (de) Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
EP3244326B1 (de) Verfahren zum erstellen einer fpga-netzliste
EP2963541B1 (de) Implementierung einer Konstanten in FPGA-Code
DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
DE102011103861A1 (de) Funktionseinheit, Simulationssystem und Verfahren zur Simulation
EP2899652B1 (de) Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE102020118022A1 (de) Erzeugen verschiedener traces für grafikprozessorcode
WO2023117215A1 (de) Verfahren und anordnung zur partiellen neuprogrammierung einer programmierbaren gatteranordnung
DE102013114508B4 (de) Blockbasierte Signalverarbeitung
EP3001318A1 (de) Bestimmung von Signalen für Readback aus FPGA
DE102017108219A1 (de) Steuersystem und Verfahren des Speicherzugriffs
EP3142032A1 (de) Verfahren zum ändern der konfiguration eines programmierbaren logikbausteins
DE10243598A1 (de) Verfahren und Vorrichtung zur funktionalen Verifikation von integrierten Schaltungen
DE102004044976A1 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur
DE102022203284A1 (de) Prozessor zur Durchführung einer vorbestimmten Rechenoperation und Recheneinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R120 Application withdrawn or ip right abandoned