DE69817581T2 - System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen - Google Patents

System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen Download PDF

Info

Publication number
DE69817581T2
DE69817581T2 DE69817581T DE69817581T DE69817581T2 DE 69817581 T2 DE69817581 T2 DE 69817581T2 DE 69817581 T DE69817581 T DE 69817581T DE 69817581 T DE69817581 T DE 69817581T DE 69817581 T2 DE69817581 T2 DE 69817581T2
Authority
DE
Germany
Prior art keywords
instrument
hardware
graphical program
hardware element
program
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.)
Expired - Lifetime
Application number
DE69817581T
Other languages
English (en)
Other versions
DE69817581D1 (de
Inventor
L. Jeffrey KODOSKY
Hugo Andrade
K. Brian ODOM
P. Cary BUTLER
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.)
National Instruments Corp
Original Assignee
National Instruments Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25431901&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69817581(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by National Instruments Corp filed Critical National Instruments Corp
Application granted granted Critical
Publication of DE69817581D1 publication Critical patent/DE69817581D1/de
Publication of DE69817581T2 publication Critical patent/DE69817581T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2294Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by remote test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/2733Test interface between tester and unit under test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/12Symbolic schematics

Description

  • Die vorliegende Erfindung betrifft die graphische Programmierung und insbesondere ein System und ein Verfahren zum Umwandeln eines graphischen Programms in eine programmierbare Hardwareimplementierung.
  • Traditionell wurden von Programmierern beim Schreiben von Anwendungsprogrammen textbasierte höhere bzw. problemorientierte Programmiersprachen verwendet. Es existieren viele verschiedene höhere Programmiersprachen, wie BASIC, C, FORTRAN, Pascal, COBOL, ADA, APL usw. In diesen höheren Sprachen geschriebene Programme werden von als Compiler bekannten Übersetzungseinrichtungen auf die Maschinenspracheebene übersetzt. Die höheren Programmiersprachen auf dieser Ebene sowie auf der Assembler-Sprachenebene werden als textbasierte Programmierumgebungen bezeichnet.
  • Computer müssen in zunehmendem Maße von Personen verwendet und programmiert werden, die in Computerprogrammiertechniken nicht sehr gut ausgebildet sind. Wenn traditionelle textbasierte Programmierumgebungen verwendet werden, werden die Programmierkenntnisse des Benutzers und seine Fähigkeit, sich mit dem Computersystem auszutauschen, häufig zu einem begrenzenden Faktor beim Erreichen einer optimalen Ausnutzung des Computersystems.
  • Es gibt zahlreiche feine Komplexitäten, die ein Benutzer beherrschen muß, bevor er ein Computersystem in einer textbasierten Umgebung wirksam programmieren kann. Die Aufgabe des Programmierens eines Computersystems zum Modellieren eines Prozesses wird häufig dadurch weiter kompliziert, daß eine Folge mathematischer Formeln, mathematischer Schritte oder anderer Prozeduren, die üblicherweise zum konzeptionellen Modellieren eines Prozesses verwendet werden, häufig nicht in engem Sinne den traditionellen textbasierten Programmiertechniken entsprechen, die zum Programmieren eines zum Modellieren eines solchen Prozesses verwendeten Computersystems eingesetzt werden. Mit anderen Worten erzeugt die Anforderung, daß ein Benutzer in einer textbasierten Programmierumgebung programmiert, ein Abstraktionsniveau zwischen der Konzeptionalisierung der Lösung durch den Benutzer und der Implementierung eines Verfahrens, das diese Lösung in einem Computerprogramm erreicht. Demgemäß muß ein Benutzer häufig in erheblichem Maße verschiedene Fähigkeiten aufweisen, um ein System konzeptionell zu modellieren und dann einen Computer so zu programmieren, daß er dieses System modelliert. Weil einem Benutzer die Techniken zum Programmieren eines Computersystems in einer textbasierten Umgebung zum Implementieren seines Modells häufig nicht völlig geläufig sind, wird die Wirksamkeit, mit der das Computersystem verwendet werden kann, um diese Modellierung auszuführen, häufig verringert.
  • Beispiele von Gebieten, auf denen Computersysteme verwendet werden, um physikalische Systeme zu modellieren und/oder zu steuern, sind die Gebiete der Instrumentation, der Prozeßsteuerung und der industriellen Automatisierung. Die Computermodellierung oder -steuerung von Vorrichtungen, wie Instrumenten oder industrieller Automatisierungshardware, ist angesichts der zunehmenden Komplexität und der Vielfalt der Instrumente und Vorrichtungen, die zum Gebrauch verfügbar sind, zunehmend wünschenswert geworden. Infolge der großen Vielfalt möglicher Test- und Steuersituationen und Umgebungen und auch infolge der großen Vielfalt der verfügbaren Instrumente oder Vorrichtungen muß ein Benutzer häufig ein Programm zum Steuern eines gewünschten Systems entwickeln. Wie vorstehend erwähnt wurde, mußten zum Steuern solcher Systeme verwendete Computerprogramme in herkömmlichen textbasierten Programmiersprachen, wie beispielsweise Assembler, C, FORTRAN, BASIC oder Pascal, geschrieben werden. Traditionelle Benutzer dieser Systeme sind jedoch häufig in Programmiertechniken nicht sehr gut ausgebildet, und traditionelle textbasierte Programmiersprachen waren zusätzlich nicht intuitiv genug, um es Benutzern zu ermöglichen, diese Sprachen ohne Training zu verwenden. Daher war es für ein Implementieren solcher Systeme häufig erforderlich, einen Programmierer heranzuziehen, um Software zum Steuern und zur Analyse von Instrumenten oder industriellen Automatisierungsdaten zu schreiben. Demgemäß erwiesen sich das Entwickeln und Verwalten der Softwareelemente in diesen Systemen häufig als schwierig.
  • In dem Kodosky u. a. erteilten US-Patent US-A-4 901 221 sind ein graphisches System und ein Verfahren zum Modellieren eines Prozesses, also eine graphische Programmierumgebung, beschrieben, wodurch es einem Benutzer ermöglicht wird, einen Prozeß leicht und intuitiv zu modellieren. Die bei Kodosky u. a. beschriebene graphische Programmierumgebung kann als die höchste und intuitivste Art angesehen werden, in der mit einem Computer kommuniziert werden kann. Eine graphische Programmierumgebung kann in einer Ebene oberhalb textbasierter Programmiersprachen hoher Ebene, wie C, Pascal usw., dargestellt werden. Das bei Kodosky u. a. beschriebene Verfahren ermöglicht es einem Benutzer, ein Diagramm unter Verwendung eines Blockdiagrammeditors einzurichten, so daß das erzeugte Diagramm eine Prozedur oder ein Verfahren zum Erreichen eines bestimmten Ergebnisses, wie ein Manipulieren von einer oder mehreren Eingangsvariablen zum Erzeugen von einer oder mehreren Ausgangsvariablen, graphisch darstellt. Ansprechend darauf, daß der Benutzer ein Datenflußdiagramm oder ein graphisches Programm unter Verwendung des Blockdiagrammeditors einrichtet, werden automatisch Maschinenspracheanweisungen erzeugt, die eine der angezeigten Prozedur entsprechende Ausführungsprozedur charakterisieren. Daher kann ein Benutzer ein Computerprogramm ausschließlich unter Verwendung einer graphischen Programmierumgebung erzeugen. Diese graphische Programmierumgebung kann zum Erzeugen virtueller Instrumentensysteme, industrieller Automatisierungssysteme und zum Modellieren von Prozessen sowie für jeden beliebigen Typ einer allgemeinen Programmierung verwendet werden.
  • Daher lehren Kodosky u. a. eine graphische Programmierumgebung, bei der ein Benutzer Bildzeichen in einem Blockdiagramm unter Verwendung eines Blockdiagrammeditors anordnet und manipuliert, um ein Datenfluß-"Programm" zu erzeugen. Ein graphisches Programm zum Steuern oder Modellieren von Vorrichtungen, wie Instrumenten, Prozessen oder industrieller Automatisierungshardware, wird als ein virtuelles Instrument (VI) bezeichnet. Beim Erzeugen eines virtuellen Instruments erzeugt ein Benutzer vorzugsweise eine Frontplatte oder eine Benutzerschnittstellenplatte. Die Frontplatte enthält verschiedene Frontplattenobjekte, wie Steuerungen oder Indikatoren, welche die jeweilige Ein- und Ausgabe darstellen, die von dem graphischen Programm oder VI verwendet werden, und sie kann andere Bildzeichen enthalten, welche gesteuerte Vorrichtungen darstellen. Wenn die Steuerungen und Indikatoren auf der Frontplatte erzeugt werden, werden entsprechende Bildzeichen oder Terminals in dem Blockdiagramm automatisch von dem Blockdiagrammeditor erzeugt. Alternativ kann der Benutzer zuerst Terminal-Bildzeichen in dem Blockdiagramm anordnen, wodurch die Anzeige entsprechender Frontplattenobjekte auf der Frontplatte hervorgerufen wird. Der Benutzer wählt dann verschiedene Funktionen, die sein gewünschtes Ergebnis erzielen, wobei er die entsprechenden Funktionsbildzeichen zwischen den Terminals der entsprechenden Steuerungen und Indikatoren verbindet. Mit anderen Worten erzeugt der Benutzer ein als Blockdiagramm bezeichnetes Datenflußprogramm, das den graphischen Datenfluß darstellt, der seine gewünschte Funktion erreicht. Dies erfolgt durch Verdrahten der verschiedenen Funktionsbildzeichen zwischen den Steuerbildzeichen und Indikatorbildzeichen. Die Manipulation und Organisation von Bildzeichen erzeugt wiederum eine Maschinensprache, wodurch das gewünschte Verfahren oder der gewünschte Prozeß erreicht wird, wie in dem Blockdiagramm dargestellt ist.
  • Ein Benutzer gibt Daten unter Verwendung von Frontplattensteuerungen in ein virtuelles Instrument ein. Diese eingegebenen Daten laufen durch das Datenfluß-Blockdiagramm oder graphische Programm und erscheinen als Änderungen an den ausgegebenen Indikatoren. Bei einer Instrumentenanwendung kann die Frontplatte in Analogie mit der Frontplatte eines Instruments gebracht werden. Bei einer industriellen Automatisierungsanwendung kann die Frontplatte in Analogie mit der MMI (Mensch-Maschine-Schnittstelle) einer Vorrichtung gebracht werden. Der Benutzer stellt die Steuerungen an der Frontplatte ein, um die Eingabe zu beeinflussen, und er betrachtet die Ausgabe an den jeweiligen Indikatoren.
  • Demgemäß ist die graphische Programmierung zu einem Programmierern zur Verfügung stehenden mächtigen Werkzeug geworden. Graphische Programmierumgebungen, wie das LabVIEW-Produkt von National Instruments, sind sehr beliebt geworden. Werkzeuge wie LabVIEW haben die Produktivität von Programmierern stark erhöht, und zunehmende Anzahlen von Programmierern verwenden graphische Programmierumgebungen zum Entwickeln ihrer Softwareanwendungen. Insbesondere werden graphische Programmierwerkzeuge unter anderem für Tests und Messungen, zur Datenerfassung, Prozeßsteuerung, für Mensch-Maschine-Schnittstellen (MMI) und für Überwachungssteuerungs- und Datenerfassungsanwendungen (SCADA-Anwendungen) verwendet.
  • Ein Hauptzweck virtueller Instrumentensysteme besteht darin, dem Benutzer die maximale Flexibilität zum Erzeugen seiner eigenen Anwendungen und/oder zum Definieren seiner eigenen Instrumentenfunktionen zu geben. Es ist in dieser Hinsicht wünschenswert, die Ebene zu erweitern, bis zu der der Benutzer von Instrumenten oder industrieller Automatisierungshardware in der Lage ist, Instrumente zu programmieren. Die Entwicklung dieser Ebenen, auf denen der Benutzer ein Instrument programmieren konnte, läßt sich im wesentlichen folgendermaßen darstellen:
    • 1. Software auf der Benutzerebene (LabVIEW, LabWindows CVI, Visual Basic usw.)
    • 2. Software auf der Kern-Ebene
    • 3. Software auf einer Hilfs-Kern-Ebene (ein zweiter Kern, der neben dem Haupt-Betriebssystem läuft, beispielsweise InTime, VentureCom usw.)
    • 4. Eingebettete Software auf der Kern-Ebene
    • 5. Software auf der Hardware-Ebene (FPGA – die vorliegende Patentanmeldung).
  • Im allgemeinen kann der Benutzer, die vorstehende Liste nach unten durchlaufend, Softwareanwendungen erzeugen, die eine deterministischere Echtzeitantwort bereitstellen. Gegenwärtig stellen die meisten Programmentwicklungswerkzeuge für Instrumentensysteme oder die industrielle Automatisierung eine Schnittstelle auf der vorstehenden Ebene 1 kereit. Im allgemeinen sind die meisten Benutzer nicht in der Lage, auf der Kern-Ebene oder der Hilfs-Kern-Ebene zu programmieren, und/oder dies ist ihnen nicht erlaubt. Die Software auf der Benutzerebene nimmt typischerweise die Form von Softwarewerkzeugen an, die zum Erzeugen von Software verwendet werden können, die auf den Ebenen 1 und/oder 4 arbeitet.
  • Gegenwärtige Instrumentenlösungen auf der Ebene 5 existieren. in erster Linie als von dem Anbieter definierte Lösungen, also als von dem Anbieter erzeugte Module. Es ist jedoch sehr wünschenswert, dem Benutzer die Fähigkeit zu geben, Software auf der Benutzerebene zu entwickeln, die auf der Hardwareebene arbeitet. Es ist insbesondere wünschenswert, dem Benutzer die Fähigkeit zu geben, Software hoher Ebene, wie Graphikprogramme, zu entwickeln, die leicht in die Instrumentenfunktionalität auf der Hardwareebene umgewandelt werden kann. Hierdurch würde dem Benutzer der doppelte Vorteil gegeben, daß er Instrumentenfunktionalitäten auf der höchstmöglichen Ebene (textbasierte oder graphische Programme) programmieren kann, während ihm auch die Fähigkeit gegeben wird, das erzeugte Programm direkt in Hardware ablaufen zu lassen, um eine höhere Geschwindigkeit und Effizienz zu erzielen.
  • In dem Dokument von Chen "Software Environment for WASMII: a Data Driven Machine With a Virtual Hardware", veröffentlicht 1994, ist die Verwendung dynamisch umkonfigurierbarer FPGAs auf der Grundlage einer virtuellen Hardware beschrieben. In diesem Dokument ist auch ein System beschrieben, wodurch ein Anwendungsprogramm als ein Datenflußdiagramm editiert wird und dann in einen Satz von Unterdiagrammen unterteilt wird, die jeweils den Konfigurationsdaten von n in WASMII-System verwendeten FPGA-Chips entsprechen. Es erzeugt eine Hardwarebeschreibung von wenigstens einem Abschnitt des graphischen Programms und konfiguriert ein programmierbares Hardwareelement unter Verwendung der Hardwarebeschreibung, um ein konfiguriertes Hardwareelement zu erzeugen, wobei das konfigurierte Hardwareelement eine Hardwareimplementierung von wenigstens einem Abschnitt des graphischen Programms implementiert.
  • Gemäß einem Aspekt ist das Verfahren gemäß der vorliegenden Erfindung durch Anspruch 1 definiert.
  • Gemäß einem Aspekt ist das Meßsystem gemäß Anspruch 22 definiert.
  • Gemäß einem weiteren Aspekt ist das Meßsystem gemäß Anspruch 42 definiert.
  • Die vorliegende Erfindung sieht ein computerimplementiertes System und Verfahren zum automatischen Erzeugen von Funktionalitäten auf der Hardwareebene, beispielsweise programmierbarer Hardware oder FPGAs, ansprechend auf ein von einem Benutzer erzeugtes graphisches Programm vor. Hierdurch wird dem Benutzer die Fähigkeit gegeben, Instrumentenfunktionalitäten unter Verwendung graphischer Programmiertechniken zu entwickeln oder zu definieren, während ermöglicht wird, daß das sich ergebende Programm direkt in Hardware ausgeführt wird.
  • Der Benutzer erzeugt zuerst ein graphisches Programm, das die gewünschte Funktionalität ausführt oder darstellt. Das graphische Programm weist typischerweise ein oder mehrere Module oder eine Hierarchie von Unter-VIs auf. Bei der bevorzugten Ausführungsform ordnet der Benutzer verschiedene Konstruktionselemente in Abschnitten des graphischen Programms an, um das Umwandeln dieser Abschnitte in Hardwareform zu unterstützen.
  • Der Benutzer wählt dann eine Option zum Umwandeln des graphischen Programms in ausführbare Form aus, wobei wenigstens ein Abschnitt des graphischen Programms in eine Hardwareimplementierung umgewandelt wird. Gemäß einer Ausführungsform der vorliegenden Erfindung kann der Benutzer, entweder während der Erzeugung des graphischen Programms oder beim Auswählen der Option zum Umwandeln des graphischen Programms in ausführbare Form auswählen, welche Abschnitte von Modulen in die Hardwareform zu übersetzen sind. Demgemäß kann der Benutzer einen ersten Abschnitt des graphischen Programms auswählen, der vorzugsweise den Überwachungssteuerungs- und Anzeigeabschnitt des Programms enthält, der zur Ausführung auf einer CPU in Maschinensprache zu übersetzen ist. Gemäß der vorliegenden Erfindung kann der Benutzer einen zweiten Abschnitt des graphischen Programms auswählen, der für die Hardwareimplementierung erwünscht ist.
  • Der für die Hardwareimplementierung ausgewählte Abschnitt des graphischen Programms wird zuerst in eine Hardwarebeschreibung, wie eine VHDL-Beschreibung, exportiert. Die Hardwarebeschreibung wird dann in eine Netzliste, vorzugsweise eine FPGA-spezifische Netzliste, umgewandelt. Die Hardwarebeschreibung wird durch ein Synthesewerkzeug in eine Netzliste umgewandelt. Die Netzliste wird dann in eine auch als Software-Bitstrom bekannte FPGA-Programmdatei übersetzt. Bei der bevorzugten Ausführungsform wird die Hardwarebeschreibung direkt in eine FPGA-Programmdatei umgewandelt.
  • Der Schritt des Übersetzens der sich ergebenden Netzliste in eine FPGA-Programmdatei verwendet vorzugsweise eine Bibliothek vorübersetzter Funktionsblöcke, um beim Übersetzen zu helfen, sowie Hardware-zielspezifische Informationen. Die Bibliothek vorübersetzter Funktionsblöcke enthält Netzlistenbibliotheken für Strukturknoten, wie For/Next-Schleifen, While/Do-Schleifen, Fallstrukturen und Sequenzstrukturen und andere. Dies ermöglicht es dem Benutzer, mit höheren Programmier-Konstruktionselementen, wie Iterationen, Schleifen und Fallstrukturen, zu programmieren, während ermöglicht wird, daß das resultierende Programm direkt in Hardware ausgeführt wird.
  • Der sich ergebende Bitstrom wird dann in eine FPGA übertragen, um eine programmierte FPGA zu erzeugen, die dem graphischen Programm oder Blockdiagramm entspricht.
  • Die bevorzugte Ausführungsform der Erfindung umfaßt ein Computersystem für allgemeine Zwecke, das eine CPU und einen Speicher enthält, sowie eine mit dem Computersystem gekoppelte Schnittstellenkarte oder Vorrichtung, die programmierbare Hardware oder Logik, wie eine FPGA, enthält. Das Computersystem weist auf diese Weise ein graphisches Programmiersystem auf, das zum Entwickeln des graphischen Programms verwendet wird. Das Computersystem weist auch Software gemäß der bevorzugten Ausführungsform auf, die in der Lage ist, das graphische Programm in eine Hardwarebeschreibung umzuwandeln. Das Computersystem umfaßt weiterhin ein Synthesewerkzeug, das zum Übersetzen der Hardwarebeschreibung in eine FPGA-spezifische Netzliste verwendet wird, sowie andere Werkzeuge zum Umwandeln der Netzliste in eine FPGA-Programmdatei zum Herunterladen in die FPGA. Das Computersystem umfaßt weiterhin eine Bibliothek vorübersetzter Funktionsblöcke gemäß der vorliegenden Erfindung, die von dem Synthesewerkzeug verwendet werden, um beim Übersetzen der Netzliste in den Software-Bitstrom zu helfen.
  • Bei einer Ausführungsform umfaßt die Zielvorrichtung mit der umkonfigurierbaren Hardware oder FPGA, die programmiert wird, eine Schnittstellenkarte in dem Computersystem, wie eine Datenerfassungskarte, eine IEC-Bus-Schnittstellenkarte oder eine VXI-Schnittstellenkarte. Bei einer alternativen Ausführungsform weist die programmierte Zielvorrichtung ein Instrument oder eine Vorrichtung auf, das oder die, beispielsweise über eine serielle Verbindung, mit dem Computer verbunden ist. Es sei bemerkt, daß das programmierte Zielinstrument oder die programmierte Zielvorrichtung mit einer FPGA oder einem anderen konfigurierbaren Hardwareelement nach Wunsch eine beliebige von verschiedenen Formen annehmen kann.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung werden nun nur als Beispiel mit Bezug auf die anliegende Zeichnung beschrieben.
  • 1 zeigt ein Instrumentensteuersystem.
  • 1A zeigt ein industrielles Automatisierungssystem.
  • 2 zeigt ein Blockdiagramm des Instrumentensteuersystems aus 1.
  • 3, 3A und 3B zeigen Blockdiagramme, in denen eine mit programmierbarer Hardware gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung konfigurierte Schnittstellenkarte dargestellt ist.
  • 4 zeigt ein Flußdiagramm, in dem die Funktionsweise einer bevorzugten Ausführungsform dargestellt ist.
  • 4A zeigt ein detaillierteres Flußdiagramm, in dem die Funktionsweise der bevorzugten Ausführungsform der Erfin-dung dargestellt ist, wobei ein erster Abschnitt des graphischen Programms in Maschinensprache übersetzt wird und ein zweiter Abschnitt des graphischen Programms in eine Hardwareimplementation umgewandelt wird.
  • 5 zeigt ein detaillierteres Flußdiagramm, in dem eine Erzeugung eines graphischen Programms gemäß der bevorzugten Ausführungsform dargestellt ist.
  • 6 zeigt ein detaillierteres Flußdiagramm, in dem der Vorgang des Exportierens wenigstens eines Abschnitts eines graphischen Programms in eine Hardwarebeschreibung dargestellt ist.
  • 7 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren ein Eingabeterminal in eine Hardwarebeschreibung exportiert.
  • 8 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren einen Funktionsknoten in eine Hardwarebeschreibung exportiert.
  • 9 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren ein Ausgabeterminal in eine Hardwarebeschreibung exportiert.
  • 10 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren einen Strukturknoten in eine Hardwarebeschreibung exportiert.
  • 11 zeigt eine Umwandlung einer Knoten-Hardwarebeschreibung in eine Netzliste.
  • 12 zeigt eine Umwandlung einer Strukturknoten-Hardwarebeschreibung in eine Netzliste.
  • 13 zeigt den Funktionsblock für einen Strukturknoten.
  • 14 zeigt ein Zustandsdiagramm, in dem die Funktionsweise des Strukturknoten-Funktionsblocks aus 13 dargestellt ist.
  • 15 und 16 zeigen ein einfaches Beispiel einer Funktionsweise einer bevorzugten Ausführungsform, wobei 15 ein einfaches graphisches Programm und 16 ein Konzeptdiagramm der Hardwarebeschreibung des graphischen Programms aus 15 zeigt.
  • 1719 zeigen ein weiteres Beispiel einer Funktionsweise einer bevorzugten Ausführungsform, wobei 17 ein graphisches Programm, 18 einen Baum ansprechend auf das graphische Programm aus 17 erzeugter Datenstrukturen und 18 ein Konzeptdiagramm der Hardwarebeschreibung des graphischen Programms aus 17 zeigt.
  • 2021 zeigen ein als examplel.vi bezeichnetes graphisches Programm.
  • Wenngleich an der Erfindung verschiedene Modifikationen vorgenommen werden können und alternative Formen davon möglich sind, sind in der Zeichnung spezifische Ausführungsformen beispielhaft dargestellt und werden hier detailliert beschrieben. Es ist jedoch zu verstehen, daß die Zeichnung und die detaillierte Beschreibung die Erfindung nicht auf die offenbarte spezielle Form beschränken sollen. Vielmehr soll die Erfindung alle Modifikationen, gleichwertige Formen und Alternativen abdecken, die innerhalb des durch die anliegenden Ansprüche definierten Schutzumfangs der vorliegenden Erfindung liegen.
  • 1 und 1A – Instrumente und industrielle Automatisierungssysteme
  • In 1 ist ein Instrumentensteuersystem 100 dargestellt. Das System 100 weist einen Computer 102 auf, der mit einem oder mehreren Instrumenten verbunden ist. Der Computer 102 weist eine CPU, einen Anzeigebildschirm, einen Speicher und eine oder mehrere Eingabevorrichtungen, wie bspw. eine Maus oder eine Tastatur, auf, wie dargestellt ist. Der Computer 102 ist über das eine oder die mehreren Instrumente verbunden, um eine Testeinheit (UUT) oder einen Prozeß 130 zu analysieren, zu messen oder zu steuern.
  • Das eine oder die mehreren Instrumente können ein IEC-Bus-Instrument 112, eine Datenerfassungsplatine 114 und/oder ein VXI-Instrument 116 einschließen. Das IEC-Bus-Instrument 112 ist über eine von dem Computer 102 bereitgestellte IEC-Bus-Schnittstellenkarte 122 mit dem Computer 102 gekoppelt. Die Datenerfassungsplatine 114 ist mit dem Computer 102 gekoppelt und vorzugsweise über eine Signalaufbereitungs-Schaltungsanordnung 124 mit der UUT verbunden. Die Signalaufbereitungs-Schaltungsanordnung 124 weist vorzugsweise ein SCXI-(Signal Conditioning eXtensions for Instrumentation)-Gehäuse mit einem oder mehreren SCXI-Modulen 126 auf. Sowohl die IEC-Bus-Karte 122 als auch die DAQ-Karte 114 sind typischerweise in einen E/A-Schlitz in dem Computer 102, wie einen PCI-Bus-Schlitz, einen PC-Karten-Schlitz oder einen ISA-, EISA- oder Mikrokanal-Bus-Schlitz eingesteckt, der von dem Computer 102 bereitgestellt wird. Diese Karten 122 und 114 sind jedoch zu Erläuterungszwecken außerhalb des Computers 102 dargestellt. Das VXI-Instrument 116 ist über einen VXI-Bus, MXI-Bus oder einen anderen seriellen oder parallelen Bus, der von dem Computer 102 bereitgestellt wird, mit dem Computer 102 gekoppelt. Der Computer 102 weist vorzugsweise eine VXI-Schnittstellenlogik, wie bspw. eine VXI-, MXIoder IEC-Bus-Schnittstellenkarte (nicht dargestellt), auf, die in dem Computer enthalten ist. Ein (nicht dargestelltes) serielles Instrument kann auch über einen seriellen Port, wie bspw. eine RS-232-Ports, ein USB-(Universal Serial Bus)- oder IEEE-1394- oder 1394.2-Busses, der von dem Computer 102 bereitgestellt wird, mit dem Computer 102 gekoppelt sein. Bei typischen Instrumentensteuersystemen sind nicht Instrumente jedes Schnittstellentyps vorhanden, und viele Systeme können tatsächlich nur ein oder mehrere Instrumente eines einzigen Schnittstellentyps, beispielsweise nur IEC-Bus-Instrumente, aufweisen.
  • Bei der Ausführungsform aus 1 weisen eine oder mehrere mit dem Computer 102 verbundene Vorrichtungen gemäß der bevorzugten Ausführungsform eine programmierbare oder umkonfigurierbare Hardware auf. Beispielsweise weisen gemäß einer bevorzugten Ausführungsform eine oder mehrere von der IEC-Bus-Karte 122, der DAQ-Karte 114 und der VXI-Karte eine programmierbare Hardware auf. Alternativ oder zusätzlich umfassen eines oder mehrere von dem IEC-Bus-Instrument 112, dem VXI-Instrument 116 oder dem seriellen Instrument gemäß einer bevorzugten Ausführungsform programmierbare Hardware. Bei der bevorzugten Ausführungsform umfaßt die programmierbare Hardware eine FPGA (feldprogrammierbare Gatteranordnung).
  • Die Instrumente sind mit der Testeinheit (UUT) oder dem Prozeß 130 gekoppelt oder sie sind gekoppelt, um typischerweise von Gebern erzeugte Feldsignale zu empfangen. Das System 100 kann bei einer Datenerfassungs- oder Steueranwendung, bei einer Test- und Meßanwendung, bei einer Prozeßsteueranwendung oder bei einer Mensch-Maschine-Kommunikations-Anwendung eingesetzt werden.
  • In 1A ist ein industrielles Automatisierungssystem 140 dargestellt. Das industrielle Automatisierungssystem 140 ähnelt dem in 1 dargestellten Instrumenten- oder Test- und Meßsystem 100. Elemente, die Elementen in 1 ähneln oder mit diesen identisch sind, haben zweckmäßigerweise die gleichen Bezugszahlen. Das System 140 umfaßt einen Computer 102, der mit einer oder mehreren Vorrichtungen oder Instrumenten verbunden ist. Der Computer 102 weist eine CPU, einen Anzeigebildschirm, einen Speicher und eine oder mehrere Eingabevorrichtungen, wie bspw. eine Maus oder eine Tastatur, auf, wie dargestellt ist. Der Computer 102 ist über die eine oder die mehreren Vorrichtungen mit einem Prozeß oder einer Vorrichtung 160 verbunden, um eine Automatisierungsfunktion, wie bspw. eine MMI (Mensch-Maschine-Schnittstelle), SCADA (Supervisory Control and Data Acquisition – Überwachungssteuerung und Datenerfassung), eine tragbare oder verteilte Erfassung, eine fortschrittliche Analyse oder eine Steuerung, durchzuführen.
  • Die eine oder die mehreren Vorrichtungen können eine Datenerfassungsplatine 114, ein serielles Instrument 142, eine PLC (eine programmierbare Logiksteuereinrichtung) 144 oder eine Feldbus-Netzwerkkarte 156 umfassen. Die Datenerfassungsplatine 114 ist mit dem Computer 102 gekoppelt oder in diesem enthalten und vorzugsweise über die Signalaufbereitungs-Schaltungsanordnung 124 mit dem Prozeß 160 verbunden. Die Signalaufbereitungs-Schaltungsanordnung 124 weist vorzugsweise ein SCXI-(Signal Conditioning eXtensions for Instrumentation)-Gehäuse auf, das ein oder mehrere SCXI-Module 126 enthält. Das serielle Instrument 142 ist über eine serielle Schnittstellenkarte 152 oder über einen seriellen Port, wie bspw. ein RS-232-Port, der von dem Computer 102 bereitgestellt wird, mit dem Computer 102 gekoppelt. Die PLC 144 ist über einen seriellen Port, einen Ethernet-Port oder eine firmeneigene Schnittstelle mit dem Computer 102 gekoppelt. Die Feldbus-Schnittstellenkarte 156 ist vorzugsweise in dem Computer 102 enthalten und über ein Feldbusnetzwerk mit einer oder mehreren Feldbusvorrichtungen, wie bspw. ein Ventil 146, verbunden. Jede von der DAQ-Karte 114, der seriellen Karte 152 und der Feldbuskarte 156 sind typischerweise in einen E/A-Schlitz in dem Computer 102 eingesteckt, wie vorstehend beschrieben wurde. Diese Karten 114, 12 und 156 sind jedoch zu Darstellungszwecken außerhalb des Computers 102 dargestellt. Bei typischen industriellen Automatisierungssystemen sind nicht Vorrichtungen von jedem Schnittstellentyp vorhanden, und viele Systeme können tatsächlich nur eine oder mehrere Vorrichtungen eines einzigen Schnittstellentyps, beispielsweise nur PLCs, aufweisen. Die Vorrichtungen sind mit der Vorrichtung oder dem Prozeß 160 gekoppelt.
  • Bei der Ausführungsform aus 1A umfassen eine oder mehrere der mit dem Computer 102 verbundenen Vorrichtungen eine programmierbare Hardware gemäß der vorliegenden Erfindung. Beispielsweise enthalten eine oder mehrere von der Datenerfassungsplatine 114, dem seriellen Instrument 142, der seriellen Schnittstellenkarte 152, der PLC 144 oder der Feldbus-Netzwerkkarte 156 programmierbare Hardware gemäß der vorliegenden Erfindung. Bei der bevorzugten Ausführungsform weist die programmierbare Hardware eine FPGA (feldprogrammierbare Gatteranordnung) auf.
  • Wiederum mit Bezug auf die 1 und 1A sei bemerkt, daß der Computer 102 vorzugsweise ein Speichermedium, wie bspw. ein nichtflüchtiges Medium, z. B. ein magnetisches Medium, eine CDROM, Disketten 104 oder ein flüchtiges Medium, wie bspw. ein Computersystemspeicher, z. B. einen Direktzugriffsspeicher (RAM), aufweist. Das Speichermedium speichert vorzugsweise ein graphisches Programmierentwicklungssystem zum Entwickeln graphischer Programme. Das Speichermedium speichert auch Computerprogramme gemäß der vorliegenden Erfindung, die ausführbar sind, um wenigstens einen Abschnitt eines graphischen Programms in eine Form zum Konfigurieren oder Programmieren der programmierbaren Hardware oder der FPGA umzuwandeln. Die bevorzugte Ausführungsform umfaßt ein in einem Speicher und/oder einer Festplatte des Computers 102 gespeichertes und von einer CPU des Computers 102 ausgeführtes Softwareprogramm. Die Code und Daten aus dem Speicher ausführende CPU umfaßt demgemäß eine Einrichtung zum Umwandeln graphischen Codes in eine Hardwareimplementation gemäß den nachstehend beschriebenen Schritten.
  • Die Instrumente oder Vorrichtungen in den 1 und 1A werden durch graphische Softwareprogramme gesteuert, wobei wahlweise ein Abschnitt von diesen in der CPU des Computers 102 ausgeführt wird und wobei wenigstens ein Abschnitt von diesen zur Hardwareausführung in die programmierbare Hardware heruntergeladen wird. Die graphischen Softwareprogramme, die eine Datenerfassung, eine Datenanalyse und/oder eine Präsentation, beispielsweise für Instrumentensteuerungen oder eine industrielle Automatisierung, ausführen, werden als virtuelle Instrumente bezeichnet.
  • Die bevorzugte Ausführungsform besteht aus dem graphischen Programmiersystem LabVIEW oder BridgeVIEW von National Instruments, die nachstehend zusammenfassend als LabVIEW bezeichnet werden. Bei der bevorzugten Ausführungsform soll der Begriff "LabVIEW" auch graphische Programmiersysteme einschließen, die eine G-Programmierfunktionalität enthalten, die also wenigstens einen Abschnitt der graphischen Programmierfunktionalität von LabVIEW enthalten, wobei dies das graphische Programmiersystem BridgeVIEW einschließt.
  • Der Begriff "graphisches Programmiersystem" soll weiterhin beliebige der verschiedenen Systemtypen einschließen, die zum Entwickeln oder Erzeugen graphischen Codes oder graphischer Programme verwendet werden, wobei diese LabVIEW und BridgeVIEW von National Instruments, Visual Designer von Intelligent Instrumentation, VEE (Visual Engineering Environment) von Hewlett-Packard, Snap-Master von HEM Data Corporation, DASYLab von DasyTec, GFS DiaDem und ObjectBench von SES (Scientific and Engineering Software) und andere einschließen.
  • Wenngleich bei der bevorzugten Ausführungsform die graphischen Programme und die programmierbare Hardware an der Datenerfassung bzw. Datenerzeugung, Datenanalyse und/oder Datenanzeige beteiligt sind und zum Steuern oder Modellieren von Instrumenten oder industrieller Automatisierungshardware verwendet werden, ist zu verstehen, daß die vorliegende Erfindung zum Erzeugen von Hardwareimplementationen graphischer Programme für eine Vielzahl von Anwendungen verwendet werden kann und nicht auf Instrumentenanwendungen oder industrielle Automatisierungsanwendungen beschränkt ist. Mit anderen Worten dienen die 1 und 1A nur als Beispiel, und die bevorzugten Ausführungsformen können in beliebigen von verschiedenen Typen von Systemen verwendet werden. Demgemäß sind das System und die Verfahren gemäß den bevorzugten Ausführungsformen verwendbar, automatisch Hardwareimplementierungen von graphischen Programmen oder graphischen Code für beliebige von verschiedenen Anwendungstypen zu erzeugen, die Softwareanwendungen für allgemeine Zwecke, wie Textbearbeitung, Tabellenkalkulation, Netzwerksteuerung, Spiele usw. einschließen.
  • Computerblockdiagramm
  • In 2 ist ein Blockdiagramm des Computers 102 (aus 1) dargestellt. Die Elemente eines Computers, die nicht erforderlich sind, um die Funktionsweise der bevorzugten Ausführungsformen zu verstehen, wurden der Einfachheit halber fortgelassen. Der Computer 102 umfaßt wenigstens eine Zentralverarbeitungseinheit oder CPU 160, die mit einem Prozessor oder Hauptbus 162 gekoppelt ist. Die CPU 160 kann eine beliebige von verschiedenen Typen, einschließlich eines x86-Prozessors, eines PowerPC-Prozessors, einer CPU aus der Motorola-Prozessorfamilie, eine CPU aus der SPARC-RISC-Prozessorfamilie oder eines anderen Typs sein. Der Hauptspeicher 166 ist durch eine Speichersteuereinrichtung 164 mit dem Hauptbus 162 gekoppelt. Der Hauptspeicher 166 speichert ein graphisches Programmiersystem und auch Software zum Umwandeln wenigstens eines Abschnitts eines graphischen Programms in einer Hardwareimplementierung. Diese Software wird nachstehend in näheren Einzelheiten erörtert. Der Hauptspeicher 166 speichert auch Betriebssystemsoftware sowie die Software zum Betrieb des Computersystems, wie Fachleuten wohlbekannt ist.
  • Der Hauptbus 162 ist durch eine Bussteuereinrichtung 168 oder eine Busbrückenlogik mit einem Erweiterungs- oder Ein-/Ausgabebus 170 gekoppelt. Der Erweiterungsbus 170 ist vorzugsweise der PCI-(Peripheral Component Interconnect – Peripheriekomponenten)-Erweiterungsbus, wenngleich auch andere Bustypen verwendet werden können. Der Erweiterungsbus 170 weist Schlitze für verschiedene Vorrichtungen, wie bspw. die Datenerfassungsplatine 114 (aus 1), eine IEC-Bus-Schnittstellenkarte 122, die das IEC-Bus-Instrument 112 (aus 1) mit einer IEC-Bus-Schnittstelle versieht, und eine VXI- oder MXI-Buskarte 230, auf, die mit dem VXI-Gehäuse 116 gekoppelt ist, um VXI-Instrumente zu empfangen. Der Computer 102 weist weiterhin ein Videoanzeige-Untersystem 180 und ein Festplattenlaufwerk 182 auf, die mit dem Erweiterungsbus 170 gekoppelt sind.
  • Eine oder mehrere Schnittstellenkarten oder Vorrichtungen, die mit dem Erweiterungsbus gekoppelt sind, wie die DAQ-Karte 114, die IEC-Bus-Schnittstellenkarte 122, das IEC-Bus-Instrument 112 oder die VXI- oder MXI-Buskarte 230, weisen ein eingebettetes System mit einer eingebetteten CPU und einem eingebetteten Speicher auf.
  • Programmierbares Hardwarediagramm
  • In 3 ist ein Blockdiagramm dargestellt, das eine Schnittstellenkarte zeigt, die mit einer programmierbaren Hardware gemäß der vorliegenden Erfindung konfiguriert ist. Es sei bemerkt, daß 3 nur als Beispiel dient und daß eine Schnittstellenkarte oder Vorrichtung, die mit der programmierbaren Hardware gemäß der bevorzugten Ausführungsform konfiguriert ist, nach Wunsch verschiedene Architekturen und Formen aufweisen kann. Die in 3 dargestellte Schnittstellenkarte ist die in 1 oder die in 1A dargestellte DAQ-Schnittstellenkarte 114. Wie vorstehend erwähnt wurde, kann die programmierbare Hardware jedoch nach Wunsch auf beliebigen der verschiedenen in den 1 und 1A dargestellten Vorrichtungen oder auf anderen Vorrichtungen hinzugefügt werden.
  • Wie dargestellt ist, weist die Schnittstellenkarte 114 einen E/A-Anschluß 202 auf, der zum Empfang von Signalen gekoppelt ist. In den Ausführungsformen aus den 1 und 1A liefert der E/A-Anschluß 202 analoge und/oder digitale Verbindungen zum Empfangen bzw. Bereitstellen analoger oder digitaler Signale. Der E/A-Anschluß 202 ist dafür ausgelegt, mit der SCXI-Aufbereitungslogik 124 und 126 gekoppelt zu werden, oder er ist dafür ausgelegt, direkt mit einer Testeinheit 130 oder einem Prozeß 160 gekoppelt zu werden.
  • Die Schnittstellenkarte 114 weist auch eine Datenerfassungslogik (DAQ-Logik) 204 auf. Wie dargestellt ist, weist die Datenerfassungslogik 204 Analog-Digital-Wandler (A/D-Wandler), Digital-Analog-Wandler (D/A-Wandler), eine Zeitgeber/Zähler-Logik (TC-Logik) und eine Signalaufbereitungslogik (SC-Logik) auf. Die DAQ-Logik 204 liefert die Datenerfassungsfunktionalität der DAQ-Karte 114.
  • Gemäß der bevorzugten Ausführungsform der Erfindung weist die Schnittstellenkarte 114 ein programmierbares Hardwareelement oder einen programmierbaren Prozessor 206 auf. Bei der bevorzugten Ausführungsform weist die programmierbare Hardware 206 eine feldprogrammierbare Gatteranordnung (FPGA), wie bspw. diejenigen auf, die von Xilinx, Altera usw. erhältlich sind. Das programmierbare Hardwareelement 206 ist mit der DAQ-Logik 204 gekoppelt, und es ist auch mit der lokalen Busschnittstelle 208 gekoppelt. Demgemäß kann ein graphisches Programm auf dem Computer 102 oder einem weiteren Computer in einem vernetzten System erzeugt werden, und wenigstens ein Abschnitt des graphischen Programms kann zur Ausführung in der FPGA 206 in eine Hardwareimplementationsform umgewandelt werden. Der in eine Hardwareimplementationsform umgewandelte Abschnitt des graphischen Programms ist vorzugsweise ein Abschnitt, der eine schnelle Ausführung und/oder eine Echtzeitausführung benötigt.
  • Bei der Ausführungsform aus 3 weist die Schnittstellenkarte 114 weiterhin einen zweckgebundenen Mikroprozessor 212 und einen Speicher 214 auf, die auf der Platine vorhanden sind. Dies ermöglicht es, daß ein Abschnitt des graphischen Programms zum Speichern im Speicher 214 und zur Ausführung durch den Mikroprozessor 212 in die Maschinensprache übersetzt wird. Dies kommt zu einem Abschnitt des graphischen Programms hinzu, der in eine Hardwareimplementationsform in der FPGA 206 umgewandelt wird. Demgemäß wird bei einer Ausführungsform, nachdem ein graphisches Programm erzeugt worden ist, ein Abschnitt des graphischen Programms zur Ausführung in der eingebetteten CPU 212 übersetzt und über die CPU 212 und den Speicher 214 lokal auf der Schnittstellenkarte 114 ausgeführt, und ein zweiter Abschnitt des graphischen Programms wird in ein hardwareausführbares Format umgewandelt oder konvertiert und zur Hardwareimplementation in das FPGA 206 heruntergeladen.
  • Wie dargestellt ist, weist die Schnittstellenkarte 114 weiter eine Busschnittstellenlogik 216 und einen Steuer-/Datenbus 218 auf. Bei der bevorzugten Ausführungsform ist die Schnittstellenkarte 114 eine mit dem PCI-Bus kompatible Schnittstellenkarte, die zur Kopplung mit dem PCI-Bus des Hauptcomputers 102 oder zur Kopplung mit einem PXI-(PCI eXtensions for Instrumentation)-Bus ausgelegt ist. Die Busschnittstellenlogik 216 und der Steuer-/Datenbus 218 stellen demgemäß eine PCI- oder PXI-Schnittstelle bereit.
  • Die Schnittstellenkarte 114 weist auch eine lokale Busschnittstellenlogik 208 auf. Bei der bevorzugten Ausführungsform weist die lokale Busschnittstellenlogik 208 einen RTSI-(Real Time System Integration – Echtzeit-Systemintegration)-Bus zum Vermitteln von Zeit- und Auslösesignalen zwischen der Schnittstellenkarte 114 und einer oder mehreren anderen Vorrichtungen oder Karten auf.
  • Bei einer Ausführungsform weist die Schnittstellenkarte 114 auch einen nichtflüchtigen Speicher 215 auf, der mit dem programmierbaren Hardwareelement 206 gekoppelt ist. Der nichtflüchtige Speicher ist in der Lage, die von dem Hauptcomputersystem empfangene Hardwarebeschreibung zu speichern, um die Ausführung der Hardwarebeschreibung in dem programmierbaren Hardwareelement 206 vor dem Booten des Computersystems 102 oder während des Bootens von diesem zu ermöglichen.
  • Bei der Ausführungsform aus 3A sind die CPU 212 und der Speicher 214 nicht auf der Schnittstellenkarte 114 vorhanden, und es wird demgemäß nur der Abschnitt des graphischen Programms, der in die Hardwareimplementationsform umgewandelt wird, in das FPGA 206 heruntergeladen. Daher wird bei der Ausführungsform aus 3A jeder Überwachungssteuerabschnitt des graphischen Programms, der erforderlich oder erwünscht ist, um in Maschinensprache auf einer programmierbaren CPU ausgeführt zu werden, von der Haupt-CPU in dem Computersystem 102 ausgeführt und nicht lokal von einer CPU auf der Schnittstellenkarte 114 ausgeführt.
  • Bei der Ausführungsform aus 3B ist die CPU 212 nicht auf der Schnittstellenkarte 114 vorhanden, so daß die Schnittstellenkarte 114 die FPGA 206 und den Speicher 214 enthält. Bei dieser Ausführungsform wird der Speicher 214 zum Speichern von FPGA-Zustandsinformationen verwendet. 3B zeigt die gegenwärtig bevorzugte Ausführungsform.
  • 4 – Umwandeln graphischen Codes in eine Hardwareimplementierung
  • In 4 ist ein Flußdiagramm dargestellt, in dem die Funktionsweise der bevorzugten Ausführungsform dargestellt ist. Die bevorzugte Ausführungsform umfaßt ein computerimplementiertes Verfahren zum Erzeugen von Hardwareimplementierungen graphischer Programme oder graphischen Codes. Es ist zu verstehen, daß verschiedene der Schritte in den nachstehenden Flußdiagrammen gleichzeitig oder in anderen Reihenfolgen auftreten können.
  • In dem nachstehenden Verfahren wird vorausgesetzt, daß ein graphisches Programmierentwicklungssystem zur Erzeugung graphischer Programme in dem Speicher des Computersystems gespeichert ist. Bei der bevorzugten Ausführungsform ist das graphische Programmiersystem das von National Instruments erhältliche graphische Programmiersystem LabVIEW. Bei diesem System erzeugt der Benutzer das graphische Programm in einer graphischen Programmplatte, die als ein Blockdiagrammfenster bezeichnet wird, und er erzeugt auch eine Benutzerschnittstelle in einer graphischen Frontplatte. Das graphische Programm wird manchmal als ein virtuelles Instrument (VI) bezeichnet. Das graphische Programm oder VI hat typischerweise eine Hierarchie von Unter-Graphikprogrammen und Unter-VIs.
  • Wie dargestellt ist, erzeugt der Benutzer in Schritt 302 ein graphisches Programm, das manchmal auch als ein Blockdiagramm bezeichnet wird. Bei der bevorzugten Ausführungsform enthält das graphische Programm ein graphisches Datenflußdiagramm, das die Funktionalität des auszuführenden Programms spezifiziert. Dieses graphische Datenflußdiagramm ist vorzugsweise direkt in Maschinensprachencode übersetzbar, der auf einem Computersystem ausführbar ist.
  • In Schritt 304 exportiert das Verfahren wenigstens einen Abschnitt des graphischen Programms in eine Hardwarebeschreibung. Nachdem der Benutzer in Schritt 302 demgemäß ein graphisches Programm erzeugt hat, wählt er eine Option aus, um einen Abschnitt des graphischen Programms in eine Hardwarebeschreibung zu exportieren. Die Hardwarebeschreibung ist vorzugsweise eine VHDL-Beschreibung, beispielsweise eine VHDL-Quellendatei oder alternativ eine Netzlistenbeschreibung hoher Ebene. Die Hardwarebeschreibung umfaßt eine Hardwarebeschreibung hoher Ebene von Funktionsblöcken, Logik, Eingängen und Ausgängen, welche die von dem graphischen Programm angegebene Operation ausführen. Der Vorgang des Exportierens wenigstens eines Abschnitts des graphischen Programms in eine Hardwarebeschreibung wird in näheren Einzelheiten zusammen mit dem Flußdiagramm aus 6 erörtert.
  • Bei einer Ausführungsform spezifiziert der Benutzer während der Erzeugung des graphischen Programms in Schritt 302 Abschnitte, beispielsweise Unter-VIs, welche zur Umwandlung in eine Hardwareimplementation in das Hardwarebeschreibungsformat zu exportieren sind. Wenn der Benutzer bei einer weiteren Ausführungsform die Option zum Exportieren eines Abschnitts des graphischen Programms in das Hardwarebeschreibungsformat auswählt, wählt er aus, welche Module oder Unter-VIs zu dieser Zeit in die Hardwarebeschreibung zu exportieren sind.
  • In Schritt 306 wandelt das Verfahren die Hardwarebeschreibung in eine FPGA-spezifische Netzliste um. Die Netzliste beschreibt die Komponenten, die in der Hardware vorhanden sein müssen, sowie ihre Verbindungen. Eine Umwandlung der Hardwarebeschreibung in die FPGA-spezifische Netzliste wird vorzugsweise von beliebigen der verschiedenen Typen im Handel erhältlicher Synthesewerkzeuge, wie bspw. diejenigen, die von Xilinx, Altera usw. erhältlich sind, ausgeführt.
  • Bei der bevorzugten Ausführungsform kann der Umwandlungsschritt 306 einen oder mehrere vorübersetzte Funktionsblöcke aus einer Bibliothek vorübersetzter Funktionsblöcke 208 verwenden. Demgemäß enthält die in Schritt 304 erzeugte Hardwarebeschreibung für bestimmte Funktionsblöcke, die schwierig oder weniger wirksam von einer Hardwarebeschreibung in ein Netzlistenformat zu übersetzen sind, einen Bezug auf einen vorübersetzten Funktionsblock aus der Bibliothek 308. Alternativ sind Hardwareimplementationen für alle Funktionsblöcke in der Funktionsbibliothek enthalten. Die jeweiligen vorübersetzten Funktionsblöcke werden einfach an Stelle dieser Referenzen in Schritt 306 in die Netzliste eingefügt. Die bevorzugte Ausführungsform enthält demgemäß die Bibliothek 308 vorübersetzter Funktionsblöcke, die auch als die Komponentenbibliothek bezeichnet wird, wobei die vorübersetzten Funktionsblöcke beim Erzeugen der Netzliste verwendet werden. Die bevorzugte Ausführungsform enthält auch hardwarezielspezifische Informationen 310, die in Schritt 306 beim Umwandeln der Hardwarebeschreibung in eine Netzliste, die für einen bestimmten Typ oder eine bestimmte Klasse von FPGAs spezifisch ist, verwendet werden.
  • In Schritt 312 übersetzt das Verfahren die Netzliste in eine FPGA-Programmdatei, die auch als Software-Bitstrom bezeichnet wird. Die FPGA-Programmdatei ist eine Datei, die leicht zum Programmieren einer FPGA heruntergeladen werden kann.
  • Nachdem die Netzliste in Schritt 312 zu einer FPGA-Programmdatei kompiliert worden ist, überträgt das Verfahren in Schritt 314 die FPGR-Programmdatei in die programmierbare Hardware, beispielsweise die FPGA, um eine mit dem graphischen Programm äquivalente programmierte Hardware zu erzeugen. Demgemäß wird nach Abschluß des Schritts 314 der Abschnitt eines in Schritt 304 referenzierten graphischen Programms als eine Hardwareimplementierung in ein FPGA oder ein anderes programmierbares Hardwareelement aufgenommen.
  • Es sei bemerkt, daß verschiedene der vorstehenden Schritte kombiniert werden können und/oder für den Benutzer unsichtbar gemacht werden können. Beispielsweise können die Schritte 306 und 312 ebenso wie die Schritte 304 und 306 zu einem einzigen Schritt kombiniert werden. Bei der bevorzugten Ausführungsform kann der Benutzer, nachdem er das graphische Programm in Schritt 302 erzeugt hat, einfach eine Hardwareexportoption auswählen und das Hardwareziel oder den Hardware-Bestimmungsort angeben, wodurch bewirkt wird, daß die Schritte 304–314 automatisch ausgeführt werden.
  • 4A – Umwandlung eines graphischen Programms in Maschinensprache- und Hardwareimplementierung
  • 4A zeigt ein detaillierteres Flußdiagramm, in dem die Funktionsweise der bevorzugten Ausführungsform der Erfindung, einschließlich des Übersetzens eines ersten Abschnitts des graphischen Programms in Maschinensprache und des Umwandelns eines zweiten Abschnitts des graphischen Programms in eine Hardwareimplementierung, dargestellt ist.
  • Wie in 4A dargestellt ist, kann der Benutzer, nachdem er in Schritt 302 ein graphisches Programm erzeugt hat, wahlweise einen ersten Abschnitt auswählen, der für die CPU-Ausführung in den Maschinencode zu übersetzen ist, wie es normalerweise erfolgt. Bei der bevorzugten Ausführungsform wählt der Benutzer vorzugsweise einen Überwachungssteuerungs- und Anzeigeabschnitt des für eine CPU-Ausführung in Maschinencode zu übersetzenden graphischen Programms aus. Der erste Abschnitt, der Überwachungssteuerungs- und Anzeigeabschnitte aufweist, wird zur Ausführung in einer CPU, wie bspw. die Haupt-CPU in dem Computer 102 oder die auf der Schnittstellenkarte 114 vorhandene CPU 212, übersetzt. Dies ermöglicht es, daß die Überwachungssteuerungs- und Anzeigeabschnitte in der Haupt-CPU ausgeführt werden, was für diese Elemente des Programms optimal ist.
  • Der Benutzer wählt einen zweiten Abschnitt zur Umwandlung in die Hardwareimplementation aus, die wie vorstehend in den Schritten 304–314 aus 4 beschrieben ausgeführt wird. Der Abschnitt des graphischen Programms, der für die Hardwareimplementierung erwünscht ist, weist vorzugsweise Module oder VIs aus, die eine schnelle oder deterministische Implementierung erfordern und/oder die in einer autonomen Hardwareeinheit ausgeführt werden sollen. Im allgemeinen werden Abschnitte des graphischen Programms, die eine schnellere oder deterministischere Ausführung haben sollen, in die Hardwareimplementierung umgewandelt. Bei einer Ausführungsform wird das gesamte graphische Programm für die Umwandlung in eine Hardwareimplementierung ausgewählt, so daß Schritt 322 nicht ausgeführt wird.
  • 5 – Erzeugung eines graphischen Programms
  • 5 zeigt ist ein detaillierteres Flußdiagramm des Schritts 302 aus den 4 und 4A, worin eine Erzeugung eines graphischen Programms gemäß der bevorzugten Ausführungsform der Erfindung dargestellt ist. Wie dargestellt ist, ordnet der Benutzer in Schritt 342 auf dem Bildschirm ein graphisches Programm oder ein Blockdiagramm an. Dies schließt ein, daß der Benutzer verschiedene Bildzeichen oder Knoten auf dem Rnzeigebildschirm, beispielsweise durch Verdrahten, anordnet und verbindet, um ein graphisches Programm zu konfigurieren. Insbesondere wählt der Benutzer verschiedene Funktionsbildzeichen oder andere Bildzeichen aus und ordnet die Bildzeichen in einem Blockdiagrammfeld an oder legt sie in diesem ab und verbindet die Bildzeichen dann oder "verdrahtet" sie, um das graphische Programm zusammenzustellen. Der Benutzer stellt vorzugsweise auch eine Benutzerschnittstelle zusammen, die als eine Frontplatte bezeichnet wird, die Steuerungen und Indikatoren aufweist, welche die Eingabe in das graphische Programm bzw. die Ausgabe aus dem graphischen Programm angeben oder darstellen. Für weitere Informationen zum Erzeugen eines graphischen Programms im graphischen Programmiersystem LabVIEW sei auf das von National Instruments erhältliche LabVIEW-System sowie auf die vorstehend erwähnten Patentanmeldungen verwiesen.
  • Ansprechend darauf, daß der Benutzer auf dem Bildschirm ein graphisches Programm anordnet, entwickelt und speichert das Verfahren einen Baum von Datenstrukturen, die das graphische Programm darstellen. Wenn der Benutzer demgemäß auf dem Bildschirm Funktionsknoten, Strukturknoten, Ein-/Ausgabeterminals und Verbindungen von Drähten usw. anordnet und einrichtet, entwickelt und speichert das graphische Programmiersystem einen Baum von Datenstrukturen, die das graphische Programm darstellen. Wenn der Benutzer insbesondere jeden einzelnen Knoten und Draht zusammenstellt, entwickelt und speichert das graphische Programmiersystem eine entsprechende Datenstruktur in dem Baum von Datenstrukturen, die den einzelnen Abschnitt des graphischen Programms darstellt, der zusammengestellt wurde. Demgemäß sind die Schritte 342 und 344 ein iterativer Prozeß, welcher wiederholt ausgeführt wird, wenn der Benutzer das graphische Programm erzeugt.
  • 6 – Exportieren eines Abschnitts des graphischen Programms in eine Hardwarebeschreibung
  • 6 zeigt ein Flußdiagramm des Schritts 304 aus den 4 und 4A, worin die Funktionsweise dargestellt ist, wenn das Verfahren einen Abschnitt des graphischen Programms in eine Hardwarebeschreibung exportiert. Der Baum der in Schritt 344 erzeugten und gespeicherten Datenstrukturen enthält vorzugsweise einen hierarchischen Baum von Datenstrukturen auf der Grundlage der Hierarchie und der Verbindbarkeit des graphischen Programms. Wie dargestellt ist, durchläuft das Verfahren in Schritt 362 den Baum von Datenstrukturen, und das Verfahren übersetzt in Schritt 364 jede Datenstruktur in ein Hardwarebeschreibungsformat. Bei einer Ausführungsform flacht das Verfahren den Baum der Datenstrukturen vor dem Durchlaufen des Schritts in Schritt 362 zuerst ab.
  • Bei der vorliegenden Ausführungsform kann eine Anzahl verschiedener Funktionsbildzeichen und/oder Grundelemente für eine Umwandlung in eine Hardwareimplementierung in einem Diagramm oder graphischen Programm angeordnet werden. Diese Grundelemente umfassen Funktionsknoten, Konstanten, globale Variablen, Steuer- und Indikatorterminals, Strukturknoten und Unter-VIs usw., sind jedoch nicht auf diese beschränkt. Funktionsbildzeichen oder Grundelemente können von einem beliebigen Datentyp sein, sie sind jedoch gemäß der vorliegenden Ausführungsform auf ganzzahlige oder Boolesche Datentypen beschränkt. Weiterhin werden globale Variablen vorzugsweise im Interesse der Bequemlichkeit auf einem einzigen globalen Feld zusammengestellt. Falls ein VI mehrere Male auftritt, ist das VI vorzugsweise ablaufinvariant und kann Zustandsinformationen aufweisen. Falls ein VI nicht ablaufinvariant ist, werden vorzugsweise mehrere Kopien des VI in Hardware erzeugt, falls das VI keine Zustandsinformationen aufweist, und es tritt andernfalls ein Fehler auf.
  • Bei der bevorzugten Ausführungsform weist jeder Knoten, der in eine Hardwarebeschreibung umgewandelt wird, eine Freigabeeingabe, eine Freigabelöschsignal-Eingabe, eine Haupttaktsignal-Eingabe und ein Ausgangsfreigabe- oder Abschlußsignal auf. Die Freigabeeingabe garantiert, daß der Knoten zur richtigen Zeit ausführt, nämlich wenn alle seine Eingaben empfangen worden sind. Die Freigabelöschsignal-Eingabe wird verwendet, um den Knoten zurückzusetzen, falls Zustandsinformationen daran erinnern, daß der Knoten abgeschlossen wurde. Das Ausgangsfreigabesignal oder Abschlußsignal wird erzeugt, wenn der Knoten abgeschlossen wird, und es wird verwendet, um den Betrieb des nachfolgenden Knotens, der eine Ausgabe vom Knoten empfängt, freizugeben. Jeder Knoten, der in eine Hardwarebeschreibung umgewandelt wird, enthält auch die in dem graphischen Programm dargestellten Datenwege.
  • Für While-Schleifenstrukturen, Iterationsstrukturen, Sequenzstrukturen und Fallstrukturen wird die jeweilige Struktur im wesentlichen zu einer Steuerschaltung oder einem Steuerblock abstrahiert. Der Steuerblock weist einen Diagrammfreigabeausgang für jedes Unterdiagramm und einen Diagrammabschlußeingang für jedes Unterdiagramm auf.
  • Zusätzlich zu den vorstehenden Signalen, beispielsweise der Freigabeeingabe, der Freigabelöschsignal-Eingabe, der Haupttaktsignal-Eingabe und dem Ausgangsfreigabe- oder Abschlußsignal weisen alle globalen Variablen zahlreiche zusätzliche Signale, einschließlich CPU-Schnittstellensignale, die für den Typ der CPU und des Busses spezifisch sind, auf, sie weisen jedoch typischerweise Datenleitungen, Adreßleitungen, Takt-, Rücksetz- und Vorrichtungsauswahlsignale auf. Alle VIs und Unter-VIs weisen auch CPU-Schnittstellensignale auf, falls sie eine globale Variable enthalten.
  • Wenn ein Bildzeichen für ein VI definiert wird, das ausschließlich zum Darstellen eines mit der FPGA ver bundenen Hardwarebetriebsmittels, beispielsweise eines A/D-Wandlers, mit einer Anzahl von Eingängen und Ausgängen verwendet wird, wird bei der bevorzugten Ausführungsform auf der mit VHDL bezeichneten Frontplatte vorzugsweise eine Zeichenkettensteuerung angeordnet. In diesem Fall wird der Standardtext der Zeichenkettensteuerung in der für die VHDL-Beschreibung des VIs erzeugten Textdatei angeordnet. Daher wird bei einer Ausführungsform eine Bibliothek von VIs bereitgestellt, die jeweils eine physikalische Komponente oder ein physikalisches Betriebsmittel darstellen, das in oder für die FPGA verfügbar ist. Wenn diese VHDL-Dateien, die diese VIs darstellen, verwendet werden, überwacht das Verfahren der vorliegenden Erfindung ihre Verwendung, um zu gewährleisten, daß jedes Hardwarebetriebsmittel nur einmal in der Hierarchie der zur FPGA exportierten VIs verwendet wird. Wenn die VHDL-Datei geschrieben wird, werden die Inhalte der Zeichenkettensteuerung zum Definieren des Zugriffsverfahrens für dieses Hardwarebetriebsmittel verwendet.
  • Nachfolgend wird der Pseudocode angegeben, der die im Flußdiagramm aus 6 ausgeführten Operationen beschreibt:
  • GenCircuit(vi)
    • Senden von GenCircuit zu Diagramm höchster Ebene von vi
  • Diagram (Diagramm): GenCircuit (d)
    • Senden von GenCircuit zu jeder Konstanten in d
    • Senden von GenCircuit zu jedem Knoten in d
    • Senden von GenCircuit zu jedem Signal in d
    • Signal (Signal): GenCircuit(s)
    • Erklären des Typs des Signals s
  • BasicNode (Basisknoten): GenCircuit(n)
    • Erklären des Typs der für n erforderlichen Komponente
    • Erklären des UND-Gatters für das Freigeben von n (falls erforderlich)
    • Auflisten der Verbindungen für alle Knoteneingänge
    • Auflisten der Verbindungen für alle Eingänge zum Freigeben des UND-Gatters (falls erforderlich)
  • Constant (Konstante): GenCircuit(c)
    • Erklären des Typs und des Werts der Konstanten c
  • WhileLoopNode (While-Schleifenknoten): GenCircuit(n)
    • Erklären der While-Schleifen-Steuerungskomponente
    • Erklären des UND-Gatters zum Freigeben von n (falls erforderlich)
    • Auflisten der Verbindungen für alle Knoteneingänge
    • Auflisten der Verbindungen für alle Eingänge zum Freigeben des UND-Gatters (falls erforderlich)
    • Erklären des Typs jeder Schieberegisterkomponente
    • Auflisten der Verbindungen für alle Eingänge für alle Schieberegister
    • Erklären des Typs jeder Tunnelkomponente Auflisten der Verbindungen für alle Eingänge zu allen Tunneln
  • CaseSelectNode (Fallauswahlknoten): GenCircuit(n)
    • Erklären der Fallauswahl-Steuerkomponente
    • Erklären des UND-Gatters zum Freigeben von n (falls erforderlich)
    • Auflisten der Verbindungen für alle Knoteneingänge
    • Auflisten der Verbindungen für alle Eingänge zum Freigeben des UND-Gatters (falls erforderlich)
    • Erklären des Typs jeder Tunnelkomponente
    • Auflisten der Verbindungen für alle Eingänge zu allen Tunneln
  • SequenceNode (Sequenzknoten): GenCircuit(n)
    • Erklären der Sequenzsteuerkomponente
    • Erklären des UND-Gatters zum Freigeben von n (falls erforderlich)
    • Auflisten der Verbindungen für alle Knoteneingänge
    • Auflisten der Verbindungen für alle Eingänge zum Freigeben des UND-Gatters (falls erforderlich)
    • Erklären des Typs jeder Tunnelkomponente Auflisten der Verbindungen für alle Eingänge zu allen Tunneln
  • SubVINode (Unter-VI-Knoten): GenCircuit(n)
    • Senden von GenCircuit zum Unter-VI von n
    • Zuordnen der Eingänge und Ausgänge des Unter-VIs zu jenen von n
    • Erklären des UND-Gatters zum Freigeben von n (falls erforderlich)
    • Auflisten der Verbindungen für alle Knoteneingänge
    • Auflisten der Verbindungen für alle Eingänge zum Freigeben des UND-Gatters (falls erforderlich)
  • Mit Bezug auf die vorstehende Pseudocode-Liste sei bemerkt, daß das Verfahren auf der VI-Ebene (der höchsten Ebene) beginnt und mit der Erzeugung von VHDL beginnt, indem es eine Nachricht zu dem Diagramm höchster Ebene sendet. Das Verfahren liefert wiederum im wesentlichen eine Nachricht von dem Diagramm für jede Konstante, jeden Knoten und jedes Signal in dem Diagramm.
  • Für Signale erklärt das Verfahren dann den Signaltyp.
  • Für Basisknoten erklärt das Verfahren einen Typ der erforderlichen Komponente und auch ein UND-Gatter mit der zum Freigeben erforderlichen geeigneten Anzahl von Eingängen. Mit anderen Worten erklären die Basisknoten ein UND-Gatter mit einer Anzahl von Eingängen, die der Anzahl der von dem Knoten empfangenen Eingänge entspricht. Hierbei wird bevorzugt eine Optimierung ausgeführt, um die Anzahl der tatsächlich erforderlichen Eingänge zu minimieren. Falls ein Knoten beispielsweise drei Eingänge aufweist, braucht der Knoten nicht unbedingt ein UND-Gatter mit drei Eingängen, falls zwei dieser Eingänge von einem einzigen Knoten kommen. Als ein weiteres Beispiel sei erwähnt, daß falls ein Eingang von einem Knoten A kommt und ein anderer Eingang von einem Knoten B kommt, der Knoten A jedoch auch den Knoten B beliefert, der Eingang vom Knoten A im UND-Gatter nicht erforderlich ist. Demgemäß werden verschiedene Optimierungstypen ausgeführt, um die Anzahl der Eingänge jedes UND-Gatters zu verringern. Für den Grundknoten listet das Verfahren auch die Verbindungen für alle seine Eingänge sowie die Verbindungen für alle Eingänge zum Freigeben des UND-Gatters auf.
  • Für eine Konstante erklärt das Verfahren einfach den Typ und den Wert der Konstanten.
  • Für eine While-Schleife erklärt das Verfahren eine While-Schleifensteuerungskomponente. Das Verfahren erklärt auch ein UND-Gatter, listet UND-Gatter-Eingänge auf und listet Knoteneingänge in ähnlicher Weise wie bei dem vorstehend beschriebenen Basisknoten auf. Das Verfahren erklärt dann den Typ für jedes Schieberegister und nimmt eine Komponente für das Schieberegister auf und listet alle Verbindungen für die Schieberegistereingänge auf. Falls in der While-Schleife Tunnel vorhanden sind, erklärt das Verfahren den Typ jeder Tunnelkomponente und listet die Verbindungen für die Eingänge zu den Tunneln auf. Für die meisten Tunnel gleicht das Verfahren einfach die Signale für die Eingangsseite und die Ausgangsseite ab, ohne daß sich eine Auswirkung ergibt.
  • Das Verfahren läuft für Fall- und Sequenzstrukturen ähnlich ab. Für Fall- und Sequenzstrukturen erklärt das Verfahren eine Fallauswahl-Steuerungskomponente bzw. eine Sequenzsteuerungskomponente. Sowohl für Fall- als auch für Sequenzstrukturen erklärt das Verfahren auch ein UND-Gatter, listet UND-Gatter-Eingänge auf und listet Knoteneingänge auf, wobei dies in ähnlicher Weise wie bei dem vorstehend beschriebenen Basisknoten geschieht. Das Verfahren erklärt dann die für irgendwelche Tunnel erforderliche Komponente und listet die Verbindungen für die Eingänge zu den Tunneln auf.
  • Für ein Unter-VI sendet das Verfahren eine Nachricht zum Unter-VI und ordnet Ein- und Ausgänge des Unter-VIs denjenigen von n zu. Das Verfahren erklärt dann ein UND-Gatter, listet UND-Gatter-Eingänge auf und listet Knoteneingänge auf, wobei dies in ähnlicher Weise wie bei dem vorstehend beschriebenen Basisknoten geschieht.
  • 7 – Exportieren eines Eingabeterminals in eine Hardwarebeschreibung
  • 7 zeigt ein Flußdiagramm, in dem die Funktionsweise dargestellt ist, wenn das Verfahren ein Eingabeterminal in das Hardwarebeschreibungsformat exportiert. Wie dargestellt ist, bestimmt das Verfahren in Schritt 402, ob die dem Eingabeterminal bereitgestellten Daten von einem Abschnitt des graphischen Programms, der auf der CPU ausgeführt wird, also dem Abschnitt des graphischen Programms, der zur Ausführung auf der CPU in Maschinensprache zu kompilieren ist, eingegeben werden, oder ob die Daten von einem anderen Abschnitt des graphischen Programms eingegeben werden, der auch in eine Hardwareimplementation umgewandelt wird.
  • Falls in Schritt 402 bestimmt wird, daß die in das Eingabeterminal eingegebenen Daten von einem Abschnitt des graphischen Programms einzugeben sind, der zur Ausführung auf der CPU zu übersetzen ist, erzeugt das Verfahren in Schritt 406, wie dargestellt, eine Hardwarebeschreibung eines Schreibregisters mit einem Dateneingang und Daten-und Steuerausgängen. Das Schreibregister kann von dem Hauptcomputer übertragene Daten, d. h. von dem auf der CPU ausgeführten übersetzten Abschnitt erzeugte Daten, empfangen. In Schritt 408 wird der Datenausgang des Schreibregisters zum Bereitstellen einer Datenausgabe mit anderen Elementen in dem graphischen Programmabschnitt verbunden. In Schritt 408 wird der Steuerausgang des Schreibregisters mit anderen Elementen in dem graphischen Programmabschnitt verbunden, um die Ablaufsteuerung der Ausführung zu steuern und dadurch zu ermöglichen, daß die Hardwarebeschreibung die gleiche oder eine ähnliche Ausführungsreihenfolge aufweist wie das graphische Programm.
  • Falls in Schritt 402 bestimmt wird, daß die Daten nicht von einem Abschnitt einzugeben sind, der zur Ausführung auf der CPU übersetzt wird, die Daten also von einem anderen Knoten in dem in eine Hardwareimplementation umgewandelten Abschnitt stammen, verknüpft das Verfahren in Schritt 404 den Datenausgang vom vorhergehenden Knoten mit diesem Abschnitt der Hardwarebeschreibung und verknüpft den Datenausgang vom vorhergehenden Knoten beispielsweise mit dem Eingang abhängiger Untermodule sowie einer Steuerweglogik, um die Semantik des ursprünglichen graphischen Programms aufrechtzuerhalten.
  • 8 – Exportieren eines Funktionsknotens in eine Hardwarebeschreibung
  • 8 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren einen Funktionsknoten in das Hardwarebeschreibungsformat exportiert. Bei der bevorzugten Ausführungsform betrifft der Begriff "Funktionsknoten" beliebige von verschiedenen Typen von Bildzeichen oder Einheiten, die eine ausgeführte Funktion darstellen. Demgemäß stellt das Funktionsknoten-Bildzeichen eine im graphischen Programm ausgeführte Funktion dar. Beispiele von Funktionsknoten umfassen arithmetische Funktionsknoten, beispielsweise Addier-, Subtrahier-, Multiplizier- und Dividierknoten, trigonometrische und logarithmische Funktionsknoten, Vergleichs-Funktionsknoten, Umwandlungs-Funktionsknoten, Zeichenketten-Funktionsknoten, Feld- und Cluster-Funktionsknoten, Datei-Ein-/Ausgabe-Funktionsknoten usw.
  • Wie in 8 dargestellt ist, bestimmt das Verfahren in Schritt 422 die Eingänge und Ausgänge des Funktionsknotens. In Schritt 424 erzeugt das Verfahren eine Hardwarebeschreibung des dem Funktionsknoten entsprechenden Funktionsblocks mit der geeigneten Anzahl der in Schritt 422 bestimmten Ein- und Ausgänge. Alternativ nimmt das Verfahren in Schritt 424 in der Hardwarebeschreibung eine Referenz auf einen vorübersetzten Funktionsblock aus der Bibliothek 308 auf. In diesem Fall enthält das Verfahren auch die vorbestimmte Anzahl der Eingänge und Ausgänge des Funktionsknotens.
  • In Schritt 426 durchläuft das Verfahren die Eingabeabhängigkeiten des Knotens, um zu bestimmen, welche anderen Knoten Ausgaben bereitstellen, die dem umgewandelten Funktionsknoten als Eingaben zugeführt werden. In Schritt 428 erzeugt das Verfahren eine Hardwarebeschreibung eines UND-Gatters mit N Eingängen, wobei N die Anzahl der Eingänge für den Knoten sind, wobei jeder der N Eingänge mit Steuerausgängen von Knoten verbunden ist, die dem Funktionsknoten Eingaben bereitstellen. Der Ausgang des UND-Gatters ist mit einem Steuereingang des dem Funktionsknoten entsprechenden Funktionsblocks verbunden.
  • In dem Datenflußdiagramm-Modell der bevorzugten Ausführungsform kann ein Funktionsknoten nur dann ausführen, wenn alle seine Eingaben empfangen worden sind. Das in Schritt 428 erzeugte UND-Gatter emuliert diese Funktion durch Empfangen aller Steuerausgaben von Knoten, die dem Funktionsknoten Eingaben bereitstellen. Demgemäß empfängt das UND-Gatter im wesentlichen alle abhängigen Eingaben, die dem Funktionsknoten zugeführt werden, und führt eine UND-Verknüpfung an ihnen aus, um ein Ausgangssteuersignal bereitzustellen, das festlegt, ob der Funktionsknoten alle Eingaben empfangen hat. Der Ausgang des UND-Gatters ist mit dem Steuereingang des Funktionsblocks verbunden und steuert die Ausführung des Funktionsblocks. Demgemäß wird der Funktionsblock erst dann ausgeführt, wenn die dem Steuereingang des Funktionsblocks zugeführte Ausgabe des UND-Gatters ein logisches Signal bereitstellt, das angibt, daß alle abhängigen Eingaben, die in den Funktionsknoten eingegeben werden, empfangen worden sind.
  • 9 – Exportieren eines Ausgabeterminals in eine Hardwarebeschreibung
  • 9 zeigt ein Flußdiagramm, in dem der Vorgang dargestellt ist, bei dem das Verfahren ein Ausgabeterminal in die Hardwarebeschreibung exportiert. Wie dargestellt ist, bestimmt das Verfahren in Schritt 440, ob die von dem Ausgabeterminal bereitgestellten Daten an einen Abschnitt des graphischen Programms, der auf der CPU ausgeführt wird, also an den Abschnitt des graphischen Programms, der zur Ausführung auf der CPU in die Maschinensprache zu übersetzen ist, ausgegeben werden, oder ob die Daten an einen anderen Abschnitt des graphischen Programms ausgegeben werden, der auch in eine Hardwareimplementation umgewandelt wird.
  • Falls in Schritt 440 bestimmt wird, daß die vom Ausgabeterminal ausgegebenen Daten in einen Abschnitt des graphischen Programms auszugeben sind, der zur Ausführung auf der CPU übersetzt wird, erzeugt das Verfahren, wie dargestellt, in Schritt 442 eine Hardwarebeschreibung eines Leseregisters mit einem Dateneingang und Daten- und Steuerausgängen. Das Leseregister kann durch einen vorhergehenden Knoten im graphischen Programm darstellende Logik erzeugte Daten empfangen.
  • In Schritt 444 verbindet das Verfahren den Datenausgang eines vorhergehenden Knotens mit dem Dateneingang des Leseregisters. In Schritt 444 wird der Steuereingang des Leseregisters auch verbunden, um den Ausführungsablauf zu steuern, also zu garantieren, daß das Leseregister die Daten zur richtigen Zeit empfängt. Dies ermöglicht es, daß die Hardwarebeschreibung die gleiche oder eine ähnliche Ausführungsreihenfolge aufweist wie das graphische Programm.
  • Falls in Schritt 440 festgestellt wird, daß die Daten nicht an einen zur Ausführung auf der CPU übersetzten Abschnitt auszugeben sind, die Daten also an einen anderen Knoten in dem in eine Hardwareimplementation umgewandelten Abschnitt gerichtet sind, verknüpft das Verfahren in Schritt 446 den Datenausgang vom Ausgabeterminal mit einem nachfolgenden Knoten in diesem Abschnitt der Hardwarebeschreibung und verknüpft beispielsweise den Datenausgang vom Ausgabeterminal mit dem Eingang nachfolgender Untermodule sowie von Wegsteuerlogik, um die Semantik des ursprünglichen graphischen Programms beizubehalten.
  • 10 – Exportieren eines Strukturknotens in eine Hardwarebeschreibung
  • 10 zeigt ist ein Flußdiagramm, in dem ein Vorgang dargestellt ist, bei dem das Verfahren einen Strukturknoten in die Hardwarebeschreibung exportiert. Bei der bevorzugten Ausführungsform betrifft der Begriff "Strukturknoten" einen Knoten, der die Ablaufsteuerung von Daten, einschließlich Iterationen, Schleifen, der Folgesteuerung und bedingter Verzweigungen, darstellt. Beispiele von Strukturknoten umfassen For/Next-Schleifen, While/Do-Schleifen, Fallstrukturen oder bedingte Strukturen und Sequenzstrukturen. Für weitere Informationen zu Strukturknoten sei auf die vorstehend erwähnten LabVIEW-Patente verwiesen.
  • Das Flußdiagramm aus 10 veranschaulicht das Exportieren eines Schleifenstrukturknotens in eine Hardwarebeschreibung. Wie dargestellt ist, untersucht das Verfahren in Schritt 462 die Strukturknotenparameter, beispielsweise die Iterationsanzahl, die Schleifenbedingung, Perioden, Phasenverzögerungen usw. Wie vorstehend erörtert wurde, ermöglicht es das graphische Programmiersystem dem Benutzer vorzugsweise, bestimmte Parameter in einen Strukturknoten einzufügen, um das Exportieren des Strukturknotens in eine Hardwarebeschreibung zu erleichtern. Iterations- und Schleifenstrukturknoten haben früher eine Iterationsanzahl bzw. eine Schleifenbedingung eingeschlossen. Gemäß der bevorzugten Ausführungsform weisen diese Strukturknoten weiterhin Perioden- und Phasenverzögerungsparameter auf, die in den Strukturknoten eingefügt oder diesem zugewiesen werden. Diese liefern Informationen über die Ausführungsperiode und die Phasenverzögerung des Strukturknotens. Wie nachstehend erörtert wird, werden der Perioden- und der Phasenverzögerungsparameter sowie die Iterationsanzahl oder die Schleifenbedingung verwendet, um das Exportieren des Strukturknotens in eine Hardwarebeschreibung zu erleichtern.
  • In Schritt 464 fügt das Verfahren die Strukturknotenparameter in die Hardwarebeschreibung ein. In Schritt 466 fügt das Verfahren einen Bezug auf einen vorübersetzten Funktionsblock ein, der dem Typ des Strukturknotens entspricht. Im Fall eines Schleifen-Strukturknotens fügt das Verfahren einen Bezug auf einen vorübersetzten Funktionsblock ein, der die von dem Strukturknoten angegebene Schleifenfunktion implementiert. Das Verfahren verbindet auch Steuerungen mit dem vom Strukturknoten eingeschlossenen Diagramm.
  • 11 – Umwandeln eines Knotens in eine Hardwarebeschreibung
  • 11 zeigt ein Flußdiagramm eines Abschnitts von Schritt 306 aus den 4 und 4A, worin ein Vorgang dargestellt ist, bei dem das Verfahren die Hardwarebeschreibung für einen Knoten in eine Netzliste umwandelt. 11 veranschaulicht einen Vorgang des Umwandelns einer Hardwarebeschreibung eines Knotens, wobei die Hardwarebeschreibung einen Bezug auf einen Funktionsblock enthält und Knotenparameter aufweisen kann. Es sei bemerkt, daß wenn die Hardwarebeschreibung eines Knotens eine Beschreibung der tatsächlichen Register, Gatter usw. enthält, welche die Funktionsweise des Knotens ausführen, die Umwandlung dieser Hardwarebeschreibung in eine Netzliste einfach unter Verwendung beliebiger von verschiedenen Typen von Synthesewerkzeugen ausgeführt wird.
  • Wie dargestellt ist, untersucht das Verfahren in Schritt 502 den Funktionsblockbezug und jegliche Knotenparameter, die in der Hardwarebeschreibung vorhanden sind. In Schritt 504 wählt das Verfahren den in Bezug genommenen vorübersetzten Funktionsblock aus der Bibliothek 308 aus, die im wesentlichen eine den Funktionsblock beschreibende Netzliste enthält. In Schritt 506 konfiguriert das Verfahren dann die Netzliste des vorübersetzten Funktionsblocks mit allen in Schritt 502 bestimmten Parametern. In Schritt 508 fügt das Verfahren dann den konfigurierten vorübersetzten Funktionsblock in die gerade zusammengestellte Netzliste ein.
  • 12 – Umwandeln eines Strukturknotens in eine Hardwarebeschreibung
  • 12 zeigt ein Flußdiagramm, in dem die Funktionsweise des Flußdiagramms aus 11 dargestellt ist, wobei das Verfahren die Hardwarebeschreibung für einen Strukturknoten in eine Netzliste umwandelt. 12 zeigt einen Vorgang des Umwandelns einer Hardwarebeschreibung eines Strukturknotens, wobei die Hardwarebeschreibung einen Bezug auf einen Funktionsblock des Strukturknotens aufweist und Strukturknotenparameter enthält.
  • Wie dargestellt ist, untersucht das Verfahren in Schritt 502A den Funktionsblockbezug und die Strukturknotenparameter, die in der Hardwarebeschreibung vorhanden sind. Die Strukturknotenparameter können Parameter, wie die Iterationsanzahl, die Schleifenbedingung, die Periode, die Phasenverzögerung usw., einschließen. In Schritt 504A wählt das Verfahren den in Bezug genommenen vorübersetzten Funktionsblock aus der Bibliothek 308 aus, wobei es sich im wesentlichen um eine Netzliste handelt, die den Funktionsblock des Strukturknotens beschreibt. In Schritt 506A konfiguriert das Verfahren dann die Netzliste des vorübersetzten Funktionsblocks mit den in Schritt 502A bestimmten Strukturknotenparametern. Dies umfaßt das Festlegen der Periode und der Phasenverzögerung der Ausführung des Strukturknotens sowie irgendwelche andere Parameter, wie die Iterationsanzahl, die Schleifenbedingung usw. In Schritt 508A fügt das Verfahren dann den konfigurierten vorübersetzten Funktionsblock in die gerade zusammengestellte Netzliste ein.
  • 13 – Funktionsblock für einen Strukturknoten
  • 13 zeigt ein Blockdiagramm, das einen While-Schleifen-Funktionsblock zeigt. Wie dargestellt ist, weist der While-Schleifen-Funktionsblock Freigabeperioden- und Phaseneingänge sowie einen Schleifensteuereingang auf. Der While-Schleifen-Funktionsblock liefert eine Indexausgabe, die einem Addierer zugeführt wird. Der Addierer wird jedesmal dann inkrementiert, wenn die zum Überwachen der Anzahl der Ausführungen der While-Schleife bereitgestellten Indexsignale auftreten. Die While-Schleife gibt weiterhin Lösch- und Ausgangsfreigabesignale aus, um das Programm innerhalb der While-Schleife zu steuern, und sie empfängt weiterhin eine Schleifenabschlußsignal-Eingabe, die verwendet wird, um anzugeben, ob die Schleife abgeschlossen wurde.
  • 14 – Funktionsweise des Strukturknoten-Funktionsblocks
  • 14 zeigt ein Zustandsdiagramm, in dem die Funktionsweise des in 13 dargestellten While-Schleifen-Funktionsblocks dargestellt ist. Wie ersichtlich ist, geht eine Diagrammstartoperation dem Zustand A vorher. Wenn Phase-Abgeschlossen wahr ist, was darauf hinweist, daß die Phase abgeschlossen wurde, setzt die Zustandsmaschine mit Zustand B fort. Die Zustandsmaschine bleibt in Zustand B, bis das Schleifenfreigabesignal wahr ist, wodurch angegeben wird, daß die Schleife zum Beginnen mit der Ausführung freigegeben wurde. Wenn das Schleifenfreigabesignal aktiviert wird, geht die Zustandsmaschine von Zustand B zu Zustand C. In Schritt C wird das Ausgangslöschsignal aktiviert, wodurch der Schleifenausgang gelöscht wird, bevor die Schleife ausgeführt wird.
  • Die Zustandsmaschine geht dann von Zustand C zu Zustand D. In Zustand D wird die Berechnung ausgeführt, und es wird das Ausgangsfreigabe-Setzsignal aktiviert. Falls die Periode abgeschlossen ist und die Schleife noch nicht beendet wurde, was durch die Gleichung:
    Periode abgeschlossen und/Schleife abgeschlossen
    angegeben wird, geht die Zustandsmaschine in einen Fehlerzustand über, und die Operation wird abgeschlossen. Demgemäß war die für die Ausführung der Schleife festgelegte Periode nicht lang genug, um den Abschluß der Schleife zu ermöglichen. Mit anderen Worten benötigte die Schleife zum Abschluß mehr Zeit als die zur Ausführung der Schleife festgelegte Periode.
  • Die Zustandsmaschine geht von Zustand D zu Zustand E, wenn das Schleifenabschlußsignal vor dem Aktivieren des Periodenabschlußsignals aktiviert wird, wodurch angegeben wird, daß die Schleife vor Ablauf der für die Schleifenausführung zugeordneten Periode abgeschlossen wurde.
  • Die Zustandsmaschine geht dann, wie dargestellt, von Zustand E in einen Wartezustand über. Falls die Periode abgeschlossen ist und die Schleife nicht erneut freigegeben wird, was durch die Bedingung:
    Periode abgeschlossen und/Schleife aktiviert
    angegeben wird, geht die Zustandsmaschine vom Wartezustand zum Abschlußzustand. Falls die Periode abgeschlossen wurde und die Schleife noch freigegeben ist, wodurch angegeben wird, daß eine weitere Ausführung der Schleife erforderlich ist, geht die Zustandsmaschine vom Wartezustand zum C-Zustand zurück. Demgemäß schreitet die Zustandsmaschine über die Zustände C, D, E und Warten fort, um Schleifenoperationen auszuführen.
  • Herunterladen einer Hardwareimplementierung in die programmierbare Logik
  • Es gibt verschiedene Möglichkeiten oder Verfahren zum Herunterladen einer Hardwareimplementation in die programmierbare Logik. In einem Fall lädt die Haupt-CPU lediglich die Konfiguration in die programmierbare Logik herunter, wie vorstehend beschrieben wurde. Dies könnte durch den Treiber zur Urladezeit geschehen oder dann geschehen, wenn der Benutzer die Ausführungstaste in dem erzeugten graphischen Programm drückt. Alternativ führt die Haupt-CPU die Hardwareimplementierung einem auf der Platine vorhandenen nichtflüchtigen Speicher zu und wird diese Hardwareimplementation während des Urladens der Platine aus dem nichtflüchtigen Speicher auf der Platine in die programmierbare Logik geladen.
  • Demgemäß kann die umkonfigurierbare Platine so ausgelegt werden, daß das Hardwarediagramm in den nichtflüchtigen Speicher statt direkt in das FPGA geschrieben wird. Dies ermöglicht es, daß eine Hardwareimplementation eines Diagramms die Ausführung beim Einschalten der Leistung beginnt (lange bevor das Urladen des Betriebssystems beendet wurde). In diesem Fall weist das Diagramm vorzugsweise Eingangsfreigabe- und Abbrechsignale der höchsten Ebene auf, die während der Übersetzungszeit so konfiguriert werden können, daß entweder die sofortige Ausführung ermöglicht wird oder daß ein Überwachungsprogramm zum Ermöglichen der Hardwareausführung erforderlich ist.
  • Standardkonfiguration für die Hardwaresimulation
  • Wie vorstehend erörtert wurde, weist das System gemäß der bevorzugten Ausführungsform ein Computersystem auf, das eine Zusatzkarte enthält. Die Zusatzkarte führt vorzugsweise eine Datenerfassungs-/Erzeugungsfunktion aus, und sie ist beispielsweise eine Datenerfassungskarte. Die DAQ-Karte weist D/A- und A/D-Wandler sowie verschiedene andere Datenerfassungslogiken auf, und sie weist eine programmierbare Logikvorrichtung, wie bspw. ein FPGA, auf, die eine ansprechend auf ein auf dem Computersystem erzeugtes graphisches Programm erzeugte Hardwareimplementation empfangen kann.
  • Bei einer Ausführungsform empfängt die programmierbare Logik oder FPGA eine Standardkonfiguration, wobei die Standardkonfiguration die Datenerfassungsplatine mit einer Standardschnittstelle zur Ausführung des graphischen Programms in Software konfiguriert. Demgemäß kann die Haupt-CPU beispielsweise eine Hardwareimplementation in die FPGA herunterladen, wodurch die FPGA mit einer Standardkonfiguration einer Platine programmiert wird, um eine gewünschte Schnittstelle für die Platine bereitzustellen.
  • Diese Konfiguration bietet dem Hauptcomputer einen direkten Zugriff auf die Ein-/Ausgabe der Platine. Dies ist beispielsweise bei der Hardwaresimulation nützlich, um es der Haupt-CPU zu ermöglichen, das graphische Programm oder Diagramm während der Algorithmusentwicklung in Software auszuführen, um die Machbarkeit zu bestimmen und eine Fehlersuche und dergleichen auszuführen. Das graphische Programm verhält sich ebenso wie dies normalerweise in Hardware der Fall wäre, abgesehen davon, daß das Programm durch die Softwareausführung langsamer läuft. Es sind jedoch im graphischen Programmiersystem Software-Fehlersuchwerkzeuge verfügbar, um die Fehlersuche in dem Programm zu erleichtern. Diese Implementation bietet auch eine kürzere Übersetzungszeit, wodurch eine schnellere Ausführungsform für Benutzerfehlerreparaturen ermöglicht wird. Es wird demgemäß erwartet, daß der Benutzer eine Standardkonfiguration für die programmierbare Logik herunterlädt und das in Software erzeugte graphische Programm ein oder mehrere Male ausführt, um die Fehlersuche zu erleichtern. Sobald das graphische Programm mit einer zufriedenstellenden Funktionsweise konstruiert worden ist, kann der Benutzer die eigentliche Hardwareimplementation des graphischen Programms in die programmierbare Logik herunterladen, wie vorstehend beschrieben wurde.
  • Wie vorstehend erörtert wurde, gibt es verschiedene Möglichkeiten oder Verfahren für das Herunterladen einer Standardkonfiguration in die programmierbare Logik. In einem Fall lädt die Haupt-CPU lediglich die Konfiguration in die programmierbare Logik herunter, wie vorstehend beschrieben wurde. Dies könnte durch den Treiber zu der Urladezeit geschehen oder dann geschehen, wenn der Benutzer die Ausführungstaste an dem erzeugten graphischen Programm drückt. Alternativ liefert die Haupt-CPU die Standardkonfiguration einem auf der Platine vorhandenen nichtflüchtigen Speicher, und diese Standardkonfiguration wird während des Urladens der Platine vom nichtflüchtigen Speicher auf der Platine in die programmierbare Logik geladen.
  • Abschätzung der Größe und der Kosten einer Hardwareimplementierung
  • Bei einer Ausführungsform weist das graphische Programm eine Datenstruktur auf, die eine Liste aller in der Komponentenbibliothek enthaltenen Elemente oder Komponenten sowie die Kosten jeder Komponente in bezug auf die Gatter und die Ausführungszeit aufweist. Wenn daher gemäß dieser Ausführungsform ein graphisches Programm erzeugt wird, referenziert das graphische Programmiersystem die Datenstruktur, um die zugeordneten Gatter- und Zeitkosten zu erhalten, die jeder Komponente zugeordnet sind, die von der Komponentenbibliothek in dem erzeugten graphischen Programm verwendet wird. Beispielsweise gibt das graphische Programmiersystem die Gesamtzahl der in bezug auf jede in dem erzeugten graphischen Programm verwendete Komponente an und stellt dann fest, ob die programmierbare Logik oder FPGA, die verwendet wird, eine ausreichende Kapazität zum Implementieren dieses graphischen Programms aufweist. Weiterhin kann das graphische Programmiersystem diese Datenstruktur verwenden, um während oder vor der Übersetzungszeit zu bestimmen, wie schnell das graphische Programm in der Hardware ausgeführt wird, also wie schnell die Hardwareimplementation in der FPGA ausgeführt werden wird.
  • Alternativ empfängt das graphische Programmiersystem eine Benutzereingabe in bezug auf die gewünschte Ausführungszeit und verwendet die Ausführungszeiten von jedem der Elemente, um dem Benutzer eine Rückmeldung dazu zu geben, ob das graphische Programm die Benutzeranforderungen in bezug auf die Ausführungszeit erfüllt.
  • Zusätzlich weist die Komponentenbibliothek gemäß einer Ausführungsform mehrere Versionen jeweiliger Komponenten auf. Beispielsweise weist die Komponentenbibliothek einen schnellen Multiplizierer, der groß ist, und einen kleinen Multiplizierer, der langsam ist, auf. Das graphische Programmiersystem kann so konfiguriert werden, daß es die geeignete Komponentenversion auf der Grundlage davon auswählt, in welchem Maße die FPGA von dem restlichen Diagramm belegt wird, und daß es die geeignete Komponentenversion auf der Grundlage der im Diagramm angegebenen Schleifenzeiten oder einer anderen Eingabe vom Benutzer und/oder Informationen im Diagramm auswählt. Der Benutzer gibt daher bei einer Ausführungsform sowohl die Anzahl der in der verwendeten programmierbaren Logik enthaltenen Gatter als auch die gewünschte Ausführungszeit an, und das graphische Programmiersystem wählt automatisch zwischen verschiedenen Komponentenversionen in der Komponentenbibliothek, beispielsweise zwischen einem langsameren und weniger komplexen Addierer und einem schnelleren, jedoch komplexeren Addierer, aus, um eine Hardwareimplementierung zu entwickeln, die für die Anwendung des Benutzers geeignet ist.
  • Manipulation nicht wiederverwendbarer Hardwarebetriebsmittel
  • Wenn ein Benutzer ein graphisches Programm erzeugt, das ein oder mehrere Hardwarebetriebsmittel manipuliert, wobei es sich beispielsweise um ein oder mehrere Hardwarebetriebsmittel handelt, die auf einer Zusatzkarte, beispielsweise einer Datenerfassungskarte, vorhanden sind, weist die Hardwarevorrichtung oder die Platine im allgemeinen eine begrenzte Anzahl von Hardwareelementen auf, die von dem graphischen Programm verwendbar sind. Beispielsweise kann eine gegebene Datenerfassungsplatine nur einen analogen Eingangskanal aufweisen. Zumindest ein Teilsatz dieser Hardwareelemente kann nur einmal verwendet werden, so daß sie nicht wiederverwendbar sind.
  • Bei einer Ausführungsform der Erfindung erscheinen die in der gesteuerten Hardware vorhandenen nicht wiederverwendbaren Komponenten während der Konfiguration oder Konstruktion des graphischen Programms auf einer Palette. Diese nicht wiederverwendbaren Komponenten verschwinden, wenn sie vom Programm verwendet werden, um dem Benutzer anzugeben, daß diese Komponenten verwendet wurden und demgemäß nicht wiederverwendet werden können. Bei einer Ausführungsform zieht der Benutzer diese nicht wiederverwendbaren Komponenten einfach von der Palette in das graphische Programm. Sobald diese Komponenten von der Palette in das graphische Programm gezogen worden sind, verschwindet die Komponente von der Palette und der Benutzer weiß demgemäß, daß die Komponente in dem graphischen Programm verwendet worden ist und daher nicht zur Wiederverwendung verfügbar ist.
  • Wenn zwei oder mehr verwendbare Hardwareelemente auf der Platine vorhanden sind, erscheinen in der Palette zwei oder mehr Komponenten. Weil in diesem Fall jede Komponente in dem graphischen Programm verwendet wird, verschwindet das entsprechende Bild in der Palette, um dem Benutzer die Anzahl der verbleibenden Hardwarekomponenten mitzuteilen, die verwendet werden können. Hierdurch wird ein zweckmäßiger Mechanismus bereitgestellt, um dem Benutzer Informationen in bezug auf die verwendeten Hardwarekomponenten bereitzustellen, und es wird dadurch die Wiederverwendung nicht wiederverwendbarer Komponenten verhindert.
  • Es ist bei manchen graphischen Programmen häufig zweckmäßig, daß ein einziges graphisches Programm auf ein einziges Hardwareelement von mehreren Stellen in dem graphischen Programm oder Diagramm zugreift. Hierdurch wird technisch das vorstehend erörterte Konzept einer einzigen Ausprägung oder einer nicht Wiederverwendbarkeit verletzt, wonach eine nicht wiederverwendbare Komponente nur einmal in einem graphischen Programm verwendet werden kann. Wenn der Benutzer jedoch den Zugriff auf ein einziges nicht wiederverwendbares Hardwareelement an mehreren Stellen in einem einzigen graphischen Programm wünscht, konstruiert der Benutzer vorzugsweise eine Ablaufsteuerung oder implementiert eine Ablaufsteuerung in dem graphischen Programm, wodurch verhindert wird, daß dieses Hardwareelement innerhalb desselben graphischen Programms gleichzeitig verwendet wird. Beim LabVIEW-Programm konstruiert der Benutzer die Ablaufsteuerung beispielsweise unter Verwendung einer Sequenzstruktur. Bei einer Ausführungsform bilden Bezüge auf Hardwareelemente in dem graphischen Programm eine "Handle" für die Hardware, die dem graphischen Programm zugeführt wird und die darin an mehreren Stellen verwendet werden kann. Dieser Bezug oder diese "Handle" für die Hardware kann dann verwendet werden, um gleichzeitige Zugriffe auf eine einzige Vorrichtung in dem graphischen Programm bereitzustellen.
  • Es gibt im allgemeinen drei verschiedene Arten, in denen ein graphisches Programm oder Diagramm aufgebaut werden kann, um auf eindeutige Hardwarebetriebsmittel zuzugreifen. In einem ersten Fall (a) erscheint ein einziger Bezug auf die Hardware in dem Diagramm, wie vorstehend erörtert wurde. In einem zweiten Fall (b) erscheinen mehrere Bezüge auf die Hardware in dem graphischen Programm, es treten jedoch keine zwei dieser Bezüge gleichzeitig auf. Beispielsweise kann der Benutzer diese mehreren Bezüge in verschiedenen Rahmen einer Sequenzstruktur einrichten. In einem dritten Fall (c) weist das graphische Programm mehrere Bezüge auf die Hardware auf, und die Art, in der das graphische Programm aufgebaut wird, gibt an, daß diese mehreren Bezüge gleichzeitig ausgeführt werden können.
  • Bei der bevorzugten Ausführungsform erkennt das graphische Programmiersystem vorzugsweise, welcher der erwähnten Fälle auftritt und führt jeden erforderlichen Konfigurationstyp aus, um diesen Situationen Rechnung zu tragen. In dem ersten Fall (a) erscheint eine einzige Referenz auf die Hardware in dem graphischen Programm, so daß das graphische Programmiersystem beim Erzeugen der Hardwareimplementation keine spezielle Verarbeitung ausführen muß. In dem vorstehend erwähnten zweiten Fall (b) verwendet das graphische Programm, wenn die Sequenzstruktur in eine Hardwareimplementation umgewandelt wird, Multiplexer zum Multiplexieren der Steuer- und Dateneingaben in die fragliche Hardware mit denselben Signalen, um zu garantieren, daß gleichzeitige Zugriffe unmöglich sind, wie durch die Sequenzstruktur angegeben wird. In dem vorstehenden Fall (c) erkennt das graphische Programmiersystem vorzugsweise automatisch einen Fall, in dem mehrere Bezüge in der Hardware auftreten, in der sie gleichzeitig ausgeführt werden können, und er konfiguriert die Hardwareimplementation so, daß diese Mehrfachzugriffe verhindert werden und verhindert dadurch einen möglichen fehlerhaften Betrieb. In diesem Fall erkennt das graphische Programmiersystem während des Umwandlungsprozesses in die Hardwareimplementierung die mehreren Bezüge auf die Hardware, die gleichzeitig ausgeführt werden können und instantiiert einen oder mehrere Multiplexer und eine vollständige Entscheidungsschaltung zum Steuern der Multiplexer. Die Multiplexer sind in der Hardwareimplementierung bereitgestellt, um die Möglichkeit einer gleichzeitigen Ausführung dieser mehreren Bezüge auf die nicht wiederverwendbare Hardware auszuschließen.
  • In den Fällen (b) und (c) verwenden die Hardwareimplementierungen ähnliche Multiplexer. Der Unterschied zwischen den Fällen (b) und (c) besteht darin, daß im Fall (c) die Hardwareimplementation eine Steuerschaltung aufweist. Im Fall (b) sind die Steuersignale die gleichen Steuersignale, die steuern, welcher Rahmen der Sequenz ausgeführt wird, und in (c) kommen die Steuersignale von einer Entscheidungsschaltung. Weiterhin werden in Punkt (b) die Multiplexer, die die Sequenzstruktur konfigurieren und implementieren, zur Übersetzungszeit festgelegt oder definiert. Alternativ wird im Fall (c) die Entscheidungsschaltung zur Übersetzungszeit nicht notwendigerweise bis zur Reihenfolgebildung definiert, sondern die Ausführungsreihenfolge wird tatsächlich zur Ausführungszeit definiert.
  • Sondeneinführung
  • Gemäß einer Ausführungsform kann ein Benutzer während der Erzeugung des graphischen Programms eine oder mehrere Sonden in das graphische Programm einfügen, die Daten an dem jeweiligen Draht anzeigen, an dem sich die Sonde während der Ausführung des graphischen Programms befindet. Wenn der Benutzer eine Sonde an einer oder mehreren Stellen in dem graphischen Programm einfügt, weist die entsprechende Hardwareimplementierung die Verwendung einer Zeitmarken-Erzeugungsschaltung an. Die Zeitmarken-Erzeugungsschaltung kann innerhalb der programmierbaren Logik oder FPGA enthalten sein, oder die Zeitmarken-Erzeugungsschaltung ist in einem getrennten Chip oder Logikblock konfiguriert, der auf der Platine vorhanden ist, die mit der FPGA gekoppelt ist. Diese Zeitmarken-Erzeugungsschaltung ermöglicht es dem graphischen Programmiersystem, Sonden in die Hardwareimplementation des graphischen Programms oder Diagramms einzufügen. Die Zeitmarken-Erzeugungsschaltung weist demgemäß eine Hardwareimplementierung der Sonde auf, die in das graphische Softwareprogramm eingefügt wurde. Hierdurch wird ermöglicht, daß die Hardware-Fehlersuchumgebung ebenso aussieht und verwendbar ist wie in dem graphischen Programmiersystem.
  • Datenwegoptimierung
  • Bei einer Ausführungsform ist das graphische Programmiersystem in der Lage, graphische Programme oder Diagramme zu erkennen, die dem Hauptcomputer Daten zuführen oder die Daten von dem Hauptcomputer zuführen, und das graphische Programmiersystem fügt spezielle Schaltungen in die Hardwareimplementation ein, um DMA für schnelle Übertragungen zu handhaben, ohne daß spezielle Überlegungen vom Benutzer erforderlich sind. Diese Schaltungen enthalten FIFOs und Schaltungen zum Erzeugen von DMA-Anforderungen (DRQ) oder Entsprechungen.
  • Dieses Verfahren ermöglicht es, daß das graphische Programmiersystem automatisch eine DMA-Schaltung für das graphische Programm oder Diagramm, das vom Benutzer erzeugt wurde, hervorbringt. Im üblichen Fall läuft die gesamte Kommunikation von der CPU zum graphischen Programm oder Diagramm durch globale Variablen ab. Gemäß dieser Ausführungsform weist das Diagramm ein Bildzeichen auf, das in dem Sinne ähnlich einer "globalen Schreibanweisung" aussieht, daß es sich dabei um eine Datensenke handelt, und wenn das Bildzeichen ausgeführt wird, aktiviert das Bildzeichen eine DMA-Anforderung (DRQ), die zur DMA-Steuerung zurückläuft und eine DMA-Übertragung auslöst. Die FIFO- und DRQ-Erzeugungsschaltungsanordnungen werden innerhalb der FPGA aufgebaut, wenn das DMA-Bildzeichen verwendet wird.
  • Ereignisse
  • Das graphische Programmiersystem LabVIEW weist eine Ereignisfähigkeit auf, die es einer ersten Funktion ermöglicht "schlafen zu gehen", während darauf gewartet wird, daß eine zweite Funktion ein Ergebnis erzeugt. Auf diese Weise verbraucht die erste Funktion keine CPU-Zeit, während auf die zweite Funktion gewartet wird. Es sind drei Bildzeichen mit einer zugeordneten Steuersoftware bereitgestellt, die die Ereignisfunktion implementiert. Ein Warten-auf-Ereignis-Funktionsbildzeichen wird der ersten Funktion zugeordnet, die auf das Ergebnis der zweiten Funktion wartet. Ein Festlegen-von-Ereignis-Funktionsbildzeichen wird typischerweise dem zweiten Funktionsbildzeichen zugeordnet, und es löst ein Ereignis aus, wenn die zweite Funktion das gewünschte Ereignis erzeugt. Ein Erzeugen-von-Ereignis-Funktionsbildzeichen wird verwendet, um Bezeichnerwerte zu übergeben, die mehrere Quellen und Ziele mit Festlegen-von-Ereignis-Funktionsbildzeichen bzw. Warten-auf-Ereignis-Funktionsbildzeichen verknüpfen.
  • Ereignisse weisen in der Hinsicht einige der Eigenschaften globaler Variablen auf, daß ihre Implementation in hohem Maße davon abhängt, ob sie innerhalb einer einzigen Umgebung "geschrieben" und "gelesen" werden (vollständig in Software, vollständig in Hardware oder unter Kreuzen der Grenze zwischen Software und Hardware). Ein Ereignis, das innerhalb der Hardware festgelegt und erkannt wird, betrifft Festlege- und Erkennungs-Ereigniskomponenten aus der Bibliothek. Ein Ereignis, das in der Hardware festgelegt ist und von der Haupt-CPU erkannt wird, kann automatisch einer Unterbrechung zugeordnet werden. Das graphische Programmiersystem, beispielsweise LabVIEW, würde dann den Unterbrechungsbehandlungscode erzeugen, der auf dem Hauptcomputer auszuführen ist.
  • Automatische Erzeugung der Programmierschnittstelle
  • Bei einer Ausführungsform kann die von dem graphischen Programmiersystem erzeugte Hardwareimplementation konfiguriert werden, um von anderen Softwareumgebungen oder anderen Protokollen, beispielsweise C, C++, Java, Visual Basic, Visual C++, LabWindows CVI, anderen Typen graphischer Programmiersysteme usw. gesteuert zu werden. Bei dieser Ausführungsform kann das graphische Programmiersystem automatisch eine Beschreibung der erforderlichen Hardware erzeugen, die eine Registerzuordnung, eine Unterbrechungszuordnung, DMA-Fähigkeiten usw. einschließt, um es anderen Softwareumgebungen zu ermöglichen, die Hardwareimplementation zu steuern. Beispielsweise wird bei der bevorzugten Ausführungsform, bei der das graphische Programmiersystem LabVIEW von National Instruments Corporation verwendet wird, das in LabVIEW erzeugte graphische Programm in eine Hardwareimplementation umgewandelt, wobei die Hardwareimplementation auch die vorstehenden Hardwareinformationen einschließt, die erforderlich sind, um es einer anderen Softwareentwicklungsumgebung zu ermöglichen, die Hardwareimplementation zu steuern oder auszuführen.
  • Kompensieren für schlechte Anordnungs- und Wegleitergebnisse
  • Wie vorstehend erörtert wurde, verwenden die Ausführungsformen vorzugsweise ein Werkzeug einer dritten Partei, das die von dem graphischen Programm erzeugte Netzliste in eine Hardwareimplementation oder FPGA-Konfiguration umwandelt. Falls bei einer Ausführungsform dieses Werkzeug einer dritten Partei berichtet, daß die maximale Taktgeschwindigkeit geringer als von dem graphischen Programmiersystem erwartet ist, kann das graphische Programmiersystem die Taktgeschwindigkeit wahlweise verringern und einen oder mehrere Zählerwerte und Zeitgeber einstellen, um eine Kompensation für diese neue Taktgeschwindigkeit vorzunehmen. Dies wird vorzugsweise in Fällen ausgeführt, in denen Gesamt-Funktionsweiseziele noch erfüllt sind.
  • Dies kann beispielsweise in Fällen erforderlich sein, in denen der Benutzer den Zeitablauf innerhalb der graphischen Programmierung unter der Annahme einer bestimmten Taktgeschwindigkeit konfiguriert hat, wobei er beispielsweise eine Zeitsteuerungsschleife einsetzt, bei der ein 20-MHz-Takt angenommen wird, und wobei die Schleife auf der Grundlage dieses 20-MHz-Takts eingerichtet ist, wobei ein Schleifendurchlauf in zwei Millisekunden erfolgt. In Fällen, in denen die Taktgeschwindigkeit geringer als erwartet ist, kann die Hardwareimplementation infolge dieser verschiedenen Taktgeschwindigkeit tatsächlich anders arbeiten als von dem Benutzer erwartet. In diesem Fall kann das graphische Programmiersystem die Taktgeschwindigkeit automatisch verringern und die Zählerwerte und die jeweiligen Zeitgeber einstellen, um diese neue Takageschwindigkeit zu kompensieren und dem Benutzer dadurch die Leistungsfähigkeit bereitzustellen, die er erwartet hat, als er das graphische Programm erzeugt hat. Diese Ausführungsform verwendet einen konfigurierbaren Oszillator auf der Datenerfassungsplatine.
  • 15 – einfaches graphisches Programmbeispiel
  • 15 zeigt ein einfaches Beispiel eines graphischen Programms. In 15 weist das graphische Programm drei Eingabeterminals und ein Ausgabeterminal auf. Das graphische Programm enthält einfach einen ersten Addier-Funktionsknoten mit 2 Eingängen, der eine Eingabe von zwei Eingabeterminals empfängt, und einen zweiten Addier-Funktionsknoten mit 2 Eingängen, der die Ausgabe vom ersten Addier-Funktionsknoten empfängt und eine Ausgabe vom dritten Eingabeterminal empfängt. Der zweite Addier-Funktionsknoten mit 2 Eingängen führt dem Ausgabeterminal wie dargestellt eine Ausgabe zu.
  • 16 – Hardwareergebnis
  • 16 zeigt ein Konzeptdiagramm der Hardware, die sich ergibt, nachdem das graphische Programmbeispiel aus 15 in eine Hardwarebeschreibung umgewandelt wurde. Wie dargestellt ist, enthält das Hardwarediagramm drei Schreibregister 522526, die jeweils den drei Eingabeterminals entsprechen. Die Datenausgaben der ersten zwei Schreibregister 522 und 524 werden einem ersten Addierer 532 mit zwei Eingängen als Eingaben zugeführt, wobei der Addierer 532 dem ersten Addierer im Blockdiagramm aus 15 entspricht. Die Hardwarebeschreibung beinhaltet auch das Erzeugen eines UND-Gatters 534, das Steuerausgaben von jedem von den ersten zwei Schreibregistern 522 und 524 empfängt und dem Steuereingang des Addierers 532 eine einzige Ausgabe zuführt. Der Zweck des UND-Gatters 534 besteht darin, den Addierer 542 am Ausführen zu hindern, bis beide Eingaben empfangen worden sind.
  • Der Addierer 532 führt einem zweiten Addierer 542 mit zwei Eingängen eine Datenausgabe zu, wobei der Addierer 542 dem zweiten Addierer im Blockdiagramm aus 15 entspricht. Der erste Addierer 532 erzeugt auch ein Ausgangsfreigabesignal, das einem Eingang eines zweiten UND-Gatters 536 zugeführt wird. Der andere Eingang des UND-Gatters 536 empfängt eine Ausgabe von dem dritten Schreibregister 526, das dem dritten Eingabeterminal entspricht. Das UND-Gatter 536 führt einem Steuereingang des zweiten Addierers 542 eine Ausgabe zu. Demgemäß gewährleistet das UND-Gatter 536, daß der zweite Addierer 542 nicht ausführt, bevor alle Eingaben von dem Addierer 542 empfangen worden sind. Der zweite Addierer 542 führt einem dem Ausgabeterminal zugeordneten Leseregister 546 eine Datenausgabe zu. Der zweite Addierer 542 führt dem Leseregister 546 auch ein Ausgangsfreigabesignal zu, das dem Leseregister 546 mitteilt, wenn gültige Daten bereitgestellt worden sind.
  • Demgemäß wird, wie dargestellt, zum Erzeugen einer Hardwarebeschreibung für jedes der Eingabeterminals das Flußdiagramm aus 6 ausgeführt, das eine Hardwarebeschreibung der Schreibregister 522, 524 und 526 erzeugt, die jeweils Daten- und Steuerausgänge aufweisen. Für jeden Addierer-Funktionsknoten wird das Flußdiagramm aus 7 ausgeführt, wobei eine Hardwarebeschreibung eines Addierers 532 oder 542 erzeugt wird und weiterhin ein zugeordnetes UND-Gatter 534 oder 536 mit N Eingängen erzeugt wird, dessen Eingänge mit den abhängigen Eingängen des Addierer-Funktionsknotens verbunden sind, um die Ausführung zur richtigen Zeit zu gewährleisten. Schließlich wird das Flußdiagramm aus 8 für das Ausgabeterminal des graphischen Programms ausgeführt, das eine Hardwarebeschreibung eines Leseregisters mit Daten- und Steuereingängen erzeugt.
  • 1719: Beispiel der Umwandlung eines graphischen Programms in eine Hardwareimplementierung
  • 1719 betreffen ein detaillierteres Beispiel zur Erläuterung der Funktionsweise der bevorzugten Ausführungsformen.
  • 17 zeigt ein als Beispiel dienendes graphisches Programm (ein LabVIEW-Diagramm), das unter Verwendung der vorliegenden Erfindung in eine FPGA-Implementation umgewandelt wird. Wie dargestellt ist, weist das graphische Programm mehrere in einer While-Schleife enthaltene verbundene Knoten auf. Wie dargestellt ist, weist die While-Schleife Schieberegister-Bildzeichen auf, die durch die abwärts und aufwärts gerichteten Pfeile am linken bzw. am rechten Rand der While-Schleife dargestellt sind. Eine 0-Konstante, die sich außerhalb der While-Schleife befindet, ist mit dem abwärts gerichteten Pfeil des Schieberegisters an dem linken Rand der While-Schleife verbunden.
  • Die While-Schleife weist ein Zeitgeber-Bildzeichen auf, das die Zeitsteuerung für die While-Schleife darstellt oder bedeutet. Das Zeitgeber-Bildzeichen weist Eingänge für die Periode und die Phase auf. Wie dargestellt ist, empfängt das Zeitgeber-Bildzeichen eine Konstante 1000 für die Periode und eine Konstante 0 für die Phase. Bei einer alternativen Ausführungsform weist die While-Schleife Eingabeterminals auf, die zum Empfangen von Zeitinformationen, wie Periode und Phase, konfiguriert sind.
  • 18 zeigt die ansprechend auf das Diagramm oder graphische Programm aus 17 erzeugten oder diese darstellenden LabVIEW-Datenstrukturen. Das Datenstrukturdiagramm aus 17 enthält eine Hierarchie von Datenstrukturen entsprechend dem Diagramm aus 17. Wie dargestellt, weist die LabVIEW-Datenstrukturdarstellung ein Diagramm höchster Ebene auf, das ein einziges Signal enthält, das die 0-Konstante mit dem linken Schieberegister der While-Schleife verbindet. Demgemäß enthält das Diagramm höchster Ebene nur die Konstante (0) und die While-Schleife.
  • Die While-Schleife weist ein Unterdiagramm auf, das weiterhin linke und rechte Schieberegisterterme, das Continue-Hinweiszeichen der While-Schleife, eine Anzahl von Konstanten, einen Zeitgeber mit einem Perioden- und einem Phaseneingang, Setzpunkte und Verstärkungen globaler Variablen, Unter-VI-A/D-Lese- und D/A-Schreib-Signale und verschiedene Funktionsbildzeichen, beispielsweise Skalieren, Addieren, Subtrahieren und Multiplizieren, enthält. Weiterhin weist jedes der Objekte in dem Diagramm Terminals auf, und Signale verbinden zwischen diesen Terminals.
  • 19 zeigt einen Schaltplan, der die ansprechend auf die Datenstrukturen aus 18 erzeugte Hardwarebeschreibung darstellt. Der Schaltplan aus 19 implementiert das graphische Programm aus 17. Wie dargestellt ist, sind die CPU-Schnittstellensignale über Busse mit den globalen Variablen verknüpft. Wenngleich dies in 19 nicht dargestellt ist, werden die CPU-Schnittstellensignale auch den Unter-VIs-A/D-Lese- und D/A-Schreibeinheiten zugeführt.
  • Die While-Schleife ist im wesentlichen zu einer Steuerschaltung abstrahiert, die die Periode und die Phase empfängt, und sie weist eine externe Freigabe auf, welche die Ausführung des Diagramms höchster Ebene vorschreibt, wodurch die Schleife eingeleitet wird. Die Schleife liefert dann ein Diagrammfreigabesignal (diag_enab), um die Schleife einzuleiten und wartet auf ein Diagramm-Abgeschlossen-Signal (diag_done), wodurch der Abschluß der Schleife oder das Verstreichen der Periode angegeben wird. Auf der Grundlage des Werts des Continue-Hinweiszeichens liefert die Schleife ein nachfolgendes diag_enab-Signal oder stellt fest, daß die Schleife beendet wurde und liefert dem Diagramm höchster Ebene ein Abschlußsignal. Wenngleich dies in 19 nicht dargestellt ist, liefert der Schleifensteuerblock auch ein Diagrammlöschfreigabe-Ausgangssignal (diag_clear_enab_out) für jeden Knoten in dem Unterdiagramm der While-Schleife. Demgemäß gibt der Schleifensteuerblock ein Diagrammfreigabesignal (diag_enab) aus, das allen Anfangsknoten in dem Diagramm zugeführt wird, die sich innerhalb der While-Schleife befinden. Die Abschlußsignale (Done-Signale) von diesen Bildzeichen werden einem UND-Gatter zugeführt, dessen Ausgabe bereitgestellt wird, um nachfolgende Knoten freizugeben.
  • Das Schieberegister weist einen Dateneingang, einen Datenausgang und einen Freigabeeingang, der die Daten getaktet in den Datenausgang (dout) eingibt (din), und einen Ladeeingang, der den Anfangswert getaktet in das Schieberegister eingibt, auf.
  • Nachstehend wird eine VHDL-Beschreibung gegeben, die dem Beispiel aus den 1719 entspricht, wobei die VHDL-Beschreibung unter Verwendung der bevorzugten Ausführungsform erzeugt wurde:
  • Figure 00700001
  • Figure 00710001
  • Figure 00720001
  • Figure 00730001
  • Figure 00740001
  • Figure 00750001
  • Figure 00760001
  • Figure 00770001
  • Figure 00780001
  • Figure 00790001
  • Figure 00800001
  • Komponentenbibliothek
  • Die bevorzugte Ausführungsform weist eine Komponentenbibliothek auf, die verwendet wird, um beim Umwandeln verschiedener Grundelemente oder Knoten in einem graphischen Programm in eine Hardwarebeschreibung zu helfen, wobei es sich beispielsweise um eine VHDL-Quellendatei handelt. Nachfolgend werden zwei Beispiele von VHDL-Komponenten in dieser Komponentenbibliothek gegeben, wobei es sich um Komponenten für eine While-Schleife und ein Multiplizierer-Grundelement handelt.
  • 1. While-Schleifenkomponente
  • Nachstehend wird eine als whileloop.vhd bezeichnete VHDL-Komponente vorgestellt, die die bevorzugte Ausführungsform verwendet, wenn eine While-Schleife in einem graphischen Programm oder Diagramm auftritt. whileloop.vhd zeigt, wie eine While-Schleife in einem graphischen Programm auf eine Zustandsmaschine in der Hardware abgebildet wird. Es sei bemerkt, daß andere Steuerstrukturen, wie eine "For-Schleife", ähnlich sind. whileloop.vhd sieht folgendermaßen aus:
  • Figure 00800002
  • Figure 00810001
  • Figure 00820001
  • Figure 00830001
  • 2. Multiplizierer-Grundelementkomponente
  • Nachstehend wird eine als prim multiply 16.vhd bezeichnete VHDL-Komponente vorgestellt, die die bevorzugte Ausführungsform verwendet, wenn ein Multiplizierer-Grundelement in einem graphischen Programm oder Diagramm auftritt. Wenn dem Weg von enable_in bis zu enable_out gefolgt wird, ist ersichtlich, wie die zeitlich selbst abgestimmte Logik funktioniert, wobei jede Komponente enable_out aktiviert, wenn die Datenausgabe gültig ist.
  • Andere Grundelemente, wie "Addieren" oder "kleiner als" funktionieren in ähnlicher Weise. prim multiply 16.vhd funktioniert folgendermaßen:
  • Figure 00840001
  • Figure 00850001
  • Figure 00860001
  • 2021
  • Die 20 und 21 veranschaulichen den graphischen Quellenknoten eines graphischen Programms oder eines vom VI aufgerufenen examplel.vi.
  • Nachstehend wird eine von dem in den 20 und 21 dargestellten graphischen Programm examplel.vi erzeugte VHDL-Hardwarebeschreibung gegeben, wobei die nachstehend dargelegte VHDL-Hardwarebeschreibung direkt anhand des LabVIEW-Programms examplel.vi unter Verwendung der bevor zugten Ausführungsform erzeugt wurde.
  • Figure 00870001
  • Figure 00880001
  • Figure 00890001
  • Figure 00900001
  • Figure 00910001
  • Figure 00920001
  • Figure 00930001
  • Figure 00940001
  • Figure 00950001
  • Figure 00960001
  • Figure 00970001
  • Figure 00980001
  • Figure 00990001
  • Figure 01000001
  • Figure 01010001
  • Figure 01020001
  • Figure 01030001
  • Figure 01040001
  • Figure 01050001
  • Figure 01060001
  • Wenngleich das System und das Verfahren gemäß der vorliegenden Erfindung in Zusammenhang mit der bevorzugten Ausführungsform beschrieben wurden, soll die vorliegende Erfindung nicht auf die hier dargelegte spezifische Form beschränkt sein, sondern vielmehr solche Alternativen, Modifikationen und gleichwertige Ausgestaltungen einschließen, die vernünftigerweise in den durch die anliegenden Ansprüche definierten Schutzumfang der Erfindung aufgenommen werden können.

Claims (59)

  1. Computerimplementiertes Verfahren zum Konfigurieren eines Instruments, um eine Meßfunktion durchzuführen, wobei das Instrument ein programmierbares Hardwareelement aufweist und das Verfahren folgende Schritte umfaßt: Erzeugen eines grafischen Programms, wobei das grafische Programm die Meßfunktion implementiert, wobei das grafische Programm einen Frontplattenabschnitt und einen Blockdiagrammabschnitt aufweist, und wobei der Frontplattenabschnitt als eine Frontplatte für das Instrument funktioniert, Erzeugen einer Hardwarebeschreibung basierend auf dem Blockdiagrammabschnitt des grafischen Programms, wobei die Hardwarebeschreibung eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms beschreibt, Konfigurieren des programmierbaren Hardwareelements in dem Instrument unter Verwendung der Hardwarebeschreibung, um ein konfiguriertes Hardwareelement zu erzeugen, wobei das konfigurierte Hardwareelement eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms implementiert, Übersetzen bzw. Compilieren des Frontplattenabschnitts in ausführbaren Code zum Ausführen durch eine Prozessor und Speichern des ausführbaren Codes in einem Speicher, Annehmen eines Signals durch das Instrument von einer externen Quelle nach dem Konfigurieren, Ausführen durch das programmierbare Hardwareelement in dem Instrument, um die Meßfunktion an dem Signal durchzuführen, und Ausführen durch den Prozessor des ausführbaren Codes aus dem Speicher, um den Frontplattenabschnitt auf einer Anzeige darzustellen, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  2. Verfahren nach Anspruch 1, das weiterhin folgenden Schritt umfaßt: Ausführen einer Analog/Digital-Umwandlung des Signals nach der Annahme und vor der Ausführung.
  3. Verfahren nach Anspruch 1, das weiterhin folgenden Schritt umfaßt: Empfangen einer Nutzereingabe zu dem Frontplattenabschnitt auf der Anzeige, um das Instrument zu kontrollieren, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  4. Verfahren nach Anspruch 3, bei dem der Frontplattenabschnitt ein oder mehrere Nutzerschnittstellenobjekte enthält, wobei das Erzeugen den Schritt des Integrieren eines Registers in der Hardwarebeschreibung für zumindest eines der Nutzerschnittstellenobjekte umfaßt, wobei der Schritt des Ausführens des programmierbaren Hardwareelements in dem Instrument, um die Meßfunktion an dem Signal durchzuführen, den Schritt des Zugreifens auf ein Register auf dem programmierbaren Hardwareelement umfaßt, um eines der Nutzerschnittstellenobjekte zu beeinflussen.
  5. Verfahren nach Anspruch 1, bei dem das Instrument den Prozessor und den Speicher aufweist, wobei der Prozessor in dem Instrument den ausführbaren Code aus dem Speicher ausführt, um den Frontplattenabschnitt auf der Anzeige darzustellen, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  6. Verfahren nach Anspruch 1, bei dem das Instrument mit einem Computersystem gekoppelt ist, wobei das Computersystem den Prozessor und den Speicher aufweist, wobei das Computersystem den ausführbaren Code aus dem Speicher ausführt, um die Frontplatte auf der Anzeige darzustellen, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  7. Verfahren nach Anspruch 1, bei dem das Instrument weiterhin eine Zeitgeber/Zähler-Logik enthält und das Verfahren weiterhin den Schritt umfaßt: Durchführen der Zeitgeber/Zähler-Logik einer der Zeitgeber/Zähler-Operationen, während das programmierbare Hard wareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  8. Verfahren nach Anspruch 1, bei dem das programmierbare Hardwareelement in dem Instrument ausführt, um eine Prozeßkontrollfunktion unter Verwendung des Signals durchzuführen.
  9. Verfahren nach Anspruch 1, das weiterhin die Schritte umfaßt: Konvertieren der Hardwarebeschreibung in eine Netzliste, und Übersetzen des Netzlistenformats in eine Hardwareprogrammdatei, wobei das Konfigurieren des programmierbaren Hardwareelements den Schritt des Herunterladens der Hardwareprogrammdatei zu dem programmierbaren Hardwareelement umfaßt, um das programmierbare Hardwareelement zu konfigurieren.
  10. Verfahren nach Anspruch 9, bei dem der Schritt des Konvertierens der Hardwarebeschreibung in eine Netzliste die Schritte umfaßt: Verwenden zumindest eines Funktionsblocks einer Bibliothek von vorübersetzten Funktionsblöcken, und Verwenden von hardwarezielspezifischen Informationen.
  11. Verfahren nach Anspruch 1, bei dem der Schritt des Erzeugens des grafischen Programms die Schritte umfaßt: Anordnen auf dem Bildschirm einer Vielzahl von Knoten, die das grafische Programm umfassen, Erzeugen und Speichern von Datenstrukturen, die das grafische Programm in Reaktion zu dem Anordnen repräsentieren, wobei der Schritt des Erzeugens der Hardwarebeschreibung die Schritte umfaßt: Durchlaufen der Datenstrukturen, Konvertieren der Datenstrukturen in ein Hardwarebeschreibungsformat in Reaktion auf das Durchlaufen.
  12. Verfahren nach Anspruch 1, bei dem das grafische Programm eine Vielzahl von Knoten umfaßt, wobei der Schritt des Erzeugens der Hardwarebeschreibung einen Schritt des Konvertierens jedes der Knoten in ein Hardwarebeschreibungsformat umfaßt.
  13. Verfahren nach Anspruch 12, bei dem jeder der Knoten in ein Hardwarebeschreibungsformat konvertiert ist, mit einer Auslöse- bzw. Freigabeeingabe, einer Taktsignaleingabe und einer Auslöseausgabe, wobei für einen jeweiligen Knoten die Auslöseeingabe ein Auslösesignal empfängt, das von Auslöseaussignalen von einem oder mehr Knoten erzeugt wird, die Eingaben zu den jeweiligen Knoten bereitstellen.
  14. Verfahren nach Anspruch 12, bei dem das grafische Programm ein Eingabeterminal aufweist, wobei der Schritt des Konvertierens für das Eingabeterminal die Schritte umfaßt: Bestimmen, ob eine Dateneingabe zu dem Eingabeterminal von einem Nutzerschnittstellenabschnitt ist, der auf dem Computersystem ausgeführt wird, Erzeugen einer Hardwarebeschreibung eines Schreiberegisters, wobei das Schreiberegister eine oder mehrere Datenausgaben und zumindest eine Kontrollausgabe umfaßt.
  15. Verfahren nach Anspruch 12, bei dem das grafische Programm einen Funktionsknoten umfaßt, wobei der Schritt des Konvertierens für den Funktionsknoten die Schritte umfaßt: Bestimmen von Eingaben und Ausgaben zu/von dem Funktionsknoten, Erzeugen einer Hardwarebeschreibung einer Logik, die die Funktion durchführt, die durch den Funktionsknoten bezeichnet ist, Durchlaufen von Eingabeabhängigkeiten des Knotens, Erzeugen einer Hardwarebeschreibung eines UND-Gatters, mit Protokollverbindungen der Eingabeabhängigkeiten des Knotens zu dem UND-Gatter.
  16. Verfahren nach Anspruch 12, bei dem das grafische Programm einen Strukturknoten umfaßt, wobei der Schritt des Konvertierens für den Strukturknoten die Schritte umfaßt: Bestimmen von Eingaben und Ausgaben zu/von dem Strukturknoten, Erzeugen einer Hardwarebeschreibung eines Kontrollblocks, der die Kontrollfunktion durchführt, die durch den Strukturknoten bezeichnet ist, Durchlaufen von Eingabeabhängigkeiten des Knotens, Erzeugen einer Hardwarebeschreibung eines UND-Gatters mit Protokollverbindungen der Eingabeabhängigkeiten des Knotens zu dem UND-Gatter.
  17. Verfahren nach Anspruch 12, bei dem das grafische Programm ein Ausgabeterminal umfaßt, wobei der Schritt des Konvertierens für das Ausgabeterminal die Schritte umfaßt: Bestimmen, ob eine Datenausgabe von dem Ausgabeterminal für einen Nutzerschnittstellenabschnitt ist, der auf dem Computersystem ausführt, Erzeugen einer Hardwarebeschreibung eines Leseregisters, wobei das Leseregister eine oder mehrere Dateneingaben und zumindest eine Kontrolleingabe umfaßt.
  18. Verfahren nach Anspruch 1, bei dem das grafische Programm ein Datenflußdiagramm umfaßt.
  19. Verfahren nach Anspruch 1, bei dem ein erster Abschnitt des Blockdiagrammabschnitts in eine Hardwarebeschreibung konvertiert ist, wobei das Verfahren weiterhin den Schritt umfaßt: Übersetzen eines zweiten Abschnitts des Blockdiagrammabschnitts in Maschinencode zur Ausführung durch den Prozessor.
  20. Verfahren nach Anspruch 19, das weiterhin die Schritte umfaßt: Ausführen des Maschinencodes, um die Funktionalität durchzuführen, die durch den zweiten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, Durchführen durch das konfigurierte Hardwareelement einer Funktionalität, die durch den ersten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, wobei das Ausführen des Maschinencodes und das Durchführen der Funktionalität durch das konfigurierte Hardwareelement dazu dienen, eine Funktionalität durchzuführen, die durch den Blockdiagrammabschnitt des grafischen Programms bezeichnet ist.
  21. Verfahren nach Anspruch 1, bei dem das Instrument einen nichtflüchtigen Speicher aufweist, der mit dem programmierbaren Hardwareelement gekoppelt ist, und das Verfahren weiterhin den Schritt umfaßt: Speichern der Hardwarebeschreibung in einen nichtflüchtigen Speicher, wobei das Konfigurieren des programmierbaren Hardwareelements den Schritt des Übertragens der Hardwarebeschreibung von dem nichtflüchtigen Speicher zu dem programmierbaren Hardwareelement umfaßt, um das konfigurierte Hardwareelement zu erzeugen.
  22. Meßsystem mit: einem Computersystem mit einer CPU, Speicher und einer Anzeige, wobei der Speicher ein grafisches Programm speichert, wobei das grafische Programm eine Meßfunktion implementiert, wobei das grafische Programm einen Frontplattenabschnitt und einen Blockdiagrammabschnitt umfaßt, wobei der Frontplattenabschnitt als eine Frontplatte für das Instrument funktioniert, wobei der Speicher ebenfalls ein Softwareprogramm speichert, das ausführbar ist, um eine Hardwarebeschreibung basierend auf dem Blockdiagrammabschnitt des grafischen Programms zu erzeugen, wobei die Hardwarebeschreibung eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms beschreibt, und einem Instrument, das an das Computersystem gekoppelt ist, wobei das Instrument aufweist: eine Eingabe zum Annehmen eines Signals von einer externen Quelle, und ein programmierbares Hardwareelement, wobei das programmierbare Hardwareelement in dem Instrument unter Verwendung der Hardwarebeschreibung konfigurierbar ist, um ein konfiguriertes Hardwareelement zu erzeugen, wobei das konfigurierte Hardwareelement eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms implementiert, wobei das programmierbare Hardwareelement in dem In strument ausführbar ist, um die Meßfunktion an dem angenommenen Signale durchzuführen, wobei das Computersystem betriebsbereit ist, um den Frontplattenabschnitt des grafischen Programms in ausführbaren Code zu übersetzen und den ausführbaren Code in dem Speicher zu speichern, wobei die CPU in dem Computersystem betriebsbereit ist, den ausführbaren Code auszuführen, um den Frontplattenabschnitt auf der Anzeige darzustellen, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  23. Meßsystem nach Anspruch 22, bei dem das Instrument weiterhin aufweist: eine Analog/Digital-Umwandlungslogik, die mit der Eingabe und dem programmierbaren Hardwareelement gekoppelt ist, um eine Anlaog/Digital-Umwandlungslogik an einem angenommenen analogen Signal durchzuführen, um ein digitales Signal zu erzeugen.
  24. Meßsystem nach Anspruch 22, bei dem der Frontplattenabschnitt betriebsbereit ist, um eine Nutzereingabe aufzunehmen, um das Instrument während der Meßfunktion zu kontrollieren.
  25. Meßsystem nach Anspruch 22, bei dem das Instrument weiterhin eine Zeitgeber/Zähler-Logik aufweist, wobei die Zeitgeber/Zähler-Logik eine der Zeitgeber/Zähler-Operationen durchführt, während das programmierbare Hard wareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  26. Meßsystem nach Anspruch 22, bei dem das programmierbare Hardwareelement in dem Instrument ausführt, um eine Prozeßkontrollfunktion unter Verwendung des Signals durchzuführen.
  27. Meßsystem nach Anspruch 26, bei dem das Softwareprogramm, das in dem Speicher des Computersystems gespeichert ist, weiterhin betriebsbereit ist, um die Hardwarebeschreibung in eine Netzliste umzuwandeln, wobei das Computersystem betriebsbereit ist, daß programmierbare Hardwareelement unter Verwendung der Netzliste zu konfigurieren.
  28. Meßsystem nach Anspruch 22, bei dem das Softwareprogramm, das in dem Speicher des Computersystems gespeichert ist, weiterhin betriebsbereit ist, das Netzlistenformat in eine Hardwareprogrammdatei zu übersetzen, und wobei das Computersystem betriebsbereit ist, die Hardwareprogrammdatei zu dem programmierbaren Hardwareelement herunterzuladen, um das programmierbare Hardwareelement zu konfigurieren.
  29. Meßsystem nach Anspruch 22, bei dem das programmierbare Hardwareelement eine feldprogrammierbare Gatteranordnung (FPGA) aufweist.
  30. Meßsystem nach Anspruch 22, bei dem das Computersystem einen Bus und ebenfalls einen oder mehrere Erweiterungsschlitze aufweist, die mit dem Bus gekoppelt und ausgelegt sind, Erweiterungskarten aufzunehmen, wobei das Instrument eine Erweiterungskarte aufweist, die in einen Erweiterungsschlitz des Busses eingesetzt ist.
  31. Meßsystem nach Anspruch 22, bei dem das Instrument ein externes Instrument ist, das mit dem Computersystem gekoppelt ist.
  32. Meßsystem nach Anspruch 22, bei dem der Speicher des Computersystems ein grafisches Programmiersystem zum Erzeugen des grafischen Programms speichert, wobei das grafische Programmiersystem ausführbar ist, um auf dem Bildschirm eine Vielzahl von Knoten anzuordnen, die das grafische Programm in Reaktion zu der Nutzereingabe umfassen, wobei das grafische Programmsystem weiterhin ausführbar ist, um Datenstrukturen zu erzeugen und zu speichern, die das grafische Programm in Reaktion zu der Anordnung repräsentieren, wobei das Softwareprogramm ausführbar ist, die Datenstrukturen zu durchlaufen und die Datenstrukturen in ein Hardwarebeschreibungsformat in Reaktion zu dem Durchlaufen zu übersetzen.
  33. Meßsystem nach Anspruch 22, bei dem ein erster Abschnitt des Blockdiagrammabschnitts in eine Hardwarebeschreibung übersetzt ist, wobei das Computersystem betriebsbereit ist, einen zweiten Abschnitt des Blockdiagrammabschnitts in einen Maschinencode zur Ausführung durch die CPU zu übersetzen.
  34. Meßsystem nach Anspruch 33, bei dem das konfigurierte Hardwareelement betriebsbereit ist, eine Funktionalität durchzuführen, die durch den ersten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, wobei das Computersystem betriebsbereit ist, den Maschinencode auszuführen, um eine Funktionalität durchzuführen, die durch den zweiten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, wobei die Ausführung des Maschinencodes und die Durchführung der Funktionalität durch das konfigurierte Hardwareelement dazu dient, eine Funktionalität durchzuführen, die durch den Blockdiagrammabschnitt des grafischen Programms bezeichnet ist.
  35. Meßsystem nach Anspruch 22, bei dem das Instrument einen nichtflüchtigen Speicher aufweist, der mit dem programmierbaren Hardwareelement gekoppelt ist, wobei der nichtflüchtige Speicher betriebsbereit ist, die Hardwarebeschreibung zu speichern, wobei der nichtflüchtige Speicher betriebsbereit ist, die Hardwarebeschreibung zu dem programmierbaren Hardwareelement zu übertragen, um das konfigurierte Hardwareelement zu erzeugen.
  36. Meßsystem nach Anspruch 22, bei dem das Instrument Datenakquisitions/Erzeugungsfunktionen durchführt.
  37. Meßsystem nach Anspruch 22, bei dem das Instrument ein IEC-Bus-Instrument ist.
  38. Meßsystem nach Anspruch 22, bei dem das Instrument ein VXI-Bus-Instrument ist.
  39. Meßsystem nach Anspruch 22, bei dem das Instrument ein Instrument mit seriellem Anschluß ist.
  40. Meßsystem nach Anspruch 22, bei dem das Instrument eine speicherprogrammierbare Anpaßsteuerung (PLC) ist.
  41. Meßsystem nach Anspruch 22, bei dem das Instrument eine Feldbus-Vorrichtung ist.
  42. Meßsystem mit: einem Computersystem mit einer CPU, Speicher und einer Anzeige, wobei der Speicher ein grafisches Programm speichert, wobei das grafische Programm eine Meßfunktion implementiert, wobei das grafische Programm einen Frontplattenabschnitt und einen Blockdiagrammabschnitt aufweist, wobei der Frontplattenabschnitt als eine Frontplatte für das Instrument funktioniert, wobei der Speicher ebenfalls ein Softwareprogramm speichert, das ausführbar ist, um eine Hardwarebeschreibung basierend auf dem Blockdiagrammabschnitt des grafischen Programms zu erzeugen, wobei die Hardwarebeschreibung eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms beschreibt, einem Instrument, das an das Computersystem gekoppelt ist, wobei das Instrument aufweist: eine Eingabe zum Annehmen eines Signals von einer externen Quelle, einen Prozessor, einen Speicher, der mit dem Prozessor gekoppelt ist, und ein programmierbares Hardwareelement, wobei das programmierbare Hardwareelement in dem Instrument unter Verwendung der Hardwarebeschreibung konfigurierbar ist, um ein konfiguriertes Hardwareelement zu erzeugen, wobei das konfigurierte Hardwareelement eine Hardwareimplementierung des Blockdiagrammabschnitts des grafischen Programms implementiert, wobei das programmierbare Hardwareelement in dem Instrument ausführbar ist, um die Meßfunktion an einem angenommenen Signal durchzuführen, wobei der Frontplattenabschnitt des grafischen Programms betriebsbereit ist, in einen ausführbaren Code übersetzt und in dem Speicher des Instruments gespeichert zu werden, wobei der Prozessor in dem Instrument betriebsbereit ist, den ausführbaren Code auszuführen, um den Frontplattenabschnitt auf der Anzeige darzustellen, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  43. Meßsystem nach Anspruch 42, bei dem das Instrument weiter aufweist: eine Analog/Digital-Umwandlungslogik, die mit der Eingabe und dem programmierbaren Hardwareelement gekoppelt ist, um eine Analog/Digital-Umwandlungslogik an einem angenommenen Analogsignal durchzuführen, um ein digitales Signal zu erzeugen.
  44. Meßsystem nach Anspruch 42, bei dem der Frontplattenabschnitt betriebsbereit ist, eine Nutzereingabe aufzunehmen, um das Instrument während der Meßfunktion zu kontrollieren.
  45. Meßsystem nach Anspruch 42, bei dem das Instrument weiterhin eine Zeitgeber/Zähler-Logik aufweist, wobei die Zeitgeber/Zähler-Logik eine der Zeitgeber/Zähler-Operationen durchführt, während das programmierbare Hardwareelement in dem Instrument ausführt, um die Meßfunktion an dem Signal durchzuführen.
  46. Meßsystem nach Anspruch 42, bei dem das programmierbare Hardwareelement in dem Instrument ausführt, um eine Prozeßkontrollfunktion unter Verwendung des Signals durchzuführen.
  47. Meßsystem nach Anspruch 46, bei dem das Softwareprogramm, das in dem Speicher des Computersystems gespeichert ist, weiterhin betriebsbereit ist, die Hardwarebeschreibung in eine Netzliste zu konvertieren bzw. umzuwandeln, wobei das Computersystem betriebsbereit ist, das programmierbare Hardwareelement unter Verwendung der Netzliste zu konfigurieren.
  48. Meßsystem nach Anspruch 42, bei dem das Softwareprogramm, das in dem Speicher des Computersystems gespeichert ist, weiterhin betriebsbereit ist, das Netzlistenformat in eine Hardwareprogrammdatei zu übersetzen, und wobei das Computersystem betriebsbereit ist, die Hardwareprogrammdatei zu dem programmierbaren Hardwareelement herunterzuladen, um das programmierbare Hardwareelement zu konfigurieren.
  49. Meßsystem nach Anspruch 42, bei dem das programmierbare Hardwareelement eine feldprogrammierbare Gatteranordnung (FPGA) aufweist.
  50. Meßsystem nach Anspruch 42, bei dem das Computersystem einen Bus und ebenfalls einen oder mehrere Erweiterungsschlitze aufweist, die mit dem Bus gekoppelt sind und ausgelegt sind, Erweiterungskarten aufzunehmen, wobei das Instrument eine Erweiterungskarte aufweist, die in einen Erweiterungsschlitz des Busses eingesetzt ist.
  51. Meßsystem nach Anspruch 42, bei dem das Instrument ein externes Instrument ist, das mit dem Computersystem gekoppelt ist.
  52. Meßsystem nach Anspruch 42, bei dem der Speicher des Computersystems ein grafisches Programmiersystem zum Erzeugen des grafischen Programms speichert, wobei das grafische Programmiersystem ausführbar ist, um auf dem Bildschirm eine Vielzahl von Knoten anzuordnen, die das grafische Programm in Reaktion auf eine Nutzereingabe umfassen, wobei das grafische Programmiersystem weiterhin ausführbar ist, Datenstrukturen zu erzeugen und zu speichern, die das grafische Programm in Reaktion auf das Anordnen repräsentieren, wobei das Softwareprogramm ausführbar ist, die Datenstrukturen zu durchlaufen und die Datenstrukturen in ein Hardwarebeschreibungsformat in Reaktion auf das Durchlaufen umzuwandeln.
  53. Meßsystem nach Anspruch 42, bei dem ein erster Abschnitt des Blockdiagrammabschnitts in eine Hardwarebeschreibung umgewandelt ist, wobei das Computersystem betriebsbereit ist, einen zweiten Abschnitt des Blockdiagrammabschnitts in einen Maschinencode zur Ausführung durch die CPU zu übersetzen.
  54. Meßsystem nach Anspruch 53, bei dem das konfigurierte Hardwareelement betriebsbereit ist, eine Funktionalität durchzuführen, die durch den ersten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, wobei das Computersystem betriebsbereit ist, den Maschinencode auszuführen, um eine Funktionalität durchzuführen, die durch den zweiten Abschnitt des Blockdiagrammabschnitts bezeichnet ist, wobei das Ausführen des Maschinencodes und die Durchführung der Funktionalität durch das konfigurierte Hardwareelement dazu dienen, eine Funktionalität durchzuführen, die durch den Blockdiagrammabschnitt des grafischen Programms bezeichnet ist.
  55. Meßsystem nach Anspruch 42, bei dem das Instrument einen nichtflüchtigen Speicher aufweist, der mit dem programmierbaren Hardwareelement gekoppelt ist, wobei der nichtflüchtige Speicher betriebsbereit ist, die Hardwarebeschreibung zu speichern, wobei der nichtflüchtige Speicher betriebsbereit ist, die Hardwarebeschreibung zu dem programmierbaren Hardwareelement zu übertragen, um das konfigurierte Hardwareelement zu erzeugen.
  56. Meßsystem nach Anspruch 42, bei dem das Instrument Akquisitions/Erzeugungsfunktionen durchführt.
  57. Meßsystem nach Anspruch 42, bei dem das Instrument entweder ein IEC-Bus-Instrument, ein VXI-Bus-Instrument oder ein Instrument mit seriellem Anschluß ist.
  58. Meßsystem nach Anspruch 42, bei dem das Instrument eine speicherprogrammierbare Anpaßsteuerung (PCL) ist.
  59. Meßsystem nach Anspruch 42, bei dem das Instrument eine Feldbus-Vorrichtung ist.
DE69817581T 1997-08-18 1998-06-22 System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen Expired - Lifetime DE69817581T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US912427 1978-06-05
US08/912,427 US6219628B1 (en) 1997-08-18 1997-08-18 System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
PCT/US1998/013040 WO1999009498A1 (en) 1997-08-18 1998-06-22 System and method for converting graphical programs into hardware implementations

Publications (2)

Publication Number Publication Date
DE69817581D1 DE69817581D1 (de) 2003-10-02
DE69817581T2 true DE69817581T2 (de) 2004-06-24

Family

ID=25431901

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69817581T Expired - Lifetime DE69817581T2 (de) 1997-08-18 1998-06-22 System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen

Country Status (5)

Country Link
US (12) US6219628B1 (de)
EP (1) EP1004085B1 (de)
AT (1) ATE248403T1 (de)
DE (1) DE69817581T2 (de)
WO (1) WO1999009498A1 (de)

Families Citing this family (339)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6608638B1 (en) * 2000-02-07 2003-08-19 National Instruments Corporation System and method for configuring a programmable hardware instrument to perform measurement functions utilizing estimation of the hardware implentation and management of hardware resources
US6802053B1 (en) * 1997-08-18 2004-10-05 National Instruments Corporation Graphical programming system with distributed block diagram execution and front panel display
US6971066B2 (en) * 1997-08-18 2005-11-29 National Instruments Corporation System and method for deploying a graphical program on an image acquisition device
US6784903B2 (en) 1997-08-18 2004-08-31 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6173438B1 (en) * 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6064721A (en) * 1997-10-22 2000-05-16 Telecommunications Techniques Corporation Modular test instrument
EP0919896A1 (de) * 1997-12-01 1999-06-02 Siemens Aktiengesellschaft Verfahren zur bildschirmgestützten Definition und Parametrierung von Schnittstellen
US7743362B2 (en) * 1998-02-17 2010-06-22 National Instruments Corporation Automatic generation of application domain specific graphical programs
US7152027B2 (en) * 1998-02-17 2006-12-19 National Instruments Corporation Reconfigurable test system
US7085670B2 (en) * 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
JP3296780B2 (ja) * 1998-05-11 2002-07-02 三洋電機株式会社 ディジタルカメラ
EP1351154A2 (de) 1998-11-20 2003-10-08 Altera Corporation Rechnersystem mit rekonfigurierbarer programmierbarer Logik-Vorrichtung
US6389587B1 (en) * 1999-02-04 2002-05-14 Sun Microsystems, Inc. User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs
EP1052581A1 (de) * 1999-05-08 2000-11-15 PHOENIX CONTACT GmbH & Co. Kg Vorrichtung und Verfahren zur Planung von Bussystemen
US7150005B2 (en) * 1999-07-02 2006-12-12 Beryl Technical Assays, Llc Method and system for global constant management for memory
US6968549B1 (en) * 1999-07-02 2005-11-22 Beryl Technical Assays Llc Method and system for dynamically loading data structures into memory with global constant pool
US8146007B2 (en) * 1999-08-19 2012-03-27 National Instruments Corporation Converting a first graphical program into an intermediate abstract representation for new graphical program generation
US7937665B1 (en) 2000-06-13 2011-05-03 National Instruments Corporation System and method for automatically generating a graphical program to implement a prototype
US7043693B2 (en) 1999-08-19 2006-05-09 National Instruments Corporation System and method for programmatically generating a second graphical program based on a first graphical program
US7340684B2 (en) * 1999-08-19 2008-03-04 National Instruments Corporation System and method for programmatically generating a second graphical program based on a first graphical program
US7210117B2 (en) * 1999-08-19 2007-04-24 National Instruments Corporation System and method for programmatically generating a graphical program in response to program information
US6714977B1 (en) * 1999-10-27 2004-03-30 Netbotz, Inc. Method and system for monitoring computer networks and equipment
US7330886B2 (en) * 1999-10-27 2008-02-12 American Power Conversion Corporation Network appliance management
US7392309B2 (en) * 1999-10-27 2008-06-24 American Power Conversion Corporation Network appliance management
US6584601B1 (en) 2000-02-07 2003-06-24 National Instruments Corporation System and method for converting graphical programs into hardware implementations which utilize probe insertion
US6625797B1 (en) * 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
JP3759860B2 (ja) * 2000-06-08 2006-03-29 シャープ株式会社 自己同期型のパイプライン制御を採用したデータ駆動型情報処理装置の設計方法
US8640027B2 (en) * 2000-06-13 2014-01-28 National Instruments Corporation System and method for configuring a hardware device to execute a prototype
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
AU2001283549A1 (en) * 2000-08-07 2002-02-18 Altera Corporation Software-to-hardware compiler
US6993448B2 (en) * 2000-08-09 2006-01-31 Telos Corporation System, method and medium for certifying and accrediting requirements compliance
US7380270B2 (en) * 2000-08-09 2008-05-27 Telos Corporation Enhanced system, method and medium for certifying and accrediting requirements compliance
US6901346B2 (en) 2000-08-09 2005-05-31 Telos Corporation System, method and medium for certifying and accrediting requirements compliance
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
NZ508052A (en) * 2000-11-09 2003-06-30 Derek Ward Programmable controller
US20020133842A1 (en) * 2000-12-08 2002-09-19 Leviten Michael W. Transgenic mice containing deubiquitinated enzyme gene disruptions
US7200838B2 (en) * 2000-12-20 2007-04-03 National Instruments Corporation System and method for automatically generating a graphical program in response to a state diagram
JP4421817B2 (ja) * 2001-01-26 2010-02-24 アメリカン パワー コンバージョン コーポレイション 向上されたコラボレーション、スケーラビリティ、およびリライアビリティを提供するために接続され得るネットワーク装置のセットのための方法およびシステム
US8271626B2 (en) 2001-01-26 2012-09-18 American Power Conversion Corporation Methods for displaying physical network topology and environmental status by location, organization, or responsible party
US7313761B1 (en) * 2001-03-13 2007-12-25 Cognex Technology And Investment Corporation Tree-style hierarchical control with graphical depiction of non-hierarchical interrelationships
US6983391B2 (en) * 2001-05-09 2006-01-03 Agilent Technologies, Inc. Modular system with synchronized timing
US7162387B2 (en) * 2001-06-29 2007-01-09 National Instruments Corporation Measurement system graphical user interface for easily configuring measurement applications
US20030005154A1 (en) * 2001-06-29 2003-01-02 Thurman Robert W. Shared routing in a measurement system
US6944606B2 (en) * 2001-06-29 2005-09-13 National Instruments Corporation Measurements expert system and method for generating high-performance measurements software drivers
US20030004673A1 (en) * 2001-06-29 2003-01-02 Thurman Robert W. Routing with signal modifiers in a measurement system
US7969431B2 (en) * 2001-06-29 2011-06-28 National Instruments Corporation Graphical program node for generating a measurement program
US20030005153A1 (en) * 2001-06-29 2003-01-02 National Instruments Corporation Dynamic routing for a measurement system
US20030004672A1 (en) * 2001-06-29 2003-01-02 National Instruments Corporation Meta-routing tool for a measurement system
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7983879B1 (en) * 2001-07-20 2011-07-19 The Mathworks, Inc. Code generation for data acquisition and/or logging in a modeling environment
US6876368B2 (en) * 2001-08-14 2005-04-05 National Instruments Corporation System and method for deploying a graphical program to a PDA device
US6823283B2 (en) * 2001-08-14 2004-11-23 National Instruments Corporation Measurement system including a programmable hardware element and measurement modules that convey interface information
US7478006B2 (en) * 2001-08-14 2009-01-13 National Instruments Corporation Controlling modular measurement cartridges that convey interface information with cartridge controllers
US7542867B2 (en) * 2001-08-14 2009-06-02 National Instruments Corporation Measurement system with modular measurement modules that convey interface information
US7367028B2 (en) * 2001-08-14 2008-04-29 National Instruments Corporation Graphically deploying programs on devices in a system
US7043393B2 (en) * 2001-08-15 2006-05-09 National Instruments Corporation System and method for online specification of measurement hardware
US7050923B2 (en) * 2001-08-15 2006-05-23 National Instruments Corporation Network-based system for configuring a measurement system using configuration information generated based on a user specification
US6889172B2 (en) * 2001-08-15 2005-05-03 National Instruments Corporation Network-based system for configuring a measurement system using software programs generated based on a user specification
US7013232B2 (en) * 2001-08-15 2006-03-14 National Insurance Corporation Network-based system for configuring a measurement system using configuration information generated based on a user specification
US7010779B2 (en) * 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
US20030043204A1 (en) * 2001-08-31 2003-03-06 Aguilera Jeffrey T. User interface for simultaneous duplicator scheduling
US7559032B2 (en) * 2001-10-12 2009-07-07 National Instruments Corporation System and method for enabling a graphical program to respond to user interface events
US7134086B2 (en) * 2001-10-23 2006-11-07 National Instruments Corporation System and method for associating a block diagram with a user interface element
US8104017B2 (en) * 2001-10-25 2012-01-24 The Mathworks, Inc. Traceability in a modeling environment
US7849394B2 (en) 2001-10-25 2010-12-07 The Math Works, Inc. Linked code generation report
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US7089141B2 (en) * 2001-11-13 2006-08-08 National Instruments Corporation Measurement system which uses a state model
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7076411B2 (en) * 2002-01-15 2006-07-11 National Instruments Corporation System and method for performing a hardware-in-the-loop simulation using a plurality of graphical programs that share a single graphical user interface
US7076740B2 (en) * 2002-01-15 2006-07-11 National Instruments Corporation System and method for performing rapid control prototyping using a plurality of graphical programs that share a single graphical user interface
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7327396B2 (en) * 2002-04-10 2008-02-05 National Instruments Corporation Smart camera with a plurality of slots for modular expansion capability through a variety of function modules connected to the smart camera
US8004664B2 (en) 2002-04-18 2011-08-23 Chang Type Industrial Company Power tool control system
US20060076385A1 (en) * 2002-04-18 2006-04-13 Etter Mark A Power tool control system
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
DE60330659D1 (de) 2002-05-03 2010-02-04 American Power Conv Corp Verfahren und vorrichtung zum sammeln und anzeigen von netzwerkgeräteinformationen
US7139979B2 (en) * 2002-06-10 2006-11-21 National Instruments Corporation Displaying operations in an application using a graphical programming representation
US7024654B2 (en) * 2002-06-11 2006-04-04 Anadigm, Inc. System and method for configuring analog elements in a configurable hardware device
US8074201B2 (en) * 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
US7089466B2 (en) * 2002-07-12 2006-08-08 National Instruments Corporation Instrumentation system having a reconfigurable instrumentation card with programmable logic and a modular daughter card
US7543281B2 (en) * 2002-07-22 2009-06-02 National Instruments Corporation Disabling and conditionally compiling graphical code in a graphical program
US20040032412A1 (en) * 2002-08-13 2004-02-19 Odom Brian Keith Generating a graphical program based on a timing diagram
WO2004023325A1 (en) * 2002-09-04 2004-03-18 Mentor Graphics (Holdings) Ltd. Polymorphic computational system and method
DE10251112A1 (de) * 2002-11-02 2004-05-19 Philips Intellectual Property & Standards Gmbh Verfahren und System zur Spracherkennung
US7146598B2 (en) * 2002-11-07 2006-12-05 Computer Network Technoloy Corp. Method and apparatus for configuring a programmable logic device
US6971083B1 (en) 2002-11-13 2005-11-29 Altera Corporation Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions
US6980927B2 (en) * 2002-11-27 2005-12-27 Telos Corporation Enhanced system, method and medium for certifying and accrediting requirements compliance utilizing continuous risk assessment
US20040103309A1 (en) * 2002-11-27 2004-05-27 Tracy Richard P. Enhanced system, method and medium for certifying and accrediting requirements compliance utilizing threat vulnerability feed
US6983221B2 (en) * 2002-11-27 2006-01-03 Telos Corporation Enhanced system, method and medium for certifying and accrediting requirements compliance utilizing robust risk assessment model
US20040117166A1 (en) * 2002-12-11 2004-06-17 Cesar Cassiolato Logic arrangement, system and method for automatic generation and simulation of a fieldbus network layout
JP2004206550A (ja) * 2002-12-26 2004-07-22 Fanuc Ltd 数値制御装置
US7159204B2 (en) * 2003-01-28 2007-01-02 Altera Corporation System and method for design entry and synthesis in programmable logic devices
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US8001266B1 (en) 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US7581081B2 (en) 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7590829B2 (en) * 2003-03-31 2009-09-15 Stretch, Inc. Extension adapter
ATE450026T1 (de) * 2003-04-14 2009-12-15 American Power Conv Corp Erweiterbare sensorüberwachung, warnungsverarbeitungs- und benachrichtigungssystem und verfahren
US7148796B2 (en) * 2003-04-14 2006-12-12 American Power Conversion Corporation Environmental monitoring device
US8566292B2 (en) 2003-04-14 2013-10-22 Schneider Electric It Corporation Method and system for journaling and accessing sensor and configuration data
DK1616236T3 (da) * 2003-04-14 2017-02-20 Schneider Electric It Corp Metode og system til journalføring og adgang til sensor- og konfigurationsdata
US7624375B2 (en) * 2003-06-12 2009-11-24 National Instruments Corporation Automatically configuring a graphical user interface element to bind to a graphical program
US7418575B2 (en) * 2003-07-29 2008-08-26 Stretch, Inc. Long instruction word processing with instruction extensions
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US7703034B2 (en) * 2003-08-07 2010-04-20 National Instruments Corporation Visualization tool for viewing timing information for a graphical program
US7730415B2 (en) 2003-09-05 2010-06-01 Fisher-Rosemount Systems, Inc. State machine function block with a user modifiable state transition configuration database
US7269468B2 (en) * 2003-09-05 2007-09-11 Fisher-Rosemount Systems, Inc. State machine function block with a user modifiable output configuration database
US7191111B2 (en) * 2003-09-11 2007-03-13 International Business Machines Corporation Method, apparatus, and computer program product for implementing dynamic cosimulation
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8775112B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for increasing die yield
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US7627651B2 (en) * 2003-10-27 2009-12-01 American Power Conversion Corporation System and method for network device communication
US6880940B1 (en) * 2003-11-10 2005-04-19 Honda Motor Co., Ltd. Magnesium mirror base with countermeasures for galvanic corrosion
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US20050188359A1 (en) * 2004-02-20 2005-08-25 Tom Lalor Method and computer program product for developing and directing simulations
US7992093B2 (en) * 2004-02-25 2011-08-02 Beptech Inc. Method of programming a processing system
US7552024B2 (en) * 2004-03-08 2009-06-23 Kelbon Richard G Circuit board diagnostic operating center
US7424292B2 (en) * 2004-03-11 2008-09-09 Thaddeus John Kobylarz Compound wireless mobile communication services
US7836426B2 (en) * 2004-05-06 2010-11-16 National Instruments Corporation Automatic generation of application domain specific graphical programs
US20050268173A1 (en) * 2004-05-11 2005-12-01 National Instruments Corporation Programmatically analyzing a graphical program by traversing objects in the graphical program
US8453111B2 (en) 2004-05-14 2013-05-28 National Instruments Corporation Generating a hardware description for a programmable hardware element based on a graphical program including multiple models of computation
US7506304B2 (en) * 2004-05-14 2009-03-17 National Instruments Corporation Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation
US7530052B2 (en) * 2004-05-14 2009-05-05 National Instruments Corporation Creating and executing a graphical program with first model of computation that includes a structure supporting second model of computation
US8397214B2 (en) * 2004-05-14 2013-03-12 National Instruments Corporation Generating a hardware description for a programmable hardware element based on a graphical program including multiple physical domains
JP2005339237A (ja) * 2004-05-27 2005-12-08 Aruze Corp アプリケーション利用補助システム
US7398181B2 (en) * 2004-06-02 2008-07-08 Hewlett-Packard Development Company, L.P. Method for retrieving reliability data in a system
US7512593B2 (en) * 2004-06-08 2009-03-31 Siemens Energy & Automation, Inc. System for searching across a PLC network
US7860874B2 (en) * 2004-06-08 2010-12-28 Siemens Industry, Inc. Method for searching across a PLC network
GB0414649D0 (en) * 2004-06-30 2004-08-04 Renishaw Plc Generation of a CNC machine tool control program
US7420166B2 (en) * 2004-07-14 2008-09-02 The University Of Hong Kong Real-time S-parameter imager
US7761847B2 (en) * 2004-07-16 2010-07-20 National Instruments Corporation Timed sequence for a graphical program
US7831680B2 (en) * 2004-07-16 2010-11-09 National Instruments Corporation Deterministic communication between graphical programs executing on different computer systems
US7565609B2 (en) * 2004-07-16 2009-07-21 National Instruments Corporation Synchronizing execution of graphical programs executing on different computer systems
US7725874B2 (en) * 2004-08-13 2010-05-25 National Instruments Corporation Combination structure nodes for a graphical program
US7478349B2 (en) * 2004-08-13 2009-01-13 National Instruments Corporation Automatically synchronizing timed circuits on I/O Devices
US7594226B2 (en) * 2004-08-16 2009-09-22 National Instruments Corporation Implementation of packet-based communications in a reconfigurable hardware element
ATE412932T1 (de) * 2004-09-03 2008-11-15 Derek Ward Verbesserungen an numerischen steuerungen und verwandten elektronischen geräten
US7813914B1 (en) * 2004-09-03 2010-10-12 Altera Corporation Providing component connection information
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US7913222B2 (en) * 2004-09-20 2011-03-22 The Mathworks, Inc. Automatic generation of code for component interfaces in models
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US7711814B1 (en) 2004-12-13 2010-05-04 American Power Conversion Corporation Method and system for remote monitoring of a power supply device with user registration capability
US8812269B1 (en) 2004-12-13 2014-08-19 The Mathworks, Inc. Dynamic range assessment in block diagram systems
US8145748B2 (en) * 2004-12-13 2012-03-27 American Power Conversion Corporation Remote monitoring system
US8855981B2 (en) * 2004-12-13 2014-10-07 The Mathworks, Inc. Tools for system-level design environments
US7689969B1 (en) 2005-01-18 2010-03-30 The Mathworks, Inc. Obfuscation of automatically generated code
KR100683853B1 (ko) * 2005-02-04 2007-02-16 삼성전기주식회사 프리 컴파일링 장치
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7418305B2 (en) * 2005-02-09 2008-08-26 Siemens Corporate Research, Inc. Method of generating a component of a component-based automation system
US8021193B1 (en) * 2005-04-25 2011-09-20 Nvidia Corporation Controlled impedance display adapter
US20070006145A1 (en) * 2005-05-04 2007-01-04 Hill Russell K Iterative operator in a graphical programming language
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US7793029B1 (en) 2005-05-17 2010-09-07 Nvidia Corporation Translation device apparatus for configuring printed circuit board connectors
AT501880B1 (de) * 2005-06-07 2007-04-15 Contec Steuerungstechnik & Aut Speicherprogrammierbare steuerung
US20070044071A1 (en) * 2005-08-16 2007-02-22 Hayles Timothy J Efficient Configuration of Hardware Devices in a Graphical Dataflow Programming Environment
US7761846B2 (en) * 2005-08-16 2010-07-20 National Instruments Corporation Graphical programming methods for generation, control and routing of digital pulses
US20070044072A1 (en) * 2005-08-16 2007-02-22 Hayles Timothy J Automatically Generating a Graphical Data Flow Program Based on a Circuit Diagram
US8719716B2 (en) * 2005-09-15 2014-05-06 The Mathworks, Inc. Locked element for use in a graphical modeling environment
DE102005044728A1 (de) 2005-09-19 2007-03-29 Silicon Software Gmbh Programmierung und Layoutdesign von Hardware
US7945895B2 (en) * 2005-10-17 2011-05-17 National Instruments Corporation Graphical programs with FIFO structure for controller/FPGA communications
US7606950B2 (en) * 2005-10-17 2009-10-20 National Instruments Corporation Graphical programs with direct memory access FIFO for controller/FPGA communications
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7802221B1 (en) * 2005-11-02 2010-09-21 Altera Corporation Design tool with graphical interconnect matrix
WO2007067894A2 (en) * 2005-12-05 2007-06-14 National Instruments Corporation Implementing a design flow for a programmable hardware element that includes or is coupled to a processor
US8417838B2 (en) * 2005-12-12 2013-04-09 Nvidia Corporation System and method for configurable digital communication
US8412872B1 (en) 2005-12-12 2013-04-02 Nvidia Corporation Configurable GPU and method for graphics processing using a configurable GPU
FR2895106A1 (fr) 2005-12-20 2007-06-22 Thomson Licensing Sas Procede de telechargement d'un fichier de configuration dans un circuit programmable, et appareil comportant ledit composant.
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
US8589868B2 (en) * 2005-12-22 2013-11-19 Ncr Corporation Creating a terminal application
US9329840B1 (en) 2005-12-30 2016-05-03 The Mathworks, Inc. Graphical programming of custom device drivers
US10884712B1 (en) 2005-12-30 2021-01-05 The Mathworks, Inc. Component-based framework for generating device driver model elements
US7684878B2 (en) * 2006-02-07 2010-03-23 National Instruments Corporation Programmable hardware element pre-regulator
US7650316B2 (en) * 2006-03-10 2010-01-19 National Instruments Corporation Automatic generation of help information for specified systems
US8219923B2 (en) * 2006-03-10 2012-07-10 National Instruments Corporation Automatic generation of documentation for specified systems
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US7840726B2 (en) * 2006-04-12 2010-11-23 Dell Products L.P. System and method for identifying and transferring serial data to a programmable logic device
US7509445B2 (en) * 2006-04-12 2009-03-24 National Instruments Corporation Adapting a plurality of measurement cartridges using cartridge controllers
US20070260993A1 (en) * 2006-05-08 2007-11-08 Stanley Ted Jefferson Method and system including a graphic user interface
US7954059B2 (en) * 2006-07-24 2011-05-31 National Instruments Corporation Automatic conversion of text-based code having function overloading and dynamic types into a graphical program for compiled execution
US7975233B2 (en) * 2006-07-24 2011-07-05 National Instruments Corporation Automatic conversion of a textual language into a graphical program representation
US8028241B2 (en) * 2006-08-04 2011-09-27 National Instruments Corporation Graphical diagram wires whose appearance represents configured semantics
US20080126956A1 (en) 2006-08-04 2008-05-29 Kodosky Jeffrey L Asynchronous Wires for Graphical Programming
US8108784B2 (en) * 2006-08-04 2012-01-31 National Instruments Corporation Configuring icons to represent data transfer functionality
US8028242B2 (en) * 2006-08-04 2011-09-27 National Instruments Corporation Diagram with configurable wires
US7844908B2 (en) * 2006-08-04 2010-11-30 National Instruments Corporation Diagram that visually indicates targeted execution
US7840904B2 (en) * 2006-08-04 2010-11-23 National Instruments Corporation Execution target structure node for a graphical program
US8612870B2 (en) * 2006-08-04 2013-12-17 National Instruments Corporation Graphically specifying and indicating targeted execution in a graphical program
US7616508B1 (en) * 2006-08-10 2009-11-10 Actel Corporation Flash-based FPGA with secure reprogramming
US7668608B2 (en) * 2006-09-01 2010-02-23 Fisher-Rosemount Systems, Inc. Graphical programming language object editing and reporting tool
US20080092113A1 (en) * 2006-10-12 2008-04-17 Weinstein Randall K System and method for configuring a programmable electronic device to include an execution engine
US20080091398A1 (en) * 2006-10-13 2008-04-17 Bruce Hamilton Method and system including time precision and display precision
WO2008046696A2 (de) * 2006-10-17 2008-04-24 Endress+Hauser Gmbh+Co.Kg System zur flexiblen konfiguration von funktionsmodulen
US7934194B2 (en) * 2006-10-17 2011-04-26 The Mathworks, Inc. User-defined hierarchies of user-defined classes of graphical objects in a graphical modeling environment
US7568178B2 (en) * 2006-10-18 2009-07-28 National Insturments Corporation System simulation and graphical data flow programming in a common environment using wire data flow
US8191052B2 (en) * 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US20080147371A1 (en) * 2006-12-13 2008-06-19 Gupton Kyle P User Defined Virtual Instruments in a Simulation Environment
WO2008075087A1 (en) * 2006-12-21 2008-06-26 Loughborough University Enterprises Limited Code translator and method of automatically translating modelling language code to hardware language code
US8060887B2 (en) * 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US7765261B2 (en) * 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US8627211B2 (en) * 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US7765266B2 (en) * 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US7950046B2 (en) * 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8640100B2 (en) * 2007-04-20 2014-01-28 National Instruments Corporation Debugging a statechart using a graphical program
US8387002B2 (en) * 2007-04-20 2013-02-26 National Instruments Corporation Statechart development environment with embedded graphical data flow code editor
US8122238B2 (en) * 2007-04-23 2012-02-21 National Instruments Corporation Multi-channel algorithm infrastructure for programmable hardware elements
US8271943B2 (en) * 2007-04-24 2012-09-18 National Instruments Corporation Automatically generating a graphical program with a plurality of models of computation
US9720805B1 (en) * 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8788959B1 (en) 2007-04-25 2014-07-22 Cypress Semiconductor Corporation System and method for monitoring a target device
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
CN101755495B (zh) 2007-05-15 2013-10-16 美国能量变换公司 用来管理设施供电和冷却的方法和系统
US8321847B1 (en) * 2007-05-17 2012-11-27 The Mathworks, Inc. Dynamic function wizard
US7996782B2 (en) * 2007-06-08 2011-08-09 National Instruments Corporation Data transfer indicator icon in a diagram
US9442158B2 (en) * 2007-06-13 2016-09-13 Keysight Technologies, Inc. Method and a system for determining between devices a reference time for execution of a task thereon
DE102007029285A1 (de) * 2007-06-22 2008-12-24 Dspace Digital Signal Processing And Control Engineering Gmbh Testvorrichtung zum Testen wenigstens eines elektronischen Steuerungssystems sowie Verfahren zum Betreiben einer Testvorrichtung
US7900168B2 (en) * 2007-07-12 2011-03-01 The Mathworks, Inc. Customizable synthesis of tunable parameters for code generation
US8744829B1 (en) * 2007-07-19 2014-06-03 The Mathworks, Inc. Computer aided design environment with electrical and electronic features
US8630829B1 (en) * 2007-07-19 2014-01-14 The Mathworks, Inc. Computer aided design environment with electrical and electronic features
US20090150484A1 (en) * 2007-08-10 2009-06-11 Smiths Medical Md Medical device metadata
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8782618B1 (en) 2008-01-08 2014-07-15 The Mathworks, Inc. Instrument based processing
US8458667B2 (en) * 2008-01-30 2013-06-04 National Instruments Corporation Debugging a statechart for a real time target
GB2462997B (en) * 2008-04-23 2010-09-08 Wolfson Microelectronics Plc Method and apparatus for configuring a device
US8539443B2 (en) * 2008-05-13 2013-09-17 National Instruments Corporation Edit time analyzer in a loosely typed textual language
US8291390B2 (en) * 2008-07-30 2012-10-16 National Instruments Corporation Testing a graphical program intended for a programmable hardware element
US8239158B2 (en) * 2008-08-04 2012-08-07 National Instruments Corporation Synchronizing a loop performed by a measurement device with a measurement and control loop performed by a processor of a host computer
AT10302U3 (de) * 2008-08-04 2009-10-15 Avl List Gmbh Erzeugen einer ablauffähigen konfiguration
US8387005B1 (en) 2008-12-02 2013-02-26 The Mathworks, Inc. Generation of multi-domain code from a graphical program
US9064075B1 (en) 2008-12-02 2015-06-23 The Mathworks, Inc. Automatic assignment of signals for a functional model
WO2010093933A1 (en) * 2009-02-13 2010-08-19 Ab Initio Technology Llc Communicating with data storage systems
DE112010001134T5 (de) 2009-03-16 2012-06-21 Rhk Technology Inc. Konfigurationsverfahren und Vorrichtung für programmierbare Ausrüstung
US20100268521A1 (en) * 2009-04-17 2010-10-21 Rainer Heller Monitoring An Automation System
US8458682B2 (en) * 2009-04-27 2013-06-04 National Instruments Corporation Conversion of a class oriented data flow program to a structure oriented data flow program with dynamic interpretation of data types
US8423977B2 (en) * 2009-04-27 2013-04-16 National Instruments Corporation Implementing a class oriented data flow program on a programmable hardware element
US8356290B2 (en) * 2009-04-27 2013-01-15 National Instruments Corporation Conversion of a class oriented data flow program with inheritance to a structure oriented data flow program
US8375355B2 (en) * 2009-04-27 2013-02-12 National Instruments Corporation Conversion of a class oriented data flow program to a structure oriented data flow program
US9047168B2 (en) * 2009-05-14 2015-06-02 National Instruments Corporation Automatically generating documentation for a diagram including a plurality of states and transitions
US8607189B2 (en) * 2009-05-18 2013-12-10 National Instruments Corporation Dynamic analysis of a graphical program in a browser
US8042079B1 (en) * 2009-05-19 2011-10-18 Xilinx, Inc. Synchronization for a modeling system
US8015537B1 (en) 2009-05-19 2011-09-06 Xilinx, Inc. Automated rate realization for circuit designs within high level circuit implementation tools
US20120066417A1 (en) * 2009-05-20 2012-03-15 Chronologic Pty. Ltd. Synchronisation and trigger distribution across instrumentation networks
US8687639B2 (en) * 2009-06-04 2014-04-01 Nvidia Corporation Method and system for ordering posted packets and non-posted packets transfer
US8423981B2 (en) * 2009-06-18 2013-04-16 National Instruments Corporation Compiling a graphical program having a textual language program portion for a real time target
US8479156B2 (en) * 2009-06-18 2013-07-02 National Instruments Corporation Providing target specific information for textual code at edit time
US8516436B2 (en) * 2009-07-10 2013-08-20 National Instruments Corporation Encapsulating a graphical program within a standard image file
JP5198375B2 (ja) * 2009-07-15 2013-05-15 株式会社日立製作所 測定装置及び測定方法
US8151218B2 (en) * 2009-07-29 2012-04-03 National Instruments Corporation Evaluation of graphical program nodes
DE102009035751A1 (de) * 2009-08-03 2011-02-10 Anetseder, Leo Philip, Dipl.-Ing. Spezifikations-Verfahren zur Erzeugung von Datenverarbeitungs-Systemen
US20110077985A1 (en) * 2009-09-29 2011-03-31 Sap Ag Archetypes management system
US8458653B2 (en) * 2009-09-29 2013-06-04 National Instruments Corporation Debugging a graphical program deployed on a programmable hardware element
US8156459B1 (en) * 2009-11-10 2012-04-10 Xilinx, Inc. Detecting differences between high level block diagram models
US8290725B2 (en) * 2009-11-18 2012-10-16 National Instruments Corporation Synchronized reconfiguration of measurement modules
US9176909B2 (en) 2009-12-11 2015-11-03 Nvidia Corporation Aggregating unoccupied PCI-e links to provide greater bandwidth
US10845962B2 (en) * 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
US8037369B2 (en) * 2009-12-21 2011-10-11 National Instruments Corporation Error handling structure for use in a graphical program
US9331869B2 (en) * 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US20110225524A1 (en) 2010-03-10 2011-09-15 Cifra Christopher G Multi-Touch Editing in a Graphical Programming Language
US8479151B2 (en) 2010-05-12 2013-07-02 National Instruments Corporation Converting a statechart from a first statechart format to a second statechart format
US20110289469A1 (en) * 2010-05-21 2011-11-24 Huang Thomas B Virtual interconnection method and apparatus
US8713540B2 (en) 2010-07-29 2014-04-29 National Instruments Corporation Generating and modifying textual code interfaces from graphical programs
US8719774B2 (en) 2010-07-30 2014-05-06 National Instruments Corporation Developing programs for hardware implementation in a graphical specification and constraint language Via iterative estimation of performance or resource utilization
US20120030496A1 (en) 2010-07-30 2012-02-02 Sundeep Chandhoke Specification of Isochronous Data Transfer in a Graphical Programming Language
US8627057B2 (en) * 2010-12-22 2014-01-07 Intel Corporation Reconfigurable sensing platform for software-defined instrumentation
US8572556B2 (en) 2010-12-31 2013-10-29 Starlims Corporation Graphically based method for developing connectivity drivers
US9123002B2 (en) 2011-05-27 2015-09-01 Abbott Informatics Corporation Graphically based method for developing rules for managing a laboratory workflow
US9665956B2 (en) 2011-05-27 2017-05-30 Abbott Informatics Corporation Graphically based method for displaying information generated by an instrument
US8990536B2 (en) 2011-06-01 2015-03-24 Schneider Electric It Corporation Systems and methods for journaling and executing device control instructions
US10162604B2 (en) * 2011-06-16 2018-12-25 Microsoft Technology Licensing, Llc Navigation history visualization in integrated development environment
FR2978263A1 (fr) * 2011-07-18 2013-01-25 Modae Technologies Procede de synthese de haut niveau d'une application
US8782525B2 (en) 2011-07-28 2014-07-15 National Insturments Corporation Displaying physical signal routing in a diagram of a system
US9047007B2 (en) 2011-07-28 2015-06-02 National Instruments Corporation Semantic zoom within a diagram of a system
US8713482B2 (en) 2011-07-28 2014-04-29 National Instruments Corporation Gestures for presentation of different views of a system diagram
US8666999B2 (en) * 2011-08-02 2014-03-04 Rockwell Automation Technologies, Inc. Search utility program for software developers
US10210452B2 (en) * 2011-09-21 2019-02-19 Qualcomm Incorporated High level neuromorphic network description apparatus and methods
US8612637B2 (en) 2011-09-25 2013-12-17 National Instruments Corportion Configuring buffers with timing information
US9268619B2 (en) 2011-12-02 2016-02-23 Abbott Informatics Corporation System for communicating between a plurality of remote analytical instruments
US9330031B2 (en) 2011-12-09 2016-05-03 Nvidia Corporation System and method for calibration of serial links using a serial-to-parallel loopback
US8872699B2 (en) 2011-12-15 2014-10-28 National Instruments Corporation Resampling a signal to perform synchrophasor measurement
US9188611B2 (en) 2011-12-15 2015-11-17 National Instruments Corporation Resampling a signal to perform power quality measurement
US9128132B2 (en) 2011-12-15 2015-09-08 National Instruments Corporation Resampling a signal to perform power quality and synchrophasor measurement
US9952103B2 (en) 2011-12-22 2018-04-24 Schneider Electric It Corporation Analysis of effect of transient events on temperature in a data center
US8959469B2 (en) 2012-02-09 2015-02-17 Altera Corporation Configuring a programmable device using high-level language
US8788882B2 (en) 2012-02-16 2014-07-22 National Instruments Corporation Customizing code modules of software and programmable hardware for a test instrument
US9135131B2 (en) 2012-02-16 2015-09-15 National Instruments Corporation Customizing operation of a test instrument based on information from a system under test
US8799853B2 (en) 2012-02-17 2014-08-05 National Instruments Corporation Dynamic synchronization in a target system having multiple programmable hardware elements
CN106991475A (zh) * 2012-03-15 2017-07-28 美国高通技术公司 用于神经网络的基于标记的装置和方法
US8656345B2 (en) * 2012-03-19 2014-02-18 National Instruments Corporation Managing hardware implementation and deployment of a graphical program
US9098164B2 (en) 2012-08-03 2015-08-04 National Instruments Corporation Physics based diagram editor
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US9665088B2 (en) 2014-01-31 2017-05-30 Fisher-Rosemount Systems, Inc. Managing big data in process control systems
US10866952B2 (en) 2013-03-04 2020-12-15 Fisher-Rosemount Systems, Inc. Source-independent queries in distributed industrial system
US10649449B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US9558220B2 (en) 2013-03-04 2017-01-31 Fisher-Rosemount Systems, Inc. Big data in process control systems
US10678225B2 (en) 2013-03-04 2020-06-09 Fisher-Rosemount Systems, Inc. Data analytic services for distributed industrial performance monitoring
US10282676B2 (en) 2014-10-06 2019-05-07 Fisher-Rosemount Systems, Inc. Automatic signal processing-based learning in a process plant
US10386827B2 (en) 2013-03-04 2019-08-20 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics platform
US10223327B2 (en) 2013-03-14 2019-03-05 Fisher-Rosemount Systems, Inc. Collecting and delivering data to a big data machine in a process control system
US10649424B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US10909137B2 (en) 2014-10-06 2021-02-02 Fisher-Rosemount Systems, Inc. Streaming data for analytics in process control systems
EP2973242B1 (de) 2013-03-15 2020-12-23 Fisher-Rosemount Systems, Inc. Modellierung und anpassung von industrieanlagen
US10671028B2 (en) 2013-03-15 2020-06-02 Fisher-Rosemount Systems, Inc. Method and apparatus for managing a work flow in a process plant
DE102013104320A1 (de) 2013-04-29 2014-10-30 Dspace Digital Signal Processing And Control Engineering Gmbh Flexible Aufteilung der I/O Kanäle einer Hardware Kompomente
US20140359590A1 (en) * 2013-05-30 2014-12-04 National Instruments Corporation Development and Deployment of Parallel Floating-Point Math Functionality on a System with Heterogeneous Hardware Components
US9086688B2 (en) 2013-07-09 2015-07-21 Fisher-Rosemount Systems, Inc. State machine function block with user-definable actions on a transition between states
US9880030B2 (en) 2013-07-26 2018-01-30 National Instruments Corporation Extending programmable measurement device functionality
TWI504906B (zh) * 2013-10-23 2015-10-21 Princeton Technology Corp 自動化測試系統和方法
US20150301085A1 (en) * 2014-04-22 2015-10-22 National Instruments Corporation Automatically Capturing Data Sets of Interest from a Data Acquisition Data Stream
US9756511B1 (en) 2014-05-13 2017-09-05 Senseware, Inc. System, method and apparatus for wireless sensor network configuration
US10263841B1 (en) 2014-05-13 2019-04-16 Senseware, Inc. System, method and apparatus for configuring a node in a sensor network
US9800646B1 (en) 2014-05-13 2017-10-24 Senseware, Inc. Modification of a sensor data management system to enable sensors as a service
US10833893B2 (en) 2014-05-13 2020-11-10 Senseware, Inc. System, method and apparatus for integrated building operations management
US10149141B1 (en) 2014-05-13 2018-12-04 Senseware, Inc. System, method and apparatus for building operations management
US9876653B1 (en) 2014-05-13 2018-01-23 Senseware, Inc. System, method and apparatus for augmenting a building control system domain
US11722365B2 (en) 2014-05-13 2023-08-08 Senseware, Inc. System, method and apparatus for configuring a node in a sensor network
US10687231B1 (en) 2014-05-13 2020-06-16 Senseware, Inc. System, method and apparatus for presentation of sensor information to a building control system
US10652767B1 (en) 2014-05-13 2020-05-12 Senseware, Inc. System, method and apparatus for managing disruption in a sensor network application
US10168691B2 (en) 2014-10-06 2019-01-01 Fisher-Rosemount Systems, Inc. Data pipeline for process control system analytics
US9652213B2 (en) 2014-10-23 2017-05-16 National Instruments Corporation Global optimization and verification of cyber-physical systems using floating point math functionality on a system with heterogeneous hardware components
WO2016106691A1 (en) * 2014-12-31 2016-07-07 Yahoo! Inc. Method and/or Apparatus for Generating Signal Processing Pipelines
US9547479B2 (en) * 2015-03-30 2017-01-17 Keysight Technologies, Inc. Method for adapting GUI-based instrument components in a visual programming language
US10503483B2 (en) 2016-02-12 2019-12-10 Fisher-Rosemount Systems, Inc. Rule builder in a process control network
US10031654B2 (en) * 2016-04-12 2018-07-24 Honeywell International Inc. Apparatus and method for generating industrial process graphics
US10318903B2 (en) 2016-05-06 2019-06-11 General Electric Company Constrained cash computing system to optimally schedule aircraft repair capacity with closed loop dynamic physical state and asset utilization attainment control
US10969407B2 (en) 2016-07-29 2021-04-06 National Instruments Corporation Soft front panel for concurrent radio frequency measurements
JP6610517B2 (ja) * 2016-11-30 2019-11-27 横河電機株式会社 オンデマンドサービス提供システム及びオンデマンドサービス提供方法
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US10978176B2 (en) 2018-06-29 2021-04-13 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
US11448521B2 (en) 2019-11-29 2022-09-20 Rohde & Schwarz Gmbh & Co. Kg System and method for performing measurements in a modular application environment

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0812206B2 (ja) * 1986-03-07 1996-02-07 ヒューレット・パッカード・カンパニー 測定器制御装置
US4901221A (en) * 1986-04-14 1990-02-13 National Instruments, Inc. Graphical system for modelling a process and associated method
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5555201A (en) * 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
US5541849A (en) * 1990-04-06 1996-07-30 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters
DE59109046D1 (de) 1991-02-22 1998-10-08 Siemens Ag Programmierverfahren für einen Logikbaustein
WO1992015959A1 (en) 1991-02-28 1992-09-17 Associative Measurement Pty. Ltd. Scientific instrument emulator
US5684980A (en) 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5497498A (en) 1992-11-05 1996-03-05 Giga Operations Corporation Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation
US5603043A (en) 1992-11-05 1997-02-11 Giga Operations Corporation System for compiling algorithmic language source code for implementation in programmable hardware
US5535342A (en) 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
WO1994015311A1 (en) 1992-12-28 1994-07-07 Xilinx, Inc. Method for entering state flow diagrams using schematic editor programs
US6064409A (en) * 1993-09-22 2000-05-16 National Instruments Corporation System and method for providing audio probe and debugging features in a graphical data flow program
WO1995009392A1 (en) 1993-09-27 1995-04-06 Giga Operations Corporation Implementation of a selected instruction set cpu in programmable hardware
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5583749A (en) 1994-11-30 1996-12-10 Altera Corporation Baseboard and daughtercard apparatus for reconfigurable computing systems
GB9508932D0 (en) * 1995-05-02 1995-06-21 Xilinx Inc FPGA with parallel and serial user interfaces
US5638299A (en) * 1995-06-22 1997-06-10 Miller; Keith Light weight, self-contained programmable data-acquisition system
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
US6230307B1 (en) * 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US6584601B1 (en) * 2000-02-07 2003-06-24 National Instruments Corporation System and method for converting graphical programs into hardware implementations which utilize probe insertion

Also Published As

Publication number Publication date
US7010470B2 (en) 2006-03-07
US20030195729A1 (en) 2003-10-16
US6954724B2 (en) 2005-10-11
EP1004085B1 (de) 2003-08-27
EP1004085A1 (de) 2000-05-31
US7177786B2 (en) 2007-02-13
WO1999009498A1 (en) 1999-02-25
US7650264B2 (en) 2010-01-19
US6993466B2 (en) 2006-01-31
US20030195732A1 (en) 2003-10-16
US7558711B2 (en) 2009-07-07
US20060004553A1 (en) 2006-01-05
US20030200076A1 (en) 2003-10-23
US6983228B2 (en) 2006-01-03
US20070225954A1 (en) 2007-09-27
US6219628B1 (en) 2001-04-17
ATE248403T1 (de) 2003-09-15
US7707014B2 (en) 2010-04-27
US20030195731A1 (en) 2003-10-16
US20070198236A1 (en) 2007-08-23
US20030195730A1 (en) 2003-10-16
DE69817581D1 (de) 2003-10-02
US20020004712A1 (en) 2002-01-10
US6961686B2 (en) 2005-11-01
US6934667B2 (en) 2005-08-23
US20070093994A1 (en) 2007-04-26
US6934668B2 (en) 2005-08-23
US20010025231A1 (en) 2001-09-27

Similar Documents

Publication Publication Date Title
DE69817581T2 (de) System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen
US8150673B1 (en) Partitioning a model in modeling environments
US8700368B1 (en) Variants in graphical modeling environments
Lis et al. Synthesis from VHDL
US8078980B2 (en) User defined wire appearance indicating communication functionality in a graphical programming environment
US8074177B2 (en) User defined wire appearance indicating data type in a graphical programming environment
DE4420610A1 (de) Verfahren und Vorrichtung zum Konfigurieren von Speicherschaltkreisen
US9785415B2 (en) Remote interface to logical instruments
Esser An object oriented Petri net approach to embedded system design
DE60221462T2 (de) Vorrichtung und Verfahren zur High-Level-Synthese, Verfahren zur Produktion von logischen Schaltungen unter Verwendung des Verfahrens zur High-Level-Synthese,und Aufzeichnungsmedium
US6173245B1 (en) Programmable logic array device design using parameterized logic modules
US20020145629A1 (en) System and method for creating a graphical program including a plurality of portions to be executed sequentially
DE69634227T2 (de) Emulationssystem mit emulierten Mehrtaktzyklen pro Emulation-Taktzyklus und Signalweglenkung
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE10038499A1 (de) Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
US20130247019A1 (en) Specifying Memory Resource Implementations for Deployment of a Graphical Program to Programmable Hardware
DE10041111A1 (de) Verfahren zum Überarbeiten eines in einer Programmiersprache verfaßten Computerprogramms
US10235868B2 (en) Embedded shared logical instrument
Palanque et al. Towards an integrated proposal for Interactive Systems design based on TLIM and ICO
DE4310615C2 (de) Entwurf elektrischer Vorrichtungen mit mehreren Entwurfswerkzeugen, die zumindest teilweise untereinander inkompatibel sind
Buchenrieder et al. Industrial HW/SW Co-Design
Klehmet et al. TIPPtool: timed processes and performability evaluation
Györkös et al. The concept of an efficient computer aided software engineering tool
DE10160633C1 (de) Verfahren und Vorrichtung zum Simulieren einer zu verifizierenden Schaltungseinheit

Legal Events

Date Code Title Description
8363 Opposition against the patent