06-23-2012 09:06 AM
I'm trying to implement some audio effects in xilinx system generator for dsp. One of them is the wah effect, which is in general a band pass filter which goes up and down in the frequency domain continuously.
My idea is to implement this using some parallel filters and a multiplexer that changes the signal to pass from one to another during simulation. As I see, if I want to use many filters (up to 10), I have increased cost in my implementation, which may cause lag problems lately, working on my fpga (want to work in real time).
Is there any way to make this run with reloadable coefficients with just one FIR Compiler block?
thank you in advance.
PS. I currently use the "From Workspace" block to import my audio signal, created with the "wavread" command.
06-24-2012 07:20 AM
working in parallel with the filters is indeed a novel idea but it will take more resource and less time obviously..So you can use virtex family of FPGA's in this case to overcome the resource problem aslo u can use recursive algorithms to curtail your resource usage...so its upto u how u take up the solution..
06-25-2012 03:25 AM
That was exactly my question...! A simple explanation of how can I use a recursive algorithm. Maybe with the reloadable coefficients port? how does this work.
I'm aboun to use a Virtex II - XUP board.
Thanks for the reply.
06-25-2012 07:31 AM
Is there a reason you're wanting to do a bunch of parallel filters rather than a single filter structure and reloading the coefficients to get the different passband frequencies? It seems like this would be a huge waste of resources and the fidelity would not be as good either because of the constant switching.
06-25-2012 09:42 AM
06-25-2012 09:51 AM
Well actually, I believe wah filters are typically implemented as IIR peaking/resonating filters (obviously, this isn't something that the FIR core will help you with). Usually 2nd order does the trick just fine.
Have a look a the sysgen IIR demos. Modifying those to use reloadable coefficients would be nearly trivial.