网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> ADI DSP代码示例 >> ADSP21xx >> 文章正文
  The simple examples for ADSP2181         ★★★ 【字体:
The simple examples for ADSP2181
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-16    

{NOTE: The two little routines perform the same function, Convolutional Encoder, and the first one has a readable  }
{structure and needs more cycles. The other one has been optimized with parallel instruction and needs less cycles.}
{If your routines can satisfy the requirement of performance, I think that the readable structure of routines      }
{is the most important thing, and you usually just need optimize the core of the algorithm.                        }
{The data define and the main program are not included, I think they are easy to be added by yourself.             }
{Any questions are welcomed.                                                                                       }
{yfk 2002.12.09                                                                                                    }

{===============================================================}
{THE 1/2 RATE CONVOLUTIONAL CODE DEFINED BY THE POLYNOMIALS:    }
{ G0 = 1 + D3+ D4                                               }
{ G1 = 1 + D + D3+ D4                                           }
{     DSP TYPE:  ADSP2181/2189                                  }
{   SUBROUTINE:  INPUTDATA[CNTR] ==> OUTPUTDATA[CNTR*2]         }
{        INPUT:  CNTR,I1=^INPUTDATA                             }
{       OUTPUT:  I2=^OUTPUTDATA+CNTR*2 ( NO USE )               }
{        TIMES:  CNTR*17+15                                     }
{       AUTHOR:  yfk                                            }
{        EMAIL:  FATCAT_YFK@SINA.COM                            }
{         DATE:  2002.12.09                                     }
{===============================================================}
CONVOLUTIONAL_CODE:         
        M0=-1;  M1=1;  M2=2;   M3=-2;
        L0=0;   L1=0;  L2=0;   L3=0;
        
        I0=^TEMP_REG;           {TEMP REGISTER 4 WORDS, BIT STREAM}
        DM(I0,M1)=0;            
        DM(I0,M1)=0;
        DM(I0,M1)=0;
        DM(I0,M1)=0;            { R0--R3=0 }

        I1=^INPUTDATA;          {SOURCE DATA, BIT STREAM}
        I2=^OUTPUTDATA;         {RESULT DATA, BIT STREAM}
        DO CC_1 UNTIL CE;       {CNTR IS INPUT}
        AX0=DM(I1,M1);
        I0=^TEMP_REG+3;
        AY0=DM(I0,M0);
        AR=AX0 XOR AY0;
        AY0=DM(I0,M3);
        AR=AR XOR AY0;
        DM(I2,M1)=AR;           {  C(2K)=U(K)^R3^R2 }
        AY0=DM(I0,M2);
        AR=AR XOR AY0;
        DM(I2,M1)=AR;           {  C(2K+1)=C(2K)^R0 }
        AY0=DM(I0,M1);
        DM(I0,M3)=AY0;          { R3=R2 }
        AY0=DM(I0,M1);
        DM(I0,M3)=AY0;          { R2=R1 }
        AY0=DM(I0,M1);
        DM(I0,M0)=AY0;          { R1=R0 }
CC_1:   DM(I0,M1)=AX0;          { R0=U(K) }
        RTS;

{===============================================================}
{THE 1/2 RATE CONVOLUTIONAL CODE DEFINED BY THE POLYNOMIALS:    }
{ G0 = 1 + D3+ D4                                               }
{ G1 = 1 + D + D3+ D4                                           }
{     DSP TYPE:  ADSP2181/2189                                  }
{   SUBROUTINE:  INPUTDATA[CNTR] ==> OUTPUTDATA[CNTR*2]         }
{        INPUT:  CNTR,I1=^INPUTDATA                             }
{       OUTPUT:  I2=^OUTPUTDATA+CNTR*2 ( NO USE )               }
{        TIMES:  CNTR*12+18                                     }
{       AUTHOR:  yfk                                            }
{        EMAIL:  FATCAT_YFK@SINA.COM                            }
{         DATE:  2002.12.09                                     }
{===============================================================}
CONVOLUTIONAL_CODE:
        M0=-1;  M1=1;  M2=2;   M3=-2;
        L0=0;   L1=0;  L2=0;   L3=0;
        
        I0=^TEMP_REG;                 {TEMP REGISTER 4 WORDS, BIT STREAM}
        DM(I0,M1)=0;            
        DM(I0,M1)=0;
        DM(I0,M1)=0;
        DM(I0,M1)=0;                  { R0--R3=0 }

        I1=^INPUTDATA;                {SOURCE DATA, BIT STREAM}
        I2=^OUTPUTDATA;               {RESULT DATA, BIT STREAM}
        I0=^TEMP_REG+3;            
        M2=3;                         {MODIFY M2}
        DO CC_1 UNTIL CE;             {CNTR IS INPUT}
        AX0=DM(I1,M1);                {AX0=U(K)}
        AY0=DM(I0,M0);                {AY0=U(K-4)}
        AR=AX0 XOR AY0,AY0=DM(I0,M1); {AR=U(k)+U(K-4),AY0=U(K-3)}
        DM(I0,M3)=AY0;                {U(K-3)-->U(K-4)}
        AR=AR+AY0,AY0=DM(I0,M1);      {AR=U(k)+U(K-4)+U(K-3),AY0=U(K-2)}
        DM(I2,M1)=AR;                 {C[2K]=AR}
        DM(I0,M3)=AY0;                {U(K-2)-->U(K-3)}
        AY0=DM(I0,M1);                {AY0=U(K-1)}
        DM(I0,M0)=AY0,AR=AR+AY0;      {U(K-1)-->U(K-2),AR=U(k)+U(K-4)+U(K-3)+U(K-1)}
        DM(I2,M1)=AR;                 {C[2K+1]=AR}
CC_1:   DM(I0,M2)=AX0;                {U(K)-->U(K-1)}
        M2=2;                         {RESTORE M2}
        RTS;
        

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    C28x 滤波器库
    ADSP21160调试经历
    ADSP流水线
    ADSP2116x的几个常用算法库函…
    ADSP系列SHARC与FIFO的典型连…
    ADSP218x从FLASH引导方式分析
    ADSP-218x 加载器指南
    ADI DSP的单精度随机斜率滤波…
    ADI DSP双精度除法的例子
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号