This content is not available in your preferred language.

The content is shown in another available language. Your browser may include features that can help translate the text.

Why Do the Digital Lines Read In the Same Value I Just Wrote Through the FPGA?

Updated May 12, 2023

Reported In

Hardware

  • sbRIO-9403
  • PCI-7830
  • PXI-7830
  • PCI-7833
  • PXI-7833
  • PXI-7831
  • PCI-7831
  • NI-9403

Software

  • LabVIEW FPGA Module

Issue Details

  • What are the Digital Data and Digital Enable FPGA methods and how do I use them?
  • How do I set the digital line on my R series card to a high Z or high impedance state?
  • Why Do the Digital Lines Read In the Same Value I Just Wrote Through the FPGA?

Solution

All of the digital lines on the R Series devices are bidirectional as well as all of the digital lines on the cRIO 9403 DIO Module. As is normal with TTL and CMOS signals, the Digital Input (DI) is high impedance and doesn't require a latch to hold the data and the Digital Output (DO) is low impedance and requires a latch to keep or hold the value written to the output on the output. To make these very different lines use the same connector, a switch known as Digital Enable is used. The figure below shows how this is done.

 
To keep things simple in LabVIEW FPGA, the DO function writes the desired value to Digital Data (DD) and send a true to Digital Enable (DE) to close the switch.  If you want to output on a digital line, just use the DO function. It is also very simple to read back what has been written to a digital line. Just read from the digital line (DI) after writing to it (DO). For more advanced functionality like two-way communication, you will need to use the DD and DE.

Additional Information

Two-Way Communication:

To perform two-way communication after performing a DO, write a False to DE before allowing the line to be powered externally using the Set Output Enable method of the FPGA Method Node. Read the input value in with DI. Once the line is no longer powered externally, write a true to DE and write the output value to DD as shown in the figure below.