0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2S、TDM、PCM音频总线

倩倩 来源:硬件测试杂谈 作者:硬件测试杂谈 2022-09-20 11:01 次阅读

1. I2S简介

I2S全称Inter-IC Sound, Integrated Interchip Sound,或简写IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口ADCDAC和数字滤波器等。除了都是由飞利浦定义外,I2S和I2C没有任何关系。

I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。在I2S系统中,提供时钟(SCK和WS)的设备为主设备。图3是常见的I2S系统框图。在高端应用中,CODEC经常作为I2S的主控设备以精确控制I2S的数据流。

fe0b22b6-388c-11ed-ba43-dac502259ad0.png

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. I2S操作模式

根据SD相对于SCK和WS位置的不同,I2S分为三种不同的操作模式,分别为标准I2S模式、左对齐模式和右对齐模式:

I2S Phillips Standard I2S格式

Left Justified Standard 左对齐格式

Right Justified Standard 右对齐格式

I2S模式属于左对齐中的一种特例,也叫PHILIPS模式,是由标准左对齐格式再延迟一个时钟位变化来的。时序如下图所示,左声道的数据MSB在WS下降沿之后第二个SCK/BCLK上升沿有效,右声道数据的MSB在WS上升沿之后第二个SCK/BCLK上升沿有效。

fe39c0a8-388c-11ed-ba43-dac502259ad0.png

标准左对齐较少使用,下图为左对齐时序图,和PHILIPS格式对比可以看出,标准左对齐格式的数据的MSB没有相对于BCLK延迟一个时钟。左对齐格式的左声道的数据MSB在WS上升沿之后SCK/BCLK的第一个上升沿有效;右声道的数据MSB在WS下降沿之后SCK/BCLK第一个上升沿有效。标准左对齐格式的优点在于,由于在WS变化后的第一个SCK上升沿就开始采样,它不需要关心左右声道数据的字长,只要WS的时钟周期足够长,左对齐的方式支持16-32bit字长格式。

fe570e60-388c-11ed-ba43-dac502259ad0.png

标准右对齐也叫日本格式,EIAJ (Electronic Industries Association of Japan) 或SONY格式,下图为右对齐时序图。右对齐格式左声道的数据LSB在WS下降沿的前一个SCK/BCLK上升沿有效,右声道的数据LSB在WS上升沿的前一个SCK/BCLK上升沿有效。相比于标准左对齐格式,标准右对齐的不足在于接收设备必须事先知道待传数据的字长。这也解释了为什么许多CODEC都会提供多种右对齐格式选择功能。

注:

标准左对齐和标准右对齐模式的LRCK/WS高低电平对应的左右声道与标准I2S模式的规定恰好相反!标准左右对齐LRCK/WS高电平对应左声道,LRCK/WS低电平对应右声道;而I2S低电平对应左声道,LRCK/WS高电平对应右声道!

4. I2S数据时钟(SCK)频率计算

例如:设声音的采样频率为44.1 kHz,即声道选择信号(帧时钟)WS的频率必须也为44.1 kHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK的频率为:44.1 kHz×16×2=1.4112 MHz

SCK = 采样率 * 位宽 * 通道数

WS = 采样率

如果需要传输20 bit、24 bit或32 bit的左右声道的数据,可以提高SCK的频率,由上式可以计算出需要的SCK的频率。

PCM接口

1. PCM简介

PCM (Pulse Code Modulation) 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。下图为 4 bit 采样深度的PCM数据量化示意图。

fe87b498-388c-11ed-ba43-dac502259ad0.png

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相近。

综合不少厂商的数据手册,笔者发现,在应用PCM音频接口传输单声道数据(如麦克风)时,其接口名称为PCM;双声道经常使用I2S;而TDM则表示传输两个及以上声道的数据,同时区别于I2S特定的格式。

2. 信号定义

PCM接口与I2S相似,电路信号包括:

PCM_CLK 数据时钟信号

PCM_SYNC 帧同步时钟信号

PCM_IN 接收数据信号

PCM_OUT 发送数据信号

TDM/PCM与I2S接口对应关系见下表:

fede1e00-388c-11ed-ba43-dac502259ad0.png

3. 操作模式

根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:

Mode A: 数据在FSYNC有效后,BCLK的第2个上升沿有效

Mode B: 数据在FSYNC有效后,BCLK的第1个上升沿有效

ff0e4274-388c-11ed-ba43-dac502259ad0.png

ff3e9c44-388c-11ed-ba43-dac502259ad0.png

注:由于没有统一标准,不同厂商对Mode A和Mode B定义可能有所差别。

在实际应用中,总是以帧同步时钟FSYNC的上升沿表示一次传输的开始。帧同步时钟的频率总是等于音频的采样率,比如44.1 kHz,48 kHz等。多数应用只用到FSYNC的上升沿,而忽略其下降沿。根据不同应用FSYNC脉冲宽度的差别,PCM帧同步时钟模式大致分为两种:

长帧同步 Long Frame Sync

短帧同步 Short Frame Sync

注:

a. 长帧同步,如图所示,FSYNC脉冲宽度等于1个Slot的长度。Slot在TDM中表示的是传输单个声道所占用的位数。如图所示TI McASP接口的TDM包括6个Slots,即它最多可包括6声道数据。注意,Slot的位数并不一定等于音频的量化深度。比如Slot可能为32 bit,其中包括24 bit有效数据位(Audio Word) + 8 bit零填充(Zero Padding)。不同厂商对Slot的叫法可能有所区别,比如Circus Logic称之为Channel Block;

ff649688-388c-11ed-ba43-dac502259ad0.png

b. 短帧同步,FSYNC脉冲宽度等于1个BCLK周期长度;

c. 由于没有统一标准,不同厂商对FSYNC脉冲宽度及触发边沿的设置可能不同,以器件手册为准。

ffbe88a0-388c-11ed-ba43-dac502259ad0.png

8-bit长帧同步模式

ffe7b8a6-388c-11ed-ba43-dac502259ad0.png

16bit 长帧同步模式

5. 时钟(BCLK)频率的计算

FSYNC的频率等于音频的采样率(例如44.1 kHz,48 kHz等)。Frame每次传输包括所有声道的数据。PCM采样音频数据量化深度一般在16-32bit(最常见为16/24bit)。那么对于8声道,每个声道32bit音频数据,采样率48kHz的系统,TDM的系统时钟速率为:8 × 32 × 48kHz = 12.288 MHz

BCLK = 采样率 * 位宽 * 通道数

FYNC = 采样率

在器件Datasheet中,可以见到TDM128/TDM256/TDM384/TDM512等说法,数字的含义为单个TDM数据帧包含数据的比特数(即帧长)。TDM128:16bit * 8 channel。TDM256:32bit * 8channel。依次类推。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据信号
    +关注

    关注

    0

    文章

    58

    浏览量

    11969
  • I2S
    I2S
    +关注

    关注

    1

    文章

    64

    浏览量

    41902
  • 时钟信号
    +关注

    关注

    4

    文章

    448

    浏览量

    28542

原文标题:I2S、TDM、PCM音频总线

文章出处:【微信号:硬件测试杂谈,微信公众号:硬件测试杂谈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    多颗PCM1808共用I2S总线遇到的问题求解

    请教大家一个问题,目前我在开发一个产品:用4颗PCM1808将7.1声道的模拟信号转换为I2S信号,然后给到TAS5548进行处理,那么就遇到4颗PCM1808共用SCLK 、LRCK 、MCLK
    发表于 11-04 07:50

    PCM3070如何切换I2S信号和ADC的信号?

    本人最近正在做PCM3070这款芯片的应用。由于没有EVM,所以也没有用TI提供的GDE设计软件,自己看手册摸索着做,现在情况是PCM3070作为从器件,I2S输入,可以出声。然后接下去我要做
    发表于 11-01 08:26

    请问PCM1864音频信号输入到对应I2S数据输出的延迟时间是多少?

    PCM1864音频信号输入到对应I2S数据输出的延迟时间是多少
    发表于 10-29 08:33

    SRC4192能否支持输入TDM格式音频数据,输出I2S,进行数据格式转换?

    SRC4192这款芯片能否支持输入TDM格式音频数据,输出I2S,进行数据格式转换。在我看TI这款芯片的datasheet时候管脚描述如下: 我理解是可以TDM输入的,可是后面关于输
    发表于 10-25 11:41

    PCM5100A是可以支持3线I2S数据的,为什么无法听到正常的音频

    我打算设计一个前级音频,数字传输部分输出I2S接口,芯片没有提供主时钟信号,看贵司PCM5100A是可以支持3线I2S数据的。芯片没有检测到MCLK就会内部生产一个主时钟,但为什么我
    发表于 10-25 08:02

    pcm1865的i2s协议2单通道已经实现,pcm1865实现4通道是不是就不能用i2s协议了,必须要pcm实现?

    pcm1865的i2s协议2单通道已经实现,pcm1865实现4通道是不是就不能用i2s协议了,必须要
    发表于 10-25 06:06

    请问AIC3254的I2S接口如何工作与TDM模式?

    如题,AIC3254的I2S接口如何工作与TDM模式?
    发表于 10-23 06:21

    是否有I2SPCM互转的IC?

    是否有I2SPCM互转的IC?
    发表于 10-21 06:59

    请问PCM1864是否支持4个单端MIC输入, 输出i2s?

    我看规格书只有一个i2s, 4 mic in, 如何分出这些mic的data在一个i2s? 据我所知output format TDM is ok. 请问一下PCM1864 是否支持
    发表于 10-21 06:56

    在应用TAS2564电路的时候,要在TDM端口打入I2S音频信号吗?

    我们已经采购了一些TAS2564电路,准备基于TAS2564电路开发音频产品,请问在应用该电路时候,只要在TDM端口打入I2S音频信号吗,需不需要从
    发表于 09-29 08:21

    请问PCM4204是I2S接口吗?

    .请TI工程师确定一下 PCM4204是I2S接口?。如果是I2S,如果与STM32F407连接,是不是PCM的M_CLK对应I2S的MC
    发表于 09-27 09:13

    pcm音频输出接口有哪些

    音频输出接口的具体形式可以因不同的应用场景和设备而有所不同,但通常包括以下几种常见的接口类型: 1. I2S(Inter-IC Sound)接口 定义 :I2S是飞利浦在1986年定义(1996年修订)的一种数字
    的头像 发表于 09-25 11:32 1342次阅读

    I2S总线的定义和特点

    I2S(Inter-IC Sound)总线,又称为集成电路内置音频总线,是飞利浦公司(现为恩智浦半导体)为了数字音频设备之间的
    的头像 发表于 09-03 14:08 1102次阅读

    请问ESP32-C3 I2S接口支持PDM接收吗?

    ESP32-C3 I2S接口支持PDM接收吗?看到 C3的datasheet上只标了支持 PDM TX 接口。 原文如下: \"支持 TDM PCMTDM MSB 对齐、
    发表于 06-20 07:04

    基于I2S接口的Linux内核音频技术

    I2S是飞利浦定义的数字音频传输标准,用于数字音频数据在系统内部器件之间传输。
    发表于 02-27 14:00 3012次阅读
    基于<b class='flag-5'>I2S</b>接口的Linux内核<b class='flag-5'>音频</b>技术