CDC设计实例-01
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的更多相关文章
- backbone实例01
backbonejs往简单说,就是一前端MVC框架,适合用于单页面.复杂的前端逻辑. 直接上代码,里面都有相关注释,重点是理解清楚view.collection.model这三者如何关联调用. < ...
- 推荐35个新鲜出炉的响应式 Web 设计实例
响应式设计的准则在于根据用户使用的屏幕的分辨率来改变网站的的布局.因此,视频或图像的大小和文本的数量,可以被视为是一个明显的变化.让你即使从智能手机浏览一个网站的时候能轻松地看到网站上的重要内容.今天 ...
- 最新Dashboard设计实例、技巧和资源集锦,视觉和功能两不误,妥妥的!
Dashboard设计,尽管设计师们叫法各不相同(例如:“数据面板设计”, “控制面板设计”, “仪表盘设计”或“后台界面设计”等等).但,此类设计的最终目都是力求以最直观.最简洁的方式呈现各种信息和 ...
- App启动页设计实例与技巧
App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰 ...
- Oracle数据库设计实例-实时生产效率系统数据库设计
Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...
- 分立元件封装尺寸及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 ...
- LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组)
LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组) 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:h ...
- matplotlib 绘图实例01:正弦余弦曲线
该讲的实例结果如下图所示: 第01步:导入模块,并设置显示中文和负号的属性: import matplotlib.pyplot as plt import numpy as np plt.rcPara ...
- 邵国际: C 语言对象化设计实例 —— 命令解析器
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 邵国际 来源: 微信公众号linux阅码场(id: linuxdev) 内容简介 单片机工程师常常疑惑为什么 ...
- # RESTful登录(基于token鉴权)的设计实例
使用场景 现在很多基于restful的api接口都有个登录的设计,也就是在发起正式的请求之前先通过一个登录的请求接口,申请一个叫做token的东西.申请成功后,后面其他的支付请求都要带上这个token ...
随机推荐
- 从零开始用 Axios 请求后端接口
对于前端同学来说,请求后端接口是一个非常通用的东西.在十几年前的时候,我们还用 Ajax 去请求后端接口.但在 2023 年的今天,很多框架都很成熟了,我们有了更加快捷的方式 -- Axios 框架. ...
- VsCode运行与freopen与快读
运行 g++ -o a a.cpp && ./a g++ b.cpp -o b && ./b g++ c.cpp -o c && ./c freopen ...
- IntelliJ IDEA下载安装,以及关联gitee
https://www.jetbrains.com.cn/ 点击下载 IntelliJ IDEA Ultimate 旗舰版(收费) IntelliJ IDEA Community 社区版(免费) 安装 ...
- vulnhub - Nagini - writeup
信息收集 基础信息 目标只开放了22和88: root@Lockly tmp/nagini » arp-scan -I eth1 -l Interface: eth1, type: EN10MB, M ...
- 【WALT】调度与负载计算(未更新完)
[WALT]调度与负载计算 代码版本:Linux4.9 android-msm-crosshatch-4.9-android12 注:本文中的任务主要指进程. @ 目录 [WALT]调度与负载计算 一 ...
- RocketMQ 的基本使用
RocketMQwiki是一个分布式消息和流数据平台,具有低延迟.高性能.高可靠性.万亿级容量和灵活的可扩展性.RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日 ...
- 元数据管理平台对比预研 Atlas VS Datahub VS Openmetadata
大家好,我是独孤风.元数据管理平台层出不穷,但目前主流的还是Atlas.Datahub.Openmetadata三家,那么我们该如何选择呢? 本文就带大家对比一下.要了解元数据管理平台,先要从架构说起 ...
- Draco使用笔记(1)——图形解压缩
目录 1. 概述 2. 详论 2.1. 工具 2.2. 代码 1. 概述 Draco是Google开发的图形压缩库,用于压缩和解压缩3D几何网格(geometric mesh)和点云(point cl ...
- 华为云河图KooMap:夯实数字孪生底座,点燃燎原星火
摘要:7月8日,华为开发者大会2023(Cloud)华为云河图KooMap技术分论坛在东莞溪村顺利举办. 7月8日,华为开发者大会2023(Cloud)华为云河图KooMap技术分论坛在东莞溪村顺利举 ...
- 云小课|GaussDB如何进行性能调优
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:GaussDB性能 ...