I need to use the DRC in my current project. Like most TAS5713 registers, the documentation is not only insufficient, but that which exists is self-contradictory.
- The DRC section of the datasheet at http://www.ti.com/lit/ds/symlink/tas5713.pdf mentions 3 alpha and omega pairs for the filters, T, and K. It mentions that the T parameters are 9.23 format, while the others are 3.23, but gives no indication of what units either T or K are in. It indicates the filter structure without any indication of how it ties into the DRC, if at all.
- The same section lists registers for 3 each alpha and omega and T, but not K (the slope indicated in the diagram just above it).
- The register listing also eschews any K setting, but adds a T' which is described as a decay threshold with no further information justifying its existence. Although the DRC section of the spec lists register locations, they're different from the ones in the register list (DRC/reg sections indicate T=3B/40, ae-oe=3C/3B, aa-ad-wa-wd/attack-release=40/3C. The GDE seems to follow the register descriptions rather than the DRC section. However, it's unclear how aa, ad, wa, and wd...presumably 3.23 values...are crammed into the 64-bit register, whichever one it is. (Rather than four filter coefficients, the
- The DRC app note at http://www.ti.com/lit/an/sloa148/sloa148.pdf has no indication of any T' parameter, but mentions the K parameter and adds an O parameter for offset. It specifically states that "The DRC scheme has a single threshold, offset, and slope (all programmable)." In contrast, the TAS5713 appears to have a double threshold with no offset or slope.
- Of course, the easiest way to configure it is with the GDE. Reading the DRC, I try to set the threshold at -3dB...it should generate a number representing (-3 - 24)/-6.02, or about 4.5 (ignoring the sign error in equation 4, which is countered by another sign error in the translation to 9.23). However, it generates 05A90000, which is closer to 11.32. It generates no value for the mystical T', so I don't know whether this is an error in the register definition or in the descriptions. I couldn't test the example in the app note, as it uses a threshold of -64dB, which the GDE doesn't support.
- Although the DRC section states that all values are 3.23 other than T, the GDE happily spits out larger (and/or negative?) numbers for release. Attack appears to be limited to 0-0x000A0000. With no further non-conflicting descriptions, it's difficult to know how to interpret them.
- Multiple trial and error using the conflicting indications in the register listing, spec DRC description, and app note shows no indication that the DRC has any effect on the gain under any conditions. (Yes, I wrote a 0x00000001 to 0x46.) When I change even full scale input by 3dB, the output changes by 3dB, indicating no compression whatsoever.
So I need to know ASAP whether this is one of those blocks that will work, or if it's just one of those prolific bugs that TI never tests for and just redacts the documentation when they find out it doesn't work. If there's hope that it will work in any of the myriad ways it's described in these various places, it would be great if we could define which one (or which elements of each are used) and decide which registers, units, and rules are involved.