⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsip_data.c

📁 dsp tms320c6486的csl例程
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************\
* Verifies TSIP U-law transfer
******************************************************************************/
Bool Verify_Transfer_ULaw(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff)
{
        Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
        Uint8* dstArrayPtr = (Uint8*)(dstBuff );

        Uint32  i,j, k;
        Uint16 Data_ulaw;
#if 0
        dstArrayPtr = dstArrayPtr + FrameSize;
        for (i = 0; i < FrameCnt  + 1; i++)
        {
                VAL_TRACE(0xDA04);
                VAL_TRACE(i);
                for (j = 0; j < FrameSize;j++)
                {
                         VAL_TRACE(j);
                         VAL_TRACE(0xDA05);
                         VAL_TRACE(ExpArrayPtr[j]);
                         VAL_TRACE(dstArrayPtr[j]);
                }
                        ExpArrayPtr = ExpArrayPtr + FrameSize ;
                        dstArrayPtr = dstArrayPtr + FrameSize ;
        }
#endif
        ExpArrayPtr = (Uint8*)(srcBuff );
        dstArrayPtr = (Uint8*)(dstBuff );
        dstArrayPtr = dstArrayPtr + FrameSize ;
        for (i = 0; i < FrameCnt + 1; i++)
        {
                for (j = 0; j < FrameSize;j++)
                {
                         if (j >= (FrameSize - 4) )
                         {

                         if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
                         {
                             return (1);
                         }
                         }
                    else
                    {
                    if (j > 3)
                    {
                       for (k =0; k < 2; k++)
                       {
                       Data_ulaw = (ExpArrayPtr[j+1] << 8)  | ExpArrayPtr[j];
                       Data_ulaw =  ULawCompress(Data_ulaw);
                       Data_ulaw =  ULawExpand(Data_ulaw);
                       if((Data_ulaw & 0xFF) != dstArrayPtr[j])
                       {
                         return (1);
                       }
                        if(((Data_ulaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
                       {
                         return (1);
                       }
                        j+=2;
                        }
                        j++;
                    }
                    else
                    {
                         if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
                         {
                             return (1);
                         }

                    }
                }
            }
                        ExpArrayPtr = ExpArrayPtr + FrameSize ;
                        dstArrayPtr = dstArrayPtr + FrameSize ;
        }
        return (0);
}
/* Function to simulate A-law Expansion */
Uint16 ALawExpand(signed int i)
{
	int sign, exp, mant;
	int j, k;
 
        j = i ^ ALAWCHAN;
        sign = (j & SIGN)>> 7;
        exp = (j & EXPONENT)>>4;
        mant = j & MANTISSA;

        if (exp == 0)

        {
           k = (mant << 1) + 1;
        }
        else
        {
           k = (((mant|0x10)<<1)+1)<<(exp -1);	
        }
        if(sign == 0)
        {
           k = -k;
        }
        k = k << 3;
	return (k);
}

/* Function to simulate A-law compression */
Uint8 ALawCompress(Uint16 InputData)
{
	Uint16 sign, exp, mant;
	Uint16 i, j, k;
	
        if (InputData >= 0x8000) i = (InputData >> 3) | 0xE000;
        else i = InputData >> 3;

        sign = 1;
        if (i >= 0x8000)
        {
           sign = 0;
           i = -i;
        }  
        if (i > 0x0fff) i = 0x0fff;
        if ((i < 0x20) || (i >= 0x8000))
        {
           exp = 0;
           if (i >= 0x8000) i = (i >> 1) | 0x8000;
           else i = i >> 1;
           mant = i &MANTISSA;
        }
        else
        {
          exp = 7;
          while (i < 0x0800)
          {
             i = i << 1;
             exp = exp - 1;
          }
          if (i >= 0x8000) i = (i >> 7) | 0xFE00;
          else i = i >> 7;
          mant = i&MANTISSA;
        }
        j = (sign<<7) + (exp<<4) + mant;
        k = j ^ ALAWCHAN;
        return(k);
}
/*****************************************************************************\
* Verifies TSIP A-law transfer
******************************************************************************/
Bool Verify_Transfer_Alaw(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff)
{
        Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
        Uint8* dstArrayPtr = (Uint8*)(dstBuff );

        Uint32  i,j, k;
        Uint16 Data_alaw;
        dstArrayPtr = dstArrayPtr + FrameSize;
#if 0
/*
        for (i = 0; i < FrameCnt  + 1; i++)
        {
                VAL_TRACE(0xDA04);
                VAL_TRACE(i);
                for (j = 0; j < FrameSize;j++)
                {
                         VAL_TRACE(j);
                         VAL_TRACE(0xDA05);
                         VAL_TRACE(ExpArrayPtr[j]);
                         VAL_TRACE(dstArrayPtr[j]);
                }
                        ExpArrayPtr = ExpArrayPtr + FrameSize ;
                        dstArrayPtr = dstArrayPtr + FrameSize ;
        }
*/
#endif
        ExpArrayPtr = (Uint8*)(srcBuff );
        dstArrayPtr = (Uint8*)(dstBuff );
        dstArrayPtr = dstArrayPtr + FrameSize ;
        for (i = 0; i < FrameCnt + 1; i++)
        {
                for (j = 0; j < FrameSize;j++)
                {
                         if (j >= (FrameSize - 4) )
                         {

                         if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
                         {
                             return (1);
                         }
                         }
                    else
                    {
                    if (j > 3)
                    {
                       for (k =0; k < 2; k++)
                       {
                       Data_alaw = (ExpArrayPtr[j+1] << 8)  | ExpArrayPtr[j];
                       Data_alaw =  ALawCompress(Data_alaw);
                       Data_alaw =  ALawExpand(Data_alaw);
                       if((Data_alaw & 0xFF) != dstArrayPtr[j])
                       {
                         return (1);
                       }
                        if(((Data_alaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
                       {
                         return (1);
                        }
                        j+=2;
                        }
                        j++;
                    }
                    else
                    {
                         if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
                         {
                             return (1);
                         }

                    }
                }
            }
                        ExpArrayPtr = ExpArrayPtr + FrameSize ;
                        dstArrayPtr = dstArrayPtr + FrameSize ;
        }
        return (0);
}
/*****************************************************************************\
* Verifies TSIP A-law transfer
******************************************************************************/
Bool Verify_Transfer_Random_Bitmap(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff, Uint32 BitmapBuff, Uint32 PadByteCount)
{
        Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
        Uint8* dstArrayPtr = (Uint8*)(dstBuff );
        Uint8* BitmapBuffPtr = (Uint8*)(BitmapBuff);

        Uint32  i,j;
        Uint16 Data_alaw;
//        Uint8 PadByte = 0;
        Uint32 bitmap, Data_ulaw , Datacount = 0;
        dstArrayPtr = dstArrayPtr + FrameSize ;
//        DummyByte = 0;
        for (i = 0; i < FrameCnt + 1; i++)
        {
                for (j = 0; j < FrameSize;j++)
                {
                    Datacount = 0;
                    if (j >= (FrameSize - 4) )
                    {
                         if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
                         {
                             return (1);
                         }
                    }
                    else
                    {
                    if (PadByteCount != 0)
                    {
                      /* PadBytes are undefined */
                      if (j >= (FrameSize - 4 - PadByteCount))
                      {
/*
                         if(dstArrayPtr[j] != PadByte)
                         {
                             return (1);
                         }
*/
                      }
                    }
                    else
                    {
                    if (j > 3)
                    {
                       //bitmap = (BitmapBuffPtr[(j-3)/16] >> (((j-3)%16) * 2)) & 0x3;
                       //bitmap = (BitmapBuffPtr[(j-4)/4] >> (((j-4)%4) * 2)) & 0x3;
                       bitmap = ((BitmapBuffPtr[(j-4)/4] << (((j-4)%4) * 2)) & 0xC0000000) >> 30;
                       if (bitmap == 0)
                       {
                       }
                       else
                       {
                           /* Linear */
                           if (bitmap == 1)
                           {
                              Datacount++;
                              if(ExpArrayPtr[j] != dstArrayPtr[j])
                              {
                                return (1);
                              }
                            }
                            else
                            {
                              /* U-Law */
                              if ((bitmap == 2) || (bitmap == 3))
                              {
                                 /* Check for Dummy Bytes */
                                 if (((Datacount%4) == 3) |  ((Datacount%4) == 1))
                                 {
                                    Datacount++;
                                    /* DummyBytes are undefined */
/*
                                    if(DummyByte != dstArrayPtr[j])
                                    {
                                      return (1);
                                    }
*/
                                    /* Increment for Dummy Byte */
                                    j++;
                                 }
                                 Datacount += 2;
                                 if (bitmap == 2)
                                 {

                                   Data_ulaw = (ExpArrayPtr[j+1] << 8)  | ExpArrayPtr[j];
                                   Data_ulaw =  ULawCompress(Data_ulaw);
                                   Data_ulaw =  ULawExpand(Data_ulaw);
                                   if((Data_ulaw & 0xFF) != dstArrayPtr[j])
                                   {
                                         return (1);
                                   }
                                   if(((Data_ulaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
                                   {
                                         return (1);
                                   }
                                     j+=1;
                                   }
                                   if (bitmap == 3)
                                   {

                                      Data_alaw = (ExpArrayPtr[j+1] << 8)  | ExpArrayPtr[j];
                                      Data_alaw =  ALawCompress(Data_alaw);
                                      Data_alaw =  ALawExpand(Data_alaw);
                                      if((Data_alaw & 0xFF) != dstArrayPtr[j])
                                      {
                                        return (1);
                                      }
                                      if(((Data_alaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
                                      {
                                        return (1);
                                      }
                                      j+=1;
                                   }
                                }
                            }
                         }
                    }
                    else
                    {
                         if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
                         {
                             return (1);
                         }
                    }

                   }
                  }
                }
                        ExpArrayPtr = ExpArrayPtr + FrameSize ;
                        dstArrayPtr = dstArrayPtr + FrameSize ;
        }
        return (0);
}
//Setup PSC

void setup_PSC(void){
       		hPsc = CSL_pscOpen(&pscObj,
                          CSL_PSC,
                          NULL,
                          &psc_status);

}

void Close_PSC_handle(void){

CSL_pscClose(hPsc);

}

void TSIP_Domain_Enable()
{
   setup_PSC();
   /* Enabling TSIP0 Clock */
      CSL_FINS(hPsc->regs->MDCTL9, PSC_MDCTL9_NEXT, CSL_PSC_MDCTL9_NEXT_ENABLE);
      CSL_FINS(hPsc->regs->MDCTL9, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL9_EMURSTIE_INTERRUPTENABLE);
      CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));

   /* Enabling TSIP1 Clock */
      CSL_FINS(hPsc->regs->MDCTL10, PSC_MDCTL10_NEXT, CSL_PSC_MDCTL10_NEXT_ENABLE);
      CSL_FINS(hPsc->regs->MDCTL10, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL10_EMURSTIE_INTERRUPTENABLE);
      CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));
   /* Enabling TSIP2 Clock */
      CSL_FINS(hPsc->regs->MDCTL11, PSC_MDCTL11_NEXT, CSL_PSC_MDCTL11_NEXT_ENABLE);
      CSL_FINS(hPsc->regs->MDCTL11, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL11_EMURSTIE_INTERRUPTENABLE);
      CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));
      Close_PSC_handle();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -