Folks, I'm attempting to write a lo-fi audio effects processor based around a 8 channel polyphase filter bank and I'm having problems with the DFT matrix multiplication. I've designed the filter bank, I implemented it in Matlab and have tested it and I am satisfied there are no horrific flaws in the basic concept. I've implemented the tapped delay line sampling and the decimation/expansion on the DSP and that works great. But - when I try to put the two banks of FIR filters and the DFT modulation in, it all goes wrong. The audio output is horribly corrupted, and sounds just like a filter bank going wrong. I have tested all the code on GCC under Linux and it's fully ANSI compatible and works in the X86 mockup I created (tested with audio and everything). I implemented an identity FIR filter bank and that works fine on the DSP board (it passes everything through cleanly) the problem is in the matrix multiplication. I originally started with some functions I had written and that worked on the X86 but it can't even get multiplying the input vector with an identity matrix right on the board. I switched to the TI c6700 dsp library implementation of complex matrix multiplication and the same thing happens. My DSP board (TI c6700 DSK starter kit thing) only has a parallel interface which makes debugging a complete nightmare. When the matrix multiplication is included a hum appears on the output (a couple of kilohertz by the sounds of things, I'm not close to an oscilloscope to check) which doesn't make any sense either. Has anyone heard of something like this? Is complex matrix multiplication some sort of taboo on DSP processors (I'd hope not, since it boils down to 32 bit float point multiplication and divison). Thanks in advance, Andrew.

# Complex Matrix Multiplication and Polyphase Filter Banks

Started by ●May 7, 2004

Reply by ●May 7, 20042004-05-07

"Andrew Hall" <ajh300@ecs.soton.ac.uk> wrote in message news:pan.2004.05.07.18.57.07.255866@ecs.soton.ac.uk...> Folks, > > I'm attempting to write a lo-fi audio effects processor based around a 8 > channel polyphase filter bank and I'm having problems with the DFT matrix > multiplication. > > I've designed the filter bank, I implemented it in Matlab and have tested > it and I am satisfied there are no horrific flaws in the basic concept. > > I've implemented the tapped delay line sampling and the > decimation/expansion on the DSP and that works great. But - when I try to > put the two banks of FIR filters and the DFT modulation in, it all goes > wrong. The audio output is horribly corrupted, and sounds just like a > filter bank going wrong. > > I have tested all the code on GCC under Linux and it's fully ANSI > compatible and works in the X86 mockup I created (tested with audio and > everything). > > I implemented an identity FIR filter bank and that works fine on the DSP > board (it passes everything through cleanly) the problem is in the matrix > multiplication. I originally started with some functions I had written > and that worked on the X86 but it can't even get multiplying the input > vector with an identity matrix right on the board. > > I switched to the TI c6700 dsp library implementation of complex matrix > multiplication and the same thing happens. My DSP board (TI c6700 DSK > starter kit thing) only has a parallel interface which makes debugging a > complete nightmare. > > When the matrix multiplication is included a hum appears on the output (a > couple of kilohertz by the sounds of things, I'm not close to an > oscilloscope to check) which doesn't make any sense either. > > Has anyone heard of something like this? Is complex matrix multiplication > some sort of taboo on DSP processors (I'd hope not, since it boils down to > 32 bit float point multiplication and divison). > > Thanks in advance, > > Andrew.There's no problem with doing matrix math on a dsp. It wouldn't appear in the dsp library if you shouldn't be doing it! Did you miss one of the "special requirements" listed in the documentation for that function? - Did you pad x with 6 extra words? - Did you double-word align x and y? - Do you meet the minimum dimensional requirements? - Are your sizes correct (i.e. don't screw up any of those factors of 2 for the complex numbers)? Keep trying to get that identity matrix working properly before going on. Brad