DE102015115022A1 - Method for changing the configuration of a programmable logic device - Google Patents
Method for changing the configuration of a programmable logic device Download PDFInfo
- Publication number
- DE102015115022A1 DE102015115022A1 DE102015115022.0A DE102015115022A DE102015115022A1 DE 102015115022 A1 DE102015115022 A1 DE 102015115022A1 DE 102015115022 A DE102015115022 A DE 102015115022A DE 102015115022 A1 DE102015115022 A1 DE 102015115022A1
- Authority
- DE
- Germany
- Prior art keywords
- logic
- configuration
- elements
- programmable logic
- bit stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
In einem Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins wird eine Ausgangskonfiguration des programmierbaren Logikbausteins eingelesen, so dass eine Logikbeschreibung, insbesondere eine platzierte Netzliste, der Ausgangskonfiguration zumindest teilweise vorliegt. Aus der Logikbeschreibung der Ausgangskonfiguration des programmierbaren Logikbausteins werden ein oder mehrere Logikelemente und/oder Verbindungselemente ersetzt oder umkonfiguriert und eine Logikbeschreibung einer Zielkonfiguration wird erstellt, welche kein oder mehrere zusätzliche Logikelemente aufweist, wobei kein oder mehrere Elemente der Ausgangskonfiguration in der Zielkonfiguration fehlen. Anhand von Zuordnungsinformationen Übergabepunkte bestimmt, also in Ziel- und Ausgangskonfiguration vorhandene Logikelemente, insbesondere Register, und/oder Verschaltungselemente, an denen in der Zielkonfiguration eine geänderte Logikfunktion angelegt wird, wobei zumindest die bereits in der Ausgangskonfiguration nicht genutzten Logikelemente des programmierbaren Logikbausteins als frei markiert werden, und wobei die zusätzlichen Logikelemente der Zielkonfiguration auf den als frei markierten Logikelementen platziert und über ungenutzte Verbindungselemente mit den Übergabepunkten verbunden werden. Aus der Logikbeschreibung der Zielkonfiguration wird ein geänderter Bitstrom erstellt und der geänderte Bitstrom wird in den programmierbaren Logikbaustein geschrieben.In a method for changing the configuration of a programmable logic module, an output configuration of the programmable logic module is read, so that a logic description, in particular a placed network list, the output configuration is at least partially present. One or more logic elements and / or connectors are replaced or reconfigured from the logic description of the programmable logic device output configuration and a logic description of a target configuration is created having no or more additional logic elements, with none or more elements of the output configuration missing in the target configuration. On the basis of allocation information transfer points determined, ie in target and output configuration existing logic elements, in particular registers, and / or Verschaltungselemente to which a modified logic function is applied in the target configuration, wherein at least the unused in the initial configuration logic elements of the programmable logic device marked as free and the additional logic elements of the target configuration are placed on the freely marked logic elements and connected to the transfer points via unused connection elements. From the logic description of the target configuration, a modified bit stream is created and the changed bit stream is written to the programmable logic device.
Description
Die Erfindung betrifft ein Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins, ein Verfahren zum Anpassen eines Steuergeräts, welches einen zur Ausführung einer Regelfunktion eingerichteten programmierbaren Logikbaustein umfasst, und eine Programmiervorrichtung zum Beschreiben eines programmierbaren Logikbausteins. The invention relates to a method for changing the configuration of a programmable logic module, a method for adapting a control unit, which comprises a programmable logic module set up to execute a control function, and a programming device for writing a programmable logic module.
In vielen Gebieten der Technik werden Steuergeräte zur Regelung eines physikalischen Prozesses eingesetzt, wobei ein Mikrocontroller des Steuergeräts zyklisch ein Programm abarbeitet, welches die Ermittlung neuer Messwerte eines oder mehrerer Sensoren und die Ansteuerung eines oder mehrerer Aktuatoren basierend auf einem Vergleich der Messwerte mit Sollwerten umfasst. Zur Beschleunigung des Entwurfs neuer Steuergeräte bzw. Regelalgorithmen wird dabei häufig auf einem bestehenden Steuergerät aufgesetzt und lediglich einzelne (Teil-)Funktionen ersetzt. Dieses auch unter dem Begriff Bypassing bekannte Vorgehen kann entweder vollständig auf dem bestehenden Steuergerät umgesetzt werden (internes Bypassing) oder für den Aufruf der neuen Funktion(en), den sogenannten Bypassfunktionen, auf ein gesondertes Rapid Control Prototyping System (abgekürzt RCP-System) zurückgreifen (externes Bypassing). Das Ersetzen einzelner Funktionen kann zweckmäßigerweise durch die Anpassung von Sprungbefehlen erfolgen. In many fields of technology, control devices are used to control a physical process, wherein a microcontroller of the control device cyclically executes a program which comprises the determination of new measured values of one or more sensors and the actuation of one or more actuators based on a comparison of the measured values with setpoints. To speed up the design of new control devices or control algorithms is often placed on an existing controller and only single (sub) functions replaced. This procedure, also known as bypassing, can either be completely implemented on the existing control unit (internal bypassing) or resort to a separate Rapid Control Prototyping System (RCP system) for calling the new function (s), the so-called bypass functions (external bypassing). The replacement of individual functions may conveniently be done by the adaptation of jump instructions.
Aus der
Für die Simulation und Regelung von Systemen mit hoher Dynamik werden in zunehmendem Umfang unter dem Begriff Field Programmable Gate Array (abgekürzt FPGA) bekannte programmierbare Logikbausteine eingesetzt, die aufgrund paralleler Verarbeitung und einer für die jeweilige Anwendung maßgeschneiderten Logikschaltung auch schnell veränderliche Strecken zuverlässig regeln. Da anders als bei Mikroprozessoren keine sequentielle Abarbeitung erfolgt und keine Sprungbefehle vorhanden sind, kann für die auf einem FPGA implementierten Regelfunktionen bisher kein Bypassing durchgeführt werden. Ein weiterer Nachteil des Einsatzes von FPGA liegt darin, dass kleine Anpassungen an den einzelnen Logikfunktionen nur eingeschränkt möglich sind, da die Schaltung jeweils vollständig neu synthetisiert werden muss, was insbesondere aufgrund der Optimierung von Platzierung und Routing zeitaufwändig ist. Es wäre daher wünschenswert, eine einfache Möglichkeit zur Anpassung von Logikfunktionen auch für programmierbare Logikbausteine bereitzustellen. For the simulation and control of systems with high dynamics increasingly known programmable logic devices are used under the term Field Programmable Gate Array (abbreviated FPGA), which also reliably regulate rapidly changing paths due to parallel processing and a logic circuit custom-tailored for the respective application. Since, unlike microprocessors, there is no sequential processing and there are no jump instructions, so far no bypassing can be performed for the control functions implemented on an FPGA. A further disadvantage of the use of FPGA is that small adaptations to the individual logic functions are only possible to a limited extent since the circuit must be completely re-synthesized, which is time-consuming, in particular due to the optimization of placement and routing. It would therefore be desirable to provide a simple way of adapting logic functions also for programmable logic devices.
Eine partielle Rekonfiguration ist ein z.B. aus der
- • Bereits im Initialdesign müssen die Partitionsschnittstellen geplant und fest implementiert werden.
- • Unabhängig von der in der zweiten Partition realisierten Funktionalität bzw. implementierten Logikfunktion ist eine feste Anzahl von Logikeinheiten und Verbindungselementen reserviert. Durch die somit erforderliche Reservierung der größten anzunehmenden Anzahl erforderlicher Logikelemente bleiben in vielen Fällen Ressourcen ungenutzt.
- • Alle auf der ersten Partition angeordneten Logikfunktionen bleiben fest; auch dann, wenn die aktuell realisierte Funktionalität der zweiten Partition diese nicht benötigt, bleibt ein Platz- und Energiebedarf der Funktionen erhalten.
- • Already in the initial design, the partition interfaces have to be planned and firmly implemented.
- • Regardless of the functionality or logic implemented in the second partition, a fixed number of logic units and connectors are reserved. Due to the thus required reservation of the largest the number of required logic elements to be assumed in many cases remains unused resources.
- • All logic functions arranged on the first partition remain fixed; even if the currently implemented functionality of the second partition does not require them, a space and energy requirement of the functions is maintained.
Für den Entwurf und die Bearbeitung von FPGA-Konfiguration wurde
Mit
Vor diesem Hintergrund besteht die Aufgabe der Erfindung darin, ein Verfahren und eine Vorrichtung anzugeben, welche den Stand der Technik weiterbilden, und vorzugsweise eine mit dem bekannten Bypassing vergleichbare Funktionalität bei der Entwicklung von programmierbare Logikbausteine umfassenden Steuergeräten ermöglichen. Against this background, the object of the invention is to provide a method and a device, which further develop the prior art, and preferably allow a comparable with the known bypassing functionality in the development of programmable logic devices comprehensive control devices.
Die Aufgabe wird durch ein Verfahren zum Ändern der Konfiguration eines Programmierbaren Logikbausteins mit den Merkmalen von Anspruch 1 und eine Programmiervorrichtung mit den Merkmalen von Anspruch 16 gelöst. The object is achieved by a method for changing the configuration of a programmable logic module having the features of
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Unteransprüchen. Advantageous embodiments of the invention are the subject of dependent subclaims.
Erfindungsgemäß wird also ein Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins bereitgestellt, bei dem eine Ausgangskonfiguration des programmierbaren Logikbausteins eingelesen wird, so dass eine Logikbeschreibung, insbesondere eine platzierte Netzliste, der Ausgangskonfiguration zumindest teilweise vorliegt, wobei aus der Logikbeschreibung der Ausgangskonfiguration des programmierbaren Logikbausteins ein oder mehrere Logikelemente und/oder Verbindungselemente ersetzt oder umkonfiguriert werden und eine Logikbeschreibung einer Zielkonfiguration erstellt wird, welche kein, ein oder mehrere zusätzliche Logikelemente aufweist, wobei kein, ein oder mehrere Elemente der Ausgangskonfiguration in der Zielkonfiguration nicht genutzt werden. Anhand von Zuordnungsinformationen werden Übergabepunkte bestimmt, also in Ziel- und Ausgangskonfiguration vorhandenen Logikelemente oder deren Ein- oder Ausgänge, insbesondere Register oder Treiber, an denen in der Zielkonfiguration eine geänderte Logikfunktion angelegt wird, wobei zumindest die bereits in der Ausgangskonfiguration nicht genutzten Logikelemente des programmierbaren Logikbausteins als frei markiert werden und wobei die zusätzlichen Logikelemente der Zielkonfiguration auf den als frei markierten Logikelementen platziert und über ungenutzte Verbindungselemente mit den Übergabepunkten verbunden werden. Aus der Logikbeschreibung der Zielkonfiguration wird ein geänderter Bitstrom erstellt und der geänderte Bitstrom wird in den programmierbaren Logikbaustein geschrieben. The invention thus provides a method for changing the configuration of a programmable logic module, in which an output configuration of the programmable logic module is read, so that a logic description, in particular a placed netlist, the output configuration is at least partially present, wherein from the logic description of the output configuration of the programmable logic device or a plurality of logic elements and / or connectors are replaced or reconfigured and a logic description of a target configuration is created that has no, one or more additional logic elements, wherein none, one or more elements of the initial configuration are not used in the target configuration. On the basis of allocation information, transfer points are determined, ie logic elements or their inputs or outputs present in the target and output configuration, in particular registers or drivers, to which a modified logic function is applied in the target configuration, whereby at least the logic elements of the programmable logic elements not already used in the initial configuration Logic blocks are marked as free and the additional logic elements of the target configuration are placed on the freely marked logic elements and connected via unused connecting elements with the transfer points. From the logic description of the target configuration, a modified bit stream is created and the changed bit stream is written to the programmable logic device.
Programmierbare Logikbausteine umfassen insbesondere unter den Abkürzungen FPGA, CPLD und PLD bekannte Bausteine, welche eine Vielzahl von Logikelementen und eine Vielzahl von Verbindungselementen besitzen, deren genaue Konfiguration nach einem Neustart des Bausteins anhand eines eingelesenen Bitstroms festgelegt wird. Zu diesem Zweck weisen programmierbare Logikbausteine zweckmäßigerweise einen Konfigurationsspeicher auf, der für jedes Logikelement und jedes schaltbare Verbindungselement zumindest ein Bit umfasst und vorzugsweise aus statischen Speicherzellen (SRAM, insbesondere bei FPGAs) oder nichtflüchtigen Speichern (FLASH, insbesondere bei PLDs) aufgebaut ist. Programmable logic devices include, in particular under the abbreviations FPGA, CPLD and PLD known components, which have a plurality of logic elements and a plurality of connecting elements, the exact configuration is set after a restart of the block based on a read bit stream. For this purpose, programmable logic devices expediently have a configuration memory which comprises at least one bit for each logic element and each switchable connection element and is preferably made up of static memory cells (SRAM, in particular in the case of FPGAs) or nonvolatile memories (FLASH, in particular in the case of PLDs).
Unter einem Logikelement sind hierbei elementare Einheiten des programmierbaren Logikbausteins wie Register, Wahrheitstabellen und Verzögerungseinheiten zu verstehen. Vorzugsweise umfassen Logikelemente auch Treiber insbesondere für einen Schnittstellen-Pin eines FPGAs sowie fest vorgegebene dedizierte Logikschaltungen z.B. für eine Multiplikation mehrerer Werte. Mit einem Umkonfigurieren eines Logikelements ist zweckmäßigerweise ein Ändern mindestens einer Eigenschaft des Logikelements gemeint. Beispielsweise würde ein Umkonfigurieren einer Wahrheitstabelle bedeuten, dass mindestens ein Ausgabewert der Tabelle gegenüber der Ausgangskonfiguration verändert ist; im Fall einer dedizierten Logikschaltung könnte das Umkonfigurieren z.B. auch in dem Anlegen eines Taktes bzw. dem Aktivieren oder Deaktivieren der dedizierten Logikschaltung bestehen. Under a logic element here are elementary units of the programmable logic device as registers, truth tables and delay units to understand. Preferably For example, logic elements also include drivers, in particular for an interface pin of an FPGA, as well as fixed, dedicated logic circuits, for example, for multiplying a plurality of values. A reconfiguration of a logic element is expediently meant to change at least one property of the logic element. For example, reconfiguring a truth table would mean that at least one output value of the table has changed from the initial configuration; In the case of a dedicated logic circuit, for example, the reconfiguration could also consist in the application of a clock or the activation or deactivation of the dedicated logic circuit.
Das Ersetzen oder Umkonfigurieren von ein oder mehreren Logikelementen und/oder Verbindungselementen der Ausgangskonfiguration erfolgt bevorzugt anhand von Zuordnungsinformationen, die insbesondere von dem Hersteller der Ausgangskonfiguration zur Verfügung gestellt worden sein können. Wenn keine vollständige Logikbeschreibung der Ausgangskonfiguration vorliegt, so umfassen die Zuordnungsinformationen zweckmäßigerweise zumindest verfügbare Eingabesignale und mögliche Ausgabepunkte. Die Zuordnungsinformationen können eine direkt vom Hersteller der Ausgangskonfiguration angegebene Liste von Übergabepunkten umfassen; alternativ oder ergänzend kann der Nutzer einen oder mehrere Übergabe punkte vorgeben. An einen Übergabepunkt wird insbesondere dann eine geänderte Logikfunktion angelegt, wenn der Signalpfad eines Eingangs des Übergabepunkts mindestens ein zusätzliches oder umkonfiguriertes Logikelement enthält. Logikfunktionen umfassen zweckmäßigerweise eine Anzahl von aufeinanderfolgenden Logikelementen, wobei zumindest teilweise ein Ausgang eines ersten Logikelements mit einem Eingang eines zweiten Logikelements verbunden ist, so dass ein durchgehender Signalpfad von einem Eingang der Logikfunktion zu einem Ausgang besteht. Bevorzugt werden Logikfunktionen ausgehend von einem für den Empfang von Signalen konfigurierten Schnittstellen-Pin des programmierbaren Logikbausteins betrachtet. The replacement or reconfiguration of one or more logic elements and / or connection elements of the output configuration preferably takes place on the basis of assignment information, which in particular may have been provided by the manufacturer of the output configuration. If there is no complete logic description of the output configuration, then the mapping information expediently includes at least available input signals and possible output points. The mapping information may include a list of handover points specified directly by the manufacturer of the initial configuration; alternatively or additionally, the user can specify one or more transfer points. A modified logic function is applied to a transfer point in particular if the signal path of an input of the transfer point contains at least one additional or reconfigured logic element. Logic functions suitably comprise a number of consecutive logic elements, wherein at least partially an output of a first logic element is connected to an input of a second logic element so that a continuous signal path exists from an input of the logic function to an output. Preferably, logic functions are considered starting from an interface pin of the programmable logic module configured for the reception of signals.
Mit zusätzlichen Logikelementen der Zielkonfiguration sind solche Logikelemente gemeint, welche in der Zielkonfiguration in einem Signalpfad angeordnet sind, aber in der Ausgangskonfiguration weder direkt noch indirekt, d.h. über weitere Logikelemente, mit einem Ausgang bzw. einem Schnittstellen-Pin des programmierbaren Logikbausteins verbunden waren. Um die Zielkonfiguration weiterhin mit hohen FPGA-Taktraten betreiben zu können, werden bevorzugt freie Logikelemente in der Nähe (z.B. innerhalb einem definierten Radius) des jeweiligen Übergabepunkts verwendet. Dies vermeidet übermäßige Verzögerungen durch lange Signalpfade. By additional logic elements of the target configuration are meant those logic elements which are located in the target configuration in a signal path but in the initial configuration neither directly nor indirectly, i. via further logic elements, were connected to an output or an interface pin of the programmable logic device. In order to continue to operate the target configuration at high FPGA clock rates, it is preferred to use free logic elements in the vicinity (e.g., within a defined radius) of the particular transfer point. This avoids excessive delays due to long signal paths.
Eine Konfiguration des FPGA kann hierbei in mehreren Ebenen dargestellt werden. Auf unterster Ebene liegt ein die Konfiguration beschreibender Bitstrom vor, welcher direkt in den Konfigurationsspeicher des FPGA geschrieben werden kann. In der nächsthöheren Ebene liegt die Logikbeschreibung in Form einer platzierten Netzliste vor, bei der eine gewünschte Funktionalität bereits auf die Logik- und Verschaltungselemente abgebildet wurde und somit in einem Bitstrom übersetzt werden kann. Die nächsthöhere Ebene bildet eine Logikbeschreibung in Form einer unplatzierten Netzliste, bei der noch keine Abbildung auf konkrete Elemente des jeweiligen FPGA-Bausteins erfolgt ist. Je nach dem Vorgehen beim Erstellen der Konfiguration können noch höhere Abstraktionsebenen vorhanden sein, so kann eine Beschreibung der Konfiguration in einer Hardwarebeschreibungssprache wie VHDL oder SystemC vorliegen, welche anschließend in eine Netzliste konvertiert wird. Auch die Beschreibung in Form eines Blockdiagramms einer technischen Rechenumgebung wie Matlab und Simulink ist möglich, da z.B. mittels des Xilinx System Generators das Blockdiagramm in eine Darstellung der FPGA-Konfiguration in einer Hardwarebeschreibungssprache übersetzt werden kann. Hierbei kann es auch vorgesehen sein, dass anhand des Blockdiagramms automatisiert eine Liste möglicher Übergabepunkte erstellt wird, welche z.B. die den Ein- und Ausgänge eines Blocks bzw. eines Subsystems entsprechenden Logikelemente enthält. A configuration of the FPGA can be displayed in several levels. At the lowest level there is a bitstream describing the configuration, which can be written directly into the configuration memory of the FPGA. In the next higher level, the logic description is in the form of a placed netlist in which a desired functionality has already been mapped to the logic and interconnection elements and thus can be translated in a bitstream. The next highest level is a logic description in the form of an unplaced netlist, in which no mapping has yet been made to concrete elements of the respective FPGA chip. Depending on the procedure used to create the configuration, even higher abstraction levels may be present, so that a description of the configuration may be available in a hardware description language such as VHDL or SystemC, which is then converted into a netlist. The description in the form of a block diagram of a technical computing environment such as Matlab and Simulink is also possible because e.g. Using the Xilinx System Generator, the block diagram can be translated into a representation of the FPGA configuration in a hardware description language. In this case, it can also be provided that a list of possible transfer points is automatically generated on the basis of the block diagram, which is e.g. contains the logic elements corresponding to the inputs and outputs of a block or subsystem.
Das Schreiben des geänderten Bitstroms kann vollständig oder differentiell erfolgen, wobei also vorzugsweise nur für geänderte Logikelemente oder Regionen ein geänderter Bitstrom geschrieben wird. Mit dem Schreiben des geänderten Bitstroms in den programmierbaren Logikbaustein ist insbesondere ein Beschreiben des Konfigurationsspeichers des programmierbaren Logikbausteins gemeint, wobei zweckmäßigerweise bei einem differentiellen Schreiben nur die Frames bzw. Adressbereiche des Konfigurationsspeichers beschrieben werden, welche ein oder mehrere umkonfigurierte oder zusätzliche Logikelemente oder Verbindungselemente umfassen. Hierbei kann es auch vorgesehen sein, einen nichtflüchtigen Speicher zu beschreiben, der bei einer Initialisierung des programmierbaren Logikbausteins ausgelesen wird und den Inhalt des Konfigurationsspeichers bestimmt; somit kann das Schreiben der geänderten Bitstroms in den programmierbaren Logikbaustein indirekt erfolgen. The writing of the modified bit stream can be done completely or differentially, so that a modified bit stream is preferably written only for changed logic elements or regions. The writing of the changed bit stream into the programmable logic module means, in particular, a description of the configuration memory of the programmable logic module, whereby only the frames or address areas of the configuration memory which contain one or more reconfigured or additional logic elements or connection elements are expediently described in a differential write. In this case, it may also be provided to describe a nonvolatile memory which is read out during initialization of the programmable logic module and determines the content of the configuration memory; Thus, the writing of the changed bit stream in the programmable logic device can be done indirectly.
Ein wichtiger Vorteil des erfindungsgemäßen Verfahrens liegt darin, dass kleine Änderungen an Logikfunktionen sehr schnell durchgeführt werden können, da nur die neu hinzugefügten Teile einer Logikfunktion platziert und geroutet werden müssen. Dies ermöglicht eine mit dem internen Bypassing vergleichbare Funktionalität auch für Steuergeräte, die einen FPGA umfassen. Somit kann eine Vielzahl von inkrementellen Änderungen mit geringem Zeitaufwand durchgeführt und getestet werden, was eine Beibehaltung des etablierten Workflows für den Regler-Entwurf gestattet. An important advantage of the method according to the invention is that small changes to logic functions can be carried out very quickly, since only the newly added parts of a logic function have to be placed and routed. This allows a functionality comparable to internal bypassing, even for ECUs, which include an FPGA. Thus, a variety of incremental changes can be made and tested in a timely manner, allowing retention of the established controller design workflow.
Indem der Hersteller der Ausgangskonfiguration neben dem ursprünglichen Bitstrom auch relevante Struktur- bzw. Zuordnungsinformationen bereitstellt, können Änderungen an Logikfunktionen vorgenommen werden, ohne dass die gesamte Logikbeschreibung der Konfiguration offengelegt werden muss. Einerseits kann der Hersteller somit den detaillierten Source-Code geheim halten und andererseits Schnittstellen bereitstellen, die dem Anwender eine schnelle Anpassung bewährter Logikfunktionen ermöglichen. By providing relevant structural or mapping information in addition to the original bitstream, the manufacturer of the output configuration can make changes to logic functions without having to disclose the entire logic description of the configuration. On the one hand, the manufacturer can thus keep the detailed source code secret and, on the other hand, provide interfaces that enable the user to rapidly adapt proven logic functions.
Weiterhin ist es vorteilhaft, dass keine vorab implementierten Partitionsschnittstellen bzw. „virtual sockets“ erforderlich sind; auch dadurch, dass keine Aufteilung in mehrere Partitionen mit entsprechenden Leerflächen erfolgt, können die vorhandenen Logik- und Verbindungselemente des FPGA-Bausteins effizient ausgenutzt werden. Furthermore, it is advantageous that no pre-implemented partition interfaces or "virtual sockets" are required; The fact that there is no division into several partitions with corresponding empty areas allows the existing logic and connection elements of the FPGA module to be used efficiently.
Ein weiterer Vorteil besteht darin, dass durch die Anpassung des Programmier-Bitstroms, der vorzugsweise in einem nichtflüchtigen Speicher hinterlegt ist, eine gewünschte Funktionalität nach einem Neustart des Steuergeräts ohne Verzögerung unmittelbar zur Verfügung steht. Der für die Initialisierung des programmierbaren Logikbausteins verwendete nichtflüchtige Speicher kann über einen Mikrocontroller oder einen entsprechend konfigurierten zusätzlichen Logikbaustein wie einen CPLD ausgelesen werden, die zweckmäßigerweise mit dem programmierbaren Logikbaustein auf einer Leiterplatte angeordnet bzw. in dem Steuergerät integriert sind; prinzipiell kann der programmierbare Logikbaustein auch einen nichtflüchtigen Speicher umfassen. A further advantage is that by adapting the programming bit stream, which is preferably stored in a non-volatile memory, a desired functionality is immediately available after a restart of the control unit without delay. The non-volatile memory used for the initialization of the programmable logic device can be read via a microcontroller or a correspondingly configured additional logic device such as a CPLD, which are expediently arranged with the programmable logic device on a printed circuit board or integrated in the control unit; In principle, the programmable logic module may also include a non-volatile memory.
Wenn in der Ausgangskonfiguration hinreichend viele freie Logikelemente verfügbar sind, kann es vorgesehen sein, nur die Verbindung von nicht mehr genutzten Logikelementen zu den Übergabepunkten zu entfernen und die geänderten Logikfunktionen ausschließlich mittels bereits anfangs ungenutzten Logikelementen zu realisieren. Auch in dem Fall, dass die Zuordnungsinformationen nur die Übergabepunkte und eine Liste der ursprünglich freien Logikelemente umfassen, ist somit ein Ändern der Konfiguration des programmierbaren Logikbausteins möglich. If a sufficient number of free logic elements are available in the initial configuration, it may be provided to remove only the connection of disused logic elements to the transfer points and to realize the changed logic functions exclusively by means of already unused logic elements. Even in the case where the allocation information includes only the transfer points and a list of the originally free logic elements, it is thus possible to change the configuration of the programmable logic device.
Gemäß einer bevorzugten Ausführungsform der Erfindung werden auch die Logikelemente der Ausgangskonfiguration, welche in der Zielkonfiguration nicht genutzt werden und deren Ausgänge nur mit einem oder mehreren Eingängen zumindest eines der Übergabepunkte verbunden sind, als frei markiert. Wenn also ein Ausgang eines Logikelements in der Ausgangskonfiguration mit einem Eingang eines Übergabepunkts verbunden ist bzw. war, aber der Eingang des Übergabepunkts in der Zielkonfiguration mit einem anderen Logikelement verbunden ist, so wird das Logikelement in der Zielkonfiguration nicht genutzt und kann als frei markiert werden. Vorzugsweise werden weiterhin die entsprechenden Verbindungselemente als nicht genutzt markiert. Die entsprechenden Verbindungselemente umfassen hierbei insbesondere schaltbare Verbindungselemente, die in der Ausgangskonfiguration den Ausgang des als frei markierten Logikelements mit einer oder mehreren Leiterbahnen verbinden und diese Leiterbahn/en mit einem oder mehreren Eingängen eines oder mehrerer Übergabepunkte verbinden, sowie zweckmäßigerweise diese in der Zielkonfiguration unverbundene/n Leiterbahn/en. Durch ein derartiges Freigeben bzw. Bereinigen von nicht mehr benutzten Logikelementen wird die freie Fläche bzw. die Anzahl der für die Rekonfiguration verfügbaren Logikelemente maximiert. Das Freigeben von Logik- und Verbindungselementen ist besonders dann vorteilhaft, wenn die Ausgangskonfiguration die Ressourcen des FPGA-Bausteins nahezu vollständig ausfüllt. According to a preferred embodiment of the invention, the logic elements of the output configuration, which are not used in the target configuration and whose outputs are connected only to one or more inputs of at least one of the transfer points, are marked as free. Thus, if an output of a logic element in the output configuration is connected to an input of a transfer point, but the input of the transfer point in the destination configuration is connected to another logic element, then the logic element in the destination configuration is not used and can be marked as free , Preferably, furthermore, the corresponding connection elements are marked as not used. In this case, the corresponding connection elements in particular comprise switchable connection elements which in the output configuration connect the output of the logic element marked as free with one or more interconnects and connect this interconnect to one or more inputs of one or more transfer points, and expediently unlink them in the target configuration. n trace / s. By releasing or cleaning up unused logic elements, the free area or the number of logic elements available for the reconfiguration is maximized. Releasing logic and interconnect elements is particularly advantageous when the output configuration almost completely fills the resources of the FPGA device.
In einer besonders bevorzugten Ausführungsform der Erfindung werden rekursiv alle Logikelemente, deren Ausgänge ausschließlich mit den Eingängen von in einem vorherigen Schritt als frei markierten Logikelementen verbunden sind, ebenfalls als frei markiert. Wenn der Ausgang eines Logikelements nur mit dem Eingang eines in einem vorherigen Schritt als frei markierten Logikelements verbunden ist, der Ausgabewert also verworfen würde, so wird das Logikelement nicht mehr genutzt und kann ebenfalls als frei markiert werden. Somit werden schrittweise alle nicht mehr benötigten Logikelemente und zweckmäßigerweise auch nicht mehr benötigte Verbindungselemente freigegeben. In a particularly preferred embodiment of the invention, all logic elements whose outputs are connected exclusively to the inputs of logic elements marked as free in a previous step recursively are also marked as free. If the output of a logic element is only connected to the input of a logic element marked as free in a previous step, ie the output value would be discarded, then the logic element is no longer used and can also be marked as free. Thus, all logic elements no longer needed and expediently no longer required connecting elements are released gradually.
Gemäß einer weiteren besonders bevorzugten Ausführungsform der Erfindung werden alle Logikelemente in einer vorgegebenen Region um ein oder mehrere ersetzte Logikelemente der Ausgangskonfiguration oder einen Eingang eines Übergabepunkts als frei markiert und die entsprechenden Verbindungselemente als ungenutzt markiert, wobei alle Logikelemente in der vorgegebenen Region mit Ausnahme des oder der ersetzten Logikelemente anschließend neu platziert und mit ungenutzten Verbindungselementen verbunden werden. Bei geeigneter Wahl der Region (z.B. anhand eines definierten Radius um den jeweiligen Übergabepunkt) kann somit auch eine Optimierung des Platzierens bzw. Routings stattfinden, wodurch bei nur geringer Zunahme der benötigten Entwurfszeit ein weitgehend optimales zeitliches Verhalten gewährleistet wird. According to a further particularly preferred embodiment of the invention, all logic elements in a given region are marked as free around one or more replaced logic elements of the initial configuration or an input of a transfer point and the corresponding connection elements marked as unused, all logic elements in the given region except the or then replaced the replaced logic elements and connected to unused fasteners. With a suitable choice of the region (for example based on a defined radius around the respective transfer point), an optimization of the placement or routing can thus also take place, whereby a largely optimal temporal behavior is ensured with only a small increase in the required design time.
In einer ganz besonders bevorzugten Ausführungsform der Erfindung werden die in der Ausgangskonfiguration verwendeten Verbindungselemente, welche an einem der Logikelemente in der vorgegebenen Region enden, zumindest bis zu dem nächsten verbundenen Logikelement außerhalb der vorgegebenen Region als ungenutzt markiert. Somit wird sichergestellt, dass in der vorgegebenen Region hinreichend Verbindungselemente für ein optimiertes Routing verfügbar sind. In a very particularly preferred embodiment of the invention, the connecting elements used in the initial configuration, which terminate at one of the logic elements in the predetermined region, are marked as unused at least as far as the next connected logic element outside the predetermined region. This ensures that sufficient connection elements for optimized routing are available in the given region.
Zweckmäßigerweise umfasst der Schritt des Einlesens einer Ausgangskonfiguration das Einlesen eines Bitstroms und eine zumindest für Teile des Bitstroms vorgenommene Konvertierung des Bitstroms in eine Logikbeschreibung. Die Konvertierung kann insbesondere anhand von Architekturinformationen des verwendeten programmierbaren Logikbausteins erfolgen, wobei also eine Beziehung zwischen Position im Bitstrom und Logikelement auf dem programmierbaren Logikbaustein anhand von Architekturinformationen des verwendeten programmierbaren Logikbausteins hergestellt wird. The step of reading in an output configuration expediently comprises reading in a bit stream and converting the bit stream at least for parts of the bit stream into a logic description. The conversion can in particular be based on architectural information of the programmable logic device used, so that a relationship between position in the bit stream and logic element is made on the programmable logic device based on architectural information of the programmable logic device used.
Es ist vorteilhaft, wenn der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem für die geänderten und somit zu rekonfigurierenden Logikelemente eine Beziehung zwischen Position im Bitstrom und Logikelement auf dem programmierbaren Logikbaustein hergestellt und der ursprüngliche Bitstrom an den entsprechenden Positionen geändert wird. Hierbei kann es vorgesehen sein, einen differentiellen Bitstrom zu erstellen, welcher nur die geänderten Logik- und Verbindungselemente beschreibt oder nur Adressbereiche umfasst, in denen mindestens ein geändertes Logikelement liegt. Wenn geeignete Architektur- bzw. Zuordnungsinformationen vorliegen, muss somit nur ein Minimum an Daten geschrieben werden. It is advantageous if the modified bit stream is created on the basis of the target configuration by establishing a relationship between position in the bit stream and logic element on the programmable logic module for the changed and thus to be reconfigured logic elements and the original bit stream is changed at the corresponding positions. In this case, it may be provided to create a differential bit stream which only describes the changed logic and connection elements or only comprises address areas in which at least one changed logic element is located. Thus, if proper architectural or mapping information is available, only a minimum of data needs to be written.
Alternativ ist es vorteilhaft, wenn der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem die platzierte Netzliste der Zielkonfiguration in einen neuen vollständigen Bitstrom übersetzt wird. Wenn eine platzierte Netzliste der gesamten Zielkonfiguration vorliegt, ist eine schnelle Erstellung des geänderten Bitstroms möglich. Alternatively, it is advantageous if the modified bitstream is created based on the target configuration by translating the placed netlist of the target configuration into a new complete bitstream. If there is a placed netlist of the entire target configuration, a fast creation of the changed bitstream is possible.
Bevorzugt wird für eine zu ändernde Logikfunktion, welche mindestens einen Signalpfad umfasst, zumindest nach der Änderung eine Signallaufzeit ermittelt. Vorzugsweise wird für einen Signalpfad in der Zielkonfiguration des programmierbaren Logikbausteins, in dessen Verlauf mindestens ein zusätzliches oder umkonfiguriertes Logikelement oder Verbindungselement vorkommt, eine Signallaufzeit geschätzt, indem die Anzahl sequentiell aufeinander folgender Logikelemente des Signalpfads in der Zielkonfiguration gezählt wird und jedem Logikelement eine konstante Signallaufzeit zugeordnet wird. Alternativ kann es auch vorgesehen sein, einen Signalpfad in der Zielkonfiguration des programmierbaren Logikbausteins, in dessen Verlauf mindestens ein zusätzliches oder umkonfiguriertes Logikelement vorkommt, mit dem entsprechenden Signalpfad in der Ausgangskonfiguration vergleichen, insbesondere indem die Anzahl sequentiell aufeinander folgender Logikelemente des Signalpfads in der Zielkonfiguration und die Anzahl sequentiell aufeinander folgender Logikelemente des entsprechenden Signalpfads in der Ausgangskonfiguration gezählt und verglichen wird und jedem Logikelement eine konstante Signallaufzeit zugeordnet wird. Auf diese Weise kann schnell und einfach festgestellt werden, ob die Zielkonfiguration voraussichtlich mit derselben Taktrate betrieben werden kann wie die Ausgangskonfiguration, oder ob eine Probleme in dem Zeitverhalten der Schaltung zu erwarten sind. Preferably, for a logic function to be changed, which comprises at least one signal path, a signal propagation time is determined at least after the change. Preferably, a signal transit time is estimated for a signal path in the target configuration of the programmable logic device in the course of which at least one additional or reconfigured logic element or connection element is counted by counting the number of sequentially consecutive logic elements of the signal path in the target configuration and assigning each logic element a constant signal transit time becomes. Alternatively, it can also be provided to compare a signal path in the target configuration of the programmable logic module, in the course of which at least one additional or reconfigured logic element occurs, with the corresponding signal path in the output configuration, in particular by the number of sequentially consecutive logic elements of the signal path in the target configuration and the number of sequentially sequential logic elements of the corresponding signal path is counted and compared in the output configuration and a constant signal transit time is assigned to each logic element. In this way, it can be quickly and easily determined whether the target configuration is expected to operate at the same clock rate as the initial configuration, or whether problems in the timing of the circuit are to be expected.
Besonders bevorzugt wird anstelle einer auf der Anzahl von Logikelementen im Signalpfad basierten Schätzung der Signallaufzeiten von Logikelementen die durch Architekturinformationen gegebenen minimalen und maximalen Signallaufzeiten ermittelt und für die weiteren Betrachtungen verwendet. Zweckmäßigerweise kann eine Summation von jeweils der minimalen und jeweils der maximalen Signallaufzeiten der einzelnen Logikelemente über einen Signalpfad erfolgen, und diese auf die Einhaltung von zeitlichen Anforderungen insbesondere der nachfolgenden Logikelemente überprüft werden. Particularly preferably, instead of an estimate of the signal propagation times of logic elements based on the number of logic elements in the signal path, the minimum and maximum signal propagation times given by architectural information are determined and used for the further considerations. Appropriately, a summation of each of the minimum and respectively the maximum signal propagation times of the individual logic elements via a signal path can be carried out, and these are checked for compliance with time requirements, in particular the subsequent logic elements.
Besonders bevorzugt wird für alle zu ändernden Logikfunktionen mindestens eine Signallaufzeit ermittelt und mit einem oder mehreren Schwellenwerten verglichen, der insbesondere zeitliche Anforderungen der auf die geänderte Logikfunktion folgenden Übergabepunkte beschreibt. Wenn die Änderung der geschätzten oder errechneten Verzögerung den Schwellenwert überschreitet, erfolgt eine Warnung und/oder eine Modifikation der platzierten Netzliste der Zielkonfiguration. Beispielsweise kann die Modifikation eine lokale Erhöhung des Takts und/oder ein Einfügen von Registern umfassen. Somit kann der Nutzer auf ein potentiell kritisches Zeitverhalten vorab hingewiesen werden und zweckmäßigerweise auch Maßnahmen ergriffen werden, um ein definiertes zeitliches Verhalten der Zielkonfiguration sicherzustellen. Particularly preferably, at least one signal transit time is determined for all logic functions to be changed and compared with one or more threshold values, which in particular describe time requirements of the transfer points following the changed logic function. If the change in the estimated or calculated delay exceeds the threshold, a warning and / or modification of the placed netlist of the target configuration occurs. For example, the modification may include a local increase of the clock and / or an insertion of registers. Thus, the user can be notified in advance of a potentially critical timing and measures are taken to ensure a defined temporal behavior of the target configuration.
Vorzugsweise umfasst die Zielkonfiguration mindestens einen ersten Multiplexer, der insbesondere direkt vor einem Übergabepunkt angeordnet ist, wobei alle hinzugefügten Logikelemente in neuen Signalpfaden angeordnet sind, die einen einzigen Eingang des ersten Multiplexers umfassen. Indem die Bypassfunktion mit einem ersten Eingang des Multiplexers verbunden wird und die bisherige Logikfunktion mit einem zweiten Eingang des Multiplexers verbunden wird, kann somit auch zur Laufzeit, also während die Zielkonfiguration ausgeführt wird, zwischen der Bypassfunktion und der ursprünglichen Funktion umgeschaltet werden. Hierbei kann ein freier Eingang eines vorhandenen Multiplexers genutzt werden oder der Multiplexer eingefügt werden. Preferably, the target configuration comprises at least a first multiplexer, in particular arranged directly in front of a transfer point, with all the added logic elements being arranged in new signal paths comprising a single input of the first multiplexer. By the bypass function is connected to a first input of the multiplexer and the previous logic function is connected to a second input of the multiplexer, thus at runtime, ie while the target configuration is being executed, switching between the bypass function and the original function is made. In this case, a free input of an existing multiplexer can be used or the multiplexer can be inserted.
Insbesondere umfassen die neuen Signalpfade mindestens ein Schnittstellen-Pin des programmierbaren Logikbausteins, wobei der mindestens eine Schnittstellen-Pin vorzugsweise einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. Der Schnittstellen-Pin muss dabei nicht exklusiv für den neuen Signalpfad genutzt werden, sondern kann auch weitere Funktionalitäten bereitstellen. Vorzugsweise wird ein Protokoll definiert, so dass die für den Signalpfad erforderlichen Daten über den Schnittstellen-Pin getunnelt werden. Insofern muss es sich bei diesem Schnittstellen-Pin nicht um einen physikalisch vorhandenen Pin handeln, sondern es kann sich auch um eine Schnittstelle bzw. einen Datenkanal handeln, der zweckmäßigerweise unter Nutzung der Debug-Schnittstelle aufgebaut wird. Sofern noch mindestens ein Schnittstellen-Pin des FPGA-Bausteins unbelegt ist bzw. in der Funktionalität ergänzt werden kann, kann also ein externes Bypassing stattfinden oder auch ein Multiplexer zum Umschalten zwischen verschiedenen internen Logikfunktionen von außen angesteuert werden. Die einer Debugging-Schnittstelle zugeordneten Schnittstellen-Pins sind selten mit anderen Funktionen belegt und somit häufig verfügbar. Falls ein oder mehrere andere Schnittstellen-Pins noch unbelegt sind, kann prinzipiell auch eine höhere Datenrate beim externen Bypassing gewährleistet werden, indem diese Schnittstellen-Pins für eine Übertragung nach einem geeigneten Protokoll wie z.B. LVDS verwendet werden. In particular, the new signal paths comprise at least one interface pin of the programmable logic module, wherein the at least one interface pin is preferably assigned to a debugging interface of the programmable logic module. The interface pin does not have to be used exclusively for the new signal path, but can also provide additional functionalities. Preferably, a protocol is defined so that the data required for the signal path is tunneled through the interface pin. In this respect, this interface pin does not have to be a physically present pin, but may also be an interface or a data channel, which is expediently set up using the debug interface. If at least one interface pin of the FPGA module is unoccupied or can be supplemented in functionality, an external bypassing can therefore take place or else a multiplexer for switching between different internal logic functions can be controlled externally. The interface pins associated with a debugging interface are rarely populated with other functions and thus often available. In principle, if one or more other interface pins are still unoccupied, a higher data rate can also be ensured in the case of external bypassing by transmitting these interface pins for transmission according to a suitable protocol, such as e.g. LVDS can be used.
Es ist vorteilhaft, wenn die Zielkonfiguration mindestens einen zweiten Multiplexer umfasst, der insbesondere direkt hinter einem Übergabepunkt angeordnet ist, wobei der zweite Multiplexer mit mindestens einem Eingang eines Logikelements verbunden ist. Dies ermöglicht es, die Eingabesignale einer Funktion zu ändern, wobei ggfs. die ursprüngliche Funktion mit dem geänderten Eingabesignal weiterverwendet werden kann. It is advantageous if the target configuration comprises at least one second multiplexer, which in particular is arranged directly behind a transfer point, wherein the second multiplexer is connected to at least one input of a logic element. This makes it possible to change the input signals of a function, where necessary, the original function can be used with the changed input signal.
Bevorzugt umfasst die Zielkonfiguration mindestens ein hinzugefügtes Register, wobei der Ausgang des Registers vorzugsweise mit einem Schnittstellen-Pin verbunden ist, welcher insbesondere einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. Indem das Register in einem Signalpfad angeordnet wird, kann das entsprechende Signal auch von einem RCP-System erfasst und ausgewertet werden, welches mit der Debugging-Schnittstelle verbunden ist. Preferably, the target configuration comprises at least one added register, wherein the output of the register is preferably connected to an interface pin, which is assigned in particular to a debugging interface of the programmable logic module. By placing the register in a signal path, the corresponding signal can also be detected and evaluated by an RCP system which is connected to the debugging interface.
Die Erfindung betrifft ferner ein Verfahren zum Anpassen eines Steuergeräts, welches einen zur Ausführung einer Regelfunktion eingerichteten programmierbaren Logikbaustein umfasst, bei dem der programmierbare Logikbaustein durch ein erfindungsgemäßes Verfahren rekonfiguriert wird. Durch die Nutzung eines erfindungsgemäßen Verfahrens können somit auch einen FPGA umfassende Steuergeräte schnell und einfach angepasst werden, so dass eine iterative Entwicklung der neuen Regelfunktion möglich ist. Mit dem Begriff Regelfunktion sind hier zweckmäßigerweise alle von dem Steuergerät bzw. dem programmierbaren Logikbaustein bereitgestellten Funktionen gemeint, insbesondere auch eine Ansteuerung eines Aktuators ohne geschlossene Regelschleife. The invention further relates to a method for adapting a control device, which comprises a programmable logic device set up to execute a control function, in which the programmable logic device is reconfigured by a method according to the invention. By using a method according to the invention, it is therefore also possible for control devices comprising FPGAs to be adapted quickly and easily, so that an iterative development of the new control function is possible. By the term control function, all functions provided by the control unit or the programmable logic module are expediently meant, in particular a control of an actuator without a closed control loop.
Zweckmäßigerweise erfolgt zumindest der Schritt des Schreibens eines geänderten Bitstroms in den programmierbaren Logikbaustein bei der Initialisierung des programmierbaren Logikbausteins, und wird insbesondere von einem Mikroprozessor durchgeführt. Somit ist die angepasste Logikfunktion bzw. die Bypassfunktion direkt zum Startzeitpunkt des FPGAs bzw. des den FPGA umfassenden Steuergeräts verfügbar. Appropriately, at least the step of writing a changed bit stream into the programmable logic device takes place during the initialization of the programmable logic device, and is carried out in particular by a microprocessor. Thus, the adapted logic function or the bypass function is available directly at the start time of the FPGA or the FPGA comprehensive control unit.
Außerdem betrifft die Erfindung eine Programmiervorrichtung zum Beschreiben eines programmierbaren Logikbausteins, umfassend einen Prozessor, eine Programmierschnittstelle und/oder eine Debugging-Schnittstelle, wobei die Vorrichtung dazu eingerichtet ist, ein erfindungsgemäßes Verfahren durchzuführen. Moreover, the invention relates to a programming device for writing a programmable logic device, comprising a processor, a programming interface and / or a debugging interface, wherein the device is adapted to perform a method according to the invention.
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. The invention further relates to a computer program product with a computer-readable storage medium, on which instructions are embedded, which, when executed by a computing unit, cause the arithmetic unit to be configured to carry out a method according to the invention.
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. The invention will be explained in more detail with reference to the drawings. Here similar parts are labeled with identical names. The illustrated embodiments are highly schematic, i. the distances and the lateral and vertical dimensions are not to scale and, unless otherwise indicated, have no derivable geometrical relations to one another.
Darin zeigt: It shows:
Ein FPGA-Baustein umfasst eine Vielzahl von Logikelementen und Verbindungselementen sowie eine Taktversorgung, welche mehrere Taktregionen umfassen kann. Die Logikelemente umfassen beispielsweise Register, Wahrheitstabellen (auch als Lookup-Table bzw. LUT bekannt), Addierer, Schalter und Verzögerungseinheiten. Auch Frequenzgeneratoren können vorhanden sein. Je nach Granularität des FPGA-Bausteins können auch mehrere dieser Elemente zu einer Elementar-Einheit zusammengefasst sein. 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. Nach dem Einschalten der Spannungsversorgung wird der FPGA mit einem Bitstrom initialisiert, der zweckmäßigerweise für jedes Logikelement mindestens ein Bit enthält; dies ermöglicht eine für die jeweilige Anwendung maßgeschneiderte Logikschaltung auf einem Standard-Baustein. Unter einem Bit für die Konfiguration eines Logikelements kann hierbei auch ein Schalter verstanden werden, der das Logikelement mit einem Signal verbindet. In diesem Sinne können auch einem UND-Gatter ein oder mehrere Konfigurations-Bits zugeordnet werden. An FPGA device comprises a multiplicity of logic elements and connecting elements as well as a clock supply, which can comprise a plurality of clock regions. The logic elements include, for example, registers, truth tables (also known as lookup tables or LUTs), adders, switches and delay units. Frequency generators can also be present. Depending on the granularity of the FPGA module, several of these elements may also be combined into one elementary unit. The connecting elements suitably comprise conductor tracks of different lengths, which are e.g. can also span regions of the FPGA, and switchable connections between the tracks and logic elements. After turning on the power supply, the FPGA is initialized with a bit stream which expediently contains at least one bit for each logic element; this enables a custom-tailored logic circuit on a standard device. In this case, a bit for the configuration of a logic element can also be understood to mean a switch which connects the logic element to a signal. In this sense, one or more configuration bits can also be assigned to an AND gate.
Die Abbildung der
In Schritt S1 (Einlesen) erfolgt ein Einlesen der Ausgangskonfiguration, wobei als Eingangsdaten der ursprüngliche Bitstrom (Bitstrom 1) und Informationen (Info) über die Architektur des verwendeten FPGA-Bausteins und die Ausgangskonfiguration empfangen werden. Das Einlesen kann ein Konvertieren des Bitstroms in eine Logikbeschreibung bzw. platzierte Netzliste der Ursprungskonfiguration umfassen. Alternativ kann es auch vorgesehen sein, als Eingangsdaten neben dem Bitstrom auch eine Logikbeschreibung zumindest von Teilen der Ausgangskonfiguration sowie Informationen über mögliche Eingangssignale und mögliche Übergabepunkte der Ausgangskonfiguration zum empfangen. Dann kann auf ein Konvertieren des Bitstroms verzichtet werden. In step S1 (read in), the output configuration is read in, the input data being the original bit stream (bit stream 1) and information (info) about the architecture of the FPGA block used and the output configuration being received. The reading may include converting the bitstream into a logic description or placed netlist of the source configuration. Alternatively, it can also be provided to receive as input data in addition to the bit stream also a logic description of at least parts of the output configuration as well as information about possible input signals and possible transfer points of the output configuration. Then can be dispensed with a conversion of the bitstream.
Die in der Zielkonfiguration gewünschten Änderungen werden in Schritt S2 (Ändern) vorzugsweise auf einer höheren Abstraktionsebene wie der Logikbeschreibung bzw. einer unplatzierten Netzliste vorgenommen. Prinzipiell könnte auch eine Hardwarebeschreibungs-Sprache wie VHDL zur Angabe der Zielkonfiguration bzw. der gewünschten Änderungen eingesetzt werden. The changes desired in the target configuration are preferably made on a higher level of abstraction, such as the logic description or an unplaced netlist, in step S2 (change). In principle, a hardware description language such as VHDL could also be used to specify the target configuration or the desired changes.
Beispielsweise kann der Nutzer neue Eingangssignale wählen und eine angepasste Logikfunktion an dem jeweiligen Übergabepunkt anlegen. Diese Änderung der Konfiguration kann auch interaktiv in einem Programm vorgenommen werden, dass auf einem an den FPGA-Baustein bzw. an das Steuergerät angeschlossenen Standard-PC und/oder einem speziellen Programmiergerät ausgeführt; auch ein Standard-PC mit extern angeschlossener Debugging-Schnittstelle, die mit einem FPGA verbindbar ist, soll unter der Bezeichnung Programmiervorrichtung verstanden werden können. For example, the user can select new input signals and create an adapted logic function at the respective transfer point. This configuration change can also be made interactively in a program executed on a standard PC and / or a special programming device connected to the FPGA module or to the controller; Even a standard PC with externally connected debugging interface, which can be connected to an FPGA, should be understood by the term programming device.
Ein derartiges Programm, im Folgenden FPGA-Manager genannt, könnte z.B. die Zuordnungsinformationen des Konfigurationsherstellers, zweckmäßigerweise Architekturinformationen des verwendeten FPGA-Bausteins sowie zumindest eine Logikbeschreibung, insbesondere eine platzierte Netzliste, und/oder einen Bitstrom der Ausgangskonfiguration einlesen. Es ist vorteilhaft, wenn der FPGA-Manager dazu eingerichtet ist, die Ausgangskonfiguration zumindest teilweise in einer höheren Abstraktionsebene, wie einer Logikbeschreibung einer unplatzierten Netzliste oder einem Blockdiagramm darzustellen. Dann kann der Nutzer eine oder mehrere Elementareinheiten der jeweiligen Abstraktionsebene selektieren und anpassen. Zweckmäßigerweise ist auch das Löschen oder Einfügen von Elementareinheiten vorgesehen. Die Elementareinheiten können eine oder mehrere Logikeinheiten des FPGA-Bausteins umfassen. Beispielsweise kann auch eine häufig verwendete Funktionalität aus einer Mehrzahl von Logikeinheiten des FPGA als eine Elementareinheit vordefiniert werden. Vorzugsweise kann der Nutzer weiterhin vordefinierte Übergabepunkte und/oder Schnittstellen-Pins des FPGA selektieren, um diesen die Signale der geänderten Logikfunktionen zuzuführen. Auch eine Überprüfung vorgegebener Bedingungen kann vorgesehen sein, wobei insbesondere ein gesondertes Signal über eine Debugging-Schnittstelle ausgegeben werden kann, wenn die vorgegebenen Bedingungen nicht erfüllt sind. Somit kann eine fehlerhaft definierte Logikfunktion oder ungültige Eingabedaten schnell erkannt werden. Such a program, hereafter referred to as FPGA manager, could be e.g. the assignment information of the configuration manufacturer, expediently architectural information of the FPGA module used and at least one logic description, in particular a placed netlist, and / or read a bit stream of the output configuration. It is advantageous if the FPGA manager is set up to present the output configuration at least partially in a higher level of abstraction, such as a logic description of an unplaced netlist or a block diagram. Then the user can select and adapt one or more elementary units of the respective abstraction level. Expediently, the deletion or insertion of elementary units is provided. The elementary units may include one or more logic units of the FPGA device. For example, a frequently used functionality can be predefined from a plurality of logic units of the FPGA as an elementary unit. Preferably, the user can continue to select predefined transfer points and / or interface pins of the FPGA to supply the signals of the changed logic functions. Also, a check of predetermined conditions may be provided, in particular, a separate signal can be output via a debugging interface, if the predetermined conditions are not met. Thus, an erroneously defined logic function or invalid input data can be quickly recognized.
In Schritt S3 (Bereinigen) werden zweckmäßigerweise nicht mehr genutzte Logikelemente aus der Ausgangskonfiguration entfernt, um eine größere Anzahl von freien Logikelementen zur Realisierung der geänderten Logikfunktionen verfügbar zu machen. In step S3 (purge), unused logic elements are expediently removed from the output configuration in order to make available a larger number of free logic elements for realizing the changed logic functions.
Der FPGA Manager kann hierbei auch vorsehen, die nicht mehr genutzten Logikelemente anhand der gelöschten Elementareinheiten zu ermitteln. The FPGA Manager can also provide for determining the disused logic elements based on the deleted elementary units.
Auf die freien Logikelemente werden in Schritt S4 (Platzieren) die in der Zielkonfiguration hinzugekommenen Logikfunktionen bzw. Logikelemente platziert. Anschließend werden die Verbindungselemente konfiguriert, um die gewünschten Signalpfade zu erhalten. Somit liegt die Zielkonfiguration als platzierte Netzliste vor. Im Rahmen des Platzierens und des Verbinden der Logikfunktionen bzw. Logikelemente werden dabei zweckmäßigerweise Anforderungen bezüglich des Timings wie z.B. das Einhalten geforderter Signallaufzeiten zum Erreichen von vorgegebenen Taktfrequenzen berücksichtigt. In step S4 (placement), the logic functions or logic elements added in the target configuration are placed on the free logic elements. Then, the connectors are configured to obtain the desired signal paths. Thus, the destination configuration exists as a placed netlist. In the context of placing and connecting the logic functions or logic elements thereby expediently timing requirements such. observing the required signal propagation delays to achieve predetermined clock frequencies.
Der FPGA Manager kann hierbei auch vorsehen, hinzugekommene Logikelemente anhand der hinzugefügten Elementareinheiten zu ermitteln. The FPGA Manager may also provide for determining added logic elements based on the added elementary units.
In Schritt S5 (Konvertieren) wird die platzierte Netzliste in einen geänderten Bitstrom konvertiert, der somit als Ausgabedaten (Bitstrom 2) zur Verfügung steht. In step S5 (convert), the placed netlist is converted into a changed bitstream, which is thus available as output data (bitstream 2).
Besonders wenn die Logikbeschreibung der Ausgangskonfiguration nur teilweise vorhanden ist, kann die Konvertierung auch darin bestehen, für hinzugekommene Logikeinheiten und/oder Verbindungseinheiten geeignete Mikrobitströme zu generieren und diese zum ursprünglichen Bitstrom zu addieren, um den geänderten Bitstrom zu erhalten. Especially if the logic description of the output configuration is only partially available, the conversion may also be to generate appropriate micro bitstreams for added logic units and / or connection units and to add them to the original bitstream to obtain the changed bitstream.
Der FPGA-Baustein wird in Schritt S6 (Schreiben) mit dem geänderten Bitstrom beschrieben und somit rekonfiguriert. Da ein zeitraubendes Platzieren und Routen nur für die wenigen geänderten Logikelemente erfolgte, kann diese Rekonfiguration schnell erfolgen und ist prinzipiell auch ohne eine Kenntnis der vollständigen Netzliste möglich. The FPGA block is written in step S6 (Write) with the changed bit stream and thus reconfigured. Since a time-consuming placement and routing was done only for the few changed logic elements, this reconfiguration can be done quickly and is in principle possible without a knowledge of the complete network list.
In der Abbildung der
Die Konfiguration
Schematisch ist dargestellt, dass der von der ursprünglichen Logikfunktion f eingenommene Bereich
Die Abbildung der
Zu Beginn des Verfahrens werden die ursprüngliche Konfiguration
In Schritt
Die neue Logikfunktion
Ausgehend von den Informationen
Die noch unplatzierten neuen Logikfunktion
In der Abbildung der
Indem einer der Funktionsblöcke
Indem ein weiterer Eingang des benachbart zu Ausgangspin
Die Abbildung der
Steuergerät
Der programmierbare Logikbaustein
Normalerweise ist Programmierschnittstelle
Programmiervorrichtung
Über gestrichelt dargestellte Verbindungsleitungen
Prinzipiell kann ein Ändern der Konfiguration auch dadurch erfolgen, dass das Programmiergerät mit dem Mikrocontroller
Die in der Abbildung gezeigte Nutzung der Debugging-Schnittstelle
Besonders bevorzugt erfolgt die Wahl des durchzuschaltenden Eingangs über ein mit dem Umschalteingang verbundenes Register, so dass der Inhalt des Registers die aktive Regelfunktion bestimmt. Indem ein Datenkanal über die Debugging-Schnittstelle
In einer weiteren bevorzugten Ausführungsform der Erfindung wird ein Register in einem Signalpfad der Ausgangskonfiguration angeordnet, wobei der Ausgang des Registers zweckmäßigerweise mit einem der Debugging-Schnittstelle zugeordneten Pin des FPGA verbunden ist. Somit erfasst das Register ein Signal der Ausgangskonfiguration und kann dieses an ein externes RCP-System übertragen. Indem eine Trigger-Logik hinzugefügt wird, kann der Zeitpunkt der Erfassung anhand einer Auswertung vorgegebener Bedingungen bestimmt werden. Alternativ oder ergänzend kann auch vorgesehen sein, das Signal auf dem programmierbaren Logikbaustein zwischenzuspeichern. Durch das erfindungsgemäße Verfahren ist es somit möglich, auch ohne Vorliegen des Quellcodes bzw. einer vollständigen Logikbeschreibung der Ausgangskonfiguration eine Messfunktionalität hinzuzufügen. In a further preferred embodiment of the invention, a register is arranged in a signal path of the output configuration, wherein the output of the register is expediently connected to a pin of the FPGA assigned to the debugging interface. Thus, the register detects a signal of the output configuration and can transmit it to an external RCP system. By adding a trigger logic, the time of detection can be determined by evaluating given conditions. Alternatively or additionally, it can also be provided to buffer the signal on the programmable logic module. The method according to the invention thus makes it possible to add a measuring functionality to the initial configuration even without the presence of the source code or a complete logic description.
ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturCited patent literature
- EP 2869145 A1 [0003] EP 2869145 A1 [0003]
- US 7902866 B2 [0005] US 7902866 B2 [0005]
Zitierte Nicht-PatentliteraturCited non-patent literature
- „Torc: Towards an Open Source Tool Flow“, Proceedings of the 19th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays, 2011, von N. Steiner et al. [0006] "Torc: Towards an Open Source Tool Flow," Proceedings of the 19th Annual ACM / SIGDA International Symposium on Field Programmable Gate Arrays, 2011, by N. Steiner et al. [0006]
- R. K. Soni et al. in „Open-Source Bitstream Generation“, 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 [0006] RK Soni et al. in "Open-Source Bitstream Generation", 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 [0006]
- „Rapid Smith: Do-it-Yourself CAD Tools for Xilinx FPGAs“, 2011 21st International Conference on Field Programmable Logic and Applications, von C. Lavin et al. [0007] "Rapid Smith: Do-It-Yourself CAD Tools for Xilinx FPGAs", 2011 21st International Conference on Field Programmable Logic and Applications, by C. Lavin et al. [0007]
- „Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs“, 22nd IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2014, von B. L. Hutchings und J. Keeley [0007] "Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs", 22nd IEEE Annual International Symposium on Field Programmable Custom Computing Machines 2014, by BL Hutchings and J. Keeley [0007]
Claims (17)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102015115022.0A DE102015115022A1 (en) | 2015-09-08 | 2015-09-08 | Method for changing the configuration of a programmable logic device |
US15/258,059 US9929734B2 (en) | 2015-09-08 | 2016-09-07 | Method for changing the configuration of a programmable logic module |
JP2016175573A JP6530358B2 (en) | 2015-09-08 | 2016-09-08 | How to change the configuration of programmable logic chips |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102015115022.0A DE102015115022A1 (en) | 2015-09-08 | 2015-09-08 | Method for changing the configuration of a programmable logic device |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102015115022A1 true DE102015115022A1 (en) | 2017-03-09 |
Family
ID=58055148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102015115022.0A Withdrawn DE102015115022A1 (en) | 2015-09-08 | 2015-09-08 | Method for changing the configuration of a programmable logic device |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102015115022A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7902866B1 (en) | 2007-08-27 | 2011-03-08 | Virginia Tech Intellectual Properties, Inc. | Wires on demand: run-time communication synthesis for reconfigurable computing |
US7940082B1 (en) * | 2007-12-28 | 2011-05-10 | Altera Corporation | Circuits and method for bypassing a static configuration in a programmable logic device to implement a dynamic multiplexer |
EP2869145A1 (en) | 2013-10-29 | 2015-05-06 | dSPACE digital signal processing and control engineering GmbH | Method for influencing a control program of a control unit |
-
2015
- 2015-09-08 DE DE102015115022.0A patent/DE102015115022A1/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7902866B1 (en) | 2007-08-27 | 2011-03-08 | Virginia Tech Intellectual Properties, Inc. | Wires on demand: run-time communication synthesis for reconfigurable computing |
US7940082B1 (en) * | 2007-12-28 | 2011-05-10 | Altera Corporation | Circuits and method for bypassing a static configuration in a programmable logic device to implement a dynamic multiplexer |
EP2869145A1 (en) | 2013-10-29 | 2015-05-06 | dSPACE digital signal processing and control engineering GmbH | Method for influencing a control program of a control unit |
Non-Patent Citations (8)
Title |
---|
„Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs", 22nd IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2014, von B. L. Hutchings und J. Keeley |
„Rapid Smith: Do-it-Yourself CAD Tools for Xilinx FPGAs", 2011 21st International Conference on Field Programmable Logic and Applications, von C. Lavin et al. |
„Torc: Towards an Open Source Tool Flow", Proceedings of the 19th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays, 2011, von N. Steiner et al. |
HUTCHINGS, Brad L.; KEELEY, Jared. Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs. In: Field-Programmable Custom Computing Machines (FCCM), 2014 IEEE 22nd Annual International Symposium on. IEEE, 2014. S. 72-79. * |
LE ROUX, Ronnie Rikus. Bitstream specialisation for dynamic reconfiguration of real-time applications/Ronnie Rikus le Roux. Dez. 2014. Doktorarbeit. * |
R. K. Soni et al. in „Open-Source Bitstream Generation", 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 |
SONI, Ritesh Kumar; STEINER, Neil; FRENCH, Matthew. Open-source bitstream generation. In: Field-Programmable Custom Computing Machines (FCCM), 2013 IEEE 21st Annual International Symposium on. IEEE, 2013. S. 105-112. * |
ZHA, Wenwei. Facilitating FPGA reconfiguration through low-level manipulation. 2014. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112013000758B4 (en) | Generate clock signals for a cycle-accurate, cycle-replicable FPGA-based hardware accelerator | |
DE69808286T2 (en) | EMULATION SYSTEM WITH TIME MULTIPLEX CONNECTION | |
DE69419524T2 (en) | LOCKING SYNCHRONIZATION FOR DISTRIBUTED MASSIVE SOLID PARALLEL COMPUTERS | |
DE69321124T2 (en) | METHOD FOR SIMULATING AN ELECTRONIC CIRCUIT WITH IMPROVED ACCURACY. | |
EP2765528B1 (en) | Unrestricted access to signal values of an FPGA during runtime | |
EP2954440B1 (en) | Alteration of a signal value for an fpga at runtime | |
DE10034405B4 (en) | Method and system for programming FPGAs on PC cards without additional hardware | |
DE10333087A1 (en) | Process for the automatic decomposition of dynamic system models into sub-models | |
DE102013101300A1 (en) | Method for assessing signal value i.e. engine speed, of field programmable gate array at run-time of processing device, involves reading status data from memory as read-back data, and determining signal value by mapping data on value | |
EP3142032B1 (en) | Method for changing the configuration of a programmable logic component | |
EP3244326A1 (en) | Method for creating a fpga netlist | |
EP2963541B1 (en) | Implementation of a constant in FPGA code | |
DE102022106423A1 (en) | Method for sharing simulation models between a processor and an FPGA | |
DE102011103861A1 (en) | Functional unit for use in simulation system to perform simulation of mixed analog/digital model, has logic module operated over pulse, and interface connecting module with simulation device, where pulse is controlled by simulation device | |
EP2899652B1 (en) | Method for optimising the operation of programmable logic modules in control devices for vehicles | |
DE102020124791A1 (en) | Method for the transmission of data from a first processing unit to a second processing unit | |
DE102015115022A1 (en) | Method for changing the configuration of a programmable logic device | |
DE102018217016A1 (en) | One-chip system and security circuit with such a one-chip system | |
AT501880B1 (en) | MEMORY PROGRAMMABLE CONTROL | |
DE102021133735A1 (en) | Process for data communication between subareas of an FPGA | |
EP3739479B1 (en) | Method for detecting errors in the program logic of a system of distributed programmable gate assemblies | |
DE60003847T2 (en) | UNIVERSAL DEVICE AND METHOD AND TOOLS FOR THEIR USE | |
EP3985541A1 (en) | Method for checking integrity of reloadable functional units | |
DE102009054567A1 (en) | Single event effect permissive circuit designing method, involves producing two logic element network data sheets, and providing synchronization line between error permissive memory circuit models of data sheets | |
EP3242232B1 (en) | Optimised production of total network list and bit stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0015177000 Ipc: G06F0009440000 |
|
R163 | Identified publications notified | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |