繁体   English   中英

DSP处理器字长

[英]DSP processor word size

我想为此DSP处理器实现一些功能。 http://www.onsemi.com/pub_link/Collat​​eral/BELASIGNA300-D.PDF,这是其数据表。

这是我要实现的功能之一。.所有变量都是16位int,除了mem [j]是32位int(在我的计算机上)。(定点算术)它是一个IIR滤波器(直接形式2转置) )

看着15-16页,我不知道我是否可以存储int32。 因为我看到的是不同的总线大小.. 48,24,32 ..

如果它是24,那么它将不起作用,因为mem [j]值超过24位...
它有56位的累加器,所以还可以,但是我不知道这是否可以存储在内存中(从累加器中是32位还是48位)。
我还没有评估委员会和文件。

所以我的问题是它是否支持超过24位或我可以做的代码有修改...

void filter_mem16(const spx_word16_t *x, const spx_coef_t *num, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
    {
       int i,j;
       spx_word16_t xi,yi,nyi;          

       for (i=0;i<N;i++)
       {
          xi= x[i];
          //yi=saturate (x[i]+mem[0]>>13) 
          yi = EXTRACT16(SATURATE(ADD32(EXTEND32(x[i]),PSHR32(mem[0],LPC_SHIFT)),32767));

          //nyi=-yi
          nyi = NEG16(yi);
          for (j=0;j<ord-1;j++)
          {
             //mem[j]= (num[j] *xi + mem[j+1]) + den[j] * nyi
             mem[j] = MAC16_16(MAC16_16(mem[j+1], num[j],xi), den[j],nyi);            

          }

          //mem[ord-1]=(num[ord-1] * xi)  +   (den[ord-1] *nyi)
          mem[ord-1] = ADD32(MULT16_16(num[ord-1],xi), MULT16_16(den[ord-1],nyi));        

          y[i] = yi;
       }
    }

它可能支持32位整数-它将使处理速度变慢,因此您应尽量减少32位int和32位int操作的数量。

数据表显示该芯片具有专用的IDE。 IDE文档和/或编译器应该能够告诉您是否支持32位int。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM