DE102019107817A1 - Verfahren zur Simulation eines dynamischen Systems - Google Patents

Verfahren zur Simulation eines dynamischen Systems Download PDF

Info

Publication number
DE102019107817A1
DE102019107817A1 DE102019107817.2A DE102019107817A DE102019107817A1 DE 102019107817 A1 DE102019107817 A1 DE 102019107817A1 DE 102019107817 A DE102019107817 A DE 102019107817A DE 102019107817 A1 DE102019107817 A1 DE 102019107817A1
Authority
DE
Germany
Prior art keywords
blocks
matrix
programmable logic
computer
target
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.)
Pending
Application number
DE102019107817.2A
Other languages
English (en)
Inventor
Vivien Chandra
Philipp Grunert
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
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 DE102019107817.2A priority Critical patent/DE102019107817A1/de
Priority to US16/827,796 priority patent/US11062071B2/en
Publication of DE102019107817A1 publication Critical patent/DE102019107817A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Evolutionary Computation (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

In einem Verfahren zur rechnergestützten Simulation einer elektrischen Schaltung, deren Verhalten durch mindestens eine Systemgleichung beschrieben wird, umfasst der Rechner einen Prozessor und einen programmierbaren Logikbaustein. Der programmierbare Logikbaustein ist dazu konfiguriert, zyklisch mindestens eine Eingangssignal zu empfangen, mindestens eine Matrixmultiplikation zu berechnen und mindestens ein Ausgangssignal auszugeben, wobei die Konfiguration des programmierbaren Logikbausteins eine parallele Multiplikation von Blöcken aus mindestens zwei Elementen der Matrix mit mindestens einem von dem Eingangssignal abhängigen Element eines Vektors und einen Addierbaum für die Multiplikationsergebnisse umfasst. Aufeinanderfolgende Blöcke der Matrix werden in einer Pipeline zwischengespeichert und sequentiell bearbeitet, wobei basierend auf der Anzahl und/oder den Werten von Parametern der mindestens einen Systemgleichung eine Sollanzahl von Blöcken und eine Solladdierstufe ermittelt wird, wobei die Bearbeitung von Blöcken für den aktuellen Zyklus beendet wird, sobald die Sollanzahl von Blöcken und die Solladdierstufe erreicht ist, und wobei mindestens ein Ausgangssignal basierend auf dem Resultat der Solladdierstufe ermittelt wird. Die Erfindung betrifft ferner ein Computersystem und einen computerlesbaren Datenspeicher.

Description

  • Die Erfindung betrifft ein Verfahren zur Simulation eines dynamischen Systems, ein Computersystem sowie ein computerlesbares Speichermedium.
  • Moderne Produkte wie Steuergeräte werden vielfach mit Hilfe von computergestützten Simulationen eines dynamischen Systems entwickelt. Einerseits kann die Strecke eines Reglers simuliert werden, um eine Komponente wie ein Steuergerät vor der Fertigstellung des Gesamtprodukts in einer Hardware-in-the-Loop-Simulation zu testen. Andererseits kann im Rapid-Control-Prototyping ein Prototypen-Steuergerät in der realen Umgebung für die beschleunigte Entwicklung eines Regelalgorithmus eingesetzt werden. In beiden Fällen werden spezielle Echtzeitrechner eingesetzt, die eine Reaktion innerhalb einer vorgegebenen Maximalzeit gewährleisten. Häufig ist die Systemdynamik begrenzt, so dass beispielsweise eine maximale Latenz im Bereich von Millisekunden angemessen ist und ein Arbeitsrechner mit einem üblichen Prozessor eingesetzt werden kann.
  • Für elektrische und elektronische Systeme, wie Gleichspannungskonverter, Inverter, Smart Grids oder die Ansteuerung eines Elektromotors, kann die maximal zulässige Latenz aber im Bereich von Mikrosekunden liegen. In solchen Fällen wird vorzugsweise ein Arbeitsrechner mit einem programmierbaren Logikbaustein, insbesondere einem Field Programmable Gate Array (FPGA) eingesetzt. Hierbei kann es auch vorgesehen sein, dass die Ansteuerung bzw. eine übergeordnete langsamere Regelung durch einen Rechenknoten mit einem Prozessor erfolgt, der Daten mit dem programmierbaren Logikbaustein austauscht. Ein FPGA wird durch das Einlesen eines Bitstroms konfiguriert, welcher direkt die Verschaltung der einzelnen Logikelemente beeinflusst und somit die ausgeführte Schaltung vorgibt. Dies hat den Nachteil, dass das Erstellen einer Konfiguration aufwändig ist und eine sehr zeitaufwändige Synthese und Implementierung erfordert. Es ist daher zweckmäßig, wenn eine feste FPGA-Konfiguration vorgegeben wird, und Anpassungen nur an der Programmierung des Rechenknotens erfolgen.
  • Ein Verfahren zur Simulation elektrische Schaltungen ist in dem Dokument „A Method for Fast Time-Domain Simulation of Networks with Switches“ von Pejovic und Maksimovic, IEEE Transactions on power electronics, vol. 9 no. 4 July 1994, offenbart. Die Lösung der Systemgleichungen kann in Form einer Matrixmultiplikation erfolgen, wobei Anzahl und Werte der einzelnen Elemente der Matrix abhängig von den Eigenschaften der konkreten Schaltung sind. Aus dem Stand der Technik sind verschiedene Ansätze für eine effiziente Matrixmultiplikation bekannt, die in der Regel von einer spärlich besetzten („sparse“) Matrix ausgehen. Die bei der Simulation elektrischer Schaltungen auftretenden Matrizen fallen allerdings häufig nicht in diese Kategorie, so dass die entsprechenden Verfahren ineffizient werden.
  • Vor diesem Hintergrund besteht die Aufgabe der Erfindung darin, ein Verfahren und eine Vorrichtung zur Simulation eines dynamischen Systems anzugeben, welche den Stand der Technik weiterbilden. Insbesondere wäre eine dynamische Verringerung der Zykluszeit bzw. Schrittweite für kleine Systeme wünschenswert.
  • Diese Aufgabe wird durch ein Verfahren zur rechnergestützten Simulation eines dynamischen Systems mit den Merkmalen von Anspruch 1 und ein Computersystem mit den Merkmalen von Anspruch 8 gelöst. Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Unteransprüchen.
  • Erfindungsgemäß wird also ein Verfahren zur rechnergestützten Simulation oder Regelung eines dynamischen Systems, insbesondere einer elektrischen Schaltung, bereitgestellt, bei dem das Verhalten durch mindestens eine Systemgleichung beschrieben wird und der Rechner einen Prozessor und einen programmierbaren Logikbaustein umfasst. Der programmierbare Logikbaustein ist dazu konfiguriert, zyklisch mindestens eine Eingangssignal zu empfangen, mindestens eine Matrixmultiplikation zu berechnen und mindestens ein Ausgangssignal auszugeben. Die Konfiguration des programmierbaren Logikbausteins umfasst eine parallele Multiplikation von Blöcken aus mindestens zwei Elementen der Matrix mit mindestens einem von dem Eingangssignal abhängigen Element eines Vektors und einen Addierbaum für die Multiplikationsergebnisse, wobei aufeinanderfolgende Blöcke der Matrix in einer Pipeline zwischengespeichert und sequentiell bearbeitet werden. Basierend auf der Anzahl und/oder den Werten von Parametern der mindestens einen Systemgleichung werden eine Sollanzahl von Blöcken und eine Solladdierstufe ermittelt, wobei der programmierbare Logikbaustein die Bearbeitung von Blöcken für den aktuellen Zyklus beendet, sobald die Sollanzahl von Blöcken und die Solladdierstufe erreicht ist, und mindestens ein Ausgangssignal basierend auf dem Resultat der Solladdierstufe ermittelt.
  • Vorteilhafterweise ermöglicht das erfindungsgemäße Verfahren eine dynamische Anpassung der Zykluszeit bzw. eine Reduktion der Schrittweite bei der Simulation von kleinen elektrischen Schaltungen. Hierbei wird ausgenutzt, dass die Matrix der Systemgleichung(en) je nach Anzahl von Bauteilen viele Nullen enthält, die unberücksichtigt bleiben können. Dabei kann die Konfiguration des programmierbaren Logikbausteins fest vorgegeben sein und ist somit für beliebige Matrizen bis zu vorgegebenen Maximaldimensionen einsetzbar.
  • Vorzugsweise wird die Systemgleichung über ein grafisches Modell vorgegeben, wobei mindestens zwei Elemente der Matrix anhand der Systemgleichung und/oder des grafischen Modells festgelegt werden. Der Nutzer kann beispielsweise ein Diagramm der zu simulierenden elektrischen Schaltung zeichnen und Schaltungsparameter angeben. Die Elemente der Matrix und somit auch die Sollanzahl von Blöcken sowie die Solladdierstufe werden anhand einer automatischen Analyse des Modells nach an sich bekannten Verfahren ermittelt. Durch die grafische Darstellung wird ein hoher Nutzerkomfort bereitgestellt.
  • Bevorzugt ist der Datentyp des Eingangssignals und/oder der Datentyp des Ausgangssignals und/oder der Datentyp der Elemente der Matrix ein Fließkomma-Typ, wie insbesondere Double. Das erfindungsgemäße Verfahren ist unabhängig vom Datentyp anwendbar und nicht auf hinsichtlich Genauigkeit und Skalierung problematische Festkommatypen beschränkt.
  • In einer bevorzugten Ausführungsform wird das Erreichen der Sollanzahl von Blöcken und/oder die Solladdierstufe anhand eines Abbruchsignals erkannt. Die Konfiguration ist vorzugsweise in verschiedenen Funktionsblöcken strukturiert, und das Abbruchsignal wird dann zwischen einzelnen Funktionsblöcken der Konfiguration übermittelt. Beispielsweise kann der Addierbaum einen eigenständigen Funktionsblock darstellen.
  • In einer besonders bevorzugten Ausführungsform sind die Sollanzahl von Blöcken und/oder die Solladdierstufe und/oder ein Größenparameter in einem internen Speicher des programmierbaren Logikbausteins hinterlegt, und mindestens ein Funktionsblock erzeugt das Abbruchsignal nach Maßgabe des oder der hinterlegten Werten.
  • Die Erfindung betrifft ferner ein Computersystem umfassend einen Bedienrechner mit einer Mensch-Maschine-Schnittstelle und einen Arbeitsrechner, wobei der Arbeitsrechner einen Prozessor sowie einen programmierbaren Logikbaustein umfasst und dazu eingerichtet ist, ein erfindungsgemäßes Verfahren auszuführen.
  • Weiterhin betrifft die Erfindung ein computerlesbaren Speichermedium, auf dem eine Konfiguration hinterlegt ist, die einen programmierbaren Logikbaustein dazu konfiguriert, zyklisch mindestens ein Eingangssignal zu empfangen, mindestens eine Matrixmultiplikation zu berechnen und mindestens ein Ausgangssignal auszugeben. Die Konfiguration umfasst eine parallele Multiplikation von Blöcken aus mindestens zwei Elementen der Matrix mit mindestens einem von dem Eingangssignal abhängigen Element eines Vektors und einen Addierbaum für die Multiplikationsergebnisse, wobei aufeinanderfolgende Blöcke der Matrix in einer Pipeline zwischengespeichert und sequentiell bearbeitet werden. Der programmierbare Logikbaustein ist ferner dazu konfiguriert bzw. eingerichtet, mindestens einen Größenparameter zu empfangen, nach Maßgabe des Größenparameters eine Sollanzahl von Blöcken und eine Solladdierstufe zu ermitteln, die Bearbeitung von Blöcken für den aktuellen Zyklus zu beenden, sobald die Sollanzahl von Blöcken und die Solladdierstufe erreicht ist, und mindestens ein Ausgangssignal basierend auf dem Resultat der Solladdierstufe zu ermitteln.
  • Bevorzugt ist der programmierbare Logikbaustein dazu konfiguriert, die Elemente der Matrix und/oder den Größenparameter und/oder die Sollanzahl von Blöcken und/oder die Solladdierstufe in einem internen Speicher zu hinterlegen.
  • In einer bevorzugten Ausführungsform umfasst das computerlesbare Speichermedium mindestens einen nichtflüchtigen Speicherbaustein, der elektrisch mit einem programmierbaren Logikbaustein verbunden ist.
  • Die Erfindung wird nachfolgend unter Bezugnahme auf die Zeichnungen näher erläutert. Hierbei werden gleichartige Teile mit identischen Bezeichnungen beschriftet. Die dargestellten Ausführungsformen sind stark schematisiert, d.h. die Abstände und die Abmessungen sind nicht maßstäblich und weisen, sofern nicht anders angegeben, auch keine ableitbaren geometrischen Relationen zueinander auf.
  • Darin zeigt:
    • 1 eine bevorzugte Ausführungsform eines Bedienrechners,
    • 2 eine bevorzugte Ausführungsform eines Arbeitsrechners,
    • 3 eine schematische Darstellung einer Matrixmultiplikation,
    • 4 eine schematische Darstellung einer Matrixmultiplikation für eine teilweise befüllte Matrix,
    • 5 eine schematische Darstellung einer FPGA-Konfiguration für eine Matrixmultiplikation gemäß der Erfindung,
    • 6 eine hardwarenahe Darstellung des Pipelinings für eine Matrixmultiplikation gemäß der Erfindung,
    • 7 eine schematische Darstellung einer blockweisen Berechnung mit Pipelining und Abbruchmöglichkeit,
    • 8 eine schematische Darstellung eines Addierbaums mit Abbruchmöglichkeit,
    • 9 ein erstes Beispiel einer zu simulierenden Schaltung, und
    • 10 ein zweites Beispiel einer zu simulierenden Schaltung.
  • 1 zeigt eine bevorzugte Ausführungsform eines Bedienrechners PC. Dieser weist einen Prozessor CPU, der insbesondere als Mehrkernprozessor realisiert sein kann, einen Arbeitsspeicher RAM und einen Buscontroller BC auf. Bevorzugt ist der Bedienrechner PC dazu ausgelegt, von einem Nutzer direkt manuell bedient zu werden, wobei über eine Grafikkarte GPU ein Monitor DIS und über eine Peripherieschnittstelle HMI eine Tastatur KEY und eine Maus MOU angeschlossen sind. Prinzipiell könnte der Bedienrechner PC auch ein Touch-Interface aufweisen. Der Bedienrechner umfasst weiterhin einen nichtflüchtigen Datenspeicher HDD, der insbesondere als Festplatte und/oder Solid State Disk ausgeführt sein kann, sowie eine Schnittstelle NET, insbesondere eine Netzwerkschnittstelle.
  • Über die Schnittstelle NET können weitere Rechner, wie insbesondere ein Arbeitsrechner ES angeschlossen werden. Prinzipiell können ein oder mehrere beliebige Schnittstellen, insbesondere drahtgebundene Schnittstellen, an dem Bedienrechner PC vorhanden und jeweils für die Verbindung mit weiteren Rechnern einsetzbar sein. Zweckmäßigerweise kann eine Netzwerkschnittstelle nach dem Ethernet-Standard verwendet werden, wobei zumindest die physikalische Schicht standardkonform ausgeführt ist; eine oder mehrere höhere Protokollschichten können auch proprietär bzw. an den Prozessrechner angepasst implementiert sein. Die Schnittstelle NET kann auch drahtlos ausgeführt sein, wie insbesondere als WLAN-Schnittstelle oder nach einem Standard wie Bluetooth. Hierbei kann es sich auch um eine Mobilfunkverbindung wie LTE handeln, wobei vorzugsweise die ausgetauschten Daten verschlüsselt sind. Es ist vorteilhaft, wenn zumindest eine Schnittstelle des Bedienrechners als Standard-Ethernet-Schnittstelle ausgeführt ist, so dass weitere Rechner einfach mit dem Bedienrechner PC verbunden werden können.
  • Der Bedienrechner PC kann einen gesicherten Datencontainer SEC aufweisen, was die Verwendung lizenzierter Anwendungen auf dem Bedienrechner erleichtert, aber auch die Verwendung des Bedienrechners als Lizenzserver für den Arbeitsrechner ermöglicht. Der gesicherte Datencontainer SEC kann beispielsweise in Form eines Dongles realisiert sein, der insbesondere mit einer Peripherieschnittstelle verbunden ist. Alternativ kann es auch vorgesehen sein, einen gesicherten Datencontainer SEC als Bauteil fest in dem Bedienrechner zu integrieren oder in Form einer Datei auf dem nichtflüchtigen Datenspeicher HDD zu hinterlegen.
  • In 2 ist ein eine bevorzugte Ausführungsform eines Arbeitsrechners ES dargestellt. Dieser umfasst einen Rechenknoten CN, der über eine Netzwerkschnittstelle NET mit einem Bedienrechner PC verbunden ist. Prinzipiell muss die Verbindung nur während einer Anpassung der Konfiguration des Prozessrechners ES bestehen, vorzugsweise besteht sie dauerhaft. Der Rechenknoten CN weist mindestens einen Prozessor CPU, insbesondere einen Mehrkernprozessor, oder mehrere Prozessoren, einen Arbeitsspeicher RAM und einen nichtflüchtigen Speicher NVM auf, auf dem vorzugsweise ein Betriebssystem und/oder ein Bootloader hinterlegt sind. Über einen Hochgeschwindigkeitsbus SBC bzw. einen entsprechenden Controller sind mindestens ein Logikboard FPGA und eine Geräteschnittstelle DEV mit dem Rechenknoten verbunden. Das Logikboard FPGA umfasst einen programmierbaren Logikbaustein, der gemäß der vorliegenden Erfindung konfiguriert werden kann. Es kann auch vorgesehen sein, dass der Arbeitsrechner ES mehrere Logikboards FPGA bzw. mehrere programmierbare Logikbausteine auf einem Logikboard aufweist. Über die Geräteschnittstelle DEV können eine Vielzahl von Modulen angeschlossen werden, wie eine Fehlersimulationsschaltung FIU, die angeschlossene Geräte mit definierten elektrischen Fehlern beaufschlagt, oder Schnittstellenkarten IOC, die einen oder mehrere analoge oder digitale I/O-Kanäle bereitstellen.
  • 3 zeigt schematisch eine Matrixmultiplikation. Dargestellt ist eine Matrix der Dimension 60×23, welche mit einem Vektor der Höhe 23 multipliziert wird, wobei jede Zeile der Matrix mit dem Vektor multipliziert und anschließend die Werte addiert werden. Im allgemeinen Fall müssen alle Elemente der Matrix berücksichtigt werden, da vorab nicht klar ist, ob eines oder mehrere der Elemente Null sind; mit anderen Worten handelt es sich bei allen Elementen um für die Berechnung des Ergebnisses notwendige Daten, was durch die Markierung mit „X“ bzw. eine Graufärbung angedeutet ist.
  • Bei der Umsetzung der Matrixmultiplikation auf einem FPGA kann man zur Reduktion der Berechnungszeit die Einteilung der Matrix in Blöcke verwenden. Beispielsweise kann eine Vielzahl von Zeilen (oder auch ein Teil einer Zeile) zu einem Block zusammengefasst werden, wobei die Elemente des Blocks gemeinsam bzw. parallel verarbeitet werden. Eine Parallelverarbeitung möglichst vieler Elemente verringert die Anzahl der benötigten Takte, erfordert aber größere Flächen auf dem FPGA. Je nach FPGA-Baustein bzw. Anzahl verfügbarer Logikelemente ist die praktisch nutzbare Blockgröße beschränkt. Aufeinanderfolgende Blöcke werden sequentiell bearbeitet, wobei mittels Pipelining eine beschleunigte Abarbeitung bzw. eine möglichst geringe Latenz erreicht werden kann. Die Addition der Werte erfolgt zweckmäßigerweise durch die Struktur eines Addierbaums. Ein Addierbaum weist eine große Anzahl paralleler Addierelemente einer ersten Stufe auf, von denen jeweils zwei mit einem Addierelement einer zweiten Stufe verbunden sind. Jeweils zwei Addierelemente der zweiten Stufe sind mit einem Addierelement der dritten Stufe verbunden, und diese Struktur wiederholt solange in weiteren Stufen, bis alle Additionsergebnisse in einem Addierelement der höchsten Stufe zusammenkommen. Der Ausgangswert dieses Addierelements gibt somit die Summe über alle Eingangswerte der Addierelemente der ersten Stufe an.
  • In 4 ist eine Matrixmultiplikation für eine teilweise befüllte Matrix schematisch dargestellt. Entsprechend zur vorherigen Figur hat die Matrix die Dimension 60×23, wobei jedoch nur eine Teilmatrix der Dimension 15×8 Elemente mit zu beachtenden Werten enthält; die unteren 45 Zeilen und die hinteren 15 Spalten sind mit Nullen befüllt und können unberücksichtigt bleiben. Es ist daher zweckmäßig, nur für die ersten 5 Blöcke aus je 3 Zeilen eine Multiplikation durchzuführen, und auch nur einen Teil des Addierbaums auszuführen. Dies kann beispielsweise mit Hilfe von Abbruchsignalen erfolgen, wobei ein Abbruchsignal ausgegeben wird, wenn die Grenze zwischen notwendigen Daten und überflüssigen Nullen erreicht ist.
  • 5 zeigt eine schematische Darstellung einer FPGA-Konfiguration für eine Matrixmultiplikation gemäß der Erfindung, die in Funktionsblöcken organisiert ist: Einen Matrixspeicher, der die für die Berechnungen benötigten Matrizen speichert, einen Funktionsblock zur Matrixmultiplikation und einen Addierbaum. Der Matrixspeicher ist zur Übertragung von Blockdaten („BLOCK DATA“, also Blöcken aus Elementen der Matrix mit dem Matrixmultiplikations-Funktionsblock verbunden. Wenn die notwendigen Daten übertragen sind, wird ein Abbruchsignal an den folgenden Funktionsblock übertragen; hierfür ist der „DONE“-Ausgang des Matrixspeichers mit einem „START“-Eingang des Matrixmultiplikations-Funktionsblocks verbunden. Das Abbruchsignal kann auch als Trigger des nachfolgenden Funktionsblocks dienen. Der Matrixmultiplikations-Funktionsblock weist einen weiteren Eingang „VECTOR DATA“ auf, über den die Daten des zu multiplizierenden Vektors empfangen werden. Über einen „DATA OUT“- Ausgang bzw. einen „DONE“-Ausgang ist der Matrixmultiplikations-Funktionsblock mit einem „DATA IN“-Eingang bzw. einem START-Eingang des Addierbaums verbunden. Diese dienen zum Übertragen der zu addierenden Daten und dem Anzeigen, sobald alle notwendigen Daten übertragen wurden und die Addition begonnen werden kann.
  • Für die Berechnung eines Blockes werden die notwendigen Matrixwerte zunächst aus dem Speicher (Matrixspeicher) gelesen und zusammen mit den Vektordaten (Eingangs- und Initialisierungswerte) für die Multiplikation bereitgestellt. Die Werte werden alle parallel und innerhalb eines Taktes ausgelesen. Bei der Erstellung der Konfiguration kann beispielsweise das ARRAY_PARTITION - Pragma in VIVADO HLS (einer hochsprachigen Entwicklungsumgebung für FPGA-Konfigurationen) genutzt werden, um den Speicher entsprechend zu konfigurieren. Damit können auch alle notwendigen Multiplikationsoperationen der Werte eines Blockes parallel stattfinden. Für die abschließende Addition wird ein Addierbaum genutzt. Zur effizienten Berechnung mehrerer Blöcke kann ein Pipelining genutzt werden, so dass nach jedem Takt die Berechnung für einen neuen Block gestartet werden kann.
  • In einer Ausführungsform können zweckmäßigerweise die großen Funktionsblöcke Matrixspeicher, Matrixmultiplikation und Addierbaum in VIVADO HLS realisiert werden, und die Ansteuerung des Abbruchmechanismus kann bevorzugt über eine selbstprogrammierte Logikschaltung in XSG stattfinden. Die Funktionsblöcke können mittels einer in VIVADO HLS vorhandenen Pragma-Funktionalität für Pipelining eingerichtet werden, indem das Pragma „PIPELINE“ zum Einbau zusätzlicher Registerstufen angegeben wird; in 6 ist ein detailliertes Beispiel von für das Zwischenspeichern notwendiger Daten eingefügten Registern „INPUT REGISTER“, „OUTPUT REGISTER“ dargestellt. Beispielsweise für den Matrixspeicher wird die notwendige Speicheradresse zunächst in ein Register gespeichert und dort zum Laden der Werte verwendet. Die so ausgelesenen Werte werden in ein Ausgangsregister gespeichert und für den nächsten Schritt (hier Multiplikation) bereitgestellt. Dies schafft eine Entkoppelung der einzelnen Schritte voneinander und ermöglicht es, die Verarbeitung des zweiten Blockes zu starten, bevor der erste Block abgeschlossen ist. So können aufeinanderfolgende Matrixblöcke mit einem Zeitabstand von nur einem Takt verarbeitet und der Durchsatz optimiert werden.
  • In 6 ist ein hardwarenahes Schema des Pipelinings für eine Matrixmultiplikation gemäß der Erfindung dargestellt. Die Ausführung findet im Detail wie folgt statt: Beim Auslesen aus dem Speicher („BRAM (Memory Load)“) wird die benötigte Adresse zunächst in ein Register eingelesen („INPUT REGISTER (READ)“), um anschließend den Wert zu laden und auf die Ausgangsregister zu schreiben („OUTPUT REGISTER (WRITE)“). In der Phase der Multiplikation werden diese Werte erneut in ein Register zwischengespeichert („INPUT REGISTER (READ)“), um sie danach über ein DSP-Element („DSP48E1 (MULT)“) zu multiplizieren. Das Resultat wird wieder in ein Ausgangsregister geschrieben („OUTPUT REGISTER (WRITE)“) und so für die Addition bereitgestellt. Auch die einzelnen Stufen des Addierbaums folgen einem entsprechenden Schema aus Lesen der Eingabewerte aus einem Register („INPUT REGISTER (READ)“), Durchführen der Berechnung in einem DSP-Element („DSP48E1 (ADD)“) und Schreiben des Ausgabewerts in ein Register („OUTPUT REGISTER (WRITE)“). In der Darstellung ist jeweils nur ein DSP-Element pro Stufe angegeben; praktisch können mehrere DSP-Elemente pro Rechenoperation für jedes Element der Zeile (bzw. des Blocks) erforderlich sein. In Abhängigkeit von der Anzahl von Elementen je Zeile (bzw. Block) können auch mehr als die zwei dargestellten Addierstufen erforderlich sein.
  • In der unteren Hälfte des Schemas ist die sequentielle Übertragung von Daten aufeinanderfolgender Blöcke (Bl. 1 bis Bl. 20) gegen ein Taktsignal (CLK) dargestellt. Durch das Pipelining kann direkt nach dem Einlesen der Daten für den ersten Block mit dem Einlesen der Daten für den zweiten Block begonnen werden. Der weitere Ablauf entspricht dem für die Daten des ersten Blocks.
  • 7 zeigt eine schematische Darstellung einer blockweisen Berechnung mit Pipelining und Abbruchmöglichkeit: In dem dargestellten Beispiel umfasst ein Block 3 Zeilen, was hier durch 3 untereinanderliegende Kästchen dargestellt ist. Das Einlesen der Daten aus dem Speicher, deren Multiplikation und Addition können für die Daten einer Zeile bzw. eines Blocks parallel ausgeführt werden. Jeder Multiplikation folgt eine Addition, die durch einen Addierbaum aus mehreren Stufen realisiert wird. Ein Multiplikations-Kästchen wie beispielsweise „Mult 1“ beinhaltet alle Multiplikationen einer Zeile mit dem Vektor, und ein Additionskästchen „Add 1“ umfasst ein Addierbaum, der alle Werte dieser Zeile aufaddiert. Die Blöcke werden bevorzugt gepipelined ausgelesen, wobei über ein Eingangssignal geregelt werden kann, wie viele Blöcke aus dem Speicher gelesen werden sollen. Dieses Signal kann zweckmäßigerweise gleichzeitig als Abbruchsignal in Zeilenrichtung dienen.
  • In 8 ist ein Schema eines Addierbaums mit Abbruchmöglichkeit dargestellt, der die Werte einer Zeile (bzw. eines Blocks) aufaddiert. Die Anzahl benötigter Stufen ist von der Anzahl von Elementen in einem Block (bzw. einer Zeile) abhängig. Bei einer kleineren Anzahl an Spalten liegt das Ergebnis bereits zu einem früheren Zeitpunkt vor, weil sich das Ergebnis in den weiteren Addierstufen nicht ändert (die jeweils nur weitere Nullen addieren). Die Addierstufen des Addierbaumes können vorzugsweise über VIVADO HLS implementiert sein. Die Verbindung zwischen allen Addierstufen wird gemäß einer bevorzugten Ausführungsform in XSG realisiert. Dabei wird ein Done-Signal nach jeder Addierstufe implementiert, um zu signalisieren, dass eine Addierstufe mit der Berechnung fertig ist. Je nach Anzahl benötigter Spalten ändert sich die Anzahl an Addierstufen, die für die Berechnung notwendig sind. Als Abbruchkriterium in Spaltenrichtung kann die Ausgabe eines Done-Signals durch die vorbestimmte erforderliche Addierstufe dienen (insofern wäre das Done-Signal auch das Abbruchsignal).
  • 9 zeigt ein erstes Beispiel einer zu simulierenden Schaltung. Hierbei handelt es sich um einen Single-Phase Three Level Converter, der in realen Anwendung aus dem Bereich der Leistungselektronik zum Einsatz kommt; dieser soll im Folgenden als Grundlage zur näheren Erläuterung des hier vorgestellten Verfahrens dienen. Mit Hilfe des Ansatzes Fixed Nodal Approach (FNA) wird aus der oberen Schaltung eine Matrix mit den Dimensionen 60×23 erzeugt, welche die Dynamik und Ausgänge der Schaltung beschreibt. Zur Berechnung der Ausgänge erfolgt eine Multiplikation der Matrix mit einem Vektor, die die Eingangswerte und Initialisierungswerte enthält. Auf Basis der Matrixdimension 60×23 wird ein FPGA-Build generiert. Dieser kann im Weiteren auch für alle anderen Schaltungen verwendet werden, die kleiner oder gleich der Maximaldimensionen ist.
  • In 10 ist ein zweites Beispiel einer zu simulierenden Schaltung dargestellt. Diese Schaltung zum Entladen und Laden eines Kondensators ist ein Beispiel für eine kleinere Schaltung, die mit dem erfindungsgemäßen Verfahren mit kürzeren Zykluszeiten simuliert werden kann. Aus dieser Schaltung kann automatisiert eine kleinere Matrix mit den Dimensionen 15x8 erzeugt, welche mit derselben FPGA-Konfiguration berechnet werden kann.
  • Um den Einfluss des erfindungsgemäßen Verfahrens zu verdeutlichen, wurden einige Simulationen mit einem programmierbaren Logikbaustein, einem Xilinx Kintex-7 410T, durchgeführt. Die folgende Tabelle zeigt beispielhaft, welche Verbesserungen in der Zykluszeit nach dem erfindungsgemäßen Verfahren erreicht werden können, wenn dieselbe FPGA-Konfiguration für eine Simulation der größeren und der kleineren Schaltung verwendet werden:
    Art #Zeilen #Spalten #Blöcke #Stufen Takte
    Maximale Dimension 60 x 23
    alt 60 23 60 5 79
    15 8 60 5 79
    neu 60 23 20 5 39
    15 8 5 3 16
    Maximale Dimension 300 x 150
    alt 300 150 300 8 331
    15 8 300 8 331
    neu 300 150 100 8 131
    15 8 5 3 16
  • Mit „alt“ ist hierbei eine Berechnung nach dem Stand der Technik bezeichnet: Ausgehend von einer fixen Matrixdimension von 60×23 dauert die Berechnung für die gesamte Matrix genauso lang wie nur für einen kleinen Teil mit den Dimensionen 15×8, nämlich 79 Takte. Mit „neu“ ist hierbei eine Berechnung mit paralleler Bearbeitung von Blöcken und einem Abbrechen nach der benötigten Addierstufe bezeichnet: Durch die alleinige Einteilung der Matrix in Blöcke werden nur noch 39 Takte benötigt, der Zeitaufwand also etwa halbiert. Die Reduzierung der zu berechnenden Anteile aufgrund der Abbruchkriterien reduziert die Zykluszeit weiter auf 16 Takte. Somit wird bei einer Konfiguration mit einer fixen Maximalen Dimension von 60×23 für die kleinere Matrix der Dimension 15x8 die benötigte Zeit auf 20% der bisherigen Zeit („alt“) verringert.
  • Bei noch größeren Matrixdimensionen ist der Performance-Zuwachs noch deutlicher zu erkennen, wie am Beispiel einer Matrix mit den Dimensionen 300×150 zu erkennen. Eine blockweise Parallelverarbeitung für Blöcke aus 3 Zeilen alleine verringert die Zykluszeit auf 40% des Ausgangswerts. Durch das Abbrechen der Berechnungen anhand der benötigten Addierstufe bzw. eines Abbruchsignals kann der Zeitbedarf hier auf unter 10% der bisherigen Zeit („alt“) verringert werden.
  • Die für die Berechnung benötigten Takte können über die Formel # Takte = A + ( # Bl o ¨ cke 1 ) + B * # Addierstufen
    Figure DE102019107817A1_0001
    ermittelt werden, wobei A und B Konstanten sind. Die Konstanten können vom Typ des programmierbaren Logikbausteins und ggfs. der Implementierung abhängen; im gezeigten Beispiel ist A=4 und B=4. Vorzugsweise umfasst ein Simulationsverfahren ein automatisches Einstellen der Zykluszeit anhand der benötigten Takte. Somit erlaubt es die vorliegende Erfindung kleinere Schaltungen mit deutlich reduzierten Zykluszeiten zu simulieren, ohne dass jeweils eine spezialisierte FPGA-Konfiguration erzeugt werden muss.

Claims (10)

  1. Verfahren zur rechnergestützten Simulation oder Regelung eines dynamischen Systems, insbesondere einer elektrischen Schaltung, wobei das Verhalten durch mindestens eine Systemgleichung beschrieben wird, wobei der Rechner einen Prozessor und einen programmierbaren Logikbaustein umfasst, wobei der programmierbare Logikbaustein dazu konfiguriert ist, zyklisch mindestens ein Eingangssignal zu empfangen, mindestens eine Matrixmultiplikation zu berechnen und mindestens ein Ausgangssignal auszugeben, wobei die Konfiguration des programmierbaren Logikbausteins eine parallele Multiplikation von Blöcken aus mindestens zwei Elementen der Matrix mit mindestens einem von dem Eingangssignal abhängigen Element eines Vektors und einen Addierbaum für die Multiplikationsergebnisse umfasst, wobei aufeinanderfolgende Blöcke der Matrix in einer Pipeline zwischengespeichert und sequentiell bearbeitet werden, wobei basierend auf der Anzahl und/oder den Werten von Parametern der mindestens einen Systemgleichung eine Sollanzahl von Blöcken und eine Solladdierstufe ermittelt wird, wobei die Bearbeitung von Blöcken für den aktuellen Zyklus beendet wird, sobald die Sollanzahl von Blöcken und die Solladdierstufe erreicht ist, und wobei mindestens ein Ausgangssignal basierend auf dem Resultat der Solladdierstufe ermittelt wird.
  2. Verfahren nach Anspruch 1, wobei die Systemgleichung über ein grafisches Modell vorgegeben wird, und wobei mindestens zwei Elemente der Matrix anhand der Systemgleichung und/oder des grafischen Modells festgelegt werden.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Datentyp des Eingangssignals und/oder der Datentyp des Ausgangssignals und/oder der Datentyp der Elemente der Matrix ein Fließkomma-Typ ist, wie insbesondere Double.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Konfiguration des programmierbaren Logikbausteins fest vorgegeben ist und für beliebige Matrizen bis zu vorgegebenen Maximaldimensionen einsetzbar ist.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Erreichen der Sollanzahl von Blöcken und/oder die Solladdierstufe anhand eines Abbruchsignals erkannt wird, wobei vorzugsweise das Abbruchsignal zwischen einzelnen Funktionsblöcken der Konfiguration übermittelt wird.
  6. Verfahren nach Anspruch 5, wobei die Sollanzahl von Blöcken und/oder die Solladdierstufe und/oder ein Größenparameter in einem internen Speicher des programmierbaren Logikbausteins hinterlegt sind, und wobei mindestens ein Funktionsblock das Abbruchsignal nach Maßgabe des oder der hinterlegten Werten erzeugt.
  7. Computersystem umfassend einen Bedienrechner mit einer Mensch-Maschine-Schnittstelle und einen Arbeitsrechner, wobei der Arbeitsrechner einen Prozessor sowie einen programmierbaren Logikbaustein umfasst und dazu eingerichtet ist, ein Verfahren gemäß einem der vorhergehenden Ansprüche auszuführen.
  8. Computerlesbaren Speichermedium, auf dem eine Konfiguration hinterlegt ist, die einen programmierbaren Logikbaustein dazu konfiguriert, zyklisch mindestens eine Eingangssignal zu empfangen, mindestens eine Matrixmultiplikation zu berechnen und mindestens ein Ausgangssignal auszugeben, wobei die Konfiguration eine parallele Multiplikation von Blöcken aus mindestens zwei Elementen der Matrix mit mindestens einem von dem Eingangssignal abhängigen Element eines Vektors und einen Addierbaum für die Multiplikationsergebnisse umfasst, wobei aufeinanderfolgende Blöcke der Matrix in einer Pipeline zwischengespeichert und sequentiell bearbeitet werden, wobei der programmierbare Logikbaustein dazu konfiguriert ist, mindestens einen Größenparameter zu empfangen, nach Maßgabe des Größenparameters eine Sollanzahl von Blöcken und eine Solladdierstufe zu ermitteln, die Bearbeitung von Blöcken für den aktuellen Zyklus zu beenden, sobald die Sollanzahl von Blöcken und die Solladdierstufe erreicht ist, und mindestens ein Ausgangssignal basierend auf dem Resultat der Solladdierstufe zu ermitteln.
  9. Computerlesbares Speichermedium nach Anspruch 8, wobei der programmierbare Logikbaustein dazu konfiguriert ist, die Elemente der Matrix und/oder den Größenparameter und/oder die Sollanzahl von Blöcken und/oder die Solladdierstufe in einem internen Speicher zu hinterlegen.
  10. Computerlesbares Speichermedium nach Anspruch 8 oder 9, umfassend mindestens einen nichtflüchtigen Speicherbaustein, der elektrisch mit einem programmierbaren Logikbaustein verbunden ist.
DE102019107817.2A 2019-03-27 2019-03-27 Verfahren zur Simulation eines dynamischen Systems Pending DE102019107817A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102019107817.2A DE102019107817A1 (de) 2019-03-27 2019-03-27 Verfahren zur Simulation eines dynamischen Systems
US16/827,796 US11062071B2 (en) 2019-03-27 2020-03-24 Method for simulating a dynamic system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019107817.2A DE102019107817A1 (de) 2019-03-27 2019-03-27 Verfahren zur Simulation eines dynamischen Systems

Publications (1)

Publication Number Publication Date
DE102019107817A1 true DE102019107817A1 (de) 2020-10-01

Family

ID=72605899

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019107817.2A Pending DE102019107817A1 (de) 2019-03-27 2019-03-27 Verfahren zur Simulation eines dynamischen Systems

Country Status (2)

Country Link
US (1) US11062071B2 (de)
DE (1) DE102019107817A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4009201A1 (de) 2020-12-03 2022-06-08 dSPACE GmbH Verfahren, computersystem und computerlesbares speichermedium zur simulation eines elektrischen motors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626815B1 (en) * 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US9558156B1 (en) * 2015-11-24 2017-01-31 International Business Machines Corporation Sparse matrix multiplication using a single field programmable gate array module
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4009201A1 (de) 2020-12-03 2022-06-08 dSPACE GmbH Verfahren, computersystem und computerlesbares speichermedium zur simulation eines elektrischen motors
DE102021131391A1 (de) 2020-12-03 2022-06-09 Dspace Gmbh Verfahren zur Simulation eines elektrischen Motors

Also Published As

Publication number Publication date
US20200311330A1 (en) 2020-10-01
US11062071B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
EP3571553B1 (de) Verfahren zum test einer steuergerätefunktion eines steuergeräts eines fahrzeugs
DE102018202497A1 (de) Technologien für optimiertes Maschinenlerntraining
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE102020101187A1 (de) Winograd-transformationsfaltungsoperation für neuronale netze
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE202016107436U1 (de) Neuronaler Netzwerkprozessor
EP2799983B1 (de) Flexible Aufteilung der I/O Kanäle einer Hardware Komponente
DE102017212270A1 (de) Erstellungsvorrichtung für Modelle für maschinelles Lernen, numerische Steuerung, Erstellungsverfahren für Modelle für maschinelles Lernen, Erstellungsprogramm für Modelle für maschinelles Lernen und Aufzeichnungsmedium
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE102015114162A1 (de) Effiziente Interpolation
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE102016205020A1 (de) SIMD-Realisierung von Schablonencodes
EP3502974A1 (de) Verfahren zur realisierung eines neuronalen netzes
EP4068138A1 (de) Verfahren zur aufteilung von simulationsmodellen zwischen einem prozessor und einem fpga
DE112019006317T5 (de) Implementierung eines mehrschichtigen neuronalen netzwerks unter verwendung einer einzigen physikalischen schicht aus analogen neuronen
DE102019107817A1 (de) Verfahren zur Simulation eines dynamischen Systems
DE102017113594A1 (de) Computerimplementiertes Verfahren zur Simulation einer elektrischen Gesamtschaltung
DE102020124791A1 (de) Verfahren zur Übertragung von Daten von einer ersten Recheneinheit zu einer zweiten Recheneinheit
EP2963541A1 (de) Implementierung einer Konstanten in FPGA-Code
DE102012016610A1 (de) Echtzeit-Schaltungssimulation

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G05B0017020000

Ipc: G06F0030340000

R081 Change of applicant/patentee

Owner name: DSPACE GMBH, DE

Free format text: FORMER OWNER: DSPACE DIGITAL SIGNAL PROCESSING AND CONTROL ENGINEERING GMBH, 33102 PADERBORN, DE

R012 Request for examination validly filed