目录
4.2 低层特性
4.2.1 物理接口
4.2.1.1 信号拓扑
4.2.1.2 多数据通道
4.2.1.3 高性能PHY
4.2.2 数据编码
4.2.3 物理信号值和逻辑信号值的术语
4.2.4 对开发和测试低级功能的支持
4.3 控制特性
4.3.1 比特流与帧结构
4.3.1.1 控制字与带宽权衡
4.3.2 同步
4.3.3 时钟停止
4.3.4 命令
4.3.5 在控制字中对开发和测试的支持
4.3.6 寄存器
4.3.7 中断
4.3.8 批量寄存器访问
4.2 低层特性
4.2.1 物理接口
更多详细信息及相关规范性规格包含在第5节中。
每个SoundWire接口包含两个逻辑信号:
- 时钟 —— 一个公共时钟信号,由主设备分配到所有其他接口。
- 数据 —— 一个共享数据信号,可以由任何接口驱动,并在没有其他接口驱动时由主设备中的总线保持器维持。一些SoundWire系统拥有多个数据通道。
物理接口使用传统的单端电压电平信号。
4.2.1.1 信号拓扑
图7展示了一个SoundWire系统的示例,说明了主设备、四个从设备和一个可选监控器之间的信号驱动连接细节。
注意:监控器用虚线轮廓表示,因为这一功能通常是外部测试设备的一部分,因此在最终产品中不存在。
图7 soundwire 信号拓扑
解释
- 物理接口:SoundWire接口由两个逻辑信号组成:时钟和数据。时钟信号是由主设备提供的,用于同步整个系统;数据信号则是共享的,可以由任意接口驱动,如果没有接口驱动数据信号,则由主设备中的总线保持器维持信号的稳定状态。
- 多数据通道:某些SoundWire系统支持多个数据通道,这增加了数据传输的带宽。
- 信号拓扑:图7展示了主设备、四个从设备和一个可选监控器之间的信号连接细节。监控器在这里用虚线表示,意味着它通常是外部测试设备的一部分,而不是最终产品的组成部分。
- 单端电压电平信号:物理接口使用传统的单端电压电平信号,这意味着信号的传输是通过一个信号线相对于地线的电压变化来表示的。
4.2.1.2 多数据通道
实现可选的多通道特性的设备最多可以有八个数据通道,其中Data[0]替换正常的Data信号(参见5.2.1节的要求5和8)。
4.2.1.3 高性能PHY
实现可选的高性能PHY特性的设备有一个PHY,该PHY可以在基本PHY性能(如第5节所规定的)和至少一种更高性能模式之间切换。
本规范定义了选择高性能PHY模式的切换机制,但没有规定定义该模式下性能的任何定时参数。
解释
- 多数据通道:实现多通道特性的设备可以支持最多八个数据通道,其中Data[0]通道替代了标准的Data信号。这意味着除了主数据通道Data[0]外,设备还可以支持额外的七个数据通道(Data[1]至Data[7])以增加数据吞吐量。
- 高性能PHY:实现高性能PHY特性的设备可以在基本PHY性能和至少一种更高性能模式之间切换。这种切换机制使得设备可以根据实际需求调整PHY的工作模式,以获得更好的性能或更低的功耗。然而,规范没有定义高性能模式下的具体定时参数,这意味着这些参数可能由具体的实现来确定。
4.2.2 数据编码
更多详细信息及相关规范性规格包含在第5.1.7节、5.2.4节、8.1.5节和8.2.4节中。
数据编码采用修改过的NRZI(Non-Return to Zero Inverted,非归零反转)方式,其中不变的物理值(即编码的逻辑0)不是主动驱动的,而是由主设备中的总线保持器维持的。这有助于检测未驱动的比特符号周期,既可用于识别错误,也可用于处理未完全填充的系统。
数据信号采用DDR(Double Data Rate,双倍数据速率)方式,将所需的时钟信号频率减半,从而有助于降低整个系统的功耗。
时钟信号的频率不由规范固定,而是根据其部署的系统要求(主要是数据带宽)来选择。频率通常在一个操作周期内是不变的,并且有足够的低抖动以达到音频转换的质量水平——这些属性有助于将其用于生成连接音频设备中的采样时钟。主设备通常会协调任何时钟频率的变化,以确保音频流不会被打断——要么在系统空闲时改变它,要么与相应的其他控制参数的变化同时进行,从而使采样率保持恒定。
解释
- 数据编码:SoundWire使用一种修改过的NRZI编码方式,其中逻辑0不是通过主动驱动来表示,而是通过主设备中的总线保持器来维持。这种编码方式有助于检测未驱动的比特符号周期,这对于识别错误和处理未完全填充的系统很有用。
- 双倍数据速率(DDR):数据信号采用DDR方式,这意味着每个时钟周期可以传输两个数据位,从而将所需的时钟信号频率减半,有助于降低功耗。
- 时钟频率:时钟信号的频率不是固定的,而是根据系统要求(特别是数据带宽)来选择。在正常操作期间,时钟频率通常是恒定的,并且具有足够的低抖动,使其可用于生成音频设备中的采样时钟。
- 主设备的协调作用:主设备负责协调任何时钟频率的变化,以确保音频流的连续性。通常情况下,主设备会在系统空闲时改变时钟频率,或者与相应的其他控制参数的变化同时进行,以保证采样率保持不变。
4.2.3 物理信号值和逻辑信号值的术语
本规范使用"低"(或"L")和"高"(或"H")来表示物理信号的值,以及"逻辑0"(或"0")和"逻辑1"(或"1")来表示逻辑信号和寄存器位的值。
比特符号周期,对应于时钟信号的一半个周期,被称为BitSlots。
4.2.4 对开发和测试低级功能的支持
更多详细信息及相关规范性规格包含在第8.1.7节和8.2.6节中。
主设备有几种测试模式,在这些模式下可以禁用PHY(物理层)的部分功能。这些测试模式有助于对主设备本身的测试,也便于对由主设备和从设备组成的组装系统的测试。
解释
- 物理信号值和逻辑信号值:物理信号的值使用“低”(L)和“高”(H)表示,而逻辑信号和寄存器位的值使用“逻辑0”(0)和“逻辑1”(1)表示。物理信号值是指实际电路中电压或电流的状态,而逻辑信号值则是在更高抽象级别上的表示。
- BitSlots:BitSlots是指与时钟信号的一个半个周期相对应的比特符号周期。由于采用了DDR(双倍数据速率),所以在每个时钟周期内可以传输两个比特位,因此BitSlots表示的是一个时钟周期内的两个数据传输时段之一。
- 测试模式:主设备支持多种测试模式,这些模式允许禁用物理层的一些功能,以便于对主设备本身进行测试,也可以帮助在主设备和从设备组成的系统中进行更全面的测试。
4.3 控制特性
本节总结了SoundWire中与音频负载传输不直接相关的特性。
4.3.1 比特流与帧结构
更多详细信息及相关规范性规格包含在第6节中。
连续BitSlots的值形成一个比特流,该比特流交织了以下所有内容:
- 来自主设备的控制位,例如用于同步。
- 来自主设备或监控器的命令位,以及来自从设备或主设备的相应命令结果和响应位。
- 来自从设备的状态位。
- 负载数据,它可以是主设备到从设备、从设备到主设备或从设备到从设备之间的数据。
在比特流上施加了一个逻辑结构,将其视为一系列行(Rows),每一行包含一系列列位置(Column positions),这些行和列组成的集合被称为帧(Frame)。该比特槽数组的形状,即宽度(列的数量)和高度(行的数量),可以在一组针对音频数据场景的值范围内变化。
解释
- 比特流:比特流是一个连续的数据流,其中包含了来自主设备的控制位、命令位、从设备的状态位以及负载数据。
- 帧结构:比特流被组织成帧结构,每个帧由一系列行和列构成。每一行称为一个“Row”,每一行中的数据单元称为“Column”。帧中的行数和列数可以根据音频数据的场景进行调整。
- 控制位和命令位:控制位用于同步目的,而命令位用于主设备或监控器向从设备发送命令,以及从设备向主设备或监控器返回命令结果和响应。
- 状态位:状态位来自于从设备,用于报告从设备的状态信息。
- 负载数据:负载数据可以是主设备到从设备、从设备到主设备或从设备到从设备之间的数据传输。
4.3.1.1 控制字与带宽权衡
控制、命令和状态信息占据帧内一个固定的48个BitSlots模式,这被称为控制字。帧内的所有其他BitSlots都可以用于负载数据。通过改变帧的形状,即改变控制字在帧中所占的比例,可以将总带宽中分配给控制而不是负载数据的比例从50%(为了更快的系统初始化)调整到大约1%(为了更高的负载效率)。
解释
- 控制字:控制字是帧内一个固定的48个BitSlots,用于传输控制信息、命令和状态信息。
- 帧形状:通过调整帧的形状,即帧的高度和宽度,可以改变控制字在整个帧中所占的比例。
- 带宽分配:通过调整帧形状,可以改变分配给控制信息与负载数据的带宽比例。例如,为了更快的系统初始化,可以将控制信息的带宽比例设置为50%,而在需要更高负载效率时,可以将该比例减少到大约1%。
4.3.2 同步
更多详细信息及相关规范性规格包含在第7节中。
主设备在比特流中生成特殊的patterns ,以帮助从设备(和监控器)获取并保持与帧边界的同步。这些同步位存在于每一个帧中,其中一部分具有静态值,另一部分则在一个15帧周期内具有动态模式。
同步模式是在同一个数据信号上进行的,该信号也被负载数据使用,但设计成能够极大地降低对随机负载数据流中瞬间出现的虚假同步模式进行错误锁定的概率。
一旦从设备获取了同步,它通常会在供电期间保持同步状态。然而,在遇到比特错误的系统中,从设备有可能失去同步。SoundWire包括了允许从设备在失去同步时自行脱离总线的机制,并在重新获取同步时安全且不干扰地重新连接到总线。
解释
- 同步模式:主设备在比特流中生成特定的patterns ,这些patterns 有助于从设备获取和保持与帧边界的同步。这些patterns 包括静态值和动态模式,后者在一个15帧周期内变化。
- 同步位:同步位存在于每个帧中,它们与负载数据在同一数据信号上传输。
- 错误锁定概率:同步模式的设计降低了从设备错误锁定到随机负载数据流中短暂出现的虚假同步模式的可能性。
- 保持同步:一旦从设备获取了同步,它通常会在供电期间保持同步状态。
- 失去同步:在遇到比特错误的情况下,从设备可能会失去同步。
- 脱离和重新连接:SoundWire包括了允许从设备在失去同步时自行脱离总线的机制,并在重新获取同步时安全且不干扰地重新连接到总线。
4.3.3 时钟停止
更详细的信息及相关规范性规格包含在第8.1.4节和第8.2.3节中。
SoundWire提供了暂时停止时钟的架构支持,这有助于低功耗系统的设计。这包括设计在时钟重启时控制操作以及可选的音频负载操作能够无缝重启的系统。
停止时钟可以完全由主设备控制,例如,通过定期启动/停止来节省电力。但是,时钟停止机制也支持重启时钟的触发信号来自从设备,这种机制可能在一些应用场景中被利用,比如音频插孔检测。这种在带内的机制有助于在某些低功耗系统设计中无需额外的GPIO引脚就能实现信号传输。
解释
- 时钟停止:SoundWire支持暂时停止时钟的功能,这对于设计低功耗系统非常有用。
- 主控管理:停止和启动时钟的操作可以完全由主设备控制,例如,为了节能而定期进行启动/停止。
- 从设备触发:除了主设备控制外,时钟停止机制还支持从设备触发时钟重启,例如在检测到音频插孔插入时。
- 低功耗设计:这种机制有助于在不需要额外GPIO引脚的情况下实现信号传输,这对于低功耗设计尤为重要。
- 无缝重启:当时钟重启时,控制操作和可选的音频负载操作可以无缝重启,确保系统功能的连续性。
4.3.4 命令
更多详细信息及相关规范性规格包含在第9节中。
帧中的控制字的一部分用于命令,这些命令通常由主设备生成。定义了三种类型的命令:读取(Read)、写入(Write)和Ping。每个帧都包含一个命令。当不执行读取或写入操作时,主设备默认生成Ping命令。
读取和写入命令用于访问每个从设备内部地址空间中的控制和状态寄存器。每次访问都会从或向寄存器传输一个8位的值。
Ping命令收集所有从设备的状态信息。这些状态信息用于检测从设备在获取同步后新加入总线的情况,同时也用于通知主设备从设备中存在的某些条件。这些警报被称为中断,因为它们类似于基于CPU的系统中的中断,并且通常用于触发主设备控制软件执行异常处理序列,或者告知某些常规功能动作已完成。
注意:将这些中断信号传递给主设备接口的延迟由SoundWire协议限定,但总的中断延迟还包括主设备接口之外的系统设计,这部分不在本规范的范围内。
Ping命令还提供了一种途径,用于实现一些辅助控制功能,例如在不同流之间同步负载采样事件,或者实现总线仲裁以方便使用监控器。
解释
- 命令:命令是通过帧中的控制字传输的,主要用于控制和状态寄存器的读取和写入操作。
- 读取和写入命令:这些命令用于访问从设备中的寄存器,每次访问传输一个8位的值。
- Ping命令:Ping命令用于收集从设备的状态信息,这些信息用于检测新加入总线的从设备,并用于通知主设备从设备中的某些条件。这些条件可以触发中断,类似于基于CPU的系统中的中断。
- 中断:中断用于触发主设备控制软件执行异常处理序列,或者告知某些常规功能动作已完成。
- 辅助控制功能:Ping命令还可以用于实现一些辅助控制功能,例如在不同流之间同步负载采样事件,或者实现总线仲裁以方便使用监控器。
4.3.5 在控制字中对开发和测试的支持
更多详细信息及相关规范性规格包含在第9.1.2节和9.2.2节中。
Ping命令提供的一个辅助功能是命令所有者仲裁。
这种机制便于监控器(Monitor)暂时获得控制字中命令功能的所有权,以便它可以利用已有的读取命令机制来查询系统内从设备的状态。
如果主设备实现了可选的主设备寄存器功能,那么来自监控器的读取命令也可以访问主设备,从而获得系统状态的更完整视图,有助于调试工作。
解释
- 命令所有者仲裁:这是一种机制,允许监控器暂时接管命令功能的所有权,以便能够读取从设备的状态信息。
- 监控器:监控器是一种特殊设备或软件,可以使用读取命令来检查系统中从设备的状态。
- 主设备寄存器:这是主设备的一个可选功能,允许监控器不仅读取从设备的状态,还能访问主设备的寄存器,以获得整个系统的更全面状态信息。
- 调试:通过监控器访问主设备寄存器和从设备的状态信息,可以更有效地进行系统调试。
4.3.6 寄存器
更多详细信息及相关规范性规格包含在第10节中。
每个SoundWire接口包含一组地址映射的8位存储位置,称为寄存器。这些寄存器包含影响SoundWire接口行为的控制信息,以及反映SoundWire接口状态和其他设备部件状态的状态信息。
寄存器使用一种熟悉的硬件抽象来描述,但本规范并未规定特定的实现技术。
每个设备的地址空间为4GB,其中一部分由本规范定义,一部分保留用于未来版本,还有一部分分配给SoundWire设备设计师用于实现定义的用途,例如控制设备中的音频功能。地址空间的前64KB在所有实现中都是可访问的,剩余部分仅在实现了各种可选功能的实现中可用。
寄存器与概念上的控制端口关联,用于控制整个接口的操作,或者与数据端口关联,用于控制该端口的负载传输操作。
一些寄存器在两个寄存器组中都有副本,这便于在运行系统中无缝更改操作。主设备在从设备的当前离线寄存器组中进行所需的更新,然后将该寄存器组上线,以同时切换所有更新的值。当多个从设备需要更新时,使用广播机制来同步整个系统在特定的时钟转换时切换到新的操作。
如果主设备实现了可选的主设备寄存器功能,那么这些寄存器以与从设备相同的方式地址映射,这便于在系统开发和调试过程中由监控器进行读取和写入访问。
解释
- 寄存器:寄存器是一组地址映射的8位存储位置,用于存储控制和状态信息。
- 地址空间:每个设备的地址空间为4GB,其中一部分由规范定义,一部分保留用于未来版本,还有一部分分配给实现定义的用途。
- 控制端口和数据端口:寄存器与控制端口或数据端口关联,用于控制整个接口或特定端口的操作。
- 寄存器组:一些寄存器有两个副本,分别位于两个寄存器组中,这便于在运行系统中无缝更改操作。
- 主设备寄存器:如果主设备实现了可选的主设备寄存器功能,那么这些寄存器以与从设备相同的方式地址映射,这便于监控器在系统开发和调试过程中进行读取和写入访问。
4.3.7 中断
更多详细信息及相关规范性规格包含在第11节中。
SoundWire包括了一种通信机制,用于将一系列状态条件从从设备传递给主设备。这些状态条件可能与主设备正在执行的操作异步发生,因此,类比于软件处理器,这种机制被称为中断。
从设备使用帧中的共享Ping请求位来通知主设备需要收集更新的中断状态,具体的从设备通过Ping命令中的从设备状态来标识。特定主设备设计的具体细节会影响收集中断从设备身份的延迟,但这一延迟被限制在最多32帧以内,从而为从设备的中断延迟提供了一个上限。随后,通过一个或多个帧的读取命令来更准确地确定中断的来源。
解释
- 中断:中断是一种机制,允许从设备向主设备传递状态条件,这些条件可能与主设备正在执行的操作异步发生。
- Ping请求位:从设备使用帧中的Ping请求位来通知主设备需要收集更新的中断状态。
- 从设备标识:具体的从设备通过Ping命令中的从设备状态来标识。
- 中断延迟:特定主设备设计的具体细节会影响收集中断从设备身份的延迟,但这一延迟被限制在最多32帧以内,从而为从设备的中断延迟提供了一个上限。
- 读取命令:通过一个或多个帧的读取命令来更准确地确定中断的来源。
4.3.8 批量寄存器访问
更多详细信息及相关规范性规格包含在第13.1.3节和第13.2节中。
SoundWire包括了一个可选机制,用于传输比强制性的命令机制更高的寄存器操作带宽。批量寄存器访问(Bulk Register Access,BRA)协议是一种特定格式的数据传输,它发生在可选的、特殊的编号为0的数据端口上。BRA协议传输来自BRA发起者(通常是主设备)的读取和写入操作,这些操作可以针对一个或多个BRA目标(通常是从设备)。
解释
- 批量寄存器访问:这是一种可选的机制,用于提高寄存器操作的带宽,相比传统的命令机制更加高效。
- BRA协议:BRA协议定义了一种特定的数据传输格式,用于批量寄存器读取和写入操作。
- BRA发起者:通常是主设备,发起批量寄存器读取和写入操作。
- BRA目标:通常是从设备,接收并处理来自BRA发起者的批量寄存器读取和写入操作。