Broken Wires When Porting a LabVIEW FPGA VI From an Older Version of LabVIEW

Updated Oct 18, 2024

Reported In

Hardware

  • PXIe-7846

Software

  • LabVIEW FPGA Module
  • LabVIEW 2024 Q3

Issue Details

I'm trying to port a FPGA VI from LabVIEW 2014 to LabVIEW 2024. After adding the FPGA target and all the connections, I'm not able to select the proper connection from the drop down FPGA I/O constant:

FPGA I/O constant being displayed

If I replace the FPGA I/O constant for a new one from the FPGA I/O the Palette, then the VI breaks with the following error:

You have connected two terminals of different types. The type of the source is (FPGA I/O [FPGA I/O]). The type of the sink is (FPGA I/O [FPGA I/O])

picture 2.png  

There is a slightly difference in the data type name displayed on the context help:

Difference in FPGA IO constants.png

Why is this error happenning and how can I solve it? 

Solution

This is happenning since we are working with FPGAs and not plane software development, then those connectors will have a route at the level of the FPGA code and it will mapp with the VHDL code, so it is not the same creating a generic FPGA I/O constant than intentionally creating a constant for that connector.

For this to work properly you have to start by pulling an I/O node from the project I/O instead of using the FPGA blocks in the pallete. Same goes for creating the constants whereby you must right click on the newly created node and “create constant” for any given input/output instead of using the palatte. Below are step by step instructions:

1.Drag one of the Connectors from the project to the subVI, it will create a FPGA I/O Node for that connector:Draggnig a FPGA I/O connector from the LabVIEW project to the VI 

2.Then, add a "To Word Integer VI" before the Next Value Indicator and connect the FPGA I/O Node that you created in the previous step:

3. Right-click on the FPGA I/O In Input terminal of the FPGA I/O Node and create a control:

A diagram of a programDescription automatically generated

4.Remove the old Input Channel Control and the old FPGA I/O Node, and rename the control:

5.Go to the front panel and link the connector pane terminal by clicking first to the top left corner input terminal and then click on the Input Channel Control:A screenshot of a computerDescription automatically generated

 

6.Go back to the FPGA VI and press Ctrl+B to remove all the broken wires:

A diagram of a computerDescription automatically generated

7.Rigth-click on the Input Channel input terminal of the subVI and select create constant, and take the constant out from the while loop:

8.Remove the old FPGA I/O constants and repeat step 8 for all the while loops.

 

Additional Information

Please note that you will need to perform a similar process for any output FPGA I/O constants, and the process is the same, just that in this example you will need to create a cluster to use as the input terminal of the subVI.