Real-Time Measurement and Control

Showing results for 
Search instead for 
Did you mean: 

Discrete transfer function in LabView FPGA

Go to solution


I’m trying to build a control system, for that I’m using cRio 9053 to implement some transfer functions in Labview FPGA mode.

The test goes like this,

  • I have an acquisition card NI-9234 reads analog signals (AI) at 51kS/s.
  • I need to apply an arbitrary transfer function H(Z) to the incoming signal.
  • Stream the output via another card NI-9263 (AO).

I have already implemented the Butterworth filter and verified the results with a signal analyzer and I can see the frequency response of the filter (Bode Diagram).

The problem is when I try to use the (Discrete transfer function VI). I entered the correct coefficients of the TF (in the Z-domain): in this case, a simple lowpass filter, but the output is unchanged…

  • Can someone please tell me what I’m doing wrong?


0 Kudos
Message 1 of 3
Accepted by mohmih



1. You have a Delta-Sigma card, so you don't need to set the time of the FPGA loop, it is imposed by the hardware, and that is your sample time.

2. You must tune the discrete filter with the same sample time you will use on the FPGA.

3. Review the order of the parameters on the array, I am not sure the lower index of the array corresponds to grater power of z.

Message 2 of 3

Thank you so much for your response.


Your answer did helped me.

- I removed the samplerate parameter.

- I discretize my transfer functions with the the same sample-time of the AO card.

Things work just fine now.


PS: The order of the parameters is correct: [   ] + [    ]z + [   ]z² + ... 


Thanks again.

0 Kudos
Message 3 of 3