I2S/PCM
数字音频接口
概述
数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI在音频电路设计中得到越来越广泛的应用。图1和图2对比传统的音频信号和数字音频信号链的区别。
在传统的音频电路(图1)中有麦克风、前置放大器、模/数转换器ADC、数/模转换器DAC、输出放大器,以及扬声器,它们之间使用模拟信号连接。随着技术的发展和对性能考虑,模拟电路逐渐被推到链路的两端(集成到设备内部),信号链中各集成电路间将出现更多的数字接口形式。DSP通常都是数字接口的;换能器(Transducers, i.e. Mic & Speaker)、放大器一般而言只有模拟接口,但现在也正在逐渐集成数字接口功能。 目前,集成电路设计人员正在将换能器内的ADC、DAC和调制器集成到信号链一端,这样就不必在PCB上走任何模拟音频信号,并且减少了信号链中的器件数量。图2给出了一个完整数字音频接口的例子。
图1. 传统的音频信号链路
图2. 数字音频信号链路
数字音频信号的传输标准,如I2S、PCM (Pulse Code Modulation) 和PDM (Pulse Density Modulation)主要用于同一块电路板上芯片之间音频信号的传输;Intel HDA (Intel High Definition Audio) 用于PC的Audio子系统(声卡)应用; S/PDIF和Ethernet AVB主要应用于板间长距离及需要电缆连接的场合。
本文主要介绍I2S, PCM和PDM数字音频接口,其它几种接口将另文说明。
I2S接口
1. I2S简介
I2S全称Inter-IC Sound, Integrated Interchip Sound,或简写IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。除了都是由飞利浦定义外,I2S和I2C没有任何关系。
I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。在I2S系统中,提供时钟(SCK和WS)的设备为主设备。图3是常见的I2S系统框图。在高端应用中,CODEC经常作为I2S的主控设备以精确控制I2S的数据流。
图3. I2S设备连接示意图
I2S包括两个声道(Left/Right)的数据,在主设备发出声道选择/字选择(WS)控制下进行左右声道数据切换。通过增加I2S接口的数目或其它I2S设备可以实现多声道(Multi-Channels)应用。
2. 信号定义
在I2S传输协议中,数据信号、时钟信号以及控制信号是分开传输的。I2S协议只定义三根信号线:时钟信号SCK、数据信号SD和左右声道选择信号WS。
时钟信号 Serial Clock
SCK是模块内的同步信号,从模式时由外部提供,主模式时由模块内部自己产生。不同厂家的芯片型号,时钟信号叫法可能不同,也可能称BCLK/Bit Clock或SCL/Serial Clock
数据信号 Serial Data
SD是串行数据,在I2S中以二进制补码的形式在数据线上传输。在WS变化后的第一个SCK脉冲,先传输最高位(MSB, Most Significant Bit)。先传送MSB是因为发送设备和接收设备的字长可能不同,当系统字长比数据发送端字长长的时候,数据传输就会出现截断的现象/Truncated,即如果数据接收端接收的数据位比它规定的字长长的话,那么规定字长最低位(LSB: Least Significant Bit)以后的所有位将会被忽略。如果接收的字长比它规定的字长短,那么空余出来的位将会以0填补。通过这种方式可以使音频信号的最高有效位得到传输,从而保证最好的听觉效果。
√ 根据输入或输出特性,不同芯片上的SD也可能称SDATA、SDIN、SDOUT、DACDAT、ADCDAT等; √ 数据发送既可以同步于SCK的上升沿,也可以是下降沿,但接收设备在SCK的上升沿采样,发送数据时序需考虑
左右声道选择信号 Word Select
WS是声道选择信号,表明数据发送端所选择的声道。当:
√ WS=0,表示选择左声道 √ WS=1,表示选择右声道
WS也称帧时钟,即LRCLK/Left Right Clock。WS频率等于声音的采样率。WS既可以在SCK的上升沿,也可以在SCK的下降沿变化。从设备在SCK的上升沿采样WS信号。数据信号MSB在WS改变后的第二个时钟(SCK)上升沿有效(即延迟一个SCK),这样可以让从设备有足够的时间以存储当前接收的数据,并准备好接收下一组数据。
3. 电气特性
输出电平
VL < 0.4V VH > 2.4V
满足驱动TTL电平IIL=–1.6mA 和 IIH = 0.04mA
输入电平
VIL < 0.4V VIH > 2.4V
注:
1986的SPEC电平定义为TTL,实际应用参考具体器件手册。
4. 时序要求
在I2S总线中,任何设备都可以通过提供时钟成为I2S的主控设备。考虑到SCK、SD和WS的时延,I2S总线上总的时延包括:
外部时钟SCK由主设备到从设备的时延;
内部时钟和SD及WS的时延
外部时钟SCK到内部时钟的延迟对于数据和左右声道信号WS的输入没有影响,因为这段延迟只增加有效的建立时间(Setup time),如图4所示。需要注意的是发送延迟和接收设备建立时间是否有足够的裕量。所有的时序要求和时钟周期或设备允许的最低时钟周期有关。不同器件的Datasheet都有单独部分说明其时序要求,以下部分截取自I2S Bus Specification。
图4. 发送设备时序
图5. 接收设备时序
注:
图4和图5的时序要求因发送设备的时钟速率不同而有所区别。接收设备的性能指标需要匹配发送设备的性能。表1说明I2S发送和接收时序的要求。
表1. I2S发送和接收时序
图6是SPEC对于时钟上升时间的定义。
图6. 时钟上升时间定义
5. I2S操作模式
根据SD相对于SCK和WS位置的不同,I2S分为三种不同的操作模式,分别为标准I2S模式、左对齐模式和右对齐模式:
I2S Phillips Standard I2S格式
Left Justified Standard 左对齐格式
Right Justified Standard 右对齐格式
I2S模式属于左对齐中的一种特例,也叫PHILIPS模式,是由标准左对齐格式再延迟一个时钟位变化来的。时序如图7所示,左声道的数据MSB在WS下降沿之后第二个SCK/BCLK上升沿有效,右声道数据的MSB在WS上升沿之后第二个SCK/BCLK上升沿有效。
图7. I2S PHILIPS操作模式
标准左对齐较少使用,图8为左对齐时序图,和PHILIPS格式(图6)对比可以看出,标准左对齐格式的数据的MSB没有相对于BCLK延迟一个时钟。左对齐格式的左声道的数据MSB在WS上升沿之后SCK/BCLK的第一个上升沿有效;右声道的数据MSB在WS下降沿之后SCK/BCLK第一个上升沿有效。标准左对齐格式的优点在于,由于在WS变化后的第一个SCK上升沿就开始采样,它不需要关心左右声道数据的字长,只要WS的时钟周期足够长,左对齐的方式支持16-32bit字长格式。
图8. 左对齐操作模式
标准右对齐也叫日本格式,EIAJ (Electronic Industries Association of Japan) 或SONY格式,图9为右对齐时序图。右对齐格式左声道的数据LSB在WS下降沿的前一个SCK/BCLK上升沿有效,右声道的数据LSB在WS上升沿的前一个SCK/BCLK上升沿有效。相比于标准左对齐格式,标准右对齐的不足在于接收设备必须事先知道待传数据的字长。这也解释了为什么许多CODEC都会提供多种右对齐格式选择功能。
图9. 右对齐操作模式
以上不同I2S对齐方式时序图来源,详见链接TI CODEC 器件手册。
注:
标准左对齐和标准右对齐模式的LRCK/WS高低电平对应的左右声道与标准I2S模式的规定恰好相反!标准左右对齐LRCK/WS高电平对应左声道,LRCK/WS低电平对应右声道;而I2S低电平对应左声道,LRCK/WS高电平对应右声道!
6. I2S数据时钟(SCK)频率计算
例如:设声音的采样频率为44.1 kHz,即声道选择信号(帧时钟)WS的频率必须也为44.1 kHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK的频率为:44.1 kHz×16×2=1.4112 MHz
如果需要传输20 bit、24 bit或32 bit的左右声道的数据,可以提高SCK的频率,由上式可以计算出需要的SCK的频率。
7. Master Clock
在I2S/PCM接口的ADC/DAC系统中,除了SCK和WS外,CODEC经常还需要控制器提供MCLK (Master Clock),这是由CODEC内部基于Delta-Sigma (ΔΣ)的架构设计要求使然。MCLK时钟频率一般为256*WS,具体参考特定器件手册。图10示意Nuvoton的NAU8822L CODEC内部PLL框图,可以清晰地看出MCLK作用的区域。
图10. CODEC内部PLL示意图
PCM接口
1. PCM简介
PCM (Pulse Code Modulation) 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图11为4 bit 采样深度的PCM数据量化示意图。
图11. 4-bit PCM的采样量化
PCM数字音频接口,即说明接口上传输的音频数据通过PCM方式采样得到的,以区别于PDM方式。在音频领域,PCM接口常用于板级音频数字信号的传输,与I2S相似。PCM和I2S的区别于数据相对于帧时钟(FSYNC/WS)的位置、时钟的极性和帧的长度。其实,I2S上传输的也是PCM类型的数据,因此可以说I2S不过是PCM接口的特例。
相比于I2S接口,PCM接口应用更加灵活。通过时分复用(TDM, Time Division Multiplexing)方式,PCM接口支持同时传输多达N个(N>8)声道的数据,减少了管脚数目(实际上是减少I2S的“组”数,因为每组I2S只能传输两声道数据嘛)。TDM不像I2S有统一的标准,不同的IC厂商在应用TDM时可能略有差异,这些差异表现在时钟的极性、声道配置的触发条件和对闲置声道的处理等。
TDM/PCM数字音频接口的硬件拓扑结构也与I2S相近。图12表示应用DSP作为主设备控制ADC和DAC间数字音频流的例子。
综合不少厂商的数据手册,笔者发现,在应用PCM音频接口传输单声道数据(如麦克风)时,其接口名称为PCM;双声道经常使用I2S;而TDM则表示传输两个及以上声道的数据,同时区别于I2S特定的格式。
图12. TDM系统框图
2. 信号定义
PCM接口与I2S相似,电路信号包括:
PCM_CLK 数据时钟信号
PCM_SYNC 帧同步时钟信号
PCM_IN 接收数据信号
PCM_OUT 发送数据信号
TDM/PCM与I2S接口对应关系见表2:
表2. PCM vs I2S接口
3. 操作模式
根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:
Mode A: 数据在FSYNC有效后,BCLK的第2个上升沿有效(图13)
Mode B: 数据在FSYNC有效后,BCLK的第1个上升沿有效(图14)
图13. TDM Mode A
图14. TDM Mode B
注:
由于没有统一标准,不同厂商对Mode A和Mode B定义可能有所差别。
在实际应用中,总是以帧同步时钟FSYNC的上升沿表示一次传输的开始。帧同步时钟的频率总是等于音频的采样率,比如44.1 kHz,48 kHz等。多数应用只用到FSYNC的上升沿,而忽略其下降沿。根据不同应用FSYNC脉冲宽度的差别,PCM帧同步时钟模式大致分为两种:
长帧同步 Long Frame Sync
短帧同步 Short Frame Sync
长帧同步,短帧同步时序模式如下图16和图17所示。
注:
a. 长帧同步,如图15所示,FSYNC脉冲宽度等于1个Slot的长度。Slot在TDM中表示的是传输单个声道所占用的位数。如图15所示TI McASP接口的TDM包括6个Slots,即它最多可包括6声道数据。注意,Slot的位数并不一定等于音频的量化深度。比如Slot可能为32 bit,其中包括24 bit有效数据位(Audio Word) + 8 bit零填充(Zero Padding)。不同厂商对Slot的叫法可能有所区别,比如Circus Logic称之为Channel Block;
图15. 长帧同步模式
b. 短帧同步,FSYNC脉冲宽度等于1个BCLK周期长度;
c. 由于没有统一标准,不同厂商对FSYNC脉冲宽度及触发边沿的设置可能不同,以器件手册为准。
图16. 8-bit长帧同步模式
图17. 16-bit短帧同步模式
关于长短帧同步、MSB/LSB和量化深度的区别,对应的PCM时序模式,请参考附件CSR BC06工具:pcmconfigv2_1
通过这个工具很容易理解这些变量的含义。
4. 模式设置
通过寄存器或者管脚电平设置,可以配置CODEC的DAI工作在不同的操作模式。以AKM的24bit 4ch DAC AK4413为例,如表3所示,通过设置TDM[1:0]和DIF[2:0]等5个寄存器的值,可以选择其SDT1接口工作于20种不同模式,在Datasheet中详细说明了每种模式的时序框图。
表3. 数字音频接口模式选择
5. 时钟(BCLK)频率的计算
FSYNC的频率等于音频的采样率(例如44.1 kHz,48 kHz等)。Frame每次传输包括所有声道的数据。PCM采样音频数据量化深度一般在16-32bit(最常见为16/24bit)。那么对于8声道,每个声道32bit音频数据,采样率48kHz的系统,TDM的系统时钟速率为:8 × 32 × 48kHz = 12.288 MHz
在器件Datasheet中可以见到TDM128/TDM256/TDM384/TDM512等说法,数字的含义为单个TDM数据帧包含数据的比特数(即帧长)。如上例8声道(Channels)32bit的音频数据,亦称为TDM256(=8*32)。TDM系统时钟速率就可以简单地用采样率乘以TDM帧长计算得出。相同的例子,TDM系统时钟速率:48kHz × 256 = 12.288 MHz
下表4列出系统时钟SCK/BCLK和采样率fs及TDM帧长的关系:
表4. 常见音频采样率对应的系统时钟
6. 数据格式
在PCM/TDM传输的数据帧(Slots)中,可能还包括音频数据之外的信息。比如在CSR BC06器件Datasheet说明,其设置为16 bit Slot字长时,3或8 bit未使用bit可以用作标签位(Sign Extension)、零填充(Zeros Padding)或是兼容Motorola编解码器的3 bit音频衰减值,如图18所示。
图18. 16-bit位采样字格式
7. 协议分析
以R&S的音频分析仪UPV Audio Analyzer为例,在其DAI协议分析面板,如图19,可以选择每帧包含的Slots数(No of Slots,对于I2S选2),Slot的长度,Lead Bits表示有效数据相对于Slot开始位置的OFFSET(比如,Slot Length = 32, Audio Leads = 8, 则表示每个Slot起始后的第9位为有效数据 )。如果选择为左对齐方式(LSB),设备会自动修正Audio Leads值以得到正确的幅值测量结果。
图19. DAI协议分析设置面板
PDM接口
PDM(Pulse Density Modulation)是一种用数字信号表示模拟信号的调制方法。同为将模拟量转换为数字量的方法,PCM使用等间隔采样方法,将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度),因此PCM方式每次采样的结果都是N bit字长的数据。PDM则使用远高于PCM采样率的时钟采样调制模拟分量,只有1位输出,要么为0,要么为1。因此通过PDM方式表示的数字音频也被称为Oversampled 1-bit Audio。相比PDM一连串的0和1,PCM的量化结果更为直观简单。
在以PDM方式作为模数转换方法的应用接收端,需要用到抽取滤波器(Decimation Filter)将密密麻麻的0和1代表的密度分量转换为幅值分量,而PCM方式得到的就已经是幅值相关的数字分量。图20示意为通过PDM方式数字化的正弦波。
图20. PDM方式表示的正弦波
PCM方式的逻辑更加简单,但需要用到数据时钟,采样时钟和数据信号三根信号线;PDM方式的逻辑相对复杂,但它只需要两根信号线,即时钟和数据。PDM在诸如手机和平板等对于空间限制严格的场合有着广泛的应用前景。在数字麦克风领域,应用最广的就是PDM接口,其次为I2S接口。PDM格式的音频信号可以在比如LCD屏这样Noise干扰强的电路附近走线(等于没说,这里指数字信号抗干扰能力相比于模拟信号更强,同样PCM也具有此优势)。
通过PDM接口方式,传输双声道数据只要用到两根信号线。如图21示意两个PDM接口的发送设备与同一个接收设备的连接情况,比如Source 1/2分别作为左右声道的麦克风,通过这种方式可以将采集到的双声道数据传送到接收设备。主设备(此例中作为接收设备)为两个从设备提供时钟,分别在时钟的上升沿和下降沿触发选择Source 1/2作为数据输入。图22为Maxim的Class-D类型功放MAX98358对PDM接口时序的要求,可以看到它在PDM_CLK的上升沿采样左声道数据,在PDM_CLK下降沿采样右声道数据。
图21. PDM连接示意图(2发送设备 + 1接收设备)
图22. PDM时序框图
基于PDM的架构不同于I2S和TDM之处在于,抽取滤波器(Decimation Filter)不在发送设备,而在接收设备内部。源端输出是原始的高采样率(oversample)调制数据,如Sigma-Delta调制器的输出,而不是像I2S中那样的抽取数据(An I2S output digital microphone includes the decimation filter, so its output is already at a standard audio sample rate that's easy to interface to and process.)。基于PDM接口的应用降低了发送设备的复杂性,由于作为接收设备的CODEC内部集成抽取滤波器,因此系统整体复杂度大大降低。对于数字麦克风而言,通过使用面向CODEC或处理器制造的更精细硅工艺,而非传统麦克风使用的工艺,可以实现更高效率的抽取滤波器。
其它接口
S/PDIF: Sony/Philips Digital Interface Format
Intel HDA: Intel High Definition Audio
Ethernet AVB: Audio Video Bridging
免责声明
笔者刚开始接触音频方面的设计,知识体系并不完善。求助于Google和Wiki,把相关的资料在这里以笔者认为容易懂的方式组织,是为此文。当然,本文必然存在不足和失当之处,欢迎各位朋友赐教指正。文章内容作者可能随时更新!
参考资料
1. I2S Bus Specification -Philips
2. Pulse Code Modulation -Wikipedia
3. Pulse Density Modulation -Wikipedia
4. MS-2275: Common Inter-IC Digital Interfaces for Audio Data Transfer -Analog
5. AN282: The 2-Channel Serial Audio Interface -Cirrus Logic
6. AN301: Time Division Multiplexed Audio Interface -Cirrus Logic
7. WM8778: 24-bit, 192kHz Stereo CODEC -Cirrus Logic
8. TLV320AIC31: Low-power Stereo Audio Codec For Portable Audio/Telephony -TI
9. ANA-123: Audio CODEC Application Note -Nuvoton
10. NAU85L40: Quad Audio ADC with Integrated FLL and Microphone Preamplifier -Nuvoton
11. AK4413: High Performance 120dB 24-Bit 4ch DAC -AKM
12. R&S®UPV User Manual -R&S
13. Understanding PDM Digital Audio -Audio Precision
14. Analog and Digital MEMS Microphone Design Considerations -Analog
15. MAX98358: PDM Input Class D Audio Power Amplifier -Maxim