Table Of Contents

Programming the Control I/O

Last Modified: August 8, 2019

The control I/O is part of the LabVIEW RIO architecture, which combines the LabVIEW Real-Time (RT) system, a user programmable FPGA, and user programmable I/O.

Find the control I/O, also known as user programmable I/O in the following diagram.

Figure 1. NI ELVIS III RIO Architecture

The NI ELVIS III provides three levels of programming that give you access to the control I/O:

  • LabVIEW RT Express VIs
  • LabVIEW RT Low Level VIs
  • LabVIEW FPGA I/O nodes

Refer to LabVIEW RIO Architecture for an introduction to the LabVIEW Real-Time system and LabVIEW FPGA.

LabVIEW RT Express VIs

The LabVIEW ELVIS III Toolkit includes configuration-based Express VIs to enable the rapid development of user programs.

These Express VIs simplify the creation of applications that fulfill common I/O operations, such as waveform acquisition and generation, PWM output, encoder input, SPI communication, and so on, by eliminating the need for users to program with the FPGA. When you create a LabVIEW RT application using the Express VIs, a predefined FPGA personality is automatically downloaded to the FPGA. This FPGA personality implements all of the low level functionality required to support the execution of the Express VIs on the RT processor.

The Express VIs support the following functionality:

Function Number of Channels
Analog Input (1 Sample) 16
Analog Input (n Samples) 16
Analog Input (continuous) 16
Analog Output (1 Sample) 4
Analog Output (n Samples) 4
Analog Output (continuous) 4
Digital Input (1 Sample) 40
Digital Input (n Samples) 40
Digital Output (1 Sample) 40
Digital Output (n Samples) 40
PWM Output 40
Encoder Input 20
I2C 2
Interrupt 8
Button 1

One sample, n samples, and continuous are three I/O modes of signal acquisition and generation. Continuous mode is available only for analog signals. For Express VIs that support different I/O modes, not all functions can operate simultaneously, due to resource conflicts. Refer to the LabVIEW ELVIS III Toolkit Help for more information about the I/O modes.

You cannot use an Express VI or Low Level VI in n samples mode to open channels from both banks. You can use two VIs in parallel and configure one to open channels from Bank A and another to open channels from Bank B.

The following figure shows an example of using the Button Express VI (highlighted) to acquire values from the user programmable button and display the values using a Boolean indicator. Refer to User Programmable Button for more details about the button. You can find this example in the LabVIEW Example Finder.

Refer to the LabVIEW ELVIS III Toolkit Help for more information about these Express VIs.

LabVIEW RT Low Level VIs

The LabVIEW ELVIS III Toolkit also includes Low Level VIs that provide fully programmatic access to the predefined FPGA personality. This gives you more flexibility in configuring each function, while retaining the ease of use of LabVIEW RT programming. The Low Level VIs provide very similar functionality as the Express VIs, but at a lower level of abstraction.

The following figure shows an example of using the Low Level VIs (highlighted) to open a reference to the user button, read the button value, and display the value by using a Boolean indicator.

Refer to the LabVIEW ELVIS III Toolkit Help for more information about these Low Level VIs.


The LabVIEW FPGA I/O nodes provide the lowest level of access to the control I/O and offer the highest degree of flexibility and performance.

Instead of using a predefined FPGA personality with fixed functionality, you can define your own functions by using the LabVIEW FPGA I/O nodes. LabVIEW FPGA allows for not only direct control of the control I/O, but also direct implementation of algorithms and data transfer in the FPGA. After defining the FPGA personality, you can then create a LabVIEW RT application that runs on the RT processor for high-level operations or further processing. You do not need to use an FPGA application in conjunction with an RT application.

The following figures show a LabVIEW FPGA application which reads values from the user button. The FPGA Main Default VI uses the FPGA I/O Node (highlighted) to write the values of the user button to the DI.BTN control. The RT Main VI uses the Read/Write Control method (highlighted) to read the value from the DI.BTN control and display it in the Button Value indicator.

Refer to Getting Started With LabVIEW FPGA for a series of videos that help you get started with building a LabVIEW FPGA application. Refer to the LabVIEW Help for more information about these FPGA I/O.

Figure 2. LabVIEW FPGA Project
Figure 3. FPGA Main Default VI
Figure 4. RT Main VI

Recently Viewed Topics