03-24-2009 10:36 AM
Hello,
I am currently struggling trying to recreate the Hilbert transform onto the FPGA keeping all the numbers to a maximum of 32bit and the processing time to a small enough tick count that I can run two signals of 100KHz through it.
I have a working system in LabVIEW windows but am really having issues when trying to only use integer numbers.
I am trying to calculate the Hilbert transform of real-valued function
Xr (t)® Xˆ (t)
,
the analytical signal:
X (t) X (t) i Xˆ (t)
and the instantaneous phase and frequency. Unfortunately this is proving more of a challange than I was hoping so was wandering if anyone had any ideas. I have attached all of the equations I am trying to reproduce, just dont think my maths is currently up to standards. Thankyou.
Pete
03-24-2009 07:44 PM
03-25-2009 10:29 AM
Hi, Attached is the code,
The problem I am having is that this needs to be implemented not only on FPGA but on a point by point basis so that I can implement the instantaneous phase and frequency on my latest signal value and calculate my desired output , a pulse of one or zero based on the most recent value I have recieved. I have tried doing a FFT input, multiply by -j and FFT-1, instead of the hilbert, though I am having problems merging the buffers that the two are using so that it functions as a point by point system on the FPGA.
Thank you.
Peter
04-01-2009 08:41 AM
Ok,
Slightly easier way of solving this problem but still need it sorting. Basically i am sampling an input at 10Khz on the FPGA, I cannot transport this up to the RT as wont have time, the RT is already doing other things.
For every reading I need to get the hilbert transform.
This can be achieved by doing an FFT, multiplying by 1j and then doing an inverse FFT
currently the FFT needs to store a buffer of the data so is consistantly leaving me a buffer behind.
I am trying to implement them on a point by point basis so that I can get the output of the latest individual sample at any one point.
regards
peter
04-01-2009 10:25 AM
Take a look at the Signal Processing>>Filters>>Advanced FIR Filter>>Parks-McClellen.vi
This vi, when given the appropriate inputs, should provide the FIR coefficients needed for a Hilbert Transformer filter.