目录
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之间的信号同步的关注点不一样。
- 对于TX master和RX slave这种组合模式,片间同时传输sclk,ws/fs和sdata,理想情况下只要保证三个信号用相同时间达到RX端,那么RX一定可以正确的采样,但由于各自走线的不同,delay各不一样,为了能正确采样就要考虑信号之间的skew;
- 对于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。
然后我们给出一些参数的量级:
- adif和codec的寄存器setup和hold时间都在 几十到几百个ps
- adif和codec的工作时钟都是sclk的十几到上百倍
- 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端。
本节就以数据从