linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系

转:https://blog.csdn.net/lugandong/article/details/72468831



一、
拿512fs说话:
看图知道采样的位深是32bit(位),左右声道各占了8*32BCLK,那一个完整的LRCLK一共8*32*2=512BCLK。
其实xxxfs就是这么算出来的,也是固定的,当你定了几个channel,多少位深,就几乎可以确认是多少fs了。从主观的角度来看,fs的数值越大,那么一个完整的LRCLK越多,那承载的数据量就越大,随之的就是音质就会更加好。

上图是32位的采样,2channel,xxxfs的选择有:
128fs、256fs、512fs

如果是16bit的采样,2channel呢?
16*2(channel)*2(每个LR有几个16BCLK组成) = 64fs
按照倍数的增加,会有如下的选择:
64fs、128fs、256fs、512fs

如果是24bit的采样,2channel呢?
24*2(channel)*2(每个LR有几个16BCLK组成) = 96fs
按照倍数的增加,会有如下的选择:
96fs、192fs、384fs、768fs(这个级别的估计一般的ADC很难)

二、
那BCLK是怎么算的?
例在Android系统中,播放的音频文件格式:
sample_rate=44.1Khz,sample_length=16,channel=2时,
那么BCLK应该为2×44.1Khz×16=32xsample_rate=1.4112Mhz

MCLK存在着关系,这个一般要看芯片。如果存在这4倍的关系,那么:
MCLK = 4*BCLK=5.6448Mhz
至于MCLK的选择还要看外部的晶振。

鉴于如上的,那它是xxxfs?
正常是fs=MCLK/ sample_rate=5.6448*1000/44.1=128fs

fs=16*2*(LRCLK各几个16 BCLK组)=128fs,一共是4个。

如果现在你要对外部晶振进行选型了,现在是sample_rate=48Khz,sample_length=16,channel=2,我们选择512fs,那外部晶振MCLK要选择多大?
MCLK=fs*sample_rate=512*48=24.576Mhz
---------------------
作者:慢几步-深几度-前行
来源:CSDN
原文:https://blog.csdn.net/lugandong/article/details/72468831
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/newjiang/p/10817159.html