【芯片设计- RTL 数字逻辑设计入门 9.1 -- CRG模块】


请阅读【芯片设计 RTL 数字逻辑设计扫盲 】


转自:芯片设计基础 – CRG模块


文章目录

  • CRG模块
    • CRG时钟系统
    • CRG复位系统
      • 同步复位
        • 同步复位的优点
        • 同步复位的缺点
      • 异步复位
        • 异步复位的优点
        • 异步复位的缺点
      • 异步复位同步释放

CRG模块

CRG是芯片里的时钟和复位生成模块,全称是 Clock Reset GeneratorCRG模块提供整个系统所需要的时钟和复位信号。本文主要介绍一下CRG时钟系统和复位系统的基本模块和概念。

CRG时钟系统

CRG的时钟部分一般都包括时钟源、锁相环(PLL)、时钟分频、片上时钟控制器(OCC)、时钟门控(ICG)、时钟切换、时钟buffer等电路结构。

  • 时钟源 一般来自外部的晶振。常见的外部晶振有32.768KHz时钟和24MHz时钟(这个频率可变)。32.768KHz时钟一般提供给RTC模块等,用于产生系统时钟、时间戳等。24MHz时钟一般用做PLL的参考时钟。

  • 锁相环(PLL) 基于晶振提供的基准时钟,生成稳定的高频时钟。

  • 时钟分频Divider) 将锁相环输出的高频时钟进行分频,从而满足不同模块的时钟需求。

  • 片上时钟控制器(OCC,On–chip Clock Controller) OCC是插在SoC上的逻辑电路,用来做DFT测试。在自动测试机台上对芯片进行全速测试时,根据scan信号控制选通ATE时钟或芯片内部时钟。

  • 时钟门控(ICG,Integrated Clock Gating) ICG通常是用于控制打开和关闭时钟,从而降低功耗。一般模块级的ICG是手动加,寄存器级别的ICG是综合工具自动加。

  • 时钟切换 一般分为clk mux和clk switch。

clk mux是组合逻辑,用于静态切换,动态切换的话会出现 glitch,如下图所示。
在这里插入图片描述

clk switch,时序逻辑,可用于动态切换。在两个电平相反的时候切换时钟,肯定有毛刺;电平相同的时候,即使不产生毛刺,时钟切换后的第一个时钟的周期或占空比也不是理想的。所以为避免毛刺的产生,需要在两个时钟都为低电平时进行切换。一种典型的无毛刺时钟切换电路如下所示。
在这里插入图片描述
该电路利用时钟下降沿对时钟选择信号 sel_clk 进行缓存。同时一个时钟选择信号对另一个时钟进行反馈控制,保证同一时刻只能有一路时钟有效。最后采用或操作将两路时钟合并,完成时钟切换的过程。

  • 时钟buffer 增强时钟信号的驱动能力。

CRG复位系统

在芯片设计中,复位逻辑是一个很重要的部分。复位是让芯片进入一个能稳定操作且确定的初始状态,从而避免芯片在上电后进行某个随机的状态而死机,或者是运行过程中出现了问题,能通过看门狗等方式产生复位而恢复初始状态。

芯片中的复位源一般分为 片外reset 源和 片内 reset源。

片外的reset源一般有来自PMIC的power reset,来自系统板上的pad reset,jtag reset等。片内的reset源有watchdog timeout reset,software reset及其他硬件机制产生的reset等。一个模块的reset可能由几种或者全部reset源控制。

复位的类型包括同步复位、异步复位、异步复位同步释放。

同步复位

同步复位是指复位信号只有在时钟有效沿到来时,才能有效。同步复位的verilog代码如下:

always @(posedge clk) begin  if (!rst_n) beginout <= 1'b0;  end else if (load) beginout <= in;  end
end

其综合得到的电路如下
在这里插入图片描述

同步复位的优点
  • 同步复位一般能确保电路是100%同步的,有利于时序分析,综合出来的最高频率一般较高;

  • 同步复位会综合成更小的触发器,特别在该复位信号被触发器的输入逻辑门控时;

  • 同步复位确保复位只发生在有效时钟沿。时钟可以作为过滤掉复位毛刺的手段;

在一些设计中,复位必须由一组内部条件产生。推荐在这样的设计中使用同步复位信号,这样可以将时钟之间的复位毛刺过滤掉。

同步复位的缺点

大多数逻辑器件库中的DFF只有异步复位端口,所以使用同步复位,综合器会在寄存器的数据输入端插入组合逻辑,一是会耗费组合逻辑资源,二是综合器无法分辨复位信号和其他数据信号,需要判断综合出的复位信号是否满足设计需求。

复位信号的有效时间必须大于时钟周期,才能保证被可靠地识别,完成复位。所以有时需要脉冲展宽器,以保证复位信号能出现再时钟有效沿处。

门控时钟电路情况:同步复位需要时钟来复位电路。在使用门控时钟时可能出现问题。在复位信号发出时,时钟可能关闭,在这种情况下只能使用异步复位,并在时钟恢复前移除复位信号。

异步复位

异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。使用异步复位的触发器在设计时就加入了一个独立的复位引脚,通过有效的复位信号即可将触发器进入复位初始状态。

下面是带有异步复位信号的触发器的verilog代码:

always @(posedge clk or negedge rst_n) beginif (!rst_n) beginout <= 1'b0;end else if (load) beginout <= in;end
end

上述代码所综合出的电路结构如下:
在这里插入图片描述

异步复位的优点
  • 异步复位最大的优点是不增加数据路径的延迟,保证数据路径上是干净的,这对于时序很紧张的数据路径来说非常友好。

  • 大多数器件库的DFF都有异步复位端口,采用异步复位可以节省逻辑资源。

  • 最明显的优势是有没有时钟都可以复位,在芯片上电或者门控时钟也能正常复位触发器。

异步复位的缺点
  • 在复位信号释放的时候可能会出现亚稳态问题:复位释放在时钟有效沿附近;

  • 容易受到毛刺的影响

异步复位同步释放

与数据信号需要满足的建立时间和保持时间类似,复位信号也需要满足恢复时间(recovery time)和撤销时间(removal time):

  • 恢复时间:指的是异步复位被设置为无效后,在下一个时钟有效沿到来之前需要保持稳定的最短时间。类似于同步电路中的setup time。

  • 撤销时间:指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。类似于同步电路中的hold time。

如果不满足异步复位信号的恢复时间和撤销时间,那么可能产生亚稳态。因此需要在异步复位信号释放时对其进行同步(异步复位同步释放),即使用复位同步器,结构如下图所示:
在这里插入图片描述
verilog代码如下

always @(posedge clk or negedge rst_n) beginif (!rst_n) beginrst_dff1 <= 1'b0;rst_dff2 <= 1'b0;end else beginrst_dff1 <= 1'b1;rst_dff2 <= rst_dff1;end
end
assign masterrst_n = rst_dff2;

首先,当异步复位信号有效时,两个触发器都会被复位为0值,进而驱动主复位信号masterrst_n通过复位缓冲树,再到达设计中的其他触发器,然后整个设计都异步复位(即所谓"异步复位”)。

当复位信号被置为无效时,第一个复位寄存器将在时钟的控制下被置为1,随后下一个周期,第二个复位寄存器也会被置为1,最终花费了两个时钟有效沿移除了主复位信号,进而整个设计开始正常工作(即所谓"同步释放”)。

上述两个过程合起来称为异步复位同步释放。


如有侵权,请联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIoTedge 智能边缘物联网平台

AIoTedge智能边缘物联网平台是一个创新的边云协同架构&#xff0c;它为智能设备和系统提供了强大的数据处理和智能决策能力。这个平台的核心优势在于其边云协同架构设计&#xff0c;它优化了数据处理速度&#xff0c;提高了系统的可靠性和灵活性&#xff0c;适用于多种场景&…

JVM-垃圾回收与内存分配

目录 垃圾收集器与内存分配策略 引用 对象的访问方式有哪些?&#xff08;句柄和直接指针&#xff09; Java的引用有哪些类型? 如何判断对象是否是垃圾? 请列举一些可作为GC Roots的对象? 对象头了解吗? mark word&#xff08;hashcode、分代、锁标志位&#xff09;、…

Vulnhub靶场DC-7练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集1. 获取用户名/密码2. ssh连接目标主机3. drush命令修改Drupal密码 0x03 漏洞查找与利用1. Drupal写入php木马2. 连接shell3. 反弹shell并提权 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-…

GitHub CLI 发布 2.53.0

gh 是 GitHub 官方的命令行客户端工具&#xff0c;在此推荐给每一位在参与、想参与到 GitHub 上开源项目的小伙伴。体验异常舒适&#xff01; 常用的命令包括有&#xff1a; 登陆认证 gh auth login克隆代码仓库 gh repo clone linuxsuren/api-testing创建 Fork 仓库 gh repo f…

机器学习基础入门(1)

最近也在努力的想要学习些机器学习的知识&#xff0c;目前正在了解各个概念及术语&#xff0c;下面就把学习到的概念都列出来。 人工智能 (AI) Artificial intelligence 人工智能生成内容&#xff08;AIGC&#xff09; 机器学习&#xff08;ML&#xff09; Machine Learning …

系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统(OAS)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统&#xff08;OAS&#xff09; 3.6.1 办公自动化系统的概念3.6.1.1 办公活动3.6.1.1 办公自动化的概念 3.6.2 办公自动化系统的功能3.6.2.1 事务处理3.6.2.1.1 单机系统3.6.2.1.2 多机系统 3.6.2.2 信息管理3.6.2.…

Windows tasklist命令详解,Windows查看进程

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 tasklist 可以…

安卓系统签名的制作与使用(SignApk.jar)踩坑记录

看到这里的你应该能区分apk签名跟系统签名吧,如果无法区分的请看下面链接 android 应用的证书签名跟系统签名 看过上面的文章应该知道系统签名需要的文件清单大概有哪些 前两个是编译安卓系统时在build目录下,详细目录为 /build/target/product/security 每组签名用途不同&am…

【Android】常用基础布局

布局是一种可用于放置很多控件的容器&#xff0c;它可以按照一定的规律调整内部控件的位置&#xff0c;从而编写出精美的界面&#xff0c;布局内不单单可以放控件&#xff0c;也可以嵌套布局&#xff0c;这样可以完成一些复杂的界面&#xff0c;下面就来认识一些常用的布局吧。…

价格较低,功能最强?OpenAI 推出 GPT-4o mini,一个更小、更便宜的人工智能模型

OpenAI美东时间周四推出“GPT-4o mini”&#xff0c;入局“小而精”AI模型竞争&#xff0c;称这款新模型是“功能最强、成本偏低的模型”&#xff0c;计划今后整合图像、视频、音频到这个模型中。 OpenAI表示&#xff0c;GPT-4o mini 相较于 OpenAI 目前最先进的 AI 模型更加便…

MOGONET:患者分类与biomarker识别

为了充分利用组学技术的进步并更全面地了解人类疾病&#xff0c;需要新的计算方法来综合分析多种类型的组学数据。多组学图卷积网络 (MOGONET&#xff0c;Multi-Omics Graph cOnvolutional NETworks)是一种用于生物医学分类的新型多组学整合方法。MOGONET 包含特定组学的学习和…

SpringBoot整合Swagger报错:Failed to start bean ‘documentationPluginsBootstrapper

文章目录 1 问题背景2 问题原因3 修改SpringBoot配置文件 application.properties参考 1 问题背景 Swagger是SpringBoot中常用的API文档工具&#xff0c;在刚接触使用的时候&#xff0c;按照通用的代码进行配置&#xff0c;发现报错了 [main] ERROR org.springframework.boot…

MySQL实现主从复制的步骤,包括配置读写分离的方法。—— 慧哥充电桩开源平台

下载源码 【慧哥开源充电桩平台】 https://liwenhui.blog.csdn.net/article/details/134773779?spm1001.2014.3001.5502 MySQL主从复制是一种常见的数据备份和读写分离策略。下面是实现MySQL主从复制的步骤&#xff1a; 配置主服务器&#xff08;Master&#xff09;&#xff1…

【Android】Fragment的静态动态创建以及两种创建方式的生命周期

参考&#xff1a; 33.3-Fragment的创建-静态创建2_哔哩哔哩_bilibili Fragment的创建_从现有代码创建foutran-CSDN博客 【Android】Fragment的基本用法、Fragment和活动间的通信、Fragment的生命周期、动态加载布局的技巧_android fragment-CSDN博客 文章目录 Fragment的静态创…

各种复现,保证质量

代码复现&#xff0c;文献复现&#xff0c;模型复现&#xff0c;算法复现&#xff0c;文章复现&#xff0c;创新点等等&#xff0c;python/matlab/c语言/r语言均可&#xff0c;保证高质量完成&#xff0c;可接急单&#xff0c;不成功不收费&#xff01;

前端小知识点——按钮之间出现很小的空隙如何规避

前端小知识点——按钮之间出现很小的空隙如何规避 文章介绍问题再现总结 文章介绍 本文主要介绍页面中两个按钮相邻时会出现一点空隙&#xff0c;导致在后续自定义填充的时候出现换行或其它问题&#xff0c;特此记录。 问题再现 这个图片能看到我们给外面的div设置的是300的宽…

C++:左值/右值引用、移动语义/std::move、万能引用/完美转发std::forward 详解

你能学到 左值 与 右值左值引用 与 右值引用 基本用法与作用拷贝构造函数 与 移动构造函数移动语义 与 std::move万能引用 与 引用折叠完美转发&#xff1a;std::forward 前言 本文代码片段中变量命名规则如下&#xff1a; 小写字母&#xff1a;一般类型的变量&#xff08;非…

Linux_线程的使用

目录 1、线程与进程的关系 2、线程的优缺点 3、创建线程 4、查看启动的线程 5、验证线程是共享地址空间的 6、pthread_create的重要形参 6.1 线程id 6.2 线程实参 7、线程等待 8、线程退出 9、线程取消 10、线程tcb 10.1 线程栈 11、创建多线程 12、__th…

VS2019安装MFC组件

VS2019支持的MFC版本是mfc140 ~ mfc142版本&#xff0c;它兼容VS2015、VS2017之前的老版本程序。 一、MFC的历史版本 MFC的历史版本如下&#xff1a; IDE发布时间工具集版本MSC_VERMSVCMFC版本dllVisual C6.01998V601200MSVC6.06.0mfc42.dll、mfcce400.dllVisual Studio 2002…

如何设计数据中心100G网络光纤布线

随着全球企业对带宽的需求呈指数级增长&#xff0c;数据中心需要升级以增强其计算、存储和网络能力。数据中心从10G/25G向100G迁移成为必然趋势。随着网络升级&#xff0c;数据中心的光纤布线系统也需要随之优化。本文将指导您如何设计数据中心100G网络光纤布线。 100G以太网的…