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

    文章

    5589

    浏览量

    129066
  • 总线
    +关注

    关注

    10

    文章

    3014

    浏览量

    91307
  • 触发器
    +关注

    关注

    14

    文章

    2051

    浏览量

    63043
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【NCS随笔】nRF54L15使用UICR寄存器保存数据

    nRF54L15使用UICR寄存器保存数据 本文章主要是讲解如何使用nRF54L15的UICR寄存器保存一些基础数据 一、UICR寄存器的说明 UICR(用户信息配置寄存器)**是非易
    的头像 发表于 11-27 17:09 1109次阅读

    嵌入式系统必懂的 20 寄存器

    了嵌入式系统中开发者必懂的20寄存器,让你快速掌握MCU的核心操作方法。01寄存器基础寄存器是CPU内部用于高速存取数据的小容量存储单元,是计算机执行指令、处理
    的头像 发表于 11-14 10:28 650次阅读
    嵌入式系统必懂的 20 <b class='flag-5'>个</b><b class='flag-5'>寄存器</b>

    NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2

    寄存器最大值为 64’hFFFFFFFFFFFFFFFF,到达最大值后一时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临近最大值, 当寄存器达到最大值后, 翻转回到
    的头像 发表于 10-14 17:06 455次阅读
    NVMe高速传输之摆脱XDMA设计32:<b class='flag-5'>寄存器</b>功能验证与分析2

    ‌SN74LVC595A 8位移位寄存器技术文档总结

    SN74LVC595A器件包含一8位串行输入、并联输出移位寄存器,该寄存器为8位D型存储寄存器供电。存储寄存器具有并行的 3 态输出。为移
    的头像 发表于 09-28 15:09 1106次阅读
    ‌SN74LVC595A 8位移位<b class='flag-5'>寄存器</b>技术文档总结

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    移位寄存器和存储寄存器提供时钟。移位寄存器具有一直接覆盖清零 (SRCLR) 输入以及用于级联结构的串行 (SER) 输入和串行输出 (QH’)。当输出使能 (OE) 输入置为高电平
    的头像 发表于 09-19 14:31 596次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    TPIC6595 8位功率移位寄存器技术文档摘要

    该TPIC6595是一款单片、高压、大电流功率的8位移位寄存器,设计用于需要相对较高负载功率的系统。该器件在输出端包含一内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 11:10 690次阅读
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技术文档摘要

    ‌TPIC6B595 8位功率移位寄存器技术文档总结

    TPIC6B595器件是一款单片、高压、中电流功率8位移位寄存器,设计用于需要相对高负载功率的系统。该器件在输出端包含一内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 10:16 736次阅读
    ‌TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技术文档总结

    ‌TLC6C5912 12通道移位寄存器LED驱动技术文档总结

    该TLC6C5912是一款单片、中压、低电流功率 12 位移位寄存器 设计用于需要相对中等负载功率的系统,例如 LED。 该器件包含一 12 位串行输入并行输出移位寄存器,可为 12 位馈电
    的头像 发表于 08-26 14:16 761次阅读
    ‌TLC6C5912 12通道移位<b class='flag-5'>寄存器</b>LED驱动<b class='flag-5'>器</b>技术文档总结

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1040次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    第四章 什么是寄存器

    本篇文章我们讲解了寄存器的概念、地址映射和寄存器操作等内容,内容比较干,大家有概念即可,不要求全部熟记掌握,有需要时可重复查阅观看。下一篇我们将开始进行实操内容,通过控制单片机的GPIO来点亮一颗LED,敬请期待!
    的头像 发表于 05-21 14:23 1135次阅读
    第四章 什么是<b class='flag-5'>寄存器</b>

    74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书

    电子发烧友网站提供《74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书.pdf》资料免费下载
    发表于 02-09 15:19 0次下载
    74HC594-Q100;74HCT594-Q100带输出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>规格书

    24l01寄存器列表指南免费下载

      寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。一触发可以存储1位二进制代码,故存放n位二进制代码的寄存器
    发表于 01-22 17:25 1次下载

    STC15系列常用寄存器汇总免费下载

      寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。一触发可以存储1位二进制代码,故存放n位二进制代码的寄存器
    发表于 01-22 17:24 10次下载

    XILINX FPGA CLB单元之移位寄存器

    一、移位寄存器 SLICEM函数发生也可以配置为32位移位寄存器,而无需使用slice中可用的触发。以这种方式使用,每个LUT可以将串行数据延迟1到32
    的头像 发表于 01-16 17:45 1455次阅读
    XILINX FPGA CLB单元之移位<b class='flag-5'>寄存器</b>

    TPS80032寄存器手册

    电子发烧友网站提供《TPS80032寄存器手册.pdf》资料免费下载
    发表于 12-21 09:08 0次下载
    TPS80032<b class='flag-5'>寄存器</b>手册