如何在TLV320AIC编解码器中将线性值或dB值转换为mini-DSP的十六进制值?
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.
如何在TLV320AIC编解码器中将线性值或dB值转换为mini-DSP的十六进制值?
适用于:
TLV320AIC3254类器件(24位C-RAM)
TLV320AIC3111类器件(16位C-RAM)
TASxxxx miniDSP器件(24位C-RAM)
要从dB或线性值转换为设备理解的格式,需要了解设备的数据格式。 miniDSP器件将用户可访问的变量存储在系数存储器(C-RAM)中。 C-RAM的位宽度可能因设备而异,如上所示。
例如,音量控制音量 级别由存储其C-RAM位置的值确定。 0dB音量级别(1x增益)对应于0x40万 (24位设备)或0x4000 (16位设备)。 这意味着音量控制采用2.xx格式,其中MSB是符号位, MSB-1是幅度位,xx是分数位。 这是2的补码格式,意味着数字的范围为[0x80万,0x7FFFFFF],其中0x80...是最大的负数,0x7F...是最大的正数。 一些示例:
通常,数字可以从十进制转换为M.xx格式的十六进制值,如下所示:
ValueHEX = DEC2HEX (ValueDEC x 2N-M),其中N是内存位置的位分辨率。
如果以分贝(dB)为单位提供该值,则可按如下方式进行转换:
ValueHEX = DEC2HEX (10值(dB)/20 x 2N-M)
请注意, 如果转换为十六进制值,则大于2N-1-1且小于-2N-1的值超出范围。
例如,对于PurePath Studio (2.xx格式)中的音量控制,增益0dB将导致:
ValueHEX = DEC2HEX (100/20 x 224-2)= 0x40万
下表显示了其他值:
从十六进制转换为 十进制:
ValueDEC = HEX2DEC (ValueHEX)/2N-M
要将十进制值转换回数据库:
ValuedB = 20 x log10 (ValueDEC)
例如,0x40万 (作为2.xx十六进制数)可以转换 为线性 ,如下所示:
ValueDEC = HEX2DEC (40万)/224-2 = 1
dB /线性到十六进制 计算器可在以下位置下载: