How to Use the VT Module’s User Programmable FPGA
This article gives a step-by-step instruction how to create a system variable that is then used for the communication between CANoe on one side and the VT module, where it has been computed by the built-in FPGA, on the other side.
How can I generate and use system variables for my user programmable FPGA of my VT module?
How can I import these system variables into CANoe?
User FPGAs within VT modules (VT1004A FPGA, VT2004A FPGA, VT2516A FPGA, VT2710, VT2816 FPGA, VT2848 FPGA, VT7009A FPGA) have access to the I/O hardware on the VT System modules and communicate with CANoe and therefore allow the implementation of customer specific functionality. For example time critical functions can be sourced out to the FPGA hardware instead of executing them software-based with CANoe to allow a faster calculation of sensor/actor values than a software based calculation within CANoe would allow (more product information).
General use of this FPGA is described in the VT System User-Programmable FPGA Manual (PDF) which is available from CANoe Help | Index | FPGA (VT System) | User Programmable FPGA.
Download and install the Intel compiler Quartus Prime Lite Edition to compile a project used by the FPGA manager (this download requires registration to the INTEL FPGA program).
https://fpgasoftware.intel.com/?edition=lite (Quartus Prime and Cyclone IV device support files needed)
On the Intel homepage you find more information about FPGA programming, training and design: https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/download.html
Add the license file from Quartus to the Quartus installation. You can find this license lic_VT_User_FPGA.dat inside the CANoe installation folder e. g.: C:\Program Files\Vector CANoe 11.0.81\Exec32\VTSFPGAAssets
After installing Quartus software it is possible to compile projects using the FPGA Manager.
- Generate a new system variable using the CANoe FPGA Manager
Start the FPGA Manager via Hardware | Tools | FPGA Manager (this requires CANoe to close).
Open an FPGA project from the list on the left and add a new system variable: Define a new system variable for example with the name: NEWtestSystemvariable
Press the Save button to save the *vhd file.
- Write the system variable to the FPGA
To use the new system variable inside the VHDL code open the changed *.vhd file with an editor like Notepad++ or Emacs. Now you could write your own VHDL code. An example you find inside the User Manual VT System FPGA Manager.
C:\Program Files\Vector CANoe 11.0.81\Exec32\VTSFPGAAssets\Examples\VT2848_Crank_Cam_FPGA\quartus\HDL\user\*.vhd
Compile the project with the FPGA Manager.
Make sure your VT module is connected.
Click Persist to load the project permanently to the FPGA.
- Use this new system variable in CANoe
Scan for modules and go to Hardware | Configuration to open the VT System Configuration. Click Hardware | Adapt to Connected Modules…
Now scan for modules to load the changed FPGA module:
Open CANoe and go to Hardware | Configuration to open the VT System Configuration. Add the application specified VT module by clicking Module | Add Application Specific and select the VT module you compiled with the FPGA Manager:
After these steps, the new system variables can be used in CANoe in the same way as all other VT system variables.
Going to Hardware | Control | VT System Control you see the variable in the Interactive Schematic View as one of the User Values: NEWtestSystemvariable.
In CANoe you can see the new system variable (NEWtestSystemvariable) in the Systems Variable Configuration (under Environment | System Variables).
- Restart CANoe again after you have turned-off/on power supply of VT System.
- Scan for modules.
Go to Hardware | Configuration to open the VT System Configuration. Click Hardware | Adapt to Connected Modules…
Now scan for modules:
- Repeat the step to load the application specified VT module. The changed VT module is loaded with the new system variable:
Please complete all required fields. Fields marked with * are required.