I2S/PCM board-level 约束及同步(latency&skew&bitsync)

这篇具有很好参考价值的文章主要介绍了I2S/PCM board-level 约束及同步(latency&skew&bitsync)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.I2S/PCM 信号间skew约束  

2.I2S/PCM的板间latency

3.逻辑设计上的保证

4.音频传输错误检测


        I2S/PCM是典型的低速串口,在两个方向上分别有两组信号,我们以soc为视角分为soc-adif和外设audio-codec。

        adif输入:sclk_i,  ws_i, sdi.【当然并不是三个输入信号同时有效,只有adif RX slave时,三个输入都会有效】

        adif输出:sclk_o,  ws_o, sdo.【也只有adif TX master时,三个输出才会有效】

        怎样保证信号在片间传输时能够正确被采样?这个问题重点就是信号间的同步。I2S/PCM自带帧同步信号,对于I2S来说ws的下降沿就是帧起始;对于PCM来说fs的上升沿就是帧起始。那么如何保证bit同步呢?

首先应该看到在不同的音频传输模式下,adif与codec之间的信号同步的关注点不一样。

  1. 对于TX master和RX slave这种组合模式,片间同时传输sclk,ws/fs和sdata,理想情况下只要保证三个信号用相同时间达到RX端,那么RX一定可以正确的采样,但由于各自走线的不同,delay各不一样,为了能正确采样就要考虑信号之间的skew;
  2. 对于TX slave和Rx mst这种组合模式,要保证RX输出的ws/fs sclk到了TX端产生sdo之后,再到RX端用ws/fs sclk能够正确采样TX输出的sdo,就需要确保RX mst输入的sdo数据和ws/fs的偏差在一个T(sclk)之内。所以此种模式不仅关注信号间skew,还要关注信号maxDelay。

然后我们给出一些参数的量级:

  1. adif和codec的寄存器setup和hold时间都在 几十到几百个ps
  2. adif和codec的工作时钟都是sclk的十几到上百倍
  3. sclk(bitclk采样时钟)最大十几MHz,所以sclk的周期在100ns量级 【所有音频采样率及采样深度请见另一文章 TODO

给出这些参数的量级意义在于指导设置合适的skew和maxDelay,用以最大程度的增加采样可靠性。

        另外要实现adif信号的正确传输,除了在物理实现上对skew和maxDelay的约束,我们希望在硬件代码设计的过程中能够提供一些同步逻辑。下面就从这三个方面来展开说明。

        设D(sclk) ,D(fs) 和 D(sdo)分别是TX master时 从adif TX到芯片IO的延迟时间,或者Rx slave时从芯片IO到adif RX的延迟时间。

1.I2S/PCM 信号间skew约束  

        对信号组设置skew约束,skew都约束在5ns以下【见过约束为1ns,3ns的。这个skew阈值主要决定于最大SCLK的周期,和工艺以及IO电压也有关系】,约束包括soc端和codec端。

        本节就以数据从adif TX 到芯片IO这一段来分析时序。图1给出了信号间skew较大,导致采样错误的例子:

I2S/PCM board-level 约束及同步(latency&skew&bitsync),soc低速串口和音视频接口,I2S/PCM,同步

                                                                         图 1

        NOTE:上图中源端信号中 fs和sdo都是在上升沿改变,且与上升沿的delay很小,这个delay就是寄存器的内部延迟Tco【7nm工艺下在几十ps】,是符合实际情况的。

        上图中看出D(sclk), D(fs)和D(sdo) 差别较大,在源端三个信号的关系是 用sclk上升沿采样fs和sdo数据,其中sdo第一个数据‘1’与fs有一拍间隔;而在IO处,用sclk采样fs和sdo时,会发现fs和sdo第一笔数据差了两拍,明显出现了错误,所以尽量约束信号在传输过程中的skew,理想情况下,三根信号skew为0,必然在收端是可以正确采样的。

        图2显示了上升沿变换,上升沿采样的情况下 D(fs)< D(sclk) < D(sdo)的情况,而且已经比图1的skew明显小了,但是分析发现 ,虽然三则之间skew不大【只要D(sclk)>D(fs)+Tco】,就出现了fs和sdo第一笔数据差了2各sclk的情况。还是会采样错误。        

I2S/PCM board-level 约束及同步(latency&skew&bitsync),soc低速串口和音视频接口,I2S/PCM,同步

                                                                 图 2

        所以对于I2S这种需要输出sclk+控制信号+data的接口,通常会有以下的延时要求

        D(sclk) <= D(fs) <= D(sdo)------这种约束的前提就是setup、hold、Tco远小于sclk周期。图3就给出了D(sclk) <= D(fs) <= D(sdo)情况下的时序图,明显看出各信号都在正确的沿被采样。

        其他不满足D(sclk) <= D(fs) <= D(sdo)的情况,也很容易出现时序错误,根因在于Tco太小,D(fs)和D(sdo)延迟小了就会被提前采样。        

I2S/PCM board-level 约束及同步(latency&skew&bitsync),soc低速串口和音视频接口,I2S/PCM,同步

                                                                        图 3

        由上面图1和图3可以观察到另一个现象就是,在上升沿采样时,sclk上升沿到来时,fs和sdo已经稳定了很长时间【Tco时间很小】,而目前工艺下setup时间都在几十ps,我们是不是可以用sclk的下降沿采样信号呢?

        答案是肯定的,图4就给出了上升沿改变信号,对端下降沿采样的时序图。可以明显看到采样窗口左右两边都大了很多,无论是setup和hold都能很好的满足。

I2S/PCM board-level 约束及同步(latency&skew&bitsync),soc低速串口和音视频接口,I2S/PCM,同步

                                                            图 4

        图4还可以看出来D(fs) > D(sdo),但任然能够正确的采样数据。此时对D(sclk) <= D(fs) <= D(sdo)的约束要求不是那么强烈,有的设计在这种情况下就没有增加这个约束【但最好加上这个约束,可以使时序分析简单】

        需要注意的是:而对于TX slv,直接用adifclk对fs打拍,在和fs取上升后沿这种方式。此时在TX slv看到的delay要满足D(sclk) <= D(fs) <= D(sdo),否则fs会提前一个上升沿,导致出错。

        无论是TX slv还是RX slv,满足D(sclk) <= D(fs) <= D(sdo),并满足采样沿和变化沿不同,对于正确传输都是有好处的。

2.I2S/PCM的板间latency

        前文已经说了,只有Tx slave和R下 master的组合模式下,才比较关心板间latency,下面就来给出分析。

        在TX slave 和Rx master的工作模式下,TX接收Rx输出的ws/fs和sclk信号并进行同步,这个同步的过程需要TX 两个adifclk时间,再加上沿检测只有变化后沿【即翻转后一个adifclk宽度脉冲的信号】又晚了一个adifclk,然后用ws/fs、sclk的变化后沿输出sdo,sdo经过板间延迟D(sdo),到达RX,而此时要用RX的ws/fs和sclk来正确采样sdo,这就要求3adifclk+D(sdo)【这里面fs明显是没有用sclk下沿采样的】不要超过一个sclk的周期.

        对于RX mst的sclk和ws/fs delay为0,sdi的延迟经历了以下路径:

Rx ws/fs_o -----> Tx ws/fs_i -----> Tx ws/fs_sync ------> Tx sdo -----> Rx sdi ------> Rx sdi_sync

        如下图所示是上升沿变化上升沿采样,可以看出要保证sdi_sync与fs_o的时序关系,就要求上面的延迟不超过一个sclk的周期;如果是上沿变化下沿采样,就要求上面的延迟不超过sclk的半周期。

        另外从下图可以看出在TX slv 端不能用同沿采样FS【可以用sclk负沿采样】 这样得到的FS上升沿必然比RX mst的fs上升沿至少晚一拍,用此产生sdo到了RX晚的更多。最好是直接在adifclk打拍fs_sync和fs一起得到fs的上升沿。

I2S/PCM board-level 约束及同步(latency&skew&bitsync),soc低速串口和音视频接口,I2S/PCM,同步

        在实际的项目中由于sclk在100ns量级,adifclk在10ns~0.xns的量级,D(sdo)也在10+ns【主要是一边的pad延迟就在5ns左右,两边加起来在10ns】的范围,所以有些项目就没有对latency设置约束。

        如果sdo在RX master端和ws/fs间隔太远超过1个sclk,这时候就需要逻辑设计来保证。

3.逻辑设计上的保证

        综上所述有以下结论:

  1.  满足D(sclk) <= D(fs) <= D(sdo)
  2. TX master+Rx slv组合中TX fs/ws,sdata在sclk在变化变化沿和RX端fs/ws,sdata用sclk的采样沿使用不同
  3. TX slv+Rx mst组合中Rx输出fs/ws所用的sclk沿和采样sdata的沿用同沿,TX采样fs/ws用的sclk沿与Rx端相反

        只有满足上述条件,对I2S/PCM来说才是最优的传输和采样约束。为了灵活的满足上述条件,在逻辑设计时,要求能够调整sclk,fs/ws,和sdo的相位,并且能够调正sclk的作用沿。

        其实无论skew还是latency的约束,都不能完全保证传输和采样完全正确,而且一旦约束完成,想传输更高的sclk的音频,很容易就出错。所以希望在逻辑设计上做一些工作,能够更好的保证信号间的同步。这就需要能够调整信号间的相位。相位可以以高频adifclk的周期来调整,这个相位调整的精度比较高。另外一种就是以sclk的周期来调整相位。

        对于TX master和RX slave组合,在RX接收端对sclk,ws/fs,sdata信号同步之后,在adifclk的精度上调整相位就可以了,也就是软件测试时手动给三个不同的信号设置不同的打拍延迟数,使放音正常。然后把这几个参数固定,就可以稳定使用了。

        而对于TX slave和Rx master组合,常常会出现sdo进入RX之后比原RX的ws/fs多晚了一个sclk周期以上,此时就需要对原来的RX ws/fs进行delay,可以以adifclk为精度delay,如果不够还要以sclk为精度delay,也做成软件手动配置和调试来得到一个稳定的值。另外现在的codec、adif都支持配置第一个sdata与ws 下降沿或fs上升沿的data_offset。如果Rx master没做ws/fs的delay,一旦发现音频播放有问题,就可以让Rx mst设置的data_offset比Tx slv的data_offset大来调整。

4.音频传输错误检测

        有些代码实现通过检测sdata的bit数左右声道不一致【SNPS的hdmi这么干的】,或整帧的bit数和配置值不一样来上报错误。

        但这只能检测到有限的错误,比如ws/fs和sdata的间隔错误了,就检测不出来。但这种间隔错误一般在调试完delay参数后就不会出现。文章来源地址https://www.toymoban.com/news/detail-657527.html

到了这里,关于I2S/PCM board-level 约束及同步(latency&skew&bitsync)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音频——I2S 标准模式(二)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传 传输依赖于字长、BCLK 频率和采样率(BCLK=Fs x 声道数 x 采样位数) 在每个采样的

    2024年02月10日
    浏览(46)
  • 音频——I2S DSP 模式(五)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 DSP/PCMmode 分为 Mode-A 和 Mode-B 共 2 种模式。不同芯⽚有的称为 PCM mode 有的称为 DSP mode。PCM 只有⼀个起始信号,先传输左声道后传输右声道。 Mode-A 数据在第 1 个 BCLK 脉冲处 上升沿数据有

    2024年02月09日
    浏览(45)
  • 一文搞懂I2S通信总线

    目录 1、物理特性 2、常见的I2S数据格式 2.1、I2S Philips标准 2.2、左对齐(MSB)标准 2.3、右对齐(LSB)标准 之前我们讲过I2C通信总线,本篇博文将讲一讲I2C的变种:I2S总线。 I2C和I2S都是由Philips公司(2006年迁移到NXP)发布的串行总线,I2S是在I2C之后发布,I2S专为传输音频数据而

    2024年01月16日
    浏览(41)
  • STM32个人笔记-I2S

    现实存在的声音是模拟量,这对声音保存和长距离传输造成很大的困难,一般的做法是把模拟量转成对应的数字量保存,在需要还原声音的地方再把数字量的转成模拟量输出。 模拟量转换成数字量,3个过程:采样、量化和编码。 蓝线的距离就是采样信号的周期,即对应一个

    2024年02月10日
    浏览(47)
  • 音频——I2S 左对齐模式(三)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 I2S 左对齐标准 标准左对齐格式的数据的 MSB 没有相对于 BCLK 延迟一个时钟。左对齐格式的左右声道数据的 MSB 在 LRCLK 边沿变化后 BCLK 的第一个上升沿有效 LRCLK 为 1 传输左声道数据,L

    2024年02月10日
    浏览(45)
  • 音频——I2S 协议基本概念(一)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 I2S 信号线有多种模式 五线 I2S 四线 DAC I2S 四线 ADC I2S 两线 TX I2S 两线 RX I2S 以五线 I2S 为例,各个信号线的功能及描述见下表 信号线 描述 SCLK 串行时钟,也叫位时钟(BCLK),对应数字⾳频

    2024年02月09日
    浏览(41)
  • 瑞芯微 | I2S-音频基础 -1

    最近调试音频驱动,顺便整理学习了一下i2s、alsa相关知识,整理成了几篇文章,后续会陆续更新。 喜欢嵌入式、Li怒晓得老铁可以关注一口君账号。 名称 含义 ADC(Analog to Digit Conversion) 模拟信号转换为数字信号 AEC(Acoustic Echo Cancellor) 回声消除 AGC(Automatic Gain Control) 自

    2024年03月14日
    浏览(61)
  • 音频——I2S TDM 模式(六)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 TDM 一般有三种常用操作模式:TDM A mode ,TDM B mode 和 TDM C mode, 统称为TDM mode。 基于 TDM mode,可以配置支持 TDM(Time Division Multiplexing)数据传输。可以支持传输多个声道的数据,允许多个设

    2024年02月04日
    浏览(47)
  • 【音视频开发】 I2S协议及标准

    1. 介绍 I2S(Inter—IC Sound)总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的音频数据传输。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了

    2024年02月12日
    浏览(45)
  • 音视频的简介及其I2S协议

         将针对声音的各种要求全部叠加到 DAC 和 ADC 芯片上,那么就会得到一个专门用于音频的芯片,也就是音频编解码芯片,音频 CODEC 的本质是 ADC 和 DAC.      采样率和采样位数就是衡量一款音频CODEC 最重要的指标。比如常见音频采样率有 8K、 44.1K、 48K、 192K 甚

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包