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是实现低功耗的最有效手段。再加上工具辅助优化一下,就很完美了。

审核编辑:黄飞

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

    关注

    31

    文章

    5305

    浏览量

    119927
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1695

    浏览量

    91272
  • 时钟设计
    +关注

    关注

    0

    文章

    27

    浏览量

    10902
  • 时钟脉冲
    +关注

    关注

    0

    文章

    19

    浏览量

    12664
收藏 人收藏

    评论

    相关推荐

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

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

    单片机低功耗设计方案

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

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

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

    寄存器与移位寄存器

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

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

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

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

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

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

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    发表于 03-08 14:50 1.7w次阅读

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

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

    MAX11120-MAX11128低功耗,逐次逼近寄存器串行ADC

    MAX11120 - MAX11128与外部参考和业内领先的1.5MHz的,完整的线性带宽,高速度,低功耗,串行输出的逐次逼近寄存器(SAR)模拟-数字转换的12/10/8位( ADC)的
    发表于 01-31 14:37 862次阅读
    MAX11120-MAX11128<b class='flag-5'>低功耗</b>,逐次逼近<b class='flag-5'>寄存器</b>串行ADC

    寄存器与移位寄存器

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

    AD转换寄存器设置

    AD转换寄存器设置AD转换寄存器设置AD转换寄存器设置
    发表于 11-10 17:36 16次下载
    AD转换<b class='flag-5'>寄存器</b>设置

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

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

    ARM通用寄存器及状态寄存器详解

    笔者来聊聊ARM通用寄存器以及状态寄存器的认识与理解。
    的头像 发表于 01-06 14:58 6900次阅读

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

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

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

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