Dear TI,
I'm new to DSP programming, but have quite some experience in signal processing and in programming for microcontrollers.
I'm now working on a project which will use the C6742. For development, we therefore use the Logic OMAP-L138 EVM with the C6748 module.
I've started out with C6Flo to create a simple program which captures audio, filters one channel (and delays the other) and ouputs this audio on the line out.
I would now like to use an FIR filter with 48 taps. In the exported C code, I see the following:
ti_c6flo_c674dsplib_fir_v1_obj firc674_1_obj = {
{&FilterAudio1Channel48Taps_obj, &thread0_obj, 1, 1},
/* length (max 16) = */ 4,
/* filter taps [15:0] = */ { -0.0403375, -0.0909868, -0.153547, -0.043424,
0.494142, 1.52089, 2.7267, 3.55133,
3.55133, 2.7267, 1.52089, 0.494142,
-0.043424, -0.153547, -0.0909868, -0.0403375 },
NULL,
NULL
};
It says that the length is 4, but shouldn't that be 16?
Furthermore: Why is the maximum length 16? In the ti_c6flo_c674dsplib_fir_v1_create(), ti_c6flo_c674dsplib_fir_v1_init() and ti_c6flo_c674dsplib_fir_v1_proc() functions, I don't see why it could not be longer. Can the DSPF_sp_fir_gen() function in DSPlib for C674x devices not handle longer filters?
If I want to use a 48 tap function, is it safe to change the taps[16] element from the ti_c6flo_c674dsplib_fir_v1_obj struct to taps[48] and add the 48 filter coefficients to the taps element of all the objects? Or should I concatenate 3 FIR filters (each 16 taps) with some split and delay elements in between?
Best regards
Admar Schoonen
PS: how can you quote or paste code in this forum?
PS2: there is a small bug in the comment in the generated C code from C6Flo. In the ti_c6flo_c674dsplib_fir_v1_create() function, it says:
// 1) space to hold ny + (nh - 1) * 4 values
I guess this must be:
// 1) space to hold (ny + nh - 1) * 4 values