2011-12-23 4 views
0

このDSPプロセッサのために何かを実装したいと思います。 http://www.onsemi.com/pub_link/Collateral/BELASIGNA300-D.PDFここにそのデータシートです。DSPプロセッサのワードサイズ

ここには、実装したい機能の1つです。すべての変数は、32ビット整数のmem [j]以外の16ビット整数です(固定小数点算術) これはIIRフィルタです(直接フォーム2転置)

15-16ページを見ると、int32を格納できるかどうかわかりません。 48,24,32 ..

mem [j]の値が24ビットを超えているので、それは24ではありません...
これは56bitのアキュムレータを持っていますので問題ありません。私はこれがメモリ(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; 
     } 
    } 

答えて

0

それだけ遅く処理を行いますintegers-それはおそらく、32ビットをサポートしています32ビット整数と32ビット整数演算の数を最小限に抑える必要があります。

データシートには、チップに専用のIDEがあることが記載されています。 32ビットのintがサポートされているかどうかは、IDEのドキュメントやコンパイラで確認することができます。

関連する問題