LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to implement Savitsky-Golay Filter on FPGA

Hi,

 

I am implementing my control algorithm using Compact RIO-9022, and I have to know the velocity and acceleration from the position signals (1st and 2nd derivative of position).

 

I have used the Savitsky-Golay filter to calculate derivatives and smooth signals in Scan mode, and it performs a nice job. But the max scan speed is too slow, scan period >=1ms, in this mode.

 

So, I am transferring files to FPGA style. But there is no exsiting S-G VIs like in scan mode.

 

Is there any advance to implement S-G filter on FPGA for beginner? or is it possible?  

 

Thank you in advance.

Wang

 

0 Kudos
Message 1 of 3
(3,875 Views)

I haven't done a lot with FPGA, and am not up-to-date on how well it handles non-integer arithmetic currently, but I see no reason you couldn't program a Savitzky-Golay Filter in a manner comparable to the Point-by-Point functions on the Signal Processing Palette.  If it's not obvious how these work, put the Median Point-by-Point filter on an empty Block Diagram and simply "open it up" -- it is coded in "ordinary LabVIEW" with a helper sub-VI, also coded in LabVIEW.  It shows how to initialize a point-by-point operation and what to do when the "next point" comes in.

 

Of course, you'll need code to implement the specific S-G filter you want.  There are some good references on how to do this on the Web.  And, will you look at that, there's an S-G filter in the Point-by-Point Palette -- if you can't use it directly in FPGA, maybe you could "adapt" its code ...

 

Bob Schor

0 Kudos
Message 2 of 3
(3,855 Views)

Thank you for your reply.

 

I have tried to implement the S-G filter followed the exsiting subVIs, but I failed to transfer the data format... array format cannot be used in FPGA mode...

 

I used the butterworth filter to do rough smoothing in the last... Hope I can get more information during the FPGA studying..

0 Kudos
Message 3 of 3
(3,806 Views)