IP Library Granted Patent US 8,122,238
Granted Patent B2
US 8,122,238 · App. 12/104,901 · Granted Feb 21, 2012

Multi-channel algorithm infrastructure for programmable hardware elements

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,122,238
App. No.
12/104,901
Granted
Feb 21, 2012
Kind
B2
Abstract

System and method for implementing multi-channel operations in a programmable hardware element (PHE). A hardware configuration program, including a processing function, inputs and outputs of the processing function, a plurality of channels, and channel scanning functionality for the plurality of channels, is specified. A PHE is configured with the hardware configuration program, including implementing the processing function and the channel scanning functionality on the PHE. A respective state and configuration of each of the plurality of channels is stored in a memory of the PHE to enable logic-sharing between each of the plurality of channels. The PHE is operated, including performing channel scanning on the plurality of channels, and updating the configuration of one or more of the channels in the memory of the PHE without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the PHE.

Claims (162)

1. A method comprising:

specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function, wherein the processing function comprises one or more filters;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

2. The method of claim 1 , wherein said specifying a hardware configuration program comprises:

creating a graphical program that specifies functionality of the hardware configuration program, wherein the graphical program comprises a plurality of interconnected nodes that visually represent functionality of the graphical program; and

generating the hardware configuration program based on the graphical program.

3. A method, comprising:

specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element;

creating a second program, wherein the second program is executable on a host computer coupled to the programmable hardware element to provide updated configuration information for the one or more channels at run-time; and

wherein said updating the configuration information for the one or more of the channels comprises:

executing the second program on the host computer system concurrently with operation of the programmable hardware element, wherein said executing comprises the second program providing the updated configuration information for the one or more channels to the programmable hardware element.

4. The method of claim 3 ,

wherein the second program implements a graphical user interface (GUI) for the programmable hardware element;

wherein said updating the configuration information further comprises:

receiving user input to the GUI specifying the updated configuration information for the one or more channels; and

wherein said providing for the processing function to the programmable hardware element comprises:

the second program providing the specified updated configuration information for the one or more channels to the programmable hardware element; and

wherein said updating the configuration information for one or more of the channels is performed based on the updated configuration information.

5. A method, comprising:

specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function, wherein the processing function comprises a PID (proportional-integral-derivative) control function;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

6. The method of claim 5 , wherein the configuration information for each channel comprises PID gains for the channel;

wherein said updating the configuration information for one or more of the channels comprises:

receiving updated PID gains for a channel;

comparing the updated PID gains with stored PID gains for the channel;

if the updated PID gains for the channel are different from the stored PID gains:

set a Boolean indicating that the updated PID gains for the channel are different from the stored PID gains; and

overwrite the stored PID gains for the channel with the updated PID gains;

wherein said performing channel scanning comprises:

when scanning the channel, in response to the Boolean indicating that the updated PID gains for the channel are different from the stored PID gains:

performing a bumpless transfer for the channel; and

resetting the Boolean.

7. A system, comprising:

a programmable hardware element (PHE) configured with:

a processing function having inputs and outputs, wherein the processing function comprises a PID (proportional-integral-derivative) control function;

a plurality of channels corresponding to the inputs and outputs;

channel scanning functionality for the plurality of channels; and

a memory configured to store respective state and configuration information for each of the plurality of channels, wherein the stored state and configuration information enables logic-sharing between each of the plurality of channels;

wherein the PHE is configured to:

perform channel scanning on the plurality of channels;

receive updated configuration information for one or more of the channels; and

update the configuration information for the one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

8. A system, comprising:

a programmable hardware element (PHE) configured with:

a processing function having inputs and outputs;

a plurality of channels corresponding to the inputs and outputs;

channel scanning functionality for the plurality of channels; and

a memory configured to store respective state and configuration information for each of the plurality of channels, wherein the stored state and configuration information enables logic-sharing between each of the plurality of channels;

a host computer, communicatively coupled to the PHE, wherein the host computer comprises a processor and memory, and wherein the memory stores a program executable by the processor to update the configuration information for the channels on the PHE;

wherein the PHE is configured to:

perform channel scanning on the plurality of channels;

receive updated configuration information for one or more of the channels; and

update the configuration information for the one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element;

wherein, to update the configuration information, the system is configured to execute the program on the host computer concurrently with operation of the programmable hardware element to provide the updated configuration information for one or more of the channels to the PHE at run-time.

9. The system of claim 8 ,

wherein the program implements a graphical user interface (GUI) for the PHE, and wherein, to update the configuration information for the processing function in the configuration memory element, the system is configured to:

receive user input to the GUI specifying the updated configuration information; and

provide the updated configuration information to the programmable hardware element.

10. A system, comprising:

a programmable hardware element (PHE) configured with:

a processing function having inputs and outputs, wherein the processing function comprises one or more filters;

a plurality of channels corresponding to the inputs and outputs;

channel scanning functionality for the plurality of channels; and

a memory configured to store respective state and configuration information for each of the plurality of channels, wherein the stored state and configuration information enables logic-sharing between each of the plurality of channels;

wherein the PHE is configured to:

perform channel scanning on the plurality of channels;

receive updated configuration information for one or more of the channels; and

update the configuration information for the one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

11. The system of claim 7 ,

wherein the configuration information for each channel comprises PID gains for the channel;

wherein to update the configuration information for the one or more of the channels, the system is configured to:

receive updated PID gains for a channel;

compare the updated PID gains with stored PID gains for the channel;

if the updated PID gains for the channel are different from the stored PID gains:

set a Boolean indicating that the updated PID gains for the channel are different from the stored PID gains; and

overwrite the stored PID gains for the channel with the updated PID gains;

wherein to perform channel scanning the system is configured to:

when scanning the channel, in response to the Boolean indicating that the updated PID gains for the channel are different from the stored PID gains:

perform a bumpless transfer for the channel; and

reset the Boolean.

12. A system, comprising:

means for specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

means for configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

means for operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element;

means for creating a second program, wherein the second program is executable on a host computer coupled to the programmable hardware element to provide updated configuration information for the one or more channels at run-time; and

wherein said updating the configuration information for the one or more of the channels comprises:

executing the second program on the host computer system concurrently with operation of the programmable hardware element, wherein said executing comprises the second program providing the updated configuration information for the one or more channels to the programmable hardware element.

13. The system of claim 12 , wherein said means for specifying a hardware configuration program comprises:

means for creating a graphical program that specifies functionality of the hardware configuration program, wherein the graphical program comprises a plurality of interconnected nodes that visually represent functionality of the graphical program; and

means for generating the hardware configuration program based on the graphical program.

14. The system of claim 12 ,

wherein the second program implements a graphical user interface (GUI) for the programmable hardware element;

wherein said updating the configuration information further comprises:

receiving user input to the GUI specifying the updated configuration information for the one or more channels; and

wherein said providing for the processing function to the programmable hardware element comprises:

the second program providing the specified updated configuration information for the one or more channels to the programmable hardware element; and

wherein said updating the configuration information for one or more of the channels is performed based on the updated configuration information.

15. A system, comprising:

means for specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function, wherein the processing function comprises one or more filters;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

means for configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

means for operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

16. A system, comprising:

means for specifying a hardware configuration program, wherein the hardware configuration program comprises a processing function, wherein said specifying comprises:

specifying inputs and outputs of the processing function, wherein the processing function comprises a PID (proportional-integral-derivative) control function;

specifying a plurality of channels; and

specifying channel scanning functionality for the plurality of channels;

means for configuring a programmable hardware element with the hardware configuration program, wherein said configuring comprises:

implementing the processing function and the channel scanning functionality on the programmable hardware element;

storing a respective state and configuration of each of the plurality of channels in a memory of the programmable hardware element, wherein said storing enables logic-sharing between each of the plurality of channels; and

means for operating the programmable hardware element, wherein said operating comprises:

performing channel scanning on the plurality of channels; and

updating the configuration information for one or more of the channels in the memory of the programmable hardware element without interrupting the channel scanning, without taking any of the channels offline, and/or without interrupting a continuity of an output of the programmable hardware element.

17. The system of claim 16 , wherein the configuration information for each channel comprises PID gains for the channel;

wherein said updating the configuration information for one or more of the channels comprises:

receiving updated PID gains for a channel;

comparing the updated PID gains with stored PID gains for the channel;

if the updated PID gains for the channel are different from the stored PID gains:

set a Boolean indicating that the updated PID gains for the channel are different from the stored PID gains; and

overwrite the stored PID gains for the channel with the updated PID gains;

wherein said performing channel scanning comprises:

when scanning the channel, in response to the Boolean indicating that the updated PID gains for the channel are different from the stored PID gains:

performing a bumpless transfer for the channel; and

resetting the Boolean.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2008
From: KASSAS, ZAHER; LEWIS, JAMES M.
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 020819/0570 →