DE102015121128B4 - Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins - Google Patents

Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins Download PDF

Info

Publication number
DE102015121128B4
DE102015121128B4 DE102015121128.9A DE102015121128A DE102015121128B4 DE 102015121128 B4 DE102015121128 B4 DE 102015121128B4 DE 102015121128 A DE102015121128 A DE 102015121128A DE 102015121128 B4 DE102015121128 B4 DE 102015121128B4
Authority
DE
Germany
Prior art keywords
bit
address
word
unit
address unit
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.)
Active
Application number
DE102015121128.9A
Other languages
English (en)
Other versions
DE102015121128A1 (de
Inventor
Heiko KALTE
Lukas FUNKE
Dominik LUBELEY
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 US15/334,659 priority Critical patent/US9628085B1/en
Publication of DE102015121128A1 publication Critical patent/DE102015121128A1/de
Application granted granted Critical
Publication of DE102015121128B4 publication Critical patent/DE102015121128B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Zugriff auf Signale eines programmierbaren Logikbausteins mit einer funktionalen Ebene und einer Konfigurationsebene während der Laufzeit, in welcher der programmierbare Logikbaustein eine vorgegebene Konfiguration ausführt, wobei ein Zugriff auf mindestens einen Signalwert angefordert wird, welcher eine Anzahl von Bits umfasst, wobei die einzelnen Bits in der Konfiguration jeweils in einer Adresseinheit mit je einem Adressversatz angeordnet sind, so dass ein oder mehrere Bits eines Signalwerts in einer Adresseinheit angeordnet sind, wobei ein Zugriff ein Lesen aus der und/oder ein Schreiben in die Konfigurationsebene umfasst. Erfindungsgemäß erfolgt auf die angeforderten Signalwerte ein bitweiser Zugriff, wobei die Zugriffe auf die einzelnen Bits in Abhängigkeit von der das jeweilige Bit umfassenden Adresseinheit derart sortiert werden, dass die Zugriffe auf alle in einer Adresseinheit angeordneten Bits unabhängig von dem das jeweilige Bit umfassenden Signal in Abhängigkeit von dem Adressversatz aufeinander folgend stattfinden. Weiterhin betrifft die Erfindung eine Vorrichtung zum Zugriff auf Signale eines programmierbaren Logikbausteins und ein Computerprogrammprodukt.

Description

  • Die Erfindung betrifft ein Verfahren zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins zur Laufzeit, eine Vorrichtung zum Zugriff auf Signale eines programmierbaren Logikbausteins sowie ein Computerprogrammprodukt.
  • Für die Regelung oder die Simulation dynamischer Systeme werden in zunehmendem Umfang Rapid-Control-Protoyping-Systeme oder Hardware-in-the-Loop-Simulatoren eingesetzt, welche zusätzlich zu in der Regel vorhandenen Mikroprozessoren einen oder mehrere unter dem Begriff Field Programmable Gate Array (abgekürzt FPGA) bekannte programmierbare Logikbausteine aufweisen. Aus dem Artikel “Alles unter einem Dach“, S. 48–51, dSPACE Magazin 3/2009, abrufbar unter www.dspace.com, ist ein Beispiel einer Simulation eines dynamischen Systems mittels eines FPGAs bekannt. Ein FPGA umfasst in seiner funktionalen Ebene eine Vielzahl von Logikelementen und Verbindungselementen, deren genaue Verschaltung erst während der Initialisierung mittels eines Bitstroms festgelegt wird, der in die Konfigurationsebene des Bausteins geschrieben wird. Die Architektur von FPGAs erlaubt also gute Anpassung an die jeweilige Anwendung und eine parallele Verarbeitung von Signalen, so dass FPGAs auch schnell veränderliche Strecken zuverlässig simulieren oder regeln können.
  • Die durch den Bitstrom beschriebene Konfiguration eines FPGAs kann insbesondere anhand eines Blockdiagramms des zu modellierenden Systems erstellt werden, wie dies beispielsweise in dem Artikel „Flexibler und schneller per FPGA“, Seite 40–43, dSPACE Magazin 3/2009, beschrieben ist. Dies ermöglicht eine für den Nutzer angenehme Bedienung, erfordert aber aufgrund der notwendigen Zwischenschritte einen vergleichsweise hohen Zeitaufwand. Während der Analyse des Systems bzw. Reglers kann es häufig erforderlich sein, auf bestimmte Signale im Modell zuzugreifen, um beispielsweise den aktuellen Ausgangswert eines betrachteten Blocks zu ermitteln. Zweckmäßigerweise sollte daher ohne Änderung der Konfiguration auf verschiedene Signalwerte eines FPGAs zugegriffen werden können, während dieser eine dem Modell entsprechende Konfiguration ausführt. Ein entsprechendes Verfahren zum Zugriff auf einen Signalwert eines FPGA zur Laufzeit ist aus der DE 10 2013 101 300 A1 bekannt.
  • Der Zugriff auf die Signalwerte erfolgt hierbei über die Konfigurationsebene des FPGAs, die eine Vielzahl von Adressbereichen bzw. Adresseinheiten aufweist, mittels denen Speicherelemente angesprochen werden können. Um die Größe und Komplexität der Adresslogik zu begrenzen, umfassen die Adresseinheiten handelsüblicher FPGAs eine Vielzahl von Wörtern bzw. eine entsprechend größere Anzahl von Bits. Wird auch nur der Zugriff auf ein einzelnes Bit angefordert, so müssen alle Wörter vom Anfang der Adresseinheit bis zu dem angeforderten Bit gelesen werden. Aufgrund der begrenzten Zugriffsgeschwindigkeit auf die Konfigurationsebene können daher nur eine geringe Anzahl von Signalen während der Simulation eines dynamischen Systems gemessen werden.
  • Aus der US 7,271,616 B2 ist eine verbesserte Schaltungsanordnung für eine Verringerung der Rücklesezeit eines FPGA bekannt. Diese erfordert allerdings Änderungen an dem programmierbaren Logikbaustein selbst und ist daher nur einem Hersteller entsprechenden Bausteinen zugänglich.
  • Vor diesem Hintergrund besteht die Aufgabe der Erfindung darin, ein Verfahren und eine Vorrichtung anzugeben, welche den Stand der Technik weiterbilden und eine Beschleunigung des Zugriffs, insbesondere wahlfreien Zugriffs, auf Signale eines handelsüblichen programmierbaren Logikbausteins ermöglichen.
  • Die Aufgabe wird durch ein Verfahren zum Zugriff auf Signale eines programmierbaren Logikbausteins mit den Merkmalen von Anspruch 1 und eine Vorrichtung mit den Merkmalen von Anspruch 6 gelöst. Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Unteransprüchen.
  • Es wird also ein Verfahren bereitgestellt, welches den Zugriff auf Signale eines programmierbaren Logikbausteins mit einer funktionalen Ebene und einer Konfigurationsebene während der Laufzeit ermöglicht, in welcher der programmierbare Logikbaustein eine vorgegebene Konfiguration ausführt, wobei ein Zugriff auf mindestens einen Signalwert angefordert wird, welcher eine Anzahl von Bits umfasst, wobei die einzelnen Bits in der Konfiguration jeweils in einer Adresseinheit mit je einem Adressversatz angeordnet sind, so dass ein oder mehrere Bits eines Signalwerts in einer Adresseinheit angeordnet sind, wobei ein Zugriff ein Lesen aus der und/oder ein Schreiben in die Konfigurationsebene umfasst. Erfindungsgemäß erfolgt auf die angeforderten Signalwerte ein bitweiser Zugriff, wobei die Zugriffe auf die einzelnen Bits in Abhängigkeit von der das jeweilige Bit umfassenden Adresseinheit derart sortiert werden, dass die Zugriffe auf alle in einer Adresseinheit angeordneten Bits unabhängig von dem das jeweilige Bit umfassenden Signal in Abhängigkeit von dem Adressversatz aufeinander folgend stattfinden, wobei Zugriffe mit steigendem Adressversatz später stattfinden.
  • Wenn der programmierbare Logikbaustein eine Konfiguration ausführt, in der mindestens ein Signal definiert ist, welches eine Anzahl von Bits umfasst, die jeweils in einer Adresseinheit oder Frame der Konfigurationsebene mit je einem Bit-Versatz angeordnet sind, so dass ein oder mehrere Bits eines Signalwerts in einem Frame enthalten ist oder sind, werden Zugriffsanforderungen auf ein Signal zweckmäßigerweise in ein oder mehrere Zugriffsanforderungen auf in dem Signal enthaltene Bits übersetzt.
  • Mit Signalen sind hierbei zusammengehörige Bits gemeint, welche prinzipiell beliebig auf dem programmierbaren Logikbaustein angeordnet sein können, so dass keine zusammenhängenden Adressen auf der Konfigurationsebene vorliegen müssen. Prinzipiell kann unter Signal auch ein beliebiger Wert aus einem oder mehreren Bits verstanden werden, der insbesondere in einem oder mehreren Registern gespeichert ist.
  • Ein erfindungsgemäßes Verfahren hat den Vorteil, dass jede Adresseinheit (bzw. jeder Frame) nur einmal ausgelesen werden muss. Somit erfolgt eine deutliche Beschleunigung des Zugriffs, insbesondere wenn eine Anzahl von verteilten Signalen in einer großen Konfiguration gelesen wird. Hierbei ist es nicht erforderlich, dass die Konfiguration speziell angepasst wird, so dass keine Einschränkungen hinsichtlich der Optimierung einer Konfiguration für maximale Ausführungsgeschwindigkeit bestehen.
  • Eine Adresseinheit umfasst eine Vielzahl von Worten, wobei Lesezugriffe derart erfolgen, dass die Adresseinheit wortweise ausgelesen wird, und wobei zumindest das aktuell ausgelesene Wort in einem Puffer zwischengespeichert wird. Wenn ausschließlich lesend auf die Signale zugegriffen wird, so wird zweckmäßigerweise nur das aktuell ausgelesene Wort in dem Wertepuffer zwischengespeichert, so dass der Wertepuffer wenig Speicherplatz belegt.
  • Besonders bevorzugt werden Lesezugriffe auf mehrere Signale derart ausgeführt, dass die jeweils in dem Puffer enthaltenen Bits aller angeforderten Signalwerte extrahiert werden und dass die Signalwerte aus den einzelnen von dem jeweiligen Signal umfassten Bits zusammengesetzt werden. Mit einem geringen Speicherplatz (für die bereits extrahierten Bits von Signalen) kann hierdurch eine große Beschleunigung erzielt werden.
  • Es ist vorteilhaft, wenn ein Schreibzugriff auf mindestens einen Signalwert derart erfolgt, dass zunächst ein Auslesen einer Adresseinheit erfolgt, welche mindestens ein Bits des zu schreibenden Signalwerts umfasst, wobei die Adresseinheit von Anfang bis Ende ausgelesen und in dem Puffer zwischengespeichert wird, dass dann das mindestens eine in der Adresseinheit enthaltenen Bit gemäß dem zu schreibenden Signalwert angepasst wird, dass anschließend der Inhalt des Puffers in die Adresseinheit geschrieben wird, und dass dieses Vorgehen für alle Adresseinheiten erfolgt, welche mindestens ein Bit des zu schreibenden Signalwerts umfassen. Je nach Architektur des Rechnersystems kann dies zu deutlichen Beschleunigungen führen, wobei vorzugsweise das Verfahren zumindest teilweise durch eine Komponente ausgeführt wird, welche über eine Schnittstelle mit einer hohen Übertragungsgeschwindigkeit mit dem programmierbaren Logikbaustein verbunden ist. Die Verbindung zwischen der Komponente und einem Bedienrechner, der die Zugriffe anfordert, muss hierbei keine hohe Übertragungsgeschwindigkeit bereitstellen. Prinzipiell könnte auf diese Weise auch ein Rekonfigurieren des programmierbaren Logikbausteins beschleunigt werden.
  • Besonders vorteilhaft ist es, wenn in dem Fall, dass sowohl Schreibzugriffe als auch Lesezugriffe angefordert werden, welche dieselbe Adresseinheit betreffen, diese derart erfolgen, dass zunächst ein Auslesen der gesamten Adresseinheit erfolgt, dass dann alle von einem zu lesenden Signalwert umfassten Bits extrahiert werden, und dass anschließend alle von einem zu schreibenden Signalwert umfassten Bits gemäß dem zu schreibenden Signalwert angepasst werden, woraufhin der Inhalt des Puffers in die Adresseinheit geschrieben wird. Eine gemeinsame Sortierung und verschachtelte Ausführung von Schreib- und Lesezugriffen ermöglicht eine besonders deutliche Beschleunigung des Zugriffs auf Signale eines programmierbaren Logikbausteins.
  • Die Erfindung betrifft ferner eine Vorrichtung für den Zugriff auf Signale eines programmierbaren Logikbausteins, welcher eine Funktionsebene und eine Konfigurationsebene umfasst, wobei die Konfigurationsebene eine Anzahl von Adresseinheiten umfasst, über die auf eine Vielzahl von Speicherelementen zugegriffen werden kann, umfassend eine Schnittstelle, welche mit einer oder mehreren Recheneinheiten verbunden werden kann, einen Speicher, und eine Zugriffseinheit. Erfindungsgemäß ist die Vorrichtung dazu eingerichtet, über die Schnittstelle Bit-Zugriffsanforderungen auf mindestens ein Bit zu empfangen und empfangene Bit-Zugriffsanforderungen in dem Speicher zu speichern, wobei die Vorrichtung derart ausgebildet ist, dass die in dem Speicher gespeicherten Bit-Zugriffsanforderungen in einer vorgegebenen Reihenfolge umgesetzt werden, und wobei die Vorrichtung ferner dazu eingerichtet ist, eingehende Bit-Zugriffsanforderungen nach der jeweiligen Adresseinheit und weiterhin derart zu sortieren, dass Bit-Zugriffsanforderungen auf alle in einer einzelnen Adresseinheit angeordneten Bits aufeinanderfolgend in dem Speicher gespeichert sind, wobei die Zugriffseinheit Bit-Zugriffsanforderungen mit einem höheren Adressversatz später umsetzt.
  • Der Speicher kann beispielsweise als ein FIFO-Puffer oder als ein Stack ausgebildet sein. Eine erfindungsgemäße Vorrichtung kann auf verschiedene Arten ausgebildet sein, insbesondere kann sie auf einem zusätzlichen ASIC oder CPLD implementiert sein oder einen Teil der Konfiguration des FPGA bilden. Eine Recheneinheit kann beispielsweise als ein Mikrocontroller oder als ein Standard-PC ausgebildet sein. Über die Konfigurationsebene wird lesend und/oder schreibend auf Speicherelemente zugegriffen welche Bestandteil der Konfigurationsebene oder der funktionalen Ebene sein können.
  • Dadurch, dass die Vorrichtung als eigenständige Komponente ausgebildet ist, kann für eine Vielzahl von Recheneinheiten ein beschleunigter Zugriff auf die Konfigurationsebene des programmierbaren Logikbausteins bereitgestellt werden. Dies erfolgt weitgehend transparent, so dass Recheneinheiten wie Mikrocontroller oder auf dem programmierbaren Logikbaustein angeordnete IP-Cores auf die gleiche Weise wie Standard-PCs auf Signale zugreifen können.
  • In einer bevorzugten Ausführungsform der Erfindung wird der Adressversatz einer Bit-Zugriffsanforderung aufgeteilt in einen Wortversatz, der die Lage des das Bit umfassenden Worts in der Adresseinheit angibt, und eine Bitposition, welche die Lage des Bits in dem Wort angibt, wobei die Vorrichtung dazu eingerichtet ist, Zugriffsanforderungen innerhalb einer Adresseinheit nach dem Wortversatz und der Bitposition zu sortieren.
  • Erfindungsgemäß umfasst die Zugriffseinheit einen Wort-Lader, einen Wort-Puffer und mindestens einen Bit-Selektor, wobei eine Bit-Zugriffsanforderung zum Lesen eines Bits derart umgesetzt wird, dass die Adresseinheit adressiert wird, der Wort-Lader solange auf den Konfigurationsspeicher zugreift und das aktuell gelesene Wort in dem Wort-Puffer zwischenspeichert, bis der Wort-Versatz der Bit-Zugriffsanforderung erreicht ist, und wobei der Wert des angeforderten Bits mittels des mindestens einen Bit-Selektors aus dem Wort-Puffer extrahiert wird. Wenn mehrere Bit-Zugriffsanforderungen vorliegen, die alle denselben Wortversatz aufweisen, erfolgt vorteilhafterweise nur ein Extrahieren der jeweiligen Bits mit dem mindestens einen Bit-Selektor. Somit werden erneute Zugriffe auf die Konfigurationsebene vermieden, die ein wiederholtes Lesen oder Schreiben ab dem Beginn derselben Adresseinheit erfordern würden. Bevorzugt weist die Vorrichtung zwei oder mehr Bit-Selektoren auf, die ein gleichzeitiges Auslesen mehrerer Bits ermöglichen. Eine erfindungsgemäße Zugriffseinheit kann besonders einfach und kompakt realisiert werden, so dass sie insbesondere auch in die Konfiguration vergleichsweise kleiner programmierbarer Logikbausteine integriert werden kann.
  • Insbesondere kann eine erfindungsgemäße Vorrichtung dazu eingerichtet sein, eine partielle Rekonfiguration des programmierbaren Logikbausteins vorzunehmen, wobei die vorzunehmenden Änderungen als Bit-Zugriffsanforderungen in dem Speicher gespeichert werden, wobei die Vorrichtung einen Schreib-Puffer aufweist, der eine Adresseinheit der Konfigurationsebene fassen kann, wobei zunächst jede Adresseinheit, welche von mindestens einer Bit-Zugriffsanforderung betroffen ist, in den Schreib-Puffer gelesen wird, dann jedes zu ändernde Bit in der Adresseinheit angepasst wird, und anschließend die Adresseinheit in die Konfigurationsebene geschrieben wird. Insbesondere wenn die Datenübertragung zwischen Bedienrechner und Vorrichtung nur eine geringe Übertragungsgeschwindigkeit besitzt, kann die Rekonfiguration eines programmierbaren Logikbausteins deutlich beschleunigt werden. Da viele handelsübliche FPGAs eine partielle Rekonfiguration ermöglichen kann die Vorrichtung auch in diesem Fall auf dem programmierbaren Logikbaustein selbst implementiert sein.
  • Die Erfindung betrifft weiterhin ein Computerprogrammprodukt mit einem computerlesbaren Speichermedium, auf dem Befehle eingebettet sind, die, wenn sie von einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit dazu eingerichtet ist, ein erfindungsgemäßes Verfahren auszuführen.
  • 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 lateralen und die vertikalen Abmessungen sind nicht maßstäblich und weisen, sofern nicht anders angegeben, auch keine ableitbaren geometrischen Relationen zueinander auf.
  • Darin zeigt:
  • 1 eine schematische Ansicht auf einen programmierbaren Logikbaustein,
  • 2 eine schematische Ansicht eines Rechnersystems,
  • 3 eine schematische Ansicht einer erfindungsgemäßen Vorrichtung, die mit mehreren Recheneinheiten verbunden ist, und
  • 4 eine schematische Ansicht einer bevorzugten Ausführungsform einer erfindungsgemäßen Zugriffseinheit.
  • In der Abbildung von 1 sind eine schematische Ansicht eines programmierbaren Logikbausteins mit einer gemäß eines Modells eines dynamischen Systems erstellten Konfiguration sowie ein Blockdiagramms des Modells gezeigt.
  • Das gezeigte Modell 101 für ein dynamisches System ist als ein Blockdiagramm gestaltet, bei dem die einzelnen Blöcke wie Block 102 und Block 103 Berechnungen durchführen und ihre Ausgabewerte wie mit durchgezogenen Pfeilen dargestellt an andere Blöcke weitergeben. Es sind Software-Programme bekannt, die ein derartiges Modell in ausführbaren Programmcode oder eine Konfiguration für einen programmierbaren Logikbaustein umsetzen können. Das Verhalten des dynamischen Systems wird beispielsweise dadurch simuliert, dass die Berechnungen in vorgegebenen Zeitschritten wie z.B. 1 ms zyklisch wiederholt werden, wobei die Ausgangssignale des vorherigen Zeitschritts als Eingabewerte des nächsten Zeitschritts verwendet werden. Vorzugsweise kann es vorgesehen sein, dass die Ausgabewerte eines Blocks jeweils in einem Register zwischengespeichert werden.
  • Der gezeigte programmierbare Logikbaustein 104 umfasst eine funktionale Ebene 113, die eine Vielzahl von Logikbausteinen beinhaltet, und eine Konfigurationsebene 105, über die auf eine Vielzahl von Speicherelementen zugegriffen werden kann. Die funktionale Ebene 113 umfasst eine Vielzahl von Logikelementen und Verbindungselementen sowie eine Taktversorgung, welche mehrere Taktregionen umfassen kann. Bei den Logikelementen kann es sich beispielsweise um Register, Wahrheitstabellen (auch als Lookup-Table bzw. LUT bekannt), Addierer und Verzögerungseinheiten, aber auch um Frequenzgeneratoren handeln. Je nach Granularität des FPGA-Bausteins können mehrere dieser Elemente zu einer Elementar-Einheit 111 zusammengefasst sein (auch als Configurable Logic Block bekannt). In dem gezeigten Beispiel umfasst jede Elementar-Einheit 111 zwei Register 112, welche jeweils ein Bit fassen. Die Verbindungselemente umfassen zweckmäßigerweise Leiterbahnen unterschiedlicher Länge, welche z.B. auch Regionen des FPGA überspannen können, und schaltbare Verbindungen zwischen den Leiterbahnen und Logikelementen. Aus Gründen der Übersichtlichkeit sind in der Abbildung weder andere Logikelemente der Elementar-Einheiten 111 noch Verbindungselemente dargestellt.
  • Die Konfigurationsebene 104 weist eine Vielzahl von Speicherelementen wie Register auf, welche insbesondere für die Logikelemente und Verbindungselemente jeweils ein oder mehrere Bits speichern. Ein Bit kann beispielsweise den Zustand eines Schalters beschreiben, der das Logikelement mit einem Verbindungselement in Kontakt bringt. Die Speicherelemente der Konfigurationsebene 105 sind in einer Vielzahl von Adresseinheiten 110 angeordnet, welche jeweils eine große Anzahl von Bits umfassen. Es kann auch vorgesehen sein, dass Register 112 der funktionalen Ebene 113 in einer Adresseinheit 110 angeordnet sind, so dass ohne Zwischenpufferung über die Konfigurationsebene 105 auf die Register zugegriffen werden kann.
  • Der programmierbare Logikbaustein 104 weist mindestens eine nicht gezeigte Konfigurationsschnittstelle auf, über die in die Konfigurationsebene 105 geschrieben oder aus der Konfigurationsebene gelesen werden kann. Nachdem beispielsweise das Modell 101 in eine Konfiguration übersetzt und diese in die Konfigurationsebene 105 geschrieben wurde, kann eine Simulation des dynamischen Systems durchgeführt werden. Die Ausgangssignale der Blöcke 102 und 103, welche zweckmäßigerweise in Registern gespeichert sind, können dabei mehrere Bits aufweisen, welche in verschiedenen Regionen des programmierbaren Logikbaustein angeordnet sind. Mit gestrichelten Pfeilen ist in der Abbildung eine Korrespondenz zwischen Ausgangssignal des jeweiligen Blocks, Bits der Konfigurationsebene und Registern der funktionalen Ebene dargestellt. So umfasst das Ausgangssignal von Block 102 das in Register 109 gespeicherte Bit, welches über die Adresse 107 angesprochen werden kann, und das Ausgangssignal von Block 103 umfasst das in Register 108 gespeicherte Bit, welches über Adresse 106 angesprochen werden kann. Indem während der Laufzeit des programmierbaren Logikbausteins 104 auf die Konfigurationsschnittstelle zugegriffen wird, kann der aktuelle Wert eines oder mehrerer Signale gemessen werden.
  • Die Abbildung von 2 zeigt eine schematische Darstellung eines Rechnersystems, in dem mittels eines erfindungsgemäßen Verfahrens auf Signale eines programmierbaren Logikbausteins zugegriffen werden kann.
  • Das dargestellte Rechnersystem umfasst einen Bedienrechner 201, der insbesondere als Standard-PC ausgestaltet sein kann, und einen Echtzeitrechner 203, der eine Recheneinheit 204, welche als Mikroprozessor mit einem oder mehreren Kernen ausgeführt sein kann, und einen programmierbaren Logikbaustein 207 umfasst.
  • Bedienrechner 201 führt ein Messprogramm 202 aus, über das der Benutzer die zu messenden Signale festlegen und gemessene Signalwerte ansehen und speichern kann.
  • Echtzeitrechner 203 ist vorzugsweise zur Simulation oder Regelung dynamischer Systeme ausgelegt, wobei also ein definiertes Zeitverhalten mit Einhalten vorgegebener Latenzzeiten zu gewährleisten ist und insbesondere zyklisch neue Werte berechnet werden. Das zu berechnende Modell eines dynamischen Systems kann prinzipiell beliebig auf die Recheneinheit 204 und den programmierbaren Logikbaustein 207 aufgeteilt werden. Im vorliegenden Beispiel wird vereinfachend angenommen, dass das Modell vollständig auf dem programmierbaren Logikbaustein 207 ausgeführt wird, bzw. dass nur Signale auf dem programmierbaren Logikbaustein 207 gemessen werden sollen. Da der Zugriff auf Daten eines auf einem Mikroprozessor ausgeführten Prozesses an sich bekannt ist, können prinzipiell auch für aufgeteilte Modelle beliebige Signale gemessen werden.
  • Die Recheneinheit 204 führt ein Erfassungsprogramm 206 aus, welches von dem Messprogramm 202 eine Liste mit zu messenden Signalen erhält, wie dies durch Pfeil 208 angedeutet ist. Nach Erhalt der Liste von Signalen ermittelt das Erfassungsprogramm 206 mittels einer Zuordnungstabelle 205, welche Adressen der Konfiguration die zu messenden Signale umfassen. Die Abbildung umfasst eine schematische Darstellung einer beispielgemäßen Zuordnungstabelle 205. Ein Signal umfasst eine Anzahl von Bits, denen jeweils eine Adresseinheit AE und ein Adressversatz in der Konfiguration zugeordnet ist. Der Adressversatz ist hier aufgeteilt in einen Wortversatz WV innerhalb der Adresseinheit und einer Bitposition BP innerhalb des Worts. Das Erfassungsprogramm 206 setzt eine Zugriffsanforderung auf ein Signal um in Zugriffsanforderungen auf die einzelnen von dem Signal umfassten Bits. Wenn beispielsweise Signal #1 und Signal #2 gemessen werden sollen, so sendet Erfassungsprogramm 206 die entsprechenden Bit-Zugriffsanforderungen 209 an den programmierbaren Logikbaustein 207. Zweckmäßigerweise werden die Bit-Zugriffsanforderungen 209 über eine Konfigurations- und/oder Debuggings-Schnittstelle gesendet, so dass der programmierbare Logikbaustein 207 weiterhin die aktuelle Konfiguration ausführen kann und der Zugriff somit zur Laufzeit erfolgt.
  • Umfassen Signal #1 und Signal #2 beispielsweise jeweils 4 Bit, so werden insgesamt 8 Bit-Zugriffsanforderungen an den programmierbaren Logikbaustein 207 gesendet. Wie in der dargestellten Zuordnungstabelle beispielhaft angedeutet, müssen die einzelnen Bits eines Signals nicht aufeinander folgend angeordnet sein, sondern können in unterschiedlichen Adressbereichen und/oder Wortversätzen der Konfiguration liegen. Um den Zugriff auf die Konfigurationsebene zu beschleunigen, führt das Erfassungsprogramm 206 daher eine Umsortierung der Bit-Zugriffsanforderungen 209 durch, bevor diese an den programmierbaren Logikbaustein gesendet werden. Hierbei wird die hierarchische Struktur der Messanfrage aufgebrochen, d.h. die einzelnen Bit-Zugriffsanforderungen werden unabhängig von dem umfassenden Signal nur in Abhängigkeit von der jeweiligen Adresseinheit und dem jeweiligen Adressversatz sortiert.
  • Zweckmäßigerweise wird daher zunächst nach der Adresseinheit sortiert, in dem das angeforderte Bit zu finden ist. Zugriffsanforderungen auf in demselben Adressbereich angeordnete Bits werden anschließend nach der Lage in dem Adressbereich sortiert, also nach Wortversatz und vorzugsweise Bitposition. In dem in 2 gezeigten Beispiel deuten aufeinanderfolgende numerische Werte aufeinanderfolgende Adresseinheiten bzw. Wortversätze an, d.h. a1 liegt vor a2. Somit wird nach erfolgter Sortierung die Bit-Zugriffsanforderung für Bit #1 von Signal #2 daher vor der Bit-Zugriffsanforderung für Bit #1 von Signal #1 gesendet, aber nach der Bit-Zugriffsanforderung für Bit #n von Signal #1.
  • Der programmierbare Logikbaustein 207 empfängt die Bit-Zugriffsanforderungen, und liest die Bereiche der Konfigurationsebene, in denen angeforderte Bits liegen. Die Werte 210 der einzelnen Bits werden zweckmäßigerweise in der Reihenfolge der eingegangen Bit-Zugriffsanforderungen an das Erfassungsprogramm 206 gesendet. Anhand der Zuordnungstabelle 205 setzt das Erfassungsprogramm 206 die angeforderten Signale aus den einzelnen Bits zusammen und sendet die Signalwerte 211 an das Messprogramm 202. Besonders wenn mehrere Bits verschiedener Signale in einem Adressbereich angeordnet sind, ermöglicht das erfindungsgemäße Sortieren der Bit-Zugriffsanforderungen eine deutliche Beschleunigung des Zugriffs. Somit kann eine Vielzahl von Variablen gleichzeitig gemessen werden.
  • Anstelle von oder zusätzlich zu einem Messen von Signalen kann es auch vorgesehen sein, dass über Messprogramm 202 eine Änderung einzelner Signale angefordert wird, wofür also ein Schreiben in die Konfigurationsebene erforderlich ist, was gleichermaßen über eine Konfigurationsschnittstelle erfolgen kann. Die grobe Adressierbarkeit der Konfigurationsebene erfordert hierbei, dass jeweils eine vollständige Adresseinheit geschrieben wird, selbst wenn nur ein Bit geändert werden soll. Aus diesem Grund ist es vorteilhaft, wenn Schreibzugriffe derart durchgeführt werden, dass zunächst ein Lesezugriff auf die Adresseinheit erfolgt, und diese in einem Puffer zwischengespeichert wird. Daraufhin wird die gewünschte Änderung an einem oder mehreren Bits dieser Adresseinheit vorgenommen und die zwischengespeicherte bzw. modifizierte Adresseinheit in die Konfigurationsebene geschrieben. Ein derartiges Vorgehen kann auch als Read-Modify-Write-Zugriff bezeichnet werden.
  • In dem Fall, dass für mindestens eine Adresseinheit sowohl Lese- als auch Schreibzugriffe angefordert werden, wird zweckmäßigerweise zunächst die Adresseinheit in einen Puffer gelesen, die in einem Lesezugriff angeforderten Bits extrahiert, dann die in einem Schreibzugriff zu ändernden Bits modifiziert und der geänderte Pufferinhalt in die Konfigurationsebene geschrieben. Eine erfindungsgemäße Sortierung der einzelnen Bit-Zugriffsanforderungen kann somit zweckmäßigerweise für Lese- und Schreibzugriffe gemeinsam erfolgen.
  • Die folgende Liste zeigt ein Beispiel für Anforderungen, welche das Lesen von Signalen betreffen:
    R [S #1; B #1]: AE: a1; WV: w1; BP: b1
    R [S #1; B #2]: AE: a2; WV: w2; BP: b2
    R [S #1; B #3]: AE: a3; WV: w3; BP: b3
    R [S #1; B #4]: AE: a4; WV: w4; BP: b4
    R [S #2; B #1]: AE: a5; WV: w5; BP: b5
    R [S #2; B #2]: AE: a2; WV: w6; BP: b6
    R [S #2; B #3]: AE: a7; WV: w7; BP: b7
    R [S #2; B #4]: AE: a8; WV: w8; BP: b8
  • Es wird also ein Lesen R von Signalen #1 und #2 angefordert, welche jeweils 4 Bits umfassen, deren Position jeweils durch eine Adresseinheit AE, einen Wortversatz WV in der Adresseinheit und eine Bitposition BP in dem entsprechenden Wort angegeben ist.
  • In dem vorliegenden Beispiel wird angenommen, dass in derselben Zeiteinheit ein Schreiben von Signalen erfolgen soll, welche in der folgenden Liste angegeben sind:
    W [S #3; B #1]: AE: a9; WV: w9; BP: b9
    W [S #3; B #2]: AE: a2; WV: w10; BP: b10
    W [S #3; B #3]: AE: a11; WV: w11; BP: b11
    W [S #3; B #4]: AE: a12; WV: w12; BP: b12
  • Es wird also ein Schreiben W von Signal #3 angefordert, welches 4 Bits umfasst.
  • Zweckmäßigerweise werden die Lese- und Schreibanforderungen derart in eine gemeinsame Liste sortiert, dass das für den Read-Modify-Write-Zugriff erforderliche Auslesen der entsprechenden Adresseinheit direkt die für die Lesezugriffe erforderlichen Bits zurückliefert. Im vorliegenden Beispiel werden die Zugriffsanforderungen also gemäß der folgenden Liste sortiert:
    R [S #1; B #1]: AE: a1; WV: w1; BP: b1
    W [S #3; B #2]: AE: a2; WV: w10; BP: b10
    R [S #1; B #2]: AE: a2; WV: w2; BP: b2
    R [S #2; B #2]: AE: a2; WV: w6; BP: b6
    R [S #1; B #3]: AE: a3; WV: w3; BP: b3
    R [S #1; B #4]: AE: a4; WV: w4; BP: b4
    R [S #2; B #1]: AE: a5; WV: w5; BP: b5
    R [S #2; B #3]: AE: a7; WV: w7; BP: b7
    R [S #2; B #4]: AE: a8; WV: w8; BP: b8
    W [S #3; B #1]: AE: a9; WV: w9; BP: b9
    W [S #3; B #1]: AE: a9; WV: w9; BP: b9
    W [S #3; B #4]: AE: a12; WV: w12; BP: b12
  • Da die unterstrichenen Zugriffsanforderungen sich alle auf dieselbe Adresseinheit a2 beziehen, muss diese Adresseinheit nur einmal ausgelesen werden, so dass mehrere Leseoperationen auf der Konfigurationsebene des programmierbaren Logikbausteins entfallen können.
  • In dem oben beschriebenen Beispiel war der programmierbare Logikbaustein Teil eines Echtzeitrechners, welcher auch ein oder mehrere Recheneinheiten umfasste. Prinzipiell kann es alternativ vorgesehen sein, einen Bedienrechner mit einem Messprogramm direkt mit einem programmierbaren Logikbaustein zu verbinden, wobei die Übersetzung von Signal-Zugriffsanforderungen in mehrere Bit-Zugriffsanforderungen dann von dem Bedienrechner durchgeführt wird, wofür das Messprogramm zweckmäßigerweise eine Zuordnungstabelle umfasst. Gemäß einem weiteren alternativen Ausführungsbeispiel kann es vorgesehen sein, die Sortierung von Zugriffsanforderungen mittels einer dedizierten Vorrichtung durchzuführen, die insbesondere eine externe Schnittstelle aufweist, über die ein oder mehrere weitere Recheneinheiten Zugriffsanforderungen auf Signale des verbundenen programmierbaren Logikbausteins senden können.
  • In der Abbildung von 3 ist schematisch ein Ausführungsbeispiel einer erfindungsgemäßen Vorrichtung gezeigt, welche mit mehreren Recheneinheiten verbunden ist.
  • Recheneinheiten 301, 302 und 303 sind über eine oder mehrere Schnittstellen mit der Vorrichtung verbunden, und senden Zugriffsanforderungen ZA, um Signale eines programmierbaren Logikbausteins über dessen Konfigurationsebene 307 zu lesen und/oder zu schreiben. Die Vorrichtung umfasst einen Anforderungs-Sortierer 304, der die Zugriffsanforderungen empfängt und in einem Puffer 305 gemäß Adresseinheit und Adressversatz sortiert ablegt. Der Puffer 305 ist derart organisiert, dass die Einträge gemäß ihrer Lage aufeinander folgend ausgelesen und somit umgesetzt werden. Beispielsweise kann der Puffer als ein FIFO-Speicher ausgeführt sein, bei dem wie in der Abbildung dargestellt die unterste Zugriffsanforderung als nächste ausgeführt wird.
  • Die nächste auszuführende Zugriffsanforderung wird an eine Zugriffseinheit 306 übergeben, welche über einer Zugriffsschnittstelle auf die Konfigurationsebene 307 des verbundenen programmierbaren Logikbausteins zugreifen kann. Die Zugriffseinheit 306 extrahiert die gewünschten Signalwerte SW oder schreibt die gewünschten Änderungen in die jeweilige Adresseinheit. Da die Zugriffsanforderungen sortiert sind, muss jede Adresseinheit nur einmal ausgelesen werden, so dass insbesondere eine mehrfache Übertragung der zwischen Beginn der Adresseinheit und in einem Lesezugriff angeforderten Bit befindlichen Daten vermieden werden kann. Durch die oben erläuterte gemeinsame Sortierung von Lese- und Schreibanforderungen kann das Messen und Ändern von Signalen weiter beschleunigt werden.
  • Vorzugsweise erfolgt ein zyklisches Empfangen der Anforderungen, Sortieren und Speichern im Puffer, woraufhin die Zugriffe ausgeführt und eventuelle Rückgabewerte übertragen werden. Ein Messzyklus kann durch einen internen Zähler der Vorrichtung getriggert sein oder von einer der Recheneinheiten angefordert werden.
  • Nach dem Umsetzen der Zugriffsanforderungen werden die gewünschten Signalwerte von der Zugriffseinheit 306 über die externe Schnittstelle sequentiell an die anfordernde Recheneinheit übertragen. Bei den Recheneinheiten kann es sich beispielsweise um Standard-PC, Mikrocontroller oder auch um einen auf einem Bereich des programmierbaren Logikbausteins selbst angeordneten IP-Core handeln.
  • Prinzipiell kann es auch vorgesehen sein, die Vorrichtung so zu gestalten, dass diese Zugriffsanforderungen nicht für einzelne Bits, sondern für Signale aus mehreren Bits empfangen und umsetzen kann. Zu diesem Zweck muss die Vorrichtung lediglich um weitere Speicher und eine Zuordnungstabelle ergänzt werden, so dass Signalanforderungen vor dem Sortieren in Bitanforderungen übersetzt werden. Nach dem Umsetzen der Bitanforderungen können diese dann mit Hilfe der Zuordnungstabelle zu den gewünschten Signalwerten zusammengesetzt werden.
  • Eine erfindungsgemäße Vorrichtung ermöglicht eine transparente Beschleunigung des Zugriffs auf die Konfigurationsebene eines programmierbaren Logikbaustein für eine Vielzahl von Instruktionsgebern.
  • Für den Fall, dass alle Instruktionsgeber oder Recheneinheiten bzw. von diesen ausgeführte Messprogramme ausschließlich Zugriffsanforderungen zum Lesen von einzelnen Bits senden, kann eine besonders kompakte und einfache Ausführungsform einer erfindungsgemäßen Zugriffseinheit verwendet werden, welche die Abbildung von 4 schematisch zeigt.
  • Die in der Abbildung dargestellte speicheroptimierte Implementierung einer Zugriffseinheit entnimmt einem Puffer 401, der beispielsweise als FIFO-Speicher ausgestaltet sein kann, die nächste auszuführende Bit-Lese-Anforderung ZA. Die einzelnen Bit-Lese-Anforderungen ZA sind bereits nach der Adresseinheit und dem Adressversatz sortiert, so dass z.B. ai <= aj gilt.
  • Die Adresse der aktuellen Anforderung wird in Adressregister 402 geladen. Adresseinheit AE und Wortversatz WV werden Wort-Lader 403 zugeführt, der -sofern das vorher angeforderte Bit nicht in derselben Adresseinheit AE angeordnet war- die Adresseinheit AE wählt und solange Wörter aus der Konfigurationsebene 404 des programmierbaren Logikbausteins liest, bis der gewünschte Wortversatz erreicht ist. Jetzt enthält der Wort-Puffer 405 das Wort, welches das angeforderte Bit umfasst. Mittels Bit-Selektor 406 wird das an der gewünschten Bitposition BP liegende Bit extrahiert und der erhaltene Wert 407 ausgegeben. Wenn ein Wort beispielsweise 32 Bit umfasst, kann der Bit-Selektor 406 insbesondere als ein 32 zu 1 Demultiplexer ausgeführt sein.
  • Anschließend wird die Adresse der nächsten Anforderung in Adressregister 402 geladen. Wenn Adresseinheit AE und Wortversatz WV gleich bleiben, kann Wort-Lader 403 inaktiv bleiben, so dass nur Bit-Selektor 406 den angeforderten Wert extrahieren und ausgeben muss.
  • Eine derartige besonders bevorzugte Zugriffseinheit muss lediglich einen Puffer für ein einzelnes Wort aufweisen und kann daher mit in die Konfiguration bereits kleiner programmierbarer Logikbausteine integriert werden.

Claims (9)

  1. Verfahren zum beschleunigten Zugriff auf Signale (Signal #1, #2) eines programmierbaren Logikbausteins (104, 207) mit einer funktionalen Ebene (113) und einer Konfigurationsebene (105) während der Laufzeit, in welcher der programmierbare Logikbaustein (104, 207) eine vorgegebene Konfiguration ausführt, wobei eine oder mehrere Zugriffsanforderungen auf jeweils einen Signalwert (211) jeweils eine Anzahl von Bits (Bit #1, #n) umfassen, wobei die einzelnen Bits (Bit #1, #n) in der Konfiguration jeweils mit einer Adresse entsprechend einer Adresseinheit (110, AE a1, a2) mit je einem Adressversatz aus einem Wortversatz (WV) innerhalb der Adresseinheit und einer Bitposition (BP) innerhalb des adressierten Wortes adressierbar sind, wobei ein angeforderter Zugriff auf den mindestens einen Signalwert umgesetzt wird, indem zu jedem Bit (Bit #1, #n) eines Signalwerts (211) in einer Adresseinheit (110, AE a1, a2) jeweils eine Bit-Leseanforderung (ZA) mit einer Adresse eines Bits in der Konfiguration erzeugt wird, wobei die erzeugten Bit-Lese-Anforderungen (ZA) umsortiert und gepuffert werden, so dass die Zugriffe auf alle in einer Adresseinheit (110, AE a1, a2) angeordneten Bits (Bit #1, #n) unabhängig von dem das jeweilige Bit (Bit #1, #n) umfassenden Signal (Signal #1, #2) in Abhängigkeit von dem Adressversatz aufeinander folgend stattfinden, wobei Zugriffe mit steigendem Adressversatz später stattfinden, wobei die Adresse der aktuellen Bit-Lese-Anforderung (ZA) in ein Adressregister (402) geladen wird, und ein Wortlader (403) inaktiv bleibt, wenn sich die Werte der Adresseinheit (110, AE a1, a2) und des Wortversatzes (WV) im Adressregister (402) beim Laden nicht geändert haben, und andernfalls der Wortlader (403) das durch die Werte der Adresseinheit (110, AE a1, a2) und des Wortversatzes (WV) im Adressregister (402) adressierte Wort in der Konfigurationsebene (404) in einem Wort-Puffer (405) lädt, wobei der Wert des angeforderten Bits mittels des mindestens einen Bit-Selektors (406) aus dem Wort-Puffer (405) extrahiert wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass eine Adresseinheit (110, AE a1, a2) eine Vielzahl von Worten umfasst, wobei Lesezugriffe derart erfolgen, dass die Adresseinheit (110, AE a1, a2) wortweise ausgelesen wird und zumindest das aktuell ausgelesene Wort in einem Puffer zwischengespeichert wird, wobei Lesezugriffe auf mehrere Signale (Signal #1, #2) derart ausgeführt werden, dass die jeweils in dem Puffer enthaltenen Bits aller angeforderten Signalwerte (211) extrahiert werden und dass die Signalwerte (211) aus den einzelnen von dem jeweiligen Signal (Signal #1, #2) umfassten Bits (Bit #1, #n) zusammengesetzt werden.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass ein Schreibzugriff auf mindestens einen Signalwert derart erfolgt, dass zunächst ein Auslesen einer Adresseinheit (110, AE a1, a2) erfolgt, welche mindestens ein Bits des zu schreibenden Signalwerts umfasst, wobei die Adresseinheit (110, AE a1, a2) von Anfang bis Ende ausgelesen und in dem Puffer zwischengespeichert wird, dass dann das mindestens eine in der Adresseinheit (110, AE a1, a2) enthaltenen Bit (Bit #1, #n) gemäß dem zu schreibenden Signalwert angepasst wird, dass anschließend der Inhalt des Puffers in die Adresseinheit (110, AE a1, a2) geschrieben wird, und dass dieses Vorgehen für alle Adresseinheiten (110, AE a1, a2) erfolgt, welche mindestens ein Bit (Bit #1, #n) des zu schreibenden Signalwerts umfassen.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass in dem Fall, wenn sowohl Schreibzugriffe als auch Lesezugriffe angefordert werden, welche dieselbe Adresseinheit (110, AE a1, a2) betreffen, diese derart erfolgen, dass zunächst ein Auslesen der gesamten Adresseinheit (110, AE a1, a2) erfolgt, dass dann alle von einem zu lesenden Signalwert (211) umfassten Bits (Bit #1, #n) extrahiert werden, und dass anschließend alle von einem zu schreibenden Signalwert umfassten Bits (Bit #1, #n) gemäß dem zu schreibenden Signalwert angepasst werden, woraufhin der Inhalt des Puffers in die Adresseinheit (110, AE a1, a2) geschrieben wird.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass eine Zugriffseinheit umfassend einen Puffer (401) für Bit-Lese-Anforderungen (ZA), das Adressregister (402), den Wort-Lader (403), den Wort-Puffer (405) und den mindestens einen Bit-Selektor in die Konfiguration des programmierbaren Logikbausteins (104, 207) integriert ist, wobei eine Recheneinheit (204) mit dem programmierbaren Logikbaustein (104, 207) verbunden ist, wobei die Recheneinheit (204) ein Erfassungsprogramm (206) ausführt, welches mittels einer Zuordnungstabelle (205) Leseanforderungen auf ein Signal (Signal #1, #2) jeweils in Bit-Lese-Anforderungen (ZA) auf die einzelnen von dem Signal (Signal #1, #2) umfassten Bits (Bit #1, #n) umsetzt, wobei das Erfassungsprogramm die Bit-Lese-Anforderungen (ZA) umsortiert, bevor diese an den programmierbaren Logikbaustein (104, 207) gesendet werden.
  6. Vorrichtung für den beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins, welcher eine Funktionsebene und eine Konfigurationsebene (307, 404) umfasst, wobei die Konfigurationsebene (307, 404) eine Anzahl von Adresseinheiten (ai, aj, ak) umfasst, über die auf eine Vielzahl von Speicherelementen zugegriffen werden kann, umfassend eine Schnittstelle, welche mit einer oder mehreren Recheneinheiten (301, 302, 303) verbunden werden kann, einen Speicher (305, 401), und eine Zugriffseinheit (306), wobei die Vorrichtung dazu eingerichtet ist, über die Schnittstelle Bit-Zugriffsanforderungen (ZA) auf mindestens ein Bit zu empfangen und empfangene Bit-Zugriffsanforderungen (ZA) in dem Speicher (305, 401) zu speichern, wobei eine Bit-Zugriffsanforderung (ZA) jeweils ein Bit in der Konfiguration mit einer Adresse entsprechend einer Adresseinheit (110, AE a1, a2) mit je einem Adressversatz aus einem Wortversatz (WV) innerhalb der Adresseinheit und einer Bitposition (BP) innerhalb des adressierten Wortes adressiert, wobei die Vorrichtung derart ausgebildet ist, dass die in dem Speicher (305, 401) gespeicherten Bit-Zugriffsanforderungen (ZA) in einer vorgegebenen Reihenfolge umgesetzt werden, und wobei die Vorrichtung ferner dazu eingerichtet ist, eingehende Bit-Zugriffsanforderungen (ZA) nach der jeweiligen Adresseinheit (ai, aj, ak) und weiterhin derart zu sortieren, dass Bit-Zugriffsanforderungen (ZA) auf alle in einer einzelnen Adresseinheit (ai, aj, ak) angeordneten Bits aufeinanderfolgend in dem Speicher gespeichert sind, wobei die Zugriffseinheit (306) einen Wort-Lader (403), einen Wort-Puffer (405) und mindestens einen Bit-Selektor (406) umfasst und dazu eingerichtet ist, Bit-Zugriffsanforderungen (ZA) zum Lesen eines Bits mit einem höheren Adressversatz (ai, aj, ak) später umzusetzen, wobei die Adresse der aktuellen Bit-Lese-Anforderung (ZA) in das Adressregister (402) geladen wird, und der Wortlader (403) inaktiv bleibt, wenn sich die Werte der Adresseinheit (110, AE a1, a2) und des Wortversatzes (WV) im Adressregister (402) beim Laden nicht geändert haben, und andernfalls der Wortlader (403) solange Wörter aus der Konfigurationsebene (307, 404) in den Wort-Puffer (405) lädt, bis der Wort-Puffer (405) das durch die Werte der Adresseinheit (110, AE a1, a2) und des Wortversatzes (WV) im Adressregister (402) adressierte Wort enthält und der Wert des angeforderten Bits mittels des mindestens einen Bit-Selektors (406) aus dem Wort-Puffer (405) extrahiert wird.
  7. Vorrichtung nach Anspruch 6, dadurch gekennzeichnet, dass der Adressversatz einer Bit-Zugriffsanforderung (ZA) aufgeteilt wird in einem Wortversatz (wi, wj, wk), der die Lage des das Bit umfassenden Worts in der Adresseinheit (ai, aj, ak) angibt, und eine Bitposition (bi, bj, bk), welche die Lage des Bits in dem Wort angibt, wobei die Vorrichtung dazu eingerichtet ist, Zugriffsanforderungen (ZA) innerhalb einer Adresseinheit (ai, aj, ak) nach dem Wortversatz (wi, wj, wk) und der Bitposition (bi, bj, bk) zu sortieren.
  8. Vorrichtung nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass diese dazu eingerichtet ist, eine partielle Rekonfiguration des programmierbaren Logikbausteins vorzunehmen, wobei die vorzunehmenden Änderungen als Bit-Zugriffsanforderungen (ZA) in dem Speicher (305, 401) gespeichert werden, wobei die Vorrichtung einen Schreib-Puffer aufweist, der eine Adresseinheit (ai, aj, ak) der Konfigurationsebene (307, 404) fassen kann, wobei zunächst jede Adresseinheit (ai, aj, ak), welche von mindestens einer Bit-Zugriffsanforderung (ZA) betroffen ist, in den Schreib-Puffer gelesen wird, dann jedes zu ändernde Bit (bi, bj, bk) in der Adresseinheit (ai, aj, ak) angepasst wird, und anschließend die Adresseinheit (ai, aj, ak) in die Konfigurationsebene (307, 404) geschrieben wird.
  9. Computerprogrammprodukt mit einem computerlesbaren Speichermedium, auf dem Befehle eingebettet sind, die, wenn sie von einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit dazu eingerichtet ist, ein Verfahren gemäß einem der Ansprüche 1 bis 5 auszuführen.
DE102015121128.9A 2015-11-03 2015-12-04 Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins Active DE102015121128B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/334,659 US9628085B1 (en) 2015-11-03 2016-10-26 Method and device for accelerated access to signals of a programmable logic device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102015118782 2015-11-03
DE102015118782.5 2015-11-03

Publications (2)

Publication Number Publication Date
DE102015121128A1 DE102015121128A1 (de) 2017-05-04
DE102015121128B4 true DE102015121128B4 (de) 2018-01-04

Family

ID=58545956

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015121128.9A Active DE102015121128B4 (de) 2015-11-03 2015-12-04 Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins

Country Status (2)

Country Link
US (1) US9628085B1 (de)
DE (1) DE102015121128B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3173935B1 (de) * 2015-11-24 2018-06-06 Stichting IMEC Nederland Speicherzugriffseinheit

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040113655A1 (en) * 2002-12-13 2004-06-17 Xilinx, Inc. Partial reconfiguration of a programmable logic device using an on-chip processor
US20060005090A1 (en) * 2002-10-22 2006-01-05 Altera Corporation Compare, select, sort, and median-filter apparatus in programmable logic devices and associated methods
US20060022700A1 (en) * 2004-07-27 2006-02-02 Goel Ashish K FPGA-based digital circuit for reducing readback time
WO2011147443A1 (en) * 2010-05-25 2011-12-01 Panasonic Corporation Extended bitmaps for a programmable logic device
DE102013101300A1 (de) * 2013-02-11 2014-08-14 Dspace Digital Signal Processing And Control Engineering Gmbh Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
WO2016049336A1 (en) * 2014-09-26 2016-03-31 Moog Inc. Data visualization and logging system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665782B2 (en) * 2001-08-16 2003-12-16 International Business Machines Corporation Method and apparatus for preventing unauthorized access of memory devices
US7548091B1 (en) * 2005-07-29 2009-06-16 Altera Corporation Method and apparatus to power down unused configuration random access memory cells
US8356272B2 (en) * 2011-05-12 2013-01-15 S2C Inc. Logic verification module apparatus to serve as a hyper prototype for debugging an electronic design that exceeds the capacity of a single FPGA

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005090A1 (en) * 2002-10-22 2006-01-05 Altera Corporation Compare, select, sort, and median-filter apparatus in programmable logic devices and associated methods
US20040113655A1 (en) * 2002-12-13 2004-06-17 Xilinx, Inc. Partial reconfiguration of a programmable logic device using an on-chip processor
US20060022700A1 (en) * 2004-07-27 2006-02-02 Goel Ashish K FPGA-based digital circuit for reducing readback time
US7271616B2 (en) * 2004-07-27 2007-09-18 Stmicroelectronics Pvt. Ltd. FPGA-based digital circuit for reducing readback time
WO2011147443A1 (en) * 2010-05-25 2011-12-01 Panasonic Corporation Extended bitmaps for a programmable logic device
DE102013101300A1 (de) * 2013-02-11 2014-08-14 Dspace Digital Signal Processing And Control Engineering Gmbh Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
WO2016049336A1 (en) * 2014-09-26 2016-03-31 Moog Inc. Data visualization and logging system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
John D. McCalpin, Ph.D.: "Notes on Cached Access to Memory-Mapped IO Regions". Im Internet unter <URL:http://sites.utexas.edu/jdm4372/2013/05/29/notes-on-cached-access-to-memory-mapped-io-regions> und <URL:https://web.archive.org/web/20150413235348/http://sites.utexas.edu> *

Also Published As

Publication number Publication date
US20170126232A1 (en) 2017-05-04
US9628085B1 (en) 2017-04-18
DE102015121128A1 (de) 2017-05-04

Similar Documents

Publication Publication Date Title
DE602005003987T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
EP1720100B1 (de) Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
DE3438869C2 (de)
DE3339645A1 (de) Bidirektional arbeitende anordnung zur justierung von datenbytes in einer digitalen datenverarbeitungsanlage
EP2765528B1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE2918053A1 (de) Schaltungspruefgeraet
DE102006024655A1 (de) Speicherkarte und Speichersteuereinheit
DE3237224A1 (de) Vorrichtung zum erzeugen einer folge von pruefdaten fuer lsi-schaltungen
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
EP2954440B1 (de) Verändern eines signalwerts eines fpga zur laufzeit
DE69734551T2 (de) Verfahren und Gerät zur Erzeugung von Paritätsblöcken
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE102006036837A1 (de) Datenspeicherverwaltungsverfahren und -system
DE2517302A1 (de) Datenverarbeitungssystem mit mehrprogramm-verarbeitung
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
EP3080668B1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE2134816A1 (de) Einrichtung zur adressenuebersetzung
DE102015121128B4 (de) Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins
DE102020124791A1 (de) Verfahren zur Übertragung von Daten von einer ersten Recheneinheit zu einer zweiten Recheneinheit
EP1789889B1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
DE19963611A1 (de) Speicherprüfvorrichtung
DE102013114508A1 (de) Blockbasierte Signalverarbeitung
DE2902477A1 (de) Datenverarbeitungsanordnung
EP0036148A1 (de) Hybrid-Assoziativspeicher

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
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