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

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

3天内不再提示

五个广泛使用的特殊寄存器

星星科技指导员 来源:嵌入式计算设计 作者:Louie De 2022-06-08 09:55 次阅读

在本文中,我们将介绍五个广泛使用的特殊寄存器,即:别名、影子、间接、锁定和触发缓冲寄存器。

在当今的 SoC 中,我们看到了系统架构、节点大小、互连、安全、编程语言和开发工具等领域的许多创新。有时,我们低估了作为 SoC 架构师、验证工程师硬件设计师或软件/固件开发人员在日常工作中使用的简单创新的重要性和影响。

特别是,让我们检查与硬件/软件接口层相关的创新——软件应用程序与硬件外围设备通信。具体来说,在寄存器空间中,视频编解码器、蓝牙Wi-Fi 等硬件外围设备从处理器上执行的软件应用程序接收配置、控制和功能。十年前在设计寄存器时,我们只需要RO、WO、RW、RC、RS、WS等的组合。但今天的SoC已经变得如此复杂,以至于我们不得不创新并想出更多创造性的方式来设计寄存器。在本文中,我们将介绍五个广泛使用的特殊寄存器,即;别名、影子、间接、锁定和触发缓冲寄存器。

别名寄存器

这是一种可从同一地址映射中的多个地址访问的寄存器类型,但在物理上它是一个寄存器。别名寄存器中的字段根据用于访问它们的地址具有不同的行为。如图 1 所示,RegA 中的字段在使用 0x1000 地址访问时是可读写的,但在从 0x2000 地址访问时是 write-1-to-clear。创建别名寄存器时应应用的一些指导:别名寄存器的硬件访问为 NA;字段不能是已别名字段的别名;并且别名字段的父寄存器不能是外部的。

poYBAGKgAZeAQhOUAABxdS1S8uM424.png

影子寄存器

当您的软件应用程序需要覆盖所有寄存器但数据需要稍后恢复时,解决方案是使用影子寄存器。通过寄存器总线写入寄存器的数据应自动复制或映射到地址映射中的另一个寄存器。如图 2 中的示例所示,将 OriginalReg 中的数据复制到 ShadowReg。ShadowReg 可以从总线访问,但对原始寄存器没有影响。几个影子寄存器可以影子一个原始寄存器。

pYYBAGKgAZ6AfYZMAACPbQ2bMHE693.png

间接寄存器

一些寄存器或内存位置不能通过专用地址直接访问,它们被称为间接寻址寄存器或简称为间接寄存器。两个寄存器用于访问一个间接寄存器。

为了将值存储到间接寄存器数组中,使用基址寄存器来保存实际地址。该指令检查基址寄存器,将其值解释为寄存器数组中的地址位置,并将保存在数据寄存器中的值放入该位置。为了从间接寄存器数组加载一个值,还使用了一个基址寄存器。该基址寄存器保存实际地址。该指令检查基址寄存器,将其值解释为地址,获取存储在该位置的值,然后将其加载到数据寄存器中。

如图 3 中的示例所示,Reg1 指定了内存数组的索引。Reg2 指定要写入的数据或存储从内存中读取的值。Reg2 需要一个用于间接寄存器大小的“深度”属性。

poYBAGKgAaWAOthtAABwV0qLKF4984.png

锁定寄存器

如果状态机保护在寄存器后面,只能由存储在另一个寄存器中的密钥启动,锁定寄存器可能是解决方案。根据某个其他寄存器的字段值,任何可写寄存器或字段都可以被保护/锁定不被写入。这样的寄存器称为锁定寄存器。锁定寄存器和保护/密钥寄存器可以在不同的寄存器组中,但不能在不同的块中。如图 4 中的示例所示,由属性“lock”指定的锁定寄存器由一个简单的表达式lock=RegA.f1 定义,这意味着寄存器 Lockreg 根据字段“f1”的值被锁定而不能写入寄存器“RegA”,关键寄存器。锁定机制也可以通过更复杂的表达式来定义,例如锁定 = regA.FldA || regB.Lock_fld == 8‘b00000001 && regA.FldA == 4’b0011。这个复杂的表达式由不同的寄存器字段组成。在这种情况下,如果锁定表达式中的每个条件在运行时都为真,则寄存器的软件写访问被锁定。

pYYBAGKgAayAQTF9AACJyG0JJvA774.png

触发缓冲寄存器

有时需要从硬件侧将大小大于总线宽度的寄存器作为一个原子单元写入和读取。这样的寄存器是从软件侧顺序写入/读取的。这可以通过在与触发事件相关的内存空间中创建一个 N 寄存器缓冲区来实现。当触发事件发生时,写入/读取发生在/从缓冲区到硬件端可用的实际寄存器。触发事件可以是对最低有效位或最高有效位寄存器的读/写。例如,如图 5 所示,RegA 是宽硬件寄存器,宽寄存器 Reg.A1 的 MSB 是触发器。Reg.A2 和Reg.A3 是对应宽硬件寄存器字段的缓冲区。

poYBAGKgAbOAdyUQAACOebzPJJI841.png

下一步是学习如何在 IP-XACT 或 SystemRDL 中定义这些特殊寄存器。还需要学习如何在 RTL 中对其进行编码,并创建 UVM 寄存器模型并完成 UVM 测试平台以进行验证。

审核编辑:郭婷

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

    关注

    30

    文章

    5020

    浏览量

    117628
  • 总线
    +关注

    关注

    10

    文章

    2695

    浏览量

    87156
  • 触发器
    +关注

    关注

    14

    文章

    1674

    浏览量

    60381
收藏 人收藏

    评论

    相关推荐

    干货满满:ARM的内核寄存器讲解

    内核寄存器与外设寄存器: 内核寄存器与外设寄存器是完全不同的概念。内核寄存器是指 CPU 内部的寄存器
    发表于 04-17 11:47 68次阅读
    干货满满:ARM的内核<b class='flag-5'>寄存器</b>讲解

    CPU的6个主要寄存器

    CPU寄存器是中央处理器内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器
    的头像 发表于 02-03 15:15 1078次阅读

    寄存器的主要组成部分及分类

    通用寄存器是计算机处理器中最常见的寄存器类型之一。它们通常用于存储临时数据、中间结果和计算过程中的变量。通用寄存器具有广泛的用途,可以存储不同类型的数据(如整数、小数、地址等),并被处
    的头像 发表于 02-03 15:08 650次阅读

    arm三个寄存器在gdb调试时的作用

    arm三个寄存器在gdb调试时作用  ARM是一种广泛使用的微处理器架构,它广泛应用于移动设备、嵌入式系统和其他高性能计算设备。当我们在使用gdb(GNU调试器)调试ARM程序时,了解和理解三个重要
    的头像 发表于 01-31 10:44 196次阅读

    UVM寄存器模型的常规方法有哪些呢?

    在应用寄存器模型时, 除了利用它的寄存器信息, 还可以利用它来跟踪寄存器的值。
    的头像 发表于 11-25 09:27 718次阅读
    UVM<b class='flag-5'>寄存器</b>模型的常规方法有哪些呢?

    芯片DFX:Coresight的寄存器一览

    coresight对于每个coresight组件,规定了一些寄存器,这些寄存器的偏移是固定的,这些寄存器,是必须存在的。但是有的,可以不实现该寄存器功能。
    的头像 发表于 11-02 11:45 586次阅读
    芯片DFX:Coresight的<b class='flag-5'>寄存器</b>一览

    CPSR寄存器和APSR寄存器的组成

    程序状态寄存器的作用就是反映处理器的状态信息。在程序运行期间我们可以通过查看程序状态寄存器的状态位来进行程序的分支跳转处理,或者我们可以设置程序状态寄存器的模式位来改变处理器的运行模式,或者我们可以设置程序状态
    的头像 发表于 10-20 11:38 1745次阅读
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的组成

    请问8051的21特殊功能寄存器为什么要分散在128字节内?

    8051的21特殊功能寄存器为什么要分散在128字节内?
    发表于 10-17 08:25

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
    的头像 发表于 07-21 16:59 2937次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    寄存器是什么 掌握使用寄存器做设计需要注意的事项

    既然RTL是以寄存器行为为基础,那么就必须先了解寄存器是什么,并且掌握使用寄存器做设计需要注意的事项。
    的头像 发表于 07-13 15:38 849次阅读
    <b class='flag-5'>寄存器</b>是什么 掌握使用<b class='flag-5'>寄存器</b>做设计需要注意的事项

    RAL寄存器模型操作指南

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

    操作BASEPRI特殊功能寄存器时无效解决方法(上)

    有STM32用户发现在操作BASEPRI特殊功能寄存器时,根本不起作用。比方,它目前配置了几个中断,优先级各不相同,按照STM32CubeMx里的配置分别为2、3、4不等,当他在BASEPRI寄存器
    的头像 发表于 06-21 16:04 815次阅读
    操作BASEPRI<b class='flag-5'>特殊</b>功能<b class='flag-5'>寄存器</b>时无效解决方法(上)

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

    MIPI SoundWire 提供了一种可选机制,用于以比强制命令机制更高的带宽传输寄存器操作。批量寄存器访问(BRA)协议是一种特殊的数据传输格式,以实现更高的带宽。虽然普通命令只能以每帧一个命令的速率驱动,但批量
    的头像 发表于 05-26 16:05 747次阅读

    工程监测无线中继采集仪的寄存器(参数)汇总详解

    。仅列出较为常用的参数,当需要配置设备完成复杂、特殊的应用时,请查看“无线中继采集发送仪寄存器汇总说明” 。 1 寄存器(读/写)如下图: 工程监测无线中继采集仪的寄存器(参数)汇总详
    的头像 发表于 05-19 10:39 365次阅读
    工程监测无线中继采集仪的<b class='flag-5'>寄存器</b>(参数)汇总详解

    RAL寄存器模型操作图鉴

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