MIPI SoundWire:通过批量寄存器访问实现更高的带宽

描述

MIPI SoundWire 提供了一种可选机制,用于以比强制命令机制更高的带宽传输寄存器操作。批量寄存器访问(BRA)协议是一种特殊的数据传输格式,以实现更高的带宽。虽然普通命令只能以每帧一个命令的速率驱动,但批量寄存器访问提供了在一个帧中读取/写入多达 511 个寄存器的选项。因此,5MHz的时钟频率和256 * 16的帧大小(4096位插槽或2048时钟周期)将使数据传输的有效速率提高到大约1.2 MBps。 MIPI SoundWire支持高达12 MHz的频率,因此带宽可以更高。在本博客中,我将重点介绍批量注册访问有效负载流的外观以及如何使用它来实现更高的带宽。

BRA 有效负载流

由于BRA与实际的音频传输无关,因此我们可以根据需要自由选择单词长度和采样间隔的任何值。但是,有一些限制,因为我们的目标是即使在最坏的情况下也传输至少 11 个字节(使用 11 个字节,我们只访问 1 个字节,这违背了 BRA 的整个目的,在这种情况下,普通命令会更有效)。要在帧中使用尽可能多的可用位来传输数据,可以将样本字长度设置为等于 hwidth 和样本间隔等于列数。当使用通道 0 时,HStop 可以设置为最大列,HStart 可以设置为 1 或 0 列。因此,规范建议端口 0 应支持从 1 到 16 的所有字长值,因为它提供了最有效的数据包打包。

端口 0 上的数据可以在需要时与其他端口轻松多路复用。在与其他端口多路复用 BRA 时,为 BRA 保留一个单独的子帧看起来是一个更好的选择,因为它消除了在同一子帧中多路复用端口 0 和“正常”数据端口时对采样间隔的任何限制。然而,当涉及到BRA的测试模式时,任何类型的多路复用都可以毫无问题地使用,因为现在我们对确保我们的BRA模块应该在一个框架内完成不感兴趣。

BRA 的另一个重要区别特征是它以字节为单位打包,而不考虑通道边界。落在一个帧内的所有有效载荷通道样本统称为传输一个 BRA 块。由于 BRA 块始终以字节为单位打包,因此所有超过 8 倍数的位都将被忽略,即使它们落在帧内。使用新帧时,新的 BRA 块将启动,因此,如果要读取 64 个连续地址,并且由于有效负载的可用位限制,一帧中只能读取 60 个地址,则剩余的 4 个地址将在下一帧/下一个 BRA 块中读取。下一个 BRA 块将有 61圣地址作为起始地址和字节数将设置为 4,以便读取剩余的 4 个字节。

几个例子

示例 1:

假设帧大小 = 10 列 * 60 行,要读取的字节数 = 64

将用于此类 BRA 块的总位数 -> (64 + 10) 字节 * 8 = 592 位

有效载荷参数 - > 启动 1、停止 9 字长 = 9,采样间隔 = 10

帧中的可用有效载荷位 -> 60*9 = 540

可以使用的位数 = 540 – 540%8 = 536

可容纳一帧的字节数 = 536/8 = 67

所以在这个帧中只能读取 64-7 = 57 字节,块 67 *8 = 536 中的总位数

框架如下所示的表 -1。

 

  1 2 3 4 5 6 7 8 9 10
1 C                  
2 O                  
3 N                  
. T                  
. R                  
. O                  
. L                  
  W                  
  O                  
  R                  
48 D                  
.                    
.                    
.                    
60                    

 

剩余的 7 个字节可以在另一个帧中访问,此 BRA 块中的总位数:17*8 = 136

生成的帧如下所示的表 2。

 

  1 2 3 4 5 6 7 8 9 10
1 C                  
2 O                  
3 N                  
. T                  
. R                  
15 O                  
16 L                  
. W                  
. O                  
. R                  
48 D                  
.                    
.                    
.                    
60                    

 

示例 2:

让我们取具有相同子帧的同一帧,字长 = 12,采样间隔 = 24

我不会在这里进行详细计算,但打包的 BRA 块看起来像这样(表 3 BRA 块 3)。落在帧内的所有通道样本将共同用于发送一个 BRA 块。

 

  1 2 3 4 5 6 7 8 9 10
1 C                  
2 O                  
3 N                  
. T                  
. R                  
. O                  
. L                  
  W                  
  O                  
  R                  
48 D                  

 

我们将在即将发布的博客中详细讨论批量注册访问的其他方面,例如延迟的命令响应和命令失败时的中断。

审核编辑:郭婷

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分