Mipi SoundWire Spec 详解4.4

目录

4.4 负载特性

4.4.1 负载流与数据端口

4.4.1.1 负载类型

4.4.2 负载采样

4.4.2.1 数据缓冲

4.4.3 负载传输

4.4.3.1 负载数据视图

4.4.3.2 采样事件视图

4.4.3.3 传输视图

4.4.3.4 分割音频样本帧

4.4.4 数据端口中的开发和测试支持


4.4 负载特性

更多详细信息及相关规范性规格包含在第12节中。

本节总结了SoundWire中与传输负载直接相关的特性。

4.4.1 负载流与数据端口

SoundWire接口的主要目的是传输负载流。在一个典型的系统中,许多负载流会被复用在一起。

普通的负载流是一系列样本,通常代表音频数据。有一种可选的特殊类型的负载流,名为批量负载传输(Bulk Payload Transport,BPT),可以用于传输大量数据,这些数据通常不代表音频样本数据。(参见4.3.8节中的批量寄存器访问)

数据端口是设备的一个子集,它是SoundWire总线上一个负载流的源或接收端。数据端口提供了一个负载流被划分为一个或多个通道的抽象,在音频应用领域,这些通道将对应于单独的音频通道。

数据端口有一组寄存器,其中包含控制音频应用程序与传输机制之间数据流动的参数(例如,通道数量、样本大小、采样率),以及控制数据如何复用到单一共享的SoundWire比特流中的定位参数(即将数据划分为帧内的块)。

用于给定负载流的比特槽位置参数集允许对多个流进行复杂的复用,但总体效果可以简单地视为从一个源数据端口到一个(或多)接收数据端口的点对点(或多点)连接。逻辑连接两端的数据端口都以相同的方式看待负载流——识别帧内的相同比特槽集,并将这些比特槽中传输的数据映射到相同的通道数量、样本大小和采样率。

解释

  • 负载流:负载流是指在SoundWire总线上传输的数据流,包括音频数据流和其他类型的数据流。
  • 数据端口:数据端口是设备的一个子集,它作为负载流的源或接收端。数据端口可以将负载流划分为一个或多个通道。
  • 批量负载传输(BPT):这是一种可选的特殊负载流类型,用于传输大量数据,这些数据通常不代表音频样本数据。
  • 寄存器参数:数据端口有一组寄存器,其中包含控制数据流动的参数,如通道数量、样本大小和采样率。
  • 复用:负载流通过复用被组合在一起,以通过单一的总线进行传输。数据端口的寄存器中的定位参数控制数据如何被复用到比特流中。
  • 点对点连接:尽管存在复杂的复用,但从一个源数据端口到一个接收数据端口的连接可以被视为简单的点对点连接。逻辑连接两端的数据端口以相同的方式处理负载流。
4.4.1.1 负载类型

SoundWire对在负载流中传输的数据含义保持中立。传输能力使用通道和样本的抽象来描述,但数据不一定必须代表音频样本,可以以任何形式编码。

SoundWire的典型用途是传输音频样本,如脉冲编码调制(PCM,每样本最多64位)或脉冲密度调制(PDM,从多比特PDM到每样本1比特),并且这些样本可以在一个系统中自由混合。数据的任何编码方式,如二进制补码或符号和绝对值编码,都是特定设备中特定数据端口的实现定义属性,与SoundWire接口的操作无关。

解释

  • 负载流中的数据:SoundWire对于在负载流中传输的数据含义不作任何假设,数据可以是任何形式的编码,不一定是音频样本。
  • 音频样本:SoundWire通常用于传输音频样本,包括脉冲编码调制(PCM)和脉冲密度调制(PDM)。
  • PCM和PDM:PCM可以支持每样本最多64位,而PDM可以从多比特PDM到每样本1比特。这两种类型的样本可以在一个系统中自由混合。
  • 数据编码:数据的具体编码方式(如二进制补码或符号和绝对值编码)是由特定设备中特定数据端口的实现定义的,与SoundWire接口的操作无关。

4.4.2 负载采样

更多详细信息及相关规范性规格包含在第12.1.2节和第12.2.1节中。

数据端口生成一系列采样事件,这些事件之间由整数个BitSlots构成的采样间隔分隔。这些采样事件与传输负载数据的机会一一对应,在正常(等时)情况下,它们还与音频采样事件相对应。

与音频采样的这种对应关系可能是直接的——由SoundWire时钟信号本身驱动——也可能是间接的,即设备内部的时钟源与SoundWire时钟有关联,例如通过锁相环(PLL)生成。

SoundWire还支持异步采样,其中只有一部分采样事件对应于实际的音频采样事件,而这些音频采样事件是由另一个时钟源创建的,该时钟源可能通过锁相环(PLL)从SoundWire时钟派生而来,也可能与之无关。

解释

  • 采样事件:数据端口生成一系列采样事件,这些事件与传输负载数据的机会一一对应。
  • 等时采样:在正常情况下,采样事件与音频采样事件相对应,这可能是由SoundWire时钟信号直接驱动的,或者是通过设备内部的时钟源间接驱动的。
  • 异步采样:在这种情况下,只有部分采样事件与实际的音频采样事件相对应,音频采样事件是由独立的时钟源产生的,该时钟源可能通过锁相环(PLL)从SoundWire时钟派生而来,也可能与SoundWire时钟无关。
4.4.2.1 数据缓冲

数据端口在其传输机制和音频采样侧之间提供了一定程度的数据缓冲。这种缓冲允许一个音频样本在前一个样本通过总线传输完成之前被提交给源数据端口,并且允许一个音频样本在前一个样本被交付到数据端口的音频应用侧之前开始在接收数据端口处的传输。

数据端口中所需的最小缓冲量受到负载传输参数的影响,例如,如果数据端口被配置为在传输前组合四个样本,则这将消耗更多的缓冲空间。

数据端口及其相关的音频应用电路可能包含与设备内部实现定义的音频处理相关的更多缓冲电路,如滤波等。

为了以突发的方式使用负载传输,数据端口可能包含更多的缓冲电路,这可能是出于系统设计原因,比如电源管理。这种突发式的传输可以使用与异步采样相关的受流量控制的传输,或者依赖于“快速运行并停止”的系统设计,在这种设计中,数据以突发的形式传输,然后在接收数据端口消费这些数据的同时停止SoundWire时钟。

解释

  • 数据缓冲:数据端口在传输机制和音频采样之间提供缓冲区,使得即使在前一个样本未完成传输的情况下,新的样本也可以准备好等待传输。
  • 最小缓冲需求:数据端口所需的最小缓冲量取决于负载传输参数,例如,如果多个样本被组合起来传输,那么需要更大的缓冲空间。
  • 额外的缓冲:数据端口和相关音频应用电路可能包含额外的缓冲电路来支持设备内部的音频处理功能,例如滤波。
  • 突发式传输:数据端口可能采用突发式传输方式来优化系统设计,例如电源管理。这种方式可以通过异步采样的流量控制传输来实现,或者通过“快速运行并停止”的设计,即先发送一批数据,然后在接收端口处理这批数据时停止SoundWire时钟。

4.4.3 负载传输

更多详细信息及相关规范性规格包含在第12节中。

负载传输机制使简单的参数能够控制在SoundWire总线上非常灵活的负载流复用。

抽象模型将比特流视为一个矩形的BitSlots数组,称为帧,具有编程确定的行数和列数,一行中的比特按顺序传输,然后依次传输每一行直到帧的末尾。

每个数据端口根据编程的寄存器参数以三种方式查看这个模型:

  1. Payload Position:每个数据端口通过指定的寄存器参数来确定其负载数据在帧中的位置。这包括确定数据开始的位置、结束的位置以及数据在帧中的排列方式。

  2. Channel Mapping:数据端口还需要定义如何将多个通道映射到比特流中。这意味着指定哪些比特槽对应于哪个通道的数据,以及如何在帧中分布这些通道的数据。

  3. Sample Rate and Sample Size:数据端口还需要指定样本率和样本大小。样本率决定了样本之间的时间间隔,而样本大小决定了每个样本所占用的比特数。

通过这些参数的组合,可以实现多种不同的负载流复用方式,从而支持复杂的数据传输需求。例如,可以在一个总线上同时传输多个音频通道的数据,每个通道可以有不同的采样率和采样大小。

解释

  • 负载位置:通过编程的寄存器参数来确定数据端口的负载数据在帧中的位置。
  • 通道映射:数据端口定义如何将多个通道的数据映射到比特流中。
  • 样本率和样本大小:数据端口还需要指定样本率和样本大小,以控制数据的传输速率和每个样本所占用的空间。
4.4.3.1 负载数据视图

更多详细信息及相关规范性规格包含在第12.1.3节和第12.2.2节中。

采样间隔(Sample Interval)参数定义了采样事件之间的距离,以BitSlots计数(即SoundWire时钟半周期的数量)。

每个采样事件与一个音频样本帧相关,即一组样本,每个通道一个。采样字长(SampleWordLength)参数选择每个通道样本中有多少位,并结合活动通道的数量定义一个音频样本帧中有多少位。一到四个这样的音频样本帧被组合在一起形成一个负载数据块,这是一个要传输的位集合。

解释

  • 采样间隔:采样间隔定义了采样事件之间的距离,以BitSlots计数。
  • 音频样本帧:每个采样事件与一个音频样本帧相关,每个样本帧包含来自每个通道的一个样本。
  • 采样字长:采样字长参数定义了每个通道样本中有多少位。
  • 负载数据块:一到四个音频样本帧被组合在一起形成一个负载数据块,这个块是要传输的位集合。

负载数据视图通过采样间隔参数定义了采样事件之间的距离,并通过采样字长参数定义了每个通道样本中有多少位。一个音频样本帧包含来自每个通道的一个样本,一到四个这样的音频样本帧被组合在一起形成一个负载数据块,该块是要通过SoundWire总线传输的位集合。

4.4.3.2 采样事件视图

更多详细信息及相关规范性规格包含在第12.1.2节和第12.2.1节中。

采样间隔(Sample Interval)参数定义了一个采样窗口,这是一个在比特流中的连续位序列,因此它对应于帧中的一个矩形(或者如果采样间隔不是列数的倍数,则在第一行和/或最后一行有短段)。一个采样间隔紧随前一个之后,所以一个采样窗口紧邻前一个,形成一系列的采样窗口。

一到四个采样间隔被组合在一起形成一个负载数据间隔,相应的采样窗口被组合在一起形成一个负载数据窗口。这个负载数据窗口再次是一个帧中的连续矩形,或者在第一行和/或最后一行有短段。一个负载数据间隔紧随前一个之后,所以在帧内一个负载数据窗口紧邻前一个,形成一系列的负载数据窗口。

解释

  • 采样间隔:采样间隔定义了采样窗口,即比特流中的连续位序列,对应于帧中的一个矩形或带有短段的矩形。
  • 采样窗口:一个采样窗口对应于一个采样间隔,采样窗口形成一系列的采样窗口流。
  • 负载数据间隔:一到四个采样间隔被组合在一起形成一个负载数据间隔。
  • 负载数据窗口:相应的采样窗口被组合在一起形成一个负载数据窗口,这个窗口是一个连续的矩形或带有短段的矩形。

注意 : 间隔和窗口是对应的, 例如两个采样间隔之间的BitSlots时间就是一个采样窗口

4.4.3.3 传输视图

更多详细信息及相关规范性规格包含在第12.1.4节、第12.1.5节和第12.2.3节中。

HStart 和 HStop 参数选择帧中的一个矩形子集,称为传输子帧,它包含了数据端口可能用来传输其负载流的所有候选BitSlots。这提供了对负载流复用的第一级控制。

一个负载数据窗口与传输子帧的交集选择了一个矩形(或带有短段的矩形),称为负载传输窗口,这是候选BitSlots的一个细化集合。负载数据窗口流因此选择了一个相应的负载传输窗口流。

数据端口在一个负载传输窗口中传输一个负载数据块的位。偏移(Offset)参数控制负载数据块在这个负载传输窗口中的位置,因此控制了这个数据端口实际上使用的候选BitSlots,而未使用的候选BitSlots可供其他数据端口的另一个负载流使用。这提供了对负载流复用的进一步控制。

解释

  • 传输子帧:HStart 和 HStop 参数选择了一个矩形子集,即传输子帧,它包含了所有候选BitSlots,这些BitSlots可以被数据端口用来传输其负载流。
  • 负载传输窗口:负载数据窗口与传输子帧的交集选择了一个矩形或带有短段的矩形,称为负载传输窗口,这是候选BitSlots的一个细化集合。
  • 偏移参数:偏移参数控制了负载数据块在负载传输窗口中的位置,因此控制了数据端口实际上使用的候选BitSlots,未使用的BitSlots可供其他负载流使用。

传输视图通过HStart 和 HStop 参数定义了传输子帧,它包含了所有候选BitSlots。负载数据窗口与传输子帧的交集选择了一个负载传输窗口,这是候选BitSlots的一个细化集合。偏移参数控制了负载数据块在负载传输窗口中的位置,因此控制了数据端口实际上使用的候选BitSlots,未使用的BitSlots可供其他负载流使用。这提供了对负载流复用的进一步控制。

4.4.3.4 分割音频样本帧

更多详细信息及相关规范性规格包含在第12.1.3节、第12.1.5节、第12.1.6.2节、第12.2.2节和第12.2.3节中。

当不同采样率的负载流被复用时,有时可能会有利地将一个音频样本帧中的N个通道样本分散开来,就像它们是从一个以N倍采样率运行的通道中的一组N个样本一样。这种模式是通过将BlockPackingMode参数设置为Block-per-Channel来选择的,这样会导致以下差异:

  • 在负载数据视图中,负载数据块被替换为N个负载数据子块。
  • 在采样事件视图中,负载数据窗口始终等于采样窗口,因为数据端口没有将多个采样事件组合在一起。
  • 在传输视图中,N个负载数据子块在单个负载传输窗口内分布,受两个偏移参数控制。这类似于,但并不完全相同于,一个以N倍采样率运行的通道的N个负载数据块的定位参数。

这种方法虽然更复杂,但使用相同的基本机制增加了负载流复用方式的灵活性。

解释

  • BlockPackingMode参数:当设置为Block-per-Channel时,会改变负载数据块、采样窗口和负载传输窗口的处理方式。
  • 负载数据子块:在负载数据视图中,一个负载数据块被替换为N个负载数据子块。
  • 采样窗口等于负载数据窗口:在采样事件视图中,负载数据窗口始终等于采样窗口。
  • 负载数据子块的分布:在传输视图中,N个负载数据子块在单个负载传输窗口内分布,受两个偏移参数控制。

当不同采样率的负载流需要复用时,可以通过设置BlockPackingMode参数为Block-per-Channel来将一个音频样本帧中的N个通道样本分散开来。这导致负载数据块变为N个负载数据子块,采样窗口始终等于负载数据窗口,并且N个负载数据子块在单个负载传输窗口内分布。这种方法增加了负载流复用方式的灵活性。

4.4.4 数据端口中的开发和测试支持

更多详细信息及相关规范性规格包含在第12.1.11节和第12.2.5节中。

数据端口可以切换到测试模式,在这种模式下,它们传输定义好的测试数据而不是音频样本。测试模式包括静态数据和伪随机比特序列。

解释

  • 测试模式:数据端口可以被置于测试模式,在这种模式下,它们传输预定义的测试数据而非实际的音频样本。
  • 静态数据:在测试模式下,数据端口可以传输固定的静态数据。
  • 伪随机比特序列:数据端口也可以传输伪随机比特序列,这有助于测试系统对随机数据的处理能力。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s多情公子s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值