Download Graphical programs with FIFO structure for controller/FPGA

Transcript
US007945895B2
(12)
United States Patent
(10) Patent N0.:
US 7,945,895 B2
(45) Date of Patent:
*May 17, 2011
Breyer
(54) GRAPHICAL PROGRAMS WITH FIFO
(75)
*
,
,
0s
eta .
400% Andrade
4/2006 Peterson et a1.
7/2006 Kodosky
Inventor:
6,763,515 B1
7/2006 Vazquez
John R. Breyer, Austin, TX (US)
Notice:
FOREIGN PATENT DOCUMENTS
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U'S'C' 15403) by 1385 days‘
This patent is subject to a terminal dis-
EP
1 004 085 B1
8/2003
OTHER PUBLICATIONS
International search report and Written opinion for application No.
PCTMSZOOe/OMOIZmeiledJuI1~ 6, 2007
Clalmer'
(Continued)
Appl' N05 11/421,691
.
715/771
............ ..
(Continued)
Austin, TX (U S)
(21)
0
7,024,660 B2
7,028,222 B2
6,219,628 B1
(73) Assignee: National Instruments Corporation,
(*)
gogoskkz et 3%
STRUCTURE FOR CONTROLLER/FPGA
COMMUNICATIONS
Primary Examiner * John Chavis
_
(74) Attorney, Agent, or Firm * Meyertons Hood Kivlin
(22) Flled'
Jun‘ 1’ 2006
KoWert & GoetZel, P.C.; Jeffrey C. Hood; Mark S. Williams
Us 2007/0089063
PI‘IOI‘
A1Publication
APR 19,Data
2007
_
System and method for communicating between graphical
_
programs executing on respective devices, e.g., a program
Related U-s- APPlleatmn Data
mable hardware element (PHE) and a controller. The system
(63) Continuation-in-part of application No. 11/252,001,
Includes a ?rst node repreSemmga?rSt 1n’ ?rst Du? (FIFO)
?led on Oct 17 2005 HOW Pat NO 7 606 950
'
(51)
’
'
'
’
’
structure, and a second node prov1d1ng a controller rnterface
'
to the FIFO structure. A ?rst portion of the FIFO is imple
Int Cl
mented on the PHE, and a second portion of the FIFO is
G08]? /45
(52)
’
(2006 01)
implemented in memory of the controller. The ?rst and sec
'
US. Cl. ...... .... ...... ... .................................... .. 717/113
ond nodes are operable to be included respectively in ?rst and
Second graphical programs’ Where the ?rst graphical program
Fleld 0f ~(jla'ssl?catlon Search . . . . . . . . . . . . .
is deployable to the
See aPPheanOn ?le for Complete Search hlstol'y-
gram is deployable to the controller, and Where the graphical
_
(56)
programs communicate via the FIFO in cooperatively per
References Clted
forming a speci?ed task. The FIFO may implement a Direct
Memory Access (DMA) FIFO, Where at least part of a DMA
U.S. PATENT DOCUMENTS
4/1990 Kodosky et a1.
4,914,568 A
5,481,741 A
Where the Second graphical pro
controller is implemented on or coupled to the PHE.
43 Claims, 13 Drawing Sheets
1/1996 McKaskle et al.
include first node representing a FIFO in a first
graphical program, where a portion of the
FIFO is deployable to a programmable
hardware element and a second portion of the
FIFO ls deployable to a computer system
coupled to the programmable hardware
element
include a second node providing a controller
interface to the FIFO in 5 second graphical
program
504
(optional)
in response to the inclusion of the first node,
automatically generate data transfer logic
implementing at least a portion of FIFO
functionality for the FIFO tor deployment to
the programmable hardware element
i
deploy the first graphical program and
(optionally) the generated data transfer lOglO
to the programmable hardware element, and
the second graphical plog rem to the computer
system
5%
concurrently execute the first graphical
program on the programmable hardware
element and the second graphical program on
the computer system, where the first and
second graphlcal programs communicate via
the FlFO to cooperatively perform a specified
task
.5111
US 7,945,895 B2
Page 2
U.S. PATENT DOCUMENTS
7,085,670 B2 *
7,530,052 B2 *
8/2006 Odom et al' """""""" " 702/127
5/2009 Morrow et al.
. 717/113
7,565,609 B2 *
7/2009 Vrancic et a1‘ “““““““ “ 715/734
2001/0020291 A1
2003/0034998 A1
9/2001 Kudukoli et 31‘
2/2003 Kodosky et al.
OTHER PUBLICATIONS
Steven S. Lumetta and David E. Culler; “Managing Concurrent
A
f Sh dM
A t. M
,,' IEEE P
d.
f
00655 or I are
emory
c We.
essages ,-
rocee lngs 0
the International Parallel Processing Symposium; Apr. 1998; pp.
272-278.
2003/0040881 A1 * 2/2003 Steger et al. ................ .. 702/123
2003/ 0192032 A1 * 10/2003 Andrade et al.
. 717/124
2004/0015924 A1*
1/2004 Shah et al. .... ..
. 717/154
Michel Dubois and Christoph Scheurich; “Memory Access Depen
dencies in Shared-Memory Multiprocessors”; IEEE Transactions on
Software Engineering; Jun. 1990; pp. 660-673; vol. 16, No. 6.
2005/0257194 A1
11/2005 MOIIOW
Narain H. Gehani; “Capsules: A Shared Memroy Access Mechanism
2005/0257195 A1 *
11/2005 MOIIOW et a1~ ~~~~~~~~~~~~~ ~~ 717/109
2006/0015862 A1
2006/0041859 A1
2006/0053211 A1
1/2006 Odom
2/2006 Vmncic
3/2006 Komerup
2007/0044072 A1 *
2/2007
2007/0088865 A1*
4/2007
for Concurrent C/C++”; IEEE Transactions on Parallel and Distrib
uted Systems; Jul. 1993; pp. 795-811; Vol.4, No. 7.
“LabVIEW Real-Time Module User Manual”, Apr. 2004 Edition; 72
pages; National Instruments Corporation.
Hayles ........................ .. 717/113
* cited by examiner
US. Patent
May 17, 2011
Sheet 1 0f 13
US 7,945,895 B2
E2QO6
mm
32 m
US. Patent
May 17, 2011
Sheet 2 0f 13
mzE?oa
@EQ52 @0320
US 7,945,895 B2
cm
9939m
US. Patent
May 17, 2011
Sheet 3 0f 13
US 7,945,895 B2
w?
mhgxow
EwmQ 256
c5
58,6E5:5
US. Patent
May 17, 2011
Sheet 4 0f 13
US 7,945,895 B2
9582.wz mi
a
$3-59
mm?
@
E
C
O
D
Q
EQ E
26E
wmupi
wgzew
mmat
US. Patent
May 17, 2011
Sheet 5 0f 13
US 7,945,895 B2
mm95m
ESQ .wm
US. Patent
May 17, 2011
Sheet 7 0f 13
include first node representing a FIFO in a first
graphical program, where a portion of the
FIFO is deployable to a programmable
hardware element and a second portion of the
FIFO is deployable to a computer system
coupled to the programmable hardware
element
Q
l
include a second node providing a controller
interface to the FIFO in a second graphical
program
5%
l
(optional)
in response to the inclusion of the first node,
automatically generate data transfer logic
implementing at least a portion of FlFO
functionality for the FIFO for deployment to
the programmable hardware element
506
l
deploy the first graphical program and
(optionally) the generated data transfer logic
to the programmable hardware element, and
the second graphical program to the computer
system
@
l
concurrently execute the first graphical
program on the programmable hardware
element and the second graphical program on
the computer system, where the first and
second graphical programs communicate via
the FIFO to cooperatively perform a specified
task
5m
Figure 5
US 7,945,895 B2
US. Patent
May 17, 2011
Sheet 8 0f 13
US 7,945,895 B2
FIFO node
602
loop structure
/
603
Figure 6A
FIFO manager node
loop structure
604
605
Figure 6B
US. Patent
May 17, 2011
Sheet 9 0f 13
6:928 E2Q83EU E9 5
Q
US 7,945,895 B2
U6OSE82N8E% moE
@
E2:5
8QE3D%CSQ 3E. E2w“9m52E6mQ
GE
2.w:<56
"
OE6EmQ:32E95:Q60
968wmQ<29.U.
m
Em.65E3
E,
cm?
W
gmwwa
m
46K
M
I<QM
mm:m|.
US. Patent
May 17, 2011
Sheet 10 0f 13
3HQ8E%Q Emao 8|“
US 7,945,895 B2
2u65E8O8N%E meE
2:5E
25we
8mE3Q%SE mow“ Q@E6m235Q
OKEQ EQ
E mEQ Mm
2.
mm
6E3E21U6 <9?
US. Patent
May 17, 2011
Sheet 11 0f 13
US 7,945,895 B2
5E95% wow
6:2059: Q
Il
95E360610E% moi
2<w39m
25 OK.
@QE529Q Ew B
9A
F[
5:ONE“6SE8 <0E
528 :2v New
US 7,945,895 B2
1
2
GRAPHICAL PROGRAMS WITH FIFO
STRUCTURE FOR CONTROLLER/FPGA
COMMUNICATIONS
4,914,568; 5,291,587; 5,301,301; and 5,301,336; among oth
ers, to Kodosky et al disclose a graphical programming envi
ronment Which enables a user to easily and intuitively create
a graphical program. Graphical programming environments
such as that disclosed in Kodosky et al can be considered a
higher and more intuitive Way in Which to interact With a
CONTINUATION AND PRIORITY DATA
This application is a Continuation-In-Part of, and claims
computer. A graphically based programming environment
bene?t of priority to, US. patent application Ser. No. 11/252,
001, titled “Graphical Programs With Direct Memory Access
FIFO For Controller/FPGA Communications”, ?led Oct. 17,
can be represented at a level above text-based high level
programming languages such as C, Basic, Java, etc.
FIELD OF THE INVENTION
A user may assemble a graphical program by selecting
various icons or nodes Which represent desired functionality,
and then connecting the nodes together to create the program.
The nodes or icons may be connected by lines representing
data How betWeen the nodes, control How, or execution ?oW.
Thus the block diagram may include a plurality of intercon
The present invention relates to the ?eld of graphical pro
gramming, and more particularly to a system and method for
plays a procedure or method for accomplishing a certain
result, such as manipulating one or more input variables and/
2005, now US. Pat. No. 7,606,950 Whose inventor is John R.
Breyer, and Which is incorporated by reference in its entirety
as though fully and completely set forth herein.
nected icons such that the diagram created graphically dis
enabling a graphical program executing on a controller to
communicate With a graphical program executing on a pro
or producing one or more output variables. In response to the
20
grammable hardWare element, e.g., a ?eld programmable
gate array (FPGA).
25
execution procedure that corresponds to the displayed proce
dure. The graphical program may be compiled or interpreted
by a computer.
30
A graphical program may have a graphical user interface.
For example, in creating a graphical program, a user may
create a front panel or user interface panel. The front panel
may include various graphical user interface elements or front
panel objects, such as user interface controls and/or indica
35
tors, that represent or display the respective input and output
that Will be used by the graphical program, and may include
other icons Which represent devices being controlled.
Thus, graphical programming has become a poWerful tool
available to programmers. Graphical programming environ
DESCRIPTION OF THE RELATED ART
Traditionally, high level text-based programming lan
guages have been used by programmers in Writing application
programs. Many different high level text-based programming
languages exist, including BASIC, C, C++, Java, FORTRAN,
Pascal, COBOL, ADA, APL, etc. Programs Written in these
high level text-based languages are translated to the machine
language level by translators known as compilers or interpret
ers. The high level text-based programming languages in this
level, as Well as the assembly language level, are referred to
herein as text-based programming environments.
Increasingly, computers are required to be used and pro
grammed by those Who are not highly trained in computer
programming techniques. When traditional text-based pro
gramming environments are used, the user’s programming
skills and ability to interact With the computer system often
become a limiting factor in the achievement of optimal utili
Zation of the computer system.
ments such as the National Instruments LabVIEW product
have become very popular. Tools such as LabVIEW have
40
used for test and measurement, data acquisition, process con
45
ming model, programmable hardWare elements have increas
conceptually model a process often does not closely corre
ingly been included in devices, such as simulation, measure
50
used to program a computer system to model such a process.
In other Words, the requirement that a user program in a
text-based programming environment places a level of
abstraction betWeen the user’ s conceptualiZation of the solu
tion and the implementation of a method that accomplishes
data acquisition (SCADA) applications, modeling, simula
tion, image processing/machine vision applications, and
motion control, among others.
In parallel With the development of the graphical program
further complicated by the fact that a sequence of mathemati
cal formulas, steps or other procedures customarily used to
spond to the traditional text-based programming techniques
greatly increased the productivity of programmers, and
increasing numbers of programmers are using graphical pro
gramming environments to develop their softWare applica
tions. In particular, graphical programming tools are being
trol, man machine interface (MMI), supervisory control and
There are numerous subtle complexities Which a user must
master before he can e?iciently program a computer system
in a text-based environment. The task of programming a
computer system to model or implement a process often is
user constructing a diagram or graphical program using the
block diagram editor, data structures and/ or program instruc
tions may be automatically constructed Which characterize an
ment, and control devices, Where the programmable
hardWare element is con?gurable to perform a function, such
as simulation or modeling of a device, a measurement and/or
control function, modeling or simulation function, or any
other type of function. Typically, a softWare program, e.g., a
55
text based program or a graphical program, such as may be
this solution in a computer program. Thus, a user often must
developed in National Instruments Corporation’s LabVIEW
substantially master different skills in order to both concep
graphical development environment, is developed either
tualiZe a problem or process and then to program a computer
to implement a solution to the problem or process. Since a
manually or pro grammatically, and converted into a hardWare
con?guration program, e.g., a netlist or bit ?le, Which is then
user often is not fully pro?cient in techniques for program
60
ming a computer system in a text-based environment to
implement his solution, the ef?ciency With Which the com
puter system can be utiliZed often is reduced.
To overcome the above shortcomings, various graphical
programming environments noW exist Which alloW a user to 65
deployed onto the programmable hardWare element, thereby
con?guring the programmable hardWare element to perform
the function. For example, the programmable hardWare ele
ment may be a ?eld programmable gate array (FPGA). Simi
larly, the program may be an FPGA VI, operable to be
deployed to the FPGA.
construct a graphical program or graphical diagram, also
In many applications, a task, such as a measurement task,
referred to as a block diagram. US. Pat. Nos. 4,901,221;
may be performed conjunctively by programs executing
US 7,945,895 B2
3
4
respectively on a computer system and a programmable hard
Ware element coupled to the computer system, and thus may
ured to include) a DMA controller, described in more detail
alloWs LabVIEW users to run graphical programs on FPGA
hardWare. The FPGAs that LabVIEW can run on are comput
beloW. As described further beloW, in other embodiments
various data transfer logic may be implemented on the FIFO
to facilitate use of the FIFO by the ?rst and second graphical
programs. Alternatively, or in addition, a portion or all of the
FIFO interface may be implemented in softWare.
In some embodiments, other techniques of data transfer
ing nodes that are distinct from other computing nodes in the
may be used to interface to the FIFO. For example, in some
system, such as WindoWs or LabVIEW RT (LabVIEW “Real
7831R FPGA board, Which is a PXI board that includes an
embodiments, the recon?gurable device may not include data
transfer logic, e.g., DMA logic, coupled to or included in the
programmable hardWare element, and such logic may not be
FPGA that is targetable by LabVIEW FPGA. The PXI-7831R
used to transfer the data. There are tWo other common meth
itself is typically installed in a PXI chassis With a controller
(i.e., an embedded computer) that runs either WindoWs or
LabVIEW RT. Therefore, there are tWo computing nodes in
grammed I/O and interrupt-driven I/O. Programmed U0 is
require communication betWeen the programs during perfor
mance of the task. For example, LabVIEW FPGA is an add
on module for the LabVIEW development environment that
Time”) nodes. One speci?c example of this is the NI PXI
ods of doing device I/O other than DMA, knoWn as pro
the system, the FPGA (that runs LabVIEW FPGA), and the
controller (that runs LabVIEW or LabVIEW RT). These tWo
nodes are distinct, and yet may need to Work together and
communicate With each other.
In prior art systems, such communication has generally
been performed via either interrupts or register accesses. For
example, interrupts may be used to alloW an FPGA node to
send an event to the controller node, Which may then respond
to the event and perform an action. Interrupts have the draW
back of not being able to send data With the interrupt. Register
20
completely under the control of the host processor (CPU) and
the program that is running on it. The processor (CPU) may
move data to and from the device by performing reads and
Writes to the device, e.g., via messages and/or registers. The
processor may retrieve status information from the device
(such as Whether the data are ready) by also performing reads
to the device, Where reads and Writes to the device may occur
one after the other. Note that is a relatively sloW method of
moving data. For example, in Waiting for a block of data on
the device, the device may have to be continuously polled to
25
check the status until the data are ready, and then move the
access are often used to send data to and from the FPGA
data point by point by reading the device to put the data in ho st
device. HoWever, register accesses have the draWback of
being sloW, especially in the case of very large amounts of
data. For example, if 1,000,000 samples are to be transferred
betWeen the FPGA and the controller, 1,000,000 individual
memory.
Interrupt-driven U0 is similar to programmed I/O in that
the processor or CPU still moves data to and from the device
30
by having the device send interrupts to the processor. This can
35
SUMMARY OF THE INVENTION
One embodiment of the present invention comprises a sys
tem and method for communicating betWeen programs
executing respectively on a controller and a programmable
by reading and Writing to the device. HoWever, in this
approach status information may be received from the device
register accesses must typically be performed.
Thus, improved systems and methods are desired for com
municating betWeen programs executing respectively on a
computer system and a programmable hardWare element.
be much more ef?cient than programmed I/ O. Using the same
example as for programmed I/O, in Waiting for a block of data
on the device, to check the status the device does not have to
be continuously polled until the data are ready, rather, a pro
cess Would simply register to receive an interrupt from the
device and put the process thread to sleep until the interrupt
Was received, With no polling required. Data is still moved
40
point by point by the processor by reading the device to put
hardWare element (or alternatively, on respective program
mable hardWare elements).
the data into host memory.
A ?rst node representing a ?rst in, ?rst out data structure
(FIFO) may be included in a ?rst graphical program in
response to user input. In other Words, the ?rst node may
element may not be con?gured to control the data transfers.
For example, in some embodiments, the data transfers may be
performed via the controller’s processor, e.g., the processor
of the computer system, or that of a different controller. In
other Words, instead of using DMA to transfer data to and
from the FIFO, the controller’s processor executes softWare
instructions to perform the data transfers, referred to as pro
Thus, in some embodiments, the programmable hardWare
45
comprise a graphical representation of the FIFO. The ?rst
graphical program may comprise a ?rst plurality of intercon
nected nodes that visually indicate functionality of the ?rst
graphical program. The ?rst graphical program is intended
for deployment and execution on a programmable hardWare
50
?gurable device may be coupled via a bus to a computer
system (controller). Note that the bus may be any type of
transmission medium desired, including for example a trans
mission cable, a local area netWork (LAN), a Wide area net
the FIFO, e.g., may be con?gurable to specify one or more of:
55
Ware element to controller memory, and the data type of the
FIFO structure, among others. The FIFO structure node may
60
mable hardWare element, e.g., an FPGA, of the recon?g
urable device.
the recon?gurable device may also include (e.g., be con?g
also be operable to provide status information for the FIFO
structure, such as Whether the FIFO (or the portion imple
mented on the programmable hardWare element) is full, and
so forth.
In one embodiment, the FIFO may be implemented as a
DMA FIFO, although it should be noted that this is but one of
numerous Ways to implement the FIFO. In this embodiment,
depth of the FIFO structure (described in more detail beloW),
direction of the FIFO structure, i.e., controller memory to
programmable hardWare element, or programmable hard
Work (WAN), e.g., the Internet, etc., including Wired or Wire
less transmission means, as desired. For example, in preferred
embodiments, at least a ?rst portion of the FIFO is operable to
be implemented on a programmable hardWare element. For
example, at least a ?rst portion of the FIFO data storage
elements may be operable to be implemented on a program
grammed I/O.
Note that in some embodiments, the ?rst node, e.g., the
FIFO node, may be con?gurable to specify some attributes of
element, e.g., such as on recon?gurable device. The recon
65
A second node may be included in a second graphical
program in response to second user input, Where the second
node is operable to provide a controller interface to the FIFO
structure. Like the ?rst graphical program, the second graphi
cal program may comprise a second plurality of intercon
US 7,945,895 B2
5
6
nected nodes that visually indicate functionality of the second
graphical program. The second graphical program is intended
ality, the second node may represent the speci?ed function
ality of the FIFO structure in the second graphical program.
For example, if FIFO read functionality Were selected, the
for deployment and execution on a controller, such as the
computer system (or another computer system) or another
controller. The second graphical program (i.e., block dia
second node may then function as a FIFO read node in the
second graphical program. In one embodiment, the appear
ance of the second node may be automatically modi?ed to
re?ect or indicate the speci?ed functionality, e.g., the node’s
gram) may include a loop structure or other graphical pro
gram construct(s) as desired, and the second node, Which may
icon, color, shape, or label, may be modi?ed in accordance
With the selected option.
be referred to as a FIFO manager node, may be contained
therein.
In some embodiments, a second portion of the FIFO struc
ture is operable to be implemented in memory of the control
In some embodiments, to provide the one or more select
able options for specifying the desired function of the FIFO
structure, program code, e.g., comprised in the development
ler, e.g., the computer system. For example, a second portion
ofthe FIFO, e.g., a second portion ofthe FIFO’s data storage
elements, may be operable to be implemented in the memory
of the controller (or computer system or another computer
system). Thus, the FIFO structure may be comprised on both
the programmable hardWare element and the controller, and
thus may comprise a distributed FIFO.
In some embodiments, the second node, e. g., the FIFO
manager node may be con?gurable to specify a desired func
tion of the FIFO structure. For example, the second node may
environment and/ or the second node, and/or associated With
the second node, may be operable to determine the FIFO
structure’s con?guration, and only provide or present options
that are in accordance With the FIFO structure’s con?gura
tion. In other Words, the options provided by or for the second
node may be based on the FIFO structure’s con?guration. For
20
be operable to receive input specifying FIFO read operations,
FIFO Write operations, FIFO start operations, FIFO stop
operations, and FIFO con?gure operations, among other
FIFO methods or functionality. For example in one embodi
ment, to specify a desired function of the FIFO structure, one
or more selectable options for specifying the desired function
of the FIFO structure may be provided, and input, e.g. user
ration information included in, or associated With, the FIFO
structure node, i.e., the ?rst node, described above. Based on
25
input, may be received selecting one of the one or more
selectable options to specify the desired function of the FIFO
structure, after Which, the second node may be executable to
invoke or perform the desired function of the FIFO structure.
In various embodiments, the selectable options may be
provided by program code, e. g., program instructions, stored
in the memory of the computer system, e.g., comprised in the
development environment in Which the graphical program is
being Written and/or by the second node or program code
associated With the second node. For example, in preferred
30
or receiving input), the node may include both edit time and
runtime program code, Where the edit time code implements
functionality that may operate at edit time, and Where the
runtime code operates at runtime, the edit time code of the
node may execute to provide the options. In preferred
embodiments, such edit time code of the second node may
operate in conjunction With other program code, e.g., pro
gram code comprised in the development environment, e. g.,
the graphical program editor, to manage the presentation and
selection of the options.
this con?guration information, only those options that are
consonant With the con?guration information, i.e., With the
con?gured capabilities of the FIFO structure, may be pre
sented.
In some embodiments, determining the FIFO structure’s
con?guration may include accessing edit time source code of
the ?rst node, and/or a compiled bit ?le generated from the
source code of the ?rst node. For example, in one embodi
ment, the editor (of the development environment) may
access the ?rst graphical program source code, e.g., via a
project that includes the source code for both the ?rst and
35
second graphical programs. As another example, the editor
(or node or associated code) may access the compiled bit ?le
generated from the source code of the ?rst node, and thus this
access may be performed after compilation.
40
selectable options may specify a ?rst function that requires
embodiments, e. g., Where the second node functions as a user
interface node (i.e., is capable of displaying information and/
example, in one embodiment, the development environment
(e.g., editor), the second node, and/or program code associ
ated With the second node, may access and analyZe con?gu
In some embodiments, at least one of the one or more
one or more corollary functions. For example, in one embodi
ment, FIFO read functionality may alWays require prior per
formance of a FIFO start function, for example, or a validate
state function; thus, a selected option specifying FIFO read
operations may automatically specify inclusion of the FIFO
start or validate functionality in the graphical program, along
With the FIFO read functionality, this being but one simple
example. In preferred embodiments, this automatic inclusion
of corollary functionality based upon selected FIFO function
FIFO structure may be displayed by the node, e.g., “FIFO
options is transparent to the user. For example, in some
embodiments, the graphical program may not contain any
visible graphical program elements speci?cally indicating or
Read”, “Number of Elements”, “Timeout”, “Data”, and “Ele
representing the corollary functionality. Thus, if the second
50
In some embodiments, various attributes or ?elds of the
ments Remaining”, although other ?elds or attributes may be
used as desired. Note that provision of the selectable options
may be invoked in any of a variety of Ways. For example, in
one embodiment, the user may click (e.g., left-click, right
click, double click, etc., of a mouse or other pointing device)
on the node to invoke display of the options, eg in a drop
doWn display of the node. The user may then select one of the
options to specify the desired functionality of the FIFO struc
ture, e.g., by clicking on the desired option. Of course, any
node is con?gured to invoke the ?rst function, the second
55
Alternatively, in other embodiments, in response to the selec
tion of the option, the one or more additional graphical pro
60
Once the selection has been made, i.e., once the node/FIFO
structure has been con?gured to provide the desired function
gram elements, e.g., nodes, indicating or representing the
corollary functionality associated With the selected option
may automatically be included and displayed in the graphical
program.
other means for providing, displaying, and/or selecting the
selectable options are also contemplated, the above being but
an exemplary manner of doing so.
node may be executable to automatically invoke the one or
more corollary functions in addition to the ?rst function.
It should be noted that the ?rst graphical program, includ
65
ing the ?rst node, is preferably deployable to the program
mable hardWare element, While the second graphical pro
gram, including the second node, is preferably deployable to
the controller, or computer system, Where the ?rst and the
US 7,945,895 B2
7
8
second graphical program are executable to communicate via
be comprised on the programmable hardWare element at all,
the FIFO structure to cooperatively perform a speci?ed task.
In various embodiments, the FIFO structure may be imple
mented in any of a variety of Ways. For example, in some
embodiments, the FIFO structure may require data transfer
i.e., may simply be coupled to the programmable hardWare
element.
Thus, in some embodiments, the system may include the
computer system, Where the computer system includes a pro
cessor and memory, the programmable hardWare element,
logic for transferring data betWeenpor‘tions of the FIFO struc
ture. In different embodiments, the data transfer logic may be
implemented in softWare, and/ or hardWare, and may be com
prised in one or both of the controller and the recon?gurable
device.
For example, as noted above, in one embodiment, the FIFO
coupled to the computer system, and data transfer logic, in the
form of a DMA controller comprised on and/ or coupled to the
programmable hardWare element. In one embodiment, the
DMA controller may include ?rst DMA logic, coupled to or
comprised on the programmable hardWare element, Where
the ?rst DMA logic implements DMA functionality, and sec
ond DMA logic, comprised on the programmable hardWare
structure may be implemented as a Direct Memory Access
(DMA) FIFO, Where DMA is used to transfer data betWeen
the tWo portions of the FIFO. As is Well knoWn in the art of
element, Where the second DMA logic implements FIFO
functionality for the ?rst DMA logic. Once the ?rst and
memory access and management, a DMA controller is gen
erally used to facilitate direct access to memory in place of a
processor. Thus, in embodiments of the present system Where
the FIFO structure is implemented as a DMA FIFO, the
recon?gurable device may require a DMA controller, i.e.,
DMA logic, e. g., either coupled to and/ or implemented on the
20
programmable hardWare element. For example, in one
embodiment, the DMA controller may be included on the
same circuit board as the programmable hardWare element,
and may be communicatively coupled thereto to facilitate
direct memory access by the DMA FIFO, e.g., by the pro
25
grammable hardWare element, of the portion of the DMA
FIFO comprised in the memory of the controller (or computer
system). HoWever, in some embodiments, the DMA control
ler may not inherently support or provide FIFO functionality,
and so custom logic may need to be generated, as described
beloW.
Thus, in embodiments Where data transfer logic, e.g., a
memory controller, is required to transfer data betWeen por
tions of the FIFO, at least a portion of this data transfer logic
may be automatically generated in response to including the
?rst node in the ?rst graphical program, and may be generated
in accordance With con?guration information for the FIFO.
For example, in embodiments Where the FIFO is a DMA
FIFO, at least a portion of the DMA controller, i.e., additional
DMA logic, may be automatically generated in response to
including the ?rst node in the ?rst graphical program, and
may be generated in accordance With con?guration informa
tion for the DMA FIFO. The at least a portion of DMA logic
may be deployable to the programmable hardWare element to
implement FIFO functionality for the DMA controller, e.g.,
to implement the DMA FIFO functionality.
the execution of the ?rst graphical program to cooperatively
perform the speci?ed task. Note that in embodiments Where
the FIFO structure is implemented as a DMA FIFO, the FIFO
30
(possibly in conjunction With the DMA controller) preferably
facilitates direct memory access of the controller memory,
35
speci?cally, FIFO storage elements comprised in the memory
of the controller, by the ?rst graphical program, during execu
tion. As noted above, in other embodiments, the controller
transfers the data betWeen the controller and the recon?g
urable device, and so no special data transfer logic, e.g., such
as a DMA controller, is needed.
40
BRIEF DESCRIPTION OF THE DRAWINGS
A better understanding of the present invention can be
obtained When the folloWing detailed description of the pre
ferred embodiment is considered in conjunction With the
45
folloWing draWings, in Which:
FIG. 1A illustrates a computer system that may be suitable
for implementing an embodiment of the present invention;
FIG. 1B illustrates a netWork system comprising the com
50
computer system). Note that deploying the second graphical
program to the computer system may simply mean compiling
the program for execution by the processor, placing the pro
gram in a particular directory, or otherWise making sure that
the second graphical program is properly executable by the
computer system, since in preferred embodiments, the second
graphical program is developed on the computer system, and
thus may already be present.
programmable hardWare element, and the second graphical
program may be executed on the controller concurrently With
The ?rst graphical program, and optionally the at least a
portion of data transfer logic, e.g., of DMA logic, may be
deployed to the programmable hardWare element. The second
graphical program may be deployed to the controller (or
second graphical programs (and possibly some or all of the
DMA controller logic) have been deployed, the DMA con
troller may be operable to receive instructions from the ?rst
node and the second node and directly transfer data betWeen
the programmable hardWare element and the memory of the
computer system in accordance With the received instruc
tions.
Finally, the ?rst graphical program may be executed on the
55
puter system of FIG. 1A and a device suitable for implement
ing some embodiments of the present invention;
FIG. 2A illustrates an instrumentation control system
according to one embodiment of the invention;
FIG. 2B illustrates an industrial automation system accord
ing to one embodiment of the invention;
FIG. 3A is a high-level block diagram of an exemplary
system that may execute or utiliZe graphical programs;
FIG. 3B illustrates an exemplary system that may perform
control and/or simulation functions utiliZing graphical pro
In some embodiments Where the FIFO structure is a DMA
FIFO, the ?rst DMA controller portion may be coupled to the
programmable hardWare element, but may not actually be
implemented on the programmable hardWare element. In
other embodiments, the ?rst DMA controller portion may be
deployed to and comprised on the programmable hardWare
60
element. Node that in various other DMA FIFO embodi
ments, the DMA controller may be comprised entirely on the
programmable hardWare element, or, alternatively, may not
65
grams;
FIG. 4 is an exemplary block diagram of the computer
systems of FIGS. 1A, 1B, 2A and 2B and 3B;
FIG. 5 is a ?owchart diagram illustrating one embodiment
of a method for enabling a graphical program executing on a
controller to communicate With a graphical program execut
ing on a programmable hardWare element, according to one
embodiment;
US 7,945,895 B2
9
10
FIGS. 6A and 6B illustrate exemplary graphical programs
or random access memory such as DRAM, DDR RAM,
implementing a FIFO structure, respectively executable on a
SRAM, EDO RAM, Rambus RAM, etc.; or a non-volatile
programmable hardware element and a controller, according
memory such as a magnetic media, e.g., a hard drive, or
to one embodiment;
optical storage. The memory medium may comprise other
FIGS. 7A and 7B illustrate systems implementing various
embodiments of the present invention;
FIGS. 8A and 8B illustrate simpli?ed block diagrams of a
FIFO structure, according to one embodiment; and
types of memory as well, or combinations thereof. In addi
tion, the memory medium may be located in a ?rst computer
in which the programs are executed, or may be located in a
second different computer which connects to the ?rst com
puter over a network, such as the Internet. In the latter
FIG. 9 illustrates an embodiment of a FIFO implemented
on two recon?gurable devices including respective program
mable hardware elements, according to one embodiment.
While the invention is susceptible to various modi?cations
and alternative forms, speci?c embodiments thereof are
shown by way of example in the drawings and are herein
described in detail. It should be understood, however, that the
drawings and detailed description thereto are not intended to
limit the invention to the particular form disclosed, but on the
contrary, the intention is to cover all modi?cations, equiva
lents and alternatives falling within the spirit and scope of the
present invention as de?ned by the appended claims.
instance, the second computer may provide program instruc
tions to the ?rst computer for execution. The term “memory
medium” may include two or more memory mediums which
may reside in different locations, e. g., in different computers
that are connected over a network.
Carrier Mediumia memory medium as described above,
as well as signals such as electrical, electromagnetic, or digi
tal signals, conveyed via a communication medium such as a
bus, network and/or a wireless link.
20
Programmable Hardware Elementiincludes various
types of programmable hardware, recon?gurable hardware,
programmable logic, or ?eld-programmable devices (FPDs),
DETAILED DESCRIPTION OF THE PREFERRED
EMBODIMENTS
The following references are hereby incorporated by ref
such as one or more FPGAs (Field Programmable Gate
Arrays), or one or more PLDs (Programmable Logic
Devices), such as one or more Simple PLDs (SPLDs) or one
or more Complex PLDs (CPLDs), or other types of program
erence in their entirety as though fully and completely set
forth herein:
mable hardware. A programmable hardware element may
also be referred to as “recon?gurable logic”.
Incorporation by Reference
US. Pat. No. 4,914,568 titled “Graphical System for Mod
eling a Process and Associated Method,” issued on Apr. 3,
25
Mediumiincludes one or more of a memory medium,
30
1 990.
encompasses various types of mediums that can either store
US. Pat. No. 5,481,741 titled “Method and Apparatus for
Providing Attribute Nodes in a Graphical Data Flow Environ
ment,” issued on Jan. 2, 1996.
US. Pat. No. 5,481,741 titled “Method and Apparatus for
Providing Attribute Nodes in a Graphical Data Flow Environ
ment”.
US. Pat. No. 6,173,438 titled “Embedded Graphical Pro
program instructions/data structures or can be con?gured
35
gramming System” ?led Aug. 18, 1997.
US. Pat. No. 6,219,628 titled “System and Method for
40
Con?guring an Instrument to Perform Measurement Func
tions UtiliZing Conversion of Graphical Programs into Hard
ware Implementations,” ?led Aug. 18, 1997.
US. Patent Application Publication No. 20010020291
(Ser. No. 09/745,023) titled “System and Method for Pro
carrier medium, and/or programmable hardware element;
with a hardware con?guration program. For example, a
medium that is “con?gured to perform a function or imple
ment a software object” may be 1) a memory medium or
carrier medium that stores program instructions, such that the
program instructions are executable by a processor to perform
the function or implement the software object; 2) a medium
carrying signals that are involved with performing the func
tion or implementing the software object; and/or 3) a pro
grammable hardware element con?gured with a hardware
con?guration program to perform the function or implement
the software object.
45
Programithe term “program” is intended to have the full
grammatically Generating a Graphical Program in Response
breadth of its ordinary meaning. The term “program”
to Program Information,” ?led Dec. 20, 2000.
US. patent application Ser. No. 08/912,427 titled “System
and Method for Converting Graphical Programs Into Hard
ware Implementations” ?led on Aug. 18, 1997, whose inven
tors were Jeffrey L. Kodosky, Hugo Andrade, Brian Keith
Odom, and Cary Paul Butler.
US. patent application Ser. No. 10/177,553 titled “Target
Device-Speci?c Syntax and Semantic Analysis For a Graphi
includes 1) a software program which may be stored in a
memory and is executable by a processor or 2) a hardware
cal Program” ?led on Jun. 21, 2002, whose inventors were
Newton G. Petersen and Darshan K. Shah.
US. patent application Ser. No. 11/252,001, titled
“Graphical Programs With Direct Memory Access FIFO For
Controller/FPGA Communications”, ?led Oct. 17, 2005,
whose inventor is John R. Breyer.
50
Software Programithe term “software program” is
intended to have the full breadth of its ordinary meaning, and
includes any type of program instructions, code, script and/or
55
60
ming languages, such as C, C++, Pascal, Fortran, Cobol, Java,
assembly language, etc.; graphical programs (programs writ
ten in graphical programming languages); assembly language
language; scripts; and other types of executable software. A
The following is a glossary of terms used in the present
application:
software program may comprise two or more software pro
grams that interoperate in some manner.
Memory MediumiAny of various types of memory
?oppy disks 104, or tape device; a computer system memory
data, or combinations thereof, that may be stored in a memory
medium and executed by a processor. Exemplary software
programs include programs written in text-based program
programs; programs that have been compiled to machine
Terms
devices or storage devices. The term “memory medium” is
intended to include an installation medium, e.g., a CD-ROM,
con?guration program useable for con?guring a program
mable hardware element.
65
Hardware Con?guration Programia program, e.g., a
netlist or bit ?le, that can be used to program or con?gure a
programmable hardware element.