Dafydd Roche,德州仪器 (TI) 音频工程师
传统 I2S—为什么要包括系统时钟?
过去,咱们在讨论音频话题时,偶尔会说起 I2S。我在之前的一些文章中提到过 I2S,其余人在作音频研究时也都会提到它。简而言之,它是一种将立体声数据从一端传输至另外一端的同步方法。
大多数人认为 I2S 有三种信号:
数据:输入或者输出数据
位时钟 (Bitclock,BCK):确立数据流中两个相邻位之间边界的信号
左/右时钟 (LRCK)/字时钟 (Wordclock):一个在采样速率下运行、占空比为 50% 的慢时钟,它确立数据流中两条相邻通道(左和右)之间的边界。
I2S 的幕后英雄是主时钟 (MCK),也称做系统时钟 (SCK),它经常被数字信号处理器 (DSP) 程序员和其余处理器爱好者们忽略。主时钟 (MCK/SCK),一般为一个6四、12八、256 和 512 倍采样速率 (FS) 的时钟。它能够由一个输入引脚直接提供,也能够经过一个锁相环路 (PLL) 在某些器件内部产生。
通常而言,DSP 不须要音频主时钟,由于它们可以以一种彻底不一样的速率对数据进行处理,而后在 BCK 和 LRCK 的驱动下,让数据以某种速率进入输出缓冲器(或者经过输入缓冲器接收数据)。
若是您能暂时将注意力从您的处理器上移开,您会发现音频主时钟重要得多。大多数 MCK/SCK 输入的音频转换器,都要求时钟同步,而有一些则容许异相位。这就意味着,它们须要由相同的高速时钟来提供,而后被除小。我接触过的一些客户会突发灵感地告诉我:“个人 ADC 须要一个 MCK,但它离个人 DAC 太远。所以,我要在每一个转换器旁边放置一个晶体……”有这种想法能够理解,但请您“千万别这么作!”
您在购买晶体时,没法保证它恰好为 48.000 kHz。您的模数转换器 (ADC) 晶体的运行精确度可能会为 +5%,而数模转换器 (DAC) 的运行精确度可能为 –5%。这样的精确度,会给您的设计带来灾难性的后果!这是为何呢,下面将为您娓娓道来。
用于 I2S
用于音频 ADC 的主时钟
如图 1 所示,高速主时钟(例如:24.576 MHz 时钟)用于驱动 ADC 的过采样调制器。以后,来自过采样调制器的数据被消减分解成 LRCK 给定的采样速率。
当 ADC 运行在主模式(生成 BCK 和 LRCK,做为输出)下时,ADC 只是对 MCK/SCK 进行划分,产生 LRCK 和 BCK 信号。这就对啦!LRCK/BCK 和主时钟被同步—相位也可能同步(除非它是一个特殊分割器)。
程序员