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

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

3天内不再提示

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

要长高 来源:eetop 作者:eetop 2023-12-08 11:19 次阅读

芯片通常会用到一个寄存器阵列。用户通过SPI, I2C之类的接口对寄存器进行读写操作,实现各个模块的配置,状态查询等等。

如果不考虑功耗,CTS时工具会插入一个类似下面这样结构的clock tree。不妨做个简单估算。

假设寄存器阵列有128个8-bit寄存器。每个8-bit寄存器由8个DFF组成。总共1024个DFF。

假设每8个DFF工具插入一个CTB。128个8-bit寄存器就需要插入128个CTB。

假设每8个CTB又需要插入一个CTB来驱动。前一步插入的128个CTB需要再插入16个CTB驱动。

这16个CTB又需要再插入两个CTB来驱动。

总共需要插入128+16+2=146个CTB。

1639873646178436.png

假设接口为SPI,读写protocol是1位RW,7位地址,8位数据。每次读写都是16个SPI clock。假设SPI clock直接用做寄存器阵列时钟(通常有片子里有OSC,需要SPI clock domain到OSC clock domain transfer。那是另一个技巧了。这里就不展开了)。如果不插入ICG,每次读写时1024个DFF + 146个CTB都switch 16个SPI clock,那可是不小的功耗,尤其是频繁读写的场景。

上述这种实现方法比较“蠢”。我们知道,每次读写只能对一个寄存器进行操作,没必要所有的寄存器都给时钟。基于这个朴素的想法,我们可以利用工具降低功耗。

寄存器阵列的结构有规律。综合工具可以根据地址解码插入ICG。假设插入的ICG驱动能力足够,整个寄存器的clock tree会变成类似下面这样的结构。

1639873699810727.png

对寄存器阵列进行操作时,只有地址符合的寄存器ICG才会被打开,该寄存器的DFF才会得到时钟。而其他地址不符合的寄存器ICG关闭,没有时钟,也就没有switching power。这样一来,每次写操作实际只有一个寄存器会switching,大大减少了switching power。美中不足的是,对任何寄存器操作时ICG前面的CTB都会有时钟,这部分clock tree仍消耗switching power。

寄存器写操作的时候会改变寄存器内容,需要时钟锁入新的数据。但是,对寄存器进行读操作的时候,寄存器内容不改变,寄存器不需要时钟。这个特点工具是不知道的,但是designer可以利用起来。一个很自然的想法就是只在寄存器写操作放clock进来。

其次,虽然每个SPI写操作需要16个SPI clock。但是实际上寄存器阵列只需要在地址,数据都收到后给一个写时钟脉冲就可以了,不需要多个时钟反复写几次。

基于上面这两个想法,我们可以在寄存器阵列的时钟入口处加一个ICG。这个ICG只在写操作的时候打开,且只在地址数据都收到后打开一个时钟周期,放一个时钟脉冲过去。这样整个clock tree的switching power就大大降低了。

1639873865839785.png

寄存器阵列时钟入口处的ICG要在RTL里加。

写RTL的时候就考虑功耗并手动插入ICG是实现低功耗的最有效手段。再加上工具辅助优化一下,就很完美了。

审核编辑:黄飞

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

    关注

    30

    文章

    5032

    浏览量

    117745
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89620
  • 时钟设计
    +关注

    关注

    0

    文章

    27

    浏览量

    10873
  • 时钟脉冲
    +关注

    关注

    0

    文章

    19

    浏览量

    12556
收藏 人收藏

    评论

    相关推荐

    AiP74HC595 低功耗 高速CMOS,移动寄存器

    寄存器
    灵星芯微电子
    发布于 :2023年05月19日 11:08:54

    数字语音解码低功耗设计方案

    本帖最后由 eehome 于 2013-1-5 10:02 编辑 数字语音解码低功耗设计方案
    发表于 08-20 12:50

    【KL25】低功耗定时寄存器操作

    就是操作寄存器了,接下来我们就稍微讲解一下低功耗定时的一些寄存器。(1)低功耗定时的控制状态
    发表于 01-27 21:50

    单片机低功耗设计方案

    可选择性工作通过特殊功能寄存器选择使用不同的功能电路,即依靠软件选择其中不同的硬件;对于不使用的功能使其停止工作,以减少无效功耗
    发表于 07-11 08:12

    为什么信号量寄存器低功耗操作期间保持不变

    为什么信号量寄存器低功耗操作期间保持不变?互斥体是什么?
    发表于 05-15 09:27

    低功耗AC/DC转换的倒置降压设计方案

    低功耗AC/DC转换的倒置降压设计方案
    发表于 03-11 07:36

    可以在低功耗模式下使用高通滤波读取REFERENCE寄存器

    我对高通滤波模式配置有疑问。在 0x00 的配置中,它在数据表中声明高通滤波模式将处于正常模式,在该模式下将通过读取 REFERENCE 寄存器进行重置。假设它所指的正常模式是三种模式(
    发表于 12-19 06:32

    寄存器与移位寄存器

    寄存器与移位寄存器 寄存器是用来寄存数码的逻辑部件,所以必须具备接收和寄存数码的功能。任何一种触发器都可以构成
    发表于 03-12 15:19 59次下载

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

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

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

    数据寄存器,数据寄存器是什么意思 数据寄存器数据寄存器包括累加器AX、基址寄存器BX、计数寄存器
    发表于 03-08 14:38 1.2w次阅读

    寄存器传输级低功耗设计方法

    寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法,经验证对动态
    发表于 02-16 18:12 1350次阅读
    <b class='flag-5'>寄存器</b>传输级<b class='flag-5'>低功耗</b>设计方法

    寄存器与移位寄存器

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

    STM32L476xx超低功耗手臂设计方案

    STM32L476xx超低功耗手臂设计方案
    发表于 03-10 10:27 4次下载
    STM32L476xx超<b class='flag-5'>低功耗</b>手臂<b class='flag-5'>设计方案</b>

    振弦采集模块辅助功能寄存器低功耗休眠

    振弦采集模块辅助功能寄存器低功耗休眠
    的头像 发表于 01-04 10:14 498次阅读
    振弦采集模块辅助功能<b class='flag-5'>寄存器</b>之<b class='flag-5'>低功耗</b>休眠

    在学习低功耗设计?看看如何解决寄存器传输功耗问题

    器件中的高功耗虽然是可以容忍的,但是在设计过程中,我们往往都在追求低功耗实现。上篇文章中,小编对MCU的低功耗设计有所解读。为增进大家对功耗的了解程度,本文将对
    的头像 发表于 07-23 15:38 1073次阅读
    在学习<b class='flag-5'>低功耗</b>设计?看看如何解决<b class='flag-5'>寄存器</b>传输<b class='flag-5'>功耗</b>问题