This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Voice descrimination detection in TDU VoLIB

 

I have used the TDU in the VoLIB telecom and media library in the c6748 experimental board with some success.

In general, I have no problem with the tone detection. However I have problem with using the voice descrimination detector

I will get the following message when I enable the "tdu_CTL_VOICE_DISC_ON" with the following code.

memset (&cfgCtl.u.std, 0, sizeof (tduCfgCtlStd_t));

 

tduControl (tduInst, tdu_CTL_VOICE_DISC_ON, &cfgCtl);

 

TMS320C64X+_0: Error: Illegal opcode (7e7e0000) at pc = 0x00000030 Illegal opcode at pc = 0x00000030

Is the voice descrimination detector supported in the TDU? Maybe I have missed something?

Any comment?

Thanks,

 

  • Hi Jonathan,

    Yes, voice discrimination is supported and should function properly.  It has historically been used as a check to ensure voice-band data mode has been properly identified.  If it reports "voice", the channel can save bandwidth and down-speed to voice mode.

    Where, specifically, within the test code are you placing the above calls?  I would like to try to reproduce this error.

    Regards,

    Charlie

  •  

    Hi Charlie,

    I am using the sample code from the VoLIB package in the following directory.

    C:\Program Files\Texas Instruments\volib_C64P_1_0_1_2\packages\ti\mas\tdu\test\test_rel_c6482_C64PLE_LE_COFF

     

    I simply add one line of code (in blue) into the following function and run with the c674x CPU cycle accurate simulator, little endian. I will get the following exception

    TMS320C64X+_0: Error: Illegal opcode (010a0000) at pc = 0x00000004 Illegal opcode at pc = 0x00000004

     

    void sftAllDetectionFILE (void *tduInst, char *filename)

    {

    tint i;

    tduSim.txSGN.frm_count = 0;

    memset (tx_in_frame, 0, sizeof (tx_in_frame));

    for (i=0; i<10; i++) {

    tduSendIn (tduInst, tx_in_frame, tdu_TX_ONLY);

    }

     

    tduSim.cfgCtl.u.position.valid_bitfield = tdu_POSITION_PRI_ACBC_CHANGED | tdu_POSITION_SEC_ACBC_CHANGED |

    tdu_POSITION_TXRX_CHANGED;

    tduSim.cfgCtl.u.position.value_bitfield = tdu_POSITION_PRI_AC | tdu_POSITION_SEC_AC;

    tduControl (tduInst, tdu_CTL_POSITION, &tduSim.cfgCtl);

    memset (&tduSim.cfgCtl.u.std, 0, sizeof (tduCfgCtlStd_t));

     

    tduControl (tduInst, tdu_CTL_VOICE_DISC_ON, &tduSim.cfgCtl);

     ...

    Thanks,

    Jonathan

     

     

  •  

    Hi Charlie,

    I am using the sample code from the VoLIB package in the following directory.

    C:\Program Files\Texas Instruments\volib_C64P_1_0_1_2\packages\ti\mas\tdu\test\test_rel_c6482_C64PLE_LE_COFF

     

    I simply add one line of code (in blue) into the following function and run with the c674x CPU cycle accurate simulator, little endian. I will get the following exception

    TMS320C64X+_0: Error: Illegal opcode (010a0000) at pc = 0x00000004 Illegal opcode at pc = 0x00000004

     

    void sftAllDetectionFILE (void *tduInst, char *filename)

    {

    tint i;

    tduSim.txSGN.frm_count = 0;

    memset (tx_in_frame, 0, sizeof (tx_in_frame));

    for (i=0; i<10; i++) {

    tduSendIn (tduInst, tx_in_frame, tdu_TX_ONLY);

    }

     

    tduSim.cfgCtl.u.position.valid_bitfield = tdu_POSITION_PRI_ACBC_CHANGED | tdu_POSITION_SEC_ACBC_CHANGED |

    tdu_POSITION_TXRX_CHANGED;

    tduSim.cfgCtl.u.position.value_bitfield = tdu_POSITION_PRI_AC | tdu_POSITION_SEC_AC;

    tduControl (tduInst, tdu_CTL_POSITION, &tduSim.cfgCtl);

    memset (&tduSim.cfgCtl.u.std, 0, sizeof (tduCfgCtlStd_t));

     

    tduControl (tduInst, tdu_CTL_VOICE_DISC_ON, &tduSim.cfgCtl);

     ...

    Thanks,

    Jonathan

     

     

  • Hi Jonathan,

     

    You've identified a bug in the code.  We're calling a NULL pointer from the TDU context for global memory pool buffer allocation without checking.

    We will enter a defect report that you can track here.

     

    Regards,

    Charlie

  •  

    Hi,

    Is there any work around before the bug will be fixed?

    Thanks,

    Jonathan

  • Hi Jonathan,

     

    The only viable workaround would be to implement a memory buffer pool approach that matches the one required by the TDU.  If this interests you, please let me know and I can provide the details on the requirements.

    Otherwise, you can disable this detector until a patch (or new release) is available.  The next scheduled release is in the 10/31 timeframe.

    Regards,
    Charlie