0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:synopsys 作者:Parul Raj 2023-05-26 16:05 次阅读

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

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

审核编辑:郭婷

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

    关注

    31

    文章

    5290

    浏览量

    119792
  • 带宽
    +关注

    关注

    3

    文章

    896

    浏览量

    40785
  • MIPI
    +关注

    关注

    11

    文章

    304

    浏览量

    48524
收藏 人收藏

    评论

    相关推荐

    如何访问SYSCFG寄存器

    TrustZoneFLASH_OPTR->TZEN 读数为零。FLASH_OPTR 读取 0x1FEFF8AA。通过控制寄存器检查特权访问通过 IDE
    发表于 02-02 06:43

    如何访问DS1318的时钟寄存器

    摘要:该应用笔记描述了如何适当访问DS1318历时计数的时钟寄存器,实时时钟(RTC)的读、写操作和时钟寄存器的内部更新不同步,需要做出正确判断,确保数据的准确性。
    发表于 04-21 11:08 7次下载

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理内的组成部分。寄存器是有限存贮容量
    发表于 03-08 14:26 2.2w次阅读

    寄存器与移位寄存器

    寄存器与移位寄存器:介绍寄存器原理和移位寄存器的原理及实现
    发表于 05-20 11:47 0次下载

    arm程序状态寄存器访问指令

    arm程序状态寄存器访问指令
    发表于 01-04 13:11 0次下载

    寄存器Load/Store内存访问指令

    5.4 多寄存器Load/Store内存访问指令 多寄存器Load/Store内存访问指令也叫批量加载/存储指令,它可以
    发表于 10-18 15:56 1次下载

    C语言访问MCU寄存器用两种方式实现

    ICCAVR和GCCAVR没有定义新的数据类型,只能采用标准C的强制类型转换和指针来实现访问MCU的寄存器。而IAR和CodeVisionAVR编译对ANSI C进行了扩充,都定义了
    的头像 发表于 03-12 11:20 6654次阅读

    零基础学ARM:程序状态寄存器访问指令解析

    一、程序状态寄存器访问指令ARM微处理支持程序状态寄存器访问指令,用于在程序状态寄存器和通用
    的头像 发表于 12-24 13:36 3320次阅读

    C语言访问MCU寄存器

    C语言访问MCU寄存器问题由来://下面这行代码的意思是直接操作0X020C4068这个寄存器//具体寄存器的作用是通过手册得到的#defi
    发表于 10-25 13:21 3次下载
    C语言<b class='flag-5'>访问</b>MCU<b class='flag-5'>寄存器</b>

    RAL寄存器模型操作图鉴

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中
    的头像 发表于 05-17 09:01 881次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作图鉴

    访问CXL 2.0设备中的内存映射寄存器

    计算快速链接 (CXL) 1.1 和 CXL 2.0 规范在内存映射寄存器的放置和访问方式上有所不同。CXL 1.1 规范将内存映射寄存器放置在 RCRB(根复合寄存器块)中,而 CX
    的头像 发表于 05-25 16:56 1820次阅读
    <b class='flag-5'>访问</b>CXL 2.0设备中的内存映射<b class='flag-5'>寄存器</b>

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中
    的头像 发表于 07-12 09:37 1004次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作指南

    怎样通过改变寄存器中的内容实现对CPU的控制呢?

    寄存器是CPU中程序员可以用指令读写的部件,通过改变寄存器中的内容实现对CPU的控制。
    的头像 发表于 09-20 15:49 1281次阅读
    怎样<b class='flag-5'>通过</b>改变<b class='flag-5'>寄存器</b>中的内容<b class='flag-5'>实现</b>对CPU的控制呢?

    寄存器分为基本寄存器和什么两种

    ,它们用于存储指令、数据和地址等信息。基本寄存器的容量通常较小,但访问速度非常快,因为它们与CPU的执行单元紧密相连。 基本寄存器的分类 基本寄存器可以分为以下几类: (1)通用
    的头像 发表于 07-12 10:31 1002次阅读

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部的寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内存的访问
    的头像 发表于 07-12 10:36 502次阅读