CDC设计实例

Clock Gating Cell & Glitch Free Clock Switch(门控单元和动态切换时钟)

一个电路有多个时钟输入进来,希望在工作当中能够动态切换时钟;比如CPU根据工作负载(AI或视频处理),工作负载大,时钟频率快,功耗高,工作负载低(浏览图片或者待机),时钟频率低,功耗低,切换时钟频率,希望能够动态切换时钟;通过动态切换时钟,以减少功耗;Glitch(差错),在时钟切换过程中不能出现毛刺

普通组合逻辑信号送到寄存器D端,在时钟的有效沿进行采样,只要组合逻辑信号能够满足建立时间和保留时间,即使信号经过组合逻辑出现一些毛刺也没有关系,因为这些毛刺只是在稳定信号之前和采样之前出现的,经过一段时间能够稳定就可以了

如果时钟产生无效的毛刺,时钟直接进入寄存器,会产生一些无效毛刺,首先会导致采样一些错误的值,另外产生的毛刺可能不是时钟周期预期的值,可能会产生亚稳态

Clock Gating 和 Clock Switch模块在工作中会有现成的模块,会有Fab提供

  • Mux sync
  • 门控单元:clock gating(Fab或者是standcell会提供ICG门控单元)
  • 动态时钟切换:glitch free clock switch

mux sync



上述信号在进行传输的时候,寄存器端拿到数据之后需要进行返回信号,告诉输入端进行下一笔数据的传输

  • mux sync通常被做成公共模块,这种模块需要知道在哪里进行调用,自己写的模块需要上报路径和使用的位置

ICG(Integrated Clock Gating)

ICG可以理解为给时钟加一个使能信号,用于控制时钟信号的通过和切换



ICG代码(behavior model)

module cell_clock_gating(TE,E,CP,Q)
input TE; // test enable which is used for test mode in DFT
input E ; // enable
input CP; // clock
output Q; // output signal reg E_lat; internal signal assign E_or = E | TE; // always @(CP or E_or) // this is a latch,不是时钟上升沿和下降沿有效的,是latch
begin
if(!CP) begin
E_lat <= E_or;
end
end assign Q = E_lat & CP;
endmodule
  • latch是有效的电平期间,进行采样,在无效的电平期间进行保持
  • CP是时钟输入,在enable为高的作用下,原始输入同步到Q端,如果enable为低的情况下,不让Q端进行反转,固定Q端的时钟信号
  • Q = E_lat & CP - 为了消除毛刺,latch在低电平的时候发生变化,在CP为低的时候,latch会产生变化,有可能产生毛刺,但是此时通过与门,Q端一定为低信号(不管E_latch是什么值,有没有毛刺)
  • 这个代码只是一个功能模型,给仿真使用,不能用于综合

  • en信号为低的时候,输出时钟是不反转的,时钟不反转,动态功耗就会很低。

Clock Switch:Glitch due to simple mux

假设有两个时钟,clk_a频率高,clk_b频率低,如下图所示,select信号为低的时候选择的是clk_a,select为高的时候选择的是clk_b,当select信号从低到高进行跳变和clk_b信号从高到低进行跳变的时候,会出现毛刺,这中毛刺作为时钟信号的时候出现需要进行规避

SoC系统中时钟切换应用场景

  • 进行时钟切换的时候先将ICG的enable=0,不管前面clk输入如何,ICG输出为0,可以滤掉毛刺;在enable=0得时候更改sel选择clk,有可能会产生毛刺,即使有毛刺输出也一直为0;选择完成之后将enable拉高,得到最终呢选择的时钟信号
  • 驱动的是SPI,I2C模块,信号传输速率比较慢,使用软件配置的方式也比较慢,这种模块可以使用这种方法;如果设计高性能模块(比如CPU),要求速率很快,这种方法不适用
  • CPU是整个SoC的核心,CPU通过分发指令和任务可以调用DMA、NAND Controller等模块,CPU是SoC的大脑;使用软件配置的方法切换时钟,速度慢,会拖缓整个SoC效率
  • CPU在动态切换的时候是不能出现毛刺的,如果出现毛刺,会导致CPU取址错误,从而导致功能错误

  • 切换时钟的步骤:关闭ICG-->选择时钟-->打开ICG

CDC设计实例-01的更多相关文章

  1. backbone实例01

    backbonejs往简单说,就是一前端MVC框架,适合用于单页面.复杂的前端逻辑. 直接上代码,里面都有相关注释,重点是理解清楚view.collection.model这三者如何关联调用. < ...

  2. 推荐35个新鲜出炉的响应式 Web 设计实例

    响应式设计的准则在于根据用户使用的屏幕的分辨率来改变网站的的布局.因此,视频或图像的大小和文本的数量,可以被视为是一个明显的变化.让你即使从智能手机浏览一个网站的时候能轻松地看到网站上的重要内容.今天 ...

  3. 最新Dashboard设计实例、技巧和资源集锦,视觉和功能两不误,妥妥的!

    Dashboard设计,尽管设计师们叫法各不相同(例如:“数据面板设计”, “控制面板设计”, “仪表盘设计”或“后台界面设计”等等).但,此类设计的最终目都是力求以最直观.最简洁的方式呈现各种信息和 ...

  4. App启动页设计实例与技巧

    App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰 ...

  5. Oracle数据库设计实例-实时生产效率系统数据库设计

    Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...

  6. 分立元件封装尺寸及PCB板材工艺与设计实例

    分立元件封装尺寸 inch mm (L)mm (w)mm (t)mm (a)mm (b)mm 0201 0603 0.6±0.05 0.30±0.05 0.23±0.05 0.10±0.05 0.60 ...

  7. LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组)

    LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组) 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:h ...

  8. matplotlib 绘图实例01:正弦余弦曲线

    该讲的实例结果如下图所示: 第01步:导入模块,并设置显示中文和负号的属性: import matplotlib.pyplot as plt import numpy as np plt.rcPara ...

  9. 邵国际: C 语言对象化设计实例 —— 命令解析器

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...

  10. # RESTful登录(基于token鉴权)的设计实例

    使用场景 现在很多基于restful的api接口都有个登录的设计,也就是在发起正式的请求之前先通过一个登录的请求接口,申请一个叫做token的东西.申请成功后,后面其他的支付请求都要带上这个token ...

随机推荐

  1. 【scikit-learn基础】--『预处理』之 缺失值处理

    数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...

  2. 华企盾DSC无缝替换其它加密软件两种方法

    有源码和大型图纸的使用第一种方案 第一种: 1.把DSCClient.exe和DSCService.exe添加到竞品的加密软件进程中,配置允许打开加密文件,加密类型不加密 2.安装DSC客户端后扫描加 ...

  3. ElasticSearch之Close index API

    关闭指定的索引. 索引关闭之后: 停止对读.写操作的响应. 停止检索操作的响应. 在索引关闭前,允许执行的操作,关闭之后均不允许执行. ElasticSearch取消对索引的相关维护操作,包含内存中的 ...

  4. kubernetes之部署war项目(二)

    kubernetes之部署war项目(二) k8s系列 源自我工作上的实际场景,记录于此. 现在老项目是war包形式,需要基于tomcat部署,因此在打包镜像时将tomcat带上的. 假设我的war项 ...

  5. Ynoi

    P4688 [Ynoi2016] 掉进兔子洞 序列,静态,求三个区间的可重集的交的大小,离线,\(n,Q\le 10^5\),3s,500MB 缺乏性质 \(\rightarrow\) bitset ...

  6. JavaScript this 绑定详解

    函数内 this 绑定 函数内this的绑定和函数定义的位置没有关系,和调用的方式和调用位置有关系,函数内的this是在被调用执行时被绑定的. this的具体绑定规则 this 绑定基本包含下面4种绑 ...

  7. Programming Abstractions in C阅读笔记:p202-p234

    <Programming Abstractions in C>学习第65天,p202-p234总结. 一.技术总结 完成第五章学习,第五章介绍递归在实际问题中的进一步应用,例如汉诺塔问题, ...

  8. Java 展开或折叠PDF中的书签

    PDF中的书签功能可快速定位到指定阅读位置.对多层书签可根据阅读喜好设置层级展开或折叠.本文将通过Java程序代码介绍如何来实现PDF书签展开或折叠. 程序环境 Spire.Pdf.jar( 免费版3 ...

  9. 云图说|云数据库RDS跨区域备份

    摘要:云数据库RDS支持将备份文件存放到另一个区域存储,某一区域的实例故障后,可以在异地区域使用备份文件在异地恢复到新的RDS实例,用来恢复业务. 本文分享自华为云社区<云图说_云数据库RDS- ...

  10. hadoop清空回收站时间设置

    在hadoop执行删除文件命令 如果不带 -skipTrash 文件是进入了回收站 空间并不会被释放 会隔一段时间才被删除 设置该时间位置为: core-site.xml fs.trash.inter ...