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.

• Resolved

# [FAQ] TLV320AIC CODECs: Converting from linear or dB values into hex values

How do i convert linear or dB values into hex values for the mini-DSP in the TLV320AIC CODECs?

Regards,
Collin Wells

• Applies to:

TLV320AIC3254-like devices (24-bit C-RAM)

TLV320AIC3111-like devices (16-bit C-RAM)

TASxxxx miniDSP devices (24-bit C-RAM)

To convert from a dB or linear value into a format the device understands it is necessary to understand the data format of the device. The miniDSP devices store user-accessible variables in Coefficient Memory (C-RAM). The bit width of C-RAM may be different from device to device as shown above.

As an example, the volume control volume level is determined by the value stored its C-RAM location. A 0dB volume level (1x gain) corresponds to 0x400000 (24-bit device) or 0x4000 (16-bit device). This means that the volume control assumes a 2.xx format, where the MSB is the sign bit, the MSB-1 is a magnitude bit and xx are the fractional bits. This is a 2's complement format, meaning that numbers will range [0x800000, 0x7FFFFF], where 0x80... is the most negative number and 0x7F...is the most positive number. Some examples:

• 1.xx format: [-1, 0.999...], max 0 dB
• 2.xx format: [-2, 1.999...], max 6dB
• 3.xx format: [-4, 3.999...], max 12dB
• 4.xx format: [-8, 7.999...], max 18dB

In general, a number can be converted from decimal to a M.xx format hex value as follows:

ValueHEX = DEC2HEX(ValueDEC x 2N-M), where N is the bit resolution of the memory location.

If the value is provided in decibels (dB), it can be converted as follows:

ValueHEX = DEC2HEX(10Value(dB)/20 x 2N-M)

Note that values greater than 2N-1-1 and less than -2N-1 are out of bounds if converting to hex.

As an example, for the volume control found in PurePath Studio (2.xx format), a gain of 0dB will result in:

ValueHEX = DEC2HEX(100/20 x 224-2) = 0x400000

The table below shows additional values:

Example Volume Control Values in Hex

To convert from hexadecimal back to decimal:

ValueDEC = HEX2DEC(ValueHEX) / 2N-M

To convert a decimal value back to dB:

ValuedB = 20 x log10(ValueDEC)

As an example, 0x400000 (as a 2.xx hexadecimal number) can be converted to linear as follows:

ValueDEC = HEX2DEC(400000) / 224-2 = 1