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.

TAS5708 DRC not responding

Other Parts Discussed in Thread: TAS5708, TAS5709, TAS5707

Hello,

I've tried to set the DRC with the following settings:

gain: 0 (O = 0.064516 = 0x00084210)
threshold: -64 (T = 14.616484 = 0x074ee8f0)
ratio 30:1 (k = -0.966667 = 0x03844445)
attack, release and energy to 100ms (a<x>: 0.000227 = 0x0000076d)(1 - a<x>: 0x007ff892

The only thing responding is the gain. Although it applies the gain no matter the setting of the DRC CONTROL register.

I've tried to get register settings from various EVM GUI tools to verify my calculations but they all crash when pressing the 'Time Constants' button in the DRC Customisation tool or won't install at all. 

 Can someone supply me with working register values so I can see if my calculations are off or that the problem lies somewhere else? Is there another setting I'm missing to enable the DRC besides D0 in the DRC Control register?

With kind regards,

Allex Veldman

  • Hello Allex and welcome to E2E!,

    Threshold is represented in dB right?, according to the calculation to 9.23 format, the value to load into DRC-T register (0x40) should be 0x00000052 if you want a Threshold of -64dB. We have recommended values for each Attack, decay and energy time constant considering the timing of the lowest frequency of the system (Ts):

    Could you specify what is crashing?, is the SW?, I would suggest you to download the version of the Software from the product folder in ti.com. Also, did you use the TAS5708 GUI with our EVM?.

    Thanks and Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • In the TAS57xx Dynamic Range Control Application report (www.ti.com/.../sloa148.pdf) it says:

    " 5.1 Threshold Parameter Computation
    For thresholds,
    Tdb = 6.0206TINPUT + 24 dB = 6.0206TSUB_ADDRESS_ENTRY + 24 dB
    The additional 24 dB in the threshold equation accounts for DRC headroom.
    If, for example, it is desired to set T1 = –64 dB, then the subaddress entry required to set T1 to –64 dB is
    (4)
    T1SUB_ADDRESS_ENTRY = (tDB - 24) / -6.0206 = -14.62
    T1 is entered as a 32-bit number in 9.23 format. Therefore,
    T1 = –14.62 = 0 0000 1110.1001 1101 1101 0001 1101 101 = 0x074E E8ED in 9.23 "

    I will try your settings and post the error message I got first thing on Monday.
    No, I don't have the EVM. I just wanted to see example register values.

    I will get back to you, thanks!
  • Hello Diego,

    Thanks for the reply.

    I've tried loading the DRC-T register with 0x52 with the old timing settings and the new but no change in peak amplitude in either.
    What I would like to try is loading some verified register values that limit(ratio of 30+:1) the peak amplitude and see if the problem is in my code or in the TAS.

    Regarding the GUI crash, it happens every time i click the 'time Constant' button in the DRC Customization Tool (I use the TAS5709_10 tab because there is no 5708 tab).
    This is from the error_log:

    Time: 16-3-2015 10:50:11 -----------------------
    Value of '20000' is not valid for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'. Parameter name: Value at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at TexasInstruments.Gde.Gde.GdeUIExceptionHandler(Object sender, ThreadExceptionEventArgs e) at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t) at System.Windows.Forms.Control.WndProcException(Exception e) at System.Windows.Forms.Control.ControlNativeWindow.OnThreadException(Exception e) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow) at System.Windows.Forms.Control.SetVisibleCore(Boolean value) at System.Windows.Forms.Form.SetVisibleCore(Boolean value) at System.Windows.Forms.Control.set_Visible(Boolean value) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.RunDialog(Form form) at System.Windows.Forms.Form.ShowDialog(IWin32Window owner) at DRCGUI.CLeftPanel.cmdTimeConstant_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at TexasInstruments.Gde.SingleApplication.Run(Form frmMain, Arguments args) at TexasInstruments.Gde.Gde.Main()

    On the 5705 and 5707 DRC customisation tool I also get the following error when trying to apply changes:
    "Energy: Value not within the accepted rang 0 to 100000"

    Hope you can help me out.

    Thanks!

  • Hello Diego,

    So I've found the problem.

    The workout of the calculation shown in the datasheet is wrong.
    The Threshold value is in two's compliment and needs to be negative so to determine the two's compliment value of -64dB we should:

    Add headroom:
    T = (Thres_db - 24) / -6.0206 (produces positive values up to Thres_db == 24)

    Make fixed point:
    uint T_ui = T * (1 << 23)

    invert all bits of T_ui and add 1:
    T_ui =  (T_ui ^ 0xFFFFFFFF) + 1

    Set sign bit:
    T_ui |= 0x80000000

    For a Threshold of -64dB this would result in a register value of: 0xF8B11710

    This also means the threshold can be set up to +24dB (as that is the headroom in the TAS5708 according to the datasheet) although there is no real purpose of setting the threshold at clipping level.
    Setting the Threshold to +24dB should result in a register value of 0xFFFFFFFF (note that this is not the case in my calculation as the inverse + 1 of 0x00 is still 0x00)

    I hope this can be corrected in the datasheet.

    With kind regards,

    Allex Veldman

  • Hello Allex,

    Thanks for the feedback, We'll check this and see the way to include this in next document revisions.

    About the GUI failure, when installing the software, TAS5707_08 tab should appear by default, if not, you may be able to open it from File Tab > Open > and browse to C:\Program Files\Texas Instruments Inc\TAS570X GDE\ProcessFlows\TAS5707. There you can get the Tab for TAS5707 and TAS5708. 

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer