linux 声卡时钟,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 版权声明:本文为博主原创文章,转载请附上博文链接!