Reply by robert bristow-johnson●September 28, 20152015-09-28
On 9/28/15 3:48 AM, Roman Rumian wrote:
> Hi Freiends,
hey Roman.
nice to see you here at comp.dsp.
>
> DSP concept guys say, that it's time to use ARM Cortex-M
> microcontrollers for embedded DSP systems,
take a look at http://www.dspconcepts.com/third-party-partners . note
who is on the top of the page. and they ain't doing ARM (yet that i
know of). there's a SHArC version of Audio Weaver, too.
> so I looked at CMSIS library
> of filtering functions, and found that it is of block type.
> As you know, the most painful feature of ARM Cortex-M architecture is
> the lack of circular buffer addressing mode.
how painful is it to (assuming you're coding in C) to mask the index
with 0xFFFF (or some other power of 2 minus 1)? whatever is the longest
possible delay in your delay line (or FIR buffer or whatever), round
that up to the nearest power of two. and mask the index consistently.
how hard is that?
> I cannot find an example of this functions application for continuous,
> real-time signal, because, as I guess, there is a big problem of input
> samples block gathering in a structure compatible with CMSIS FIR
> function.
dunno what CMSIS is. but i do not know what the problem is with block
processing. seems to me to be the only efficient way to do it.
> This should be done by a DMA controller, as we don't want to
> loose core clock, and this task is not easy. CMSIS FIR functions has
> internal state buffer which length equals to block_size+numOfTaps-1.
> The function in multiple steps (=block_size/4) makes 4 samples copy from
> input buffer to state buffer (using core !!!), but after that, before
> next input block filtering the last numOfTaps-1 samples in state buffer
> must be moved to the beginning of this buffer.
> It looks bad.
>
> Maybe someone of you solved this problem and used this function in a
> real-time so, please, write me about that.
hey, can you post (or send to me) an example of the code? if it's in C,
i just cannot understand what the problem is.
--
r b-j rbj@audioimagination.com
"Imagination is more important than knowledge."
Reply by Roman Rumian●September 28, 20152015-09-28
Hi Freiends,
DSP concept guys say, that it's time to use ARM Cortex-M
microcontrollers for embedded DSP systems, so I looked at CMSIS library
of filtering functions, and found that it is of block type.
As you know, the most painful feature of ARM Cortex-M architecture is
the lack of circular buffer addressing mode.
I cannot find an example of this functions application for continuous,
real-time signal, because, as I guess, there is a big problem of input
samples block gathering in a structure compatible with CMSIS FIR
function. This should be done by a DMA controller, as we don't want to
loose core clock, and this task is not easy. CMSIS FIR functions has
internal state buffer which length equals to block_size+numOfTaps-1.
The function in multiple steps (=block_size/4) makes 4 samples copy
from input buffer to state buffer (using core !!!), but after that,
before next input block filtering the last numOfTaps-1 samples in state
buffer must be moved to the beginning of this buffer.
It looks bad.
Maybe someone of you solved this problem and used this function in a
real-time so, please, write me about that.
Kind regards
Roman Rumian