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 测试平台以进行验证。

审核编辑:郭婷

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

    关注

    31

    文章

    5342

    浏览量

    120301
  • 总线
    +关注

    关注

    10

    文章

    2879

    浏览量

    88070
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61144
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    寄存器寻址的实现方式

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

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

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

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

    移位寄存器是一种在数字电路和计算机科学中广泛使用的存储设备,它可以用来存储和传输数据。在移位寄存器中,数据可以通过移位操作来实现数据的传输和处理。移位寄存器的移位操作有两种基本形式:左
    的头像 发表于 07-12 10:14 1439次阅读

    欧姆龙断电保持寄存器是哪些

    欧姆龙(Omron)是一家知名的自动化控制设备制造商,其产品广泛应用于工业自动化、医疗设备、家用电器等领域。在工业自动化领域,欧姆龙的PLC(可编程逻辑控制)产品具有广泛的应用。断电保持寄存
    的头像 发表于 06-11 16:30 2752次阅读

    双向移位寄存器的工作原理、特点及应用

    双向移位寄存器,作为一种特殊的数字电路元件,在数字信号处理和计算机体系结构中扮演着重要的角色。其独特之处在于能够根据控制信号实现数据的双向移位,即既可以向左移位,也可以向右移位。这种灵活性使得双向
    的头像 发表于 05-24 16:52 2438次阅读

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

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

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

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

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

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

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

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

    CPU的6主要寄存器

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

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

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

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

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

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

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