首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DSP处理器字长

DSP处理器字长
EN

Stack Overflow用户
提问于 2011-12-23 19:50:38
回答 1查看 228关注 0票数 0

我想为这个DSP处理器实现一些东西。http://www.onsemi.com/pub_link/Collateral/BELASIGNA300-D.PDF在这里是它的数据表。

下面是我想要实现的函数之一。所有变量都是16位整数,除了memj是32位整数(在我的电脑上)。(定点运算)它是一个IIR滤波器(直接形式2转置)。

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

如果它是24,那么它将不起作用,因为memj值超过24位...

它有56位累加器,所以这是可以的,但我不知道这是否可以存储在内存中(32位或48位从累加器)。

我还没有评估板和文件。

所以我的问题是,它是否支持超过24位,或者我可以在代码中进行修改……

代码语言:javascript
复制
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;
       }
    }
EN

回答 1

Stack Overflow用户

发布于 2012-01-05 01:44:44

它可能支持32位整数-它只是处理速度较慢,所以你应该最小化32位整数和32位整数操作的数量。

数据手册上说,该芯片有一个专用的IDE。IDE文档和/或编译器应该能够告诉您是否支持32位整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8615743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档