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