Forums

Complex Matrix Multiplication and Polyphase Filter Banks

Started by Andrew Hall May 7, 2004
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.
"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