对比项目\型号 |
Tlv320aic3110 |
Wm8900 |
Cs42l52 |
Alc5621 |
ADC (THD+N) |
-85 dB |
-84 dB |
-88 dB |
-80 |
ADC S/N |
91 dB |
95 dB (+A) |
99 dB |
85 |
DAC (THD+N) |
-82 dB |
-82 dB |
-88 dB |
-85 |
DAC S/N |
95 dB |
97 dB (+A) |
98 dB |
92 dB |
Sampling Frequency |
8-kHz to 192-kHz |
8-kHz to 192-kHz |
4-kHz to 192-kHz |
8-kHz to 48-kHz |
especial |
EQ PLL |
FLL |
H/S detect A-law U-law PWM |
BTL EQ PLL |
BTL原理
(Bridge-Tied-load)意为桥接式负载。
负载的两端分别接在两个放大器的输出端。其中一个放大器的输出是另外一个放大器的镜像输出,也就是说加在负载两端的信号仅在相位上相差180°。负载上将得到原来单端输出的2倍电压。从理论上来讲电路的输出功率将增加4倍。BTL电路能充分利用系统电压,因此BTL结构常应用于低电压系统或电池供电系统中。
(1)TI的codec在时钟结构方面有个很清楚的框架图
不同于其他的codec,TI的PLL_CLKIN不仅可以来自MCLK,也可以选择BCLK,根据不同的PLL_CLKIN,PLL_CLK要配置不同的分频系数,即R、J、D、P四个参数的选择和PLL_CLKIN有关,
R = 1, 2, 3, ..., 16 (page 0 / register 5, default value = 1)
J = 1, 2,3, …, 63, (page 0 / register 6, default value = 4)
D = 0, 1, 2, …, 9999 (page 0 / register 7 and 8, default value = 0)
P = 1, 2, 3, …, 8 (page 0 / register 5, default value = 1)
得到PLL_CLK之后,CODEC_CLKIN就可以有四个来源时钟可选择,由于往下分频都是整数分频,如果MCLK是12M或者24M,CODEC_CLKIN不适合选择MCLK。
得到CODEC_CLKIN之后,有两个分支,分别是给DAC和ADC使用的,其中ADC的时钟可以选择和DAC同步,使用同个时钟;最后,分频到DAC、ADC所需要的采样率。
(2)wolfson的codec有一个FLL电路
类似TI的时钟选择,都是针对MCLK是否为采样率的整数倍、是否需要codec内部小数分频而设计的。
如果MCLK刚好是输入了256Fs,SYSCLK就直接从MCLK输入;如果MCLK是12M,Fs要44.1K,需要经过FLL,FLL按照输入时钟和输出要求,内部完成分频,送出11.2896M,这时SYSCLK就从Fout输入。
SYSCLK类似TI时钟结构图中的PLL_CLKIN,往下要经过一系列整数分频得到DAC ADC工作所需要的频率和采样率。
(3)cirrus logic 的codec关于时钟结构没有一个很直观的介绍,只有两个寄存器05h\06h可以配置,正确配置这两个寄存器,可以让codec工作在不同的时钟下
先看下05h寄存器8个bit的作用
【bit7】AUTO
Configures the auto-detect circuitry for detecting the speed mode of the CODEC when operating as a slave.
在codec slave模式,可以选择使能AUTO功能,当然也可以不选择AUTO
【bit6、bit5】SPEED[1:0]
Configures the speed mode of the CODEC in slave mode and sets the appropriate MCLK divide ratio for LRCK and SCLK in master mode.
这两个bit用于配置采样率的大小,如果bit7已经设置为AUTO,这两个bit位是失效的
在codec slave模式,如果bit7为1,这里无所谓设置多少了;如果bit7为0,根据采样率Fs落在4K至100K的哪个范围,选择相应的值。
在codec master模式,bit7必须设置为0,这两个bit位用于设置MCLK、SCLK和LRCK之间的倍数关系,SCLK是采用标准的64Fs,MCLK支持从8K到192K,所以MCLK/LRCK就是不同的倍数关系。
【bit4】【bit3】比较容易设置,不多说
【bit2、bit1】RATIO[1:0]
Configures the internal MCLK/LRCK ratio.
这两个bit位也是定义SCLK/LRCK Ratio,看起来似乎和bit6、bit5有重复设置了,但是不管如何,看看测试结果MCLK 12M,codec master
cs42l52 registers:注意05 06寄存器,一下红色部分
0x00 0xe3 0x00 0x00 0x05 0xa0 0xa4 0x00 0x90 0x90
0xa5 0x0f 0x00 0x60 0x02 0x00 0x2c 0x2c 0x00 0x00
0x00 0x00 0x00 0x00 0x80 0x80 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7f 0xc0 0x00 0x3f 0x00 0x00 0x01 0x00 0x00 0x00
0x3b 0x00 0x5f
MCLK=12M LRCK=46.8K
cs42l52 registers:
0x00 0xe3 0x00 0x00 0x05 0x26 0xa4 0x00 0x90 0x90
0xa5 0x0f 0x00 0x60 0x02 0x00 0x2c 0x2c 0x00 0x00
0x00 0x00 0x00 0x00 0x80 0x80 0x00 0x00 0x00 0x00
0x00 0x88 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7f 0xc0 0x00 0x3f 0x00 0x00 0xc2 0x00 0x00 0x00
0x3b 0x00 0x5f
MCLK=12M LRCK=44.1K
说明【bit6、bit5】SPEED[1:0]
3. These bits are ignored when the AUTO bit (“Auto-Detect” on page 44) is enabled
这句话是错的,当AUTO bit disable的时候,【bit6、bit5】SPEED[1:0]是不起作用的!
06h寄存器比较好配,选择codec模式,SCLK是否反相、I2S格式等。