首页 > 其他分享 >CDC设计实例-01

CDC设计实例-01

时间:2023-02-22 05:22:05浏览次数:38  
标签:01 CDC 毛刺 clk 实例 切换 信号 CPU 时钟

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代码(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取址错误,从而导致功能错误

标签:01,CDC,毛刺,clk,实例,切换,信号,CPU,时钟
From: https://www.cnblogs.com/Icer-newer/p/17134516.html

相关文章

  • ssm学习笔记23001-log4j的接入和使用
    log4j的接入和使用1、在pom文件中配置log4j的依赖新建配置文件log4j.xml,名字必须是这个配置内容如下:这样我们执行的sql语句等日志信息就能查看了<?xmlversion="1.0"......
  • ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作
    mybatis:是什么,用来干嘛的,同类竞品中有何种优势?mybatis在idea中的引入:1、创建一个空工程2、创建一个空的maven文件:会自动生成一个pox文件,打包类型配置为jar,添加mybat......
  • 脚本实例
    【shell脚本分享】linux运维拿来即用序列~点击关注......
  • QPython实例03-制作【ONE一个】可视化应用
    一、前言QPython3c在大佬的改进下,拥有了基于sl4a的FullScreenWrapper2全屏框架。文章将用该框架制作我们的可视化应用【ONE一个】。二、最终效果如下三、准备工作AI......
  • pat1010
    题不难,但是代码有一个结果报错,猜测可能如果输入0000234的话,可能会输出-1?先标记一下看看别人的#include<iostream>#include<stdio.h>usingnamespacestd;intmain(......
  • VUE+Element+若依随笔001:点击左侧菜单跳转外部链接配置并传参数
    一、后台菜单配置部分:1、菜单管理中:新增父级目录2、配置内容: 菜单名称:测试用菜单 菜单路径:https://www.baidu.com/ 此处需要配置要跳转你的外部链接 组件名称:testMenu 组件......
  • POJ 1001 Exponentiation 字符串乘法+快速求幂
    考虑一下下面的样例应该可以AC:底数整数的情况去掉最后后导零没有小数部分时候不输出小数点思路先不考虑小数点将数存入字符串a,b中答案存入retret的长度是a的长......
  • DUTOJ-1018: totoday的难题
    一共三种情况白(-2)=>黑(+1)最终白(-2)黑(+1)白(-1)黑(-1)=>白(+1)最终黑(-1)黑(-2)=>黑(+1)最终黑(-1)可以看出白球只能是每次减少2最后剩余一个球,那么白球是最开始是奇数最后......
  • CCF 小明放学 201812-2
    弄一个时间轴分析比较好每次输入完剩余时间都转换为已经亮了多久然后加上已经经过的时间看现在是什么灯调用小明上学201812-1可以得到答案#include<iostream>using......
  • 修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。前......