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

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

3天内不再提示

5个特殊寄存器改变了当今的SoC

星星科技指导员 来源:嵌入式计算设计 作者: Louie De 2022-12-01 15:07 次阅读

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

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

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

别名寄存器

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

pYYBAGOIUv-AUBUZAABmnP2PTTM027.png

影子寄存器

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

poYBAGOIUwWAZ2wjAACKt56MZSQ335.png

间接寄存器

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

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

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

pYYBAGOIUwyAfxOyAABljc3Z3Q0033.png

锁定寄存器

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

pYYBAGOIUxOAXoLkAACEGo3tTJQ127.png

触发缓冲寄存器

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

pYYBAGOIUxuAePPLAACLggURjVs183.png

下一步是学习如何在IP-XACT或SystemRDL中定义这些特殊寄存器。还需要学习如何在RTL中对它们进行编码,并创建UVM寄存器模型和完整的UVM测试平台以进行验证。我们将在点播网络研讨会 5 对当今 SoC 有用的特殊寄存器中详细介绍后续步骤。在本次网络研讨会中,我们将提供这五个特殊寄存器的详细信息、它们的优势、用例和示例。我们还提供有关如何自动验证它们的最佳实践,以实现 100% 的功能覆盖率。

审核编辑:郭婷

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

    关注

    31

    文章

    5304

    浏览量

    119900
  • soc
    soc
    +关注

    关注

    38

    文章

    4112

    浏览量

    217827
收藏 人收藏

    评论

    相关推荐

    寄存器是什么意思?寄存器是如何构成的?

    在计算机科学中,寄存器(Register)是一高速存储单元,它位于中央处理(CPU)内部,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。寄存器是计算机体系结构中至关
    的头像 发表于 08-02 18:23 3074次阅读
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?

    寄存器寻址和直接寻址的区别

    寄存器寻址和直接寻址是计算机指令系统中的两种基本寻址方式。它们在指令的执行过程中起着至关重要的作用,决定了指令操作数的来源和目标。下面我们将介绍这两种寻址方式的特点、区别以及在实际应用中的优缺点
    的头像 发表于 07-12 10:42 1201次阅读

    寄存器寻址的实现方式

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

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

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1043次阅读

    移位寄存器右移是怎么移位的

    将介绍移位寄存器的右移操作。 移位寄存器的基本概念 移位寄存器是一种具有多个存储单元的线性结构,每个存储单元可以存储一二进制位(0或1)。移位寄存
    的头像 发表于 07-12 10:14 875次阅读

    硬件特殊功能寄存器编程思路和RAM使用的问题求解?

    看了一下STM32的库,对于其中的关于硬件的特殊功能寄存器的设置都是通过:1、定义一和实际硬件地址相镜像的全局结构体变量。 2、设置结构体的各个变量相对应的参数。 3、把结构体整体复制到硬件
    发表于 05-17 12:24

    寄存器和内存的区别

    在计算机体系结构中,寄存器和内存是两至关重要的组成部分。它们各自承担着不同的角色,共同确保计算机系统的正常运行。本文将对寄存器和内存进行详细的介绍,包括它们的定义、功能以及二者之间的主要区别。
    的头像 发表于 05-12 17:11 1858次阅读

    寄存器的定义和功能 寄存器的分类和工作原理

    在计算机系统中,寄存器作为一种特殊的存储设备,扮演着至关重要的角色。它是中央处理(CPU)内部的重要组成部分,用于暂时存储数据和指令,以便于CPU进行高速的运算和控制。本文将对寄存器
    的头像 发表于 05-12 17:07 4934次阅读

    特殊功能寄存器的解释整理汇总

    电子发烧友网站提供《特殊功能寄存器的解释整理汇总.pdf》资料免费下载
    发表于 05-09 14:27 7次下载

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

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

    CPU的6主要寄存器

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

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

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

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是由多个触发级联而成的,每个触发只能存储一位。数据在寄存器中移动时,每个触发
    的头像 发表于 01-18 10:52 7038次阅读

    寄存器阵列低功耗设计方案

    寄存器写操作的时候会改变寄存器内容,需要时钟锁入新的数据。但是,对寄存器进行读操作的时候,寄存器内容不
    的头像 发表于 12-08 11:19 568次阅读
    <b class='flag-5'>寄存器</b>阵列低功耗设计方案

    寄存器查看的功能和使用

    16进制位关系,但是对寄存器数值的每一位并没有很直观的展示。因此就需要一软件直观的查看寄存器值与位的关系。
    的头像 发表于 11-28 12:26 1806次阅读
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用