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

news2024/9/22 11:39:55


请阅读【芯片设计 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) begin
     out <= 1'b0;  
   end 
   else if (load) begin
     out <= in;  
   end
end

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

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

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

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

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

同步复位的缺点

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

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

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

异步复位

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

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

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

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

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

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

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

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

  • 容易受到毛刺的影响

异步复位同步释放

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

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

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

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

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

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

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

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


如有侵权,请联系删除

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

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

相关文章

Databend 开源周报第 153 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend。 支持必须更改密码…

npm 报错Error: EEXIST: file already exists, mkdir ‘C:\Windows\System32\cmd.exe‘

npm 报错Error: EEXIST: file already exists, mkdir C:\Windows\System32\cmd.exe 不管输npm 什么命令都报这个错&#xff1a; 报错图&#xff1a; 网上说恢复操作系统&#xff0c;最后定位为应该是配置问题&#xff0c; 我是配置问题 网上查了&#xff0c;最后定位为配置问…

【Mamba】Mamba的部署

ubuntu系统安装11.6版本的cuda 可以参考这两篇博客 ubuntu22.04多版本安装cuda及快速切换&#xff08;cuda11.1和11.8&#xff09;_ubuntu调整cuda版本 【Linux】在一台机器上同时安装多个版本的CUDA&#xff08;切换CUDA版本&#xff09;_linux安装多个cuda 安装CUDA https…

程易科技:十年匠心,与您同行

序章&#xff1a;时光的见证者 十年前&#xff0c;当第一缕曙光照亮程易科技的办公室&#xff0c;一个关于梦想、创新与陪伴的故事悄然启幕。程易科技&#xff0c;一家以自研DSP数字化服务平台为核心&#xff0c;致力于为企业提供高效、低成本业务构建能力的科技企业&#xff…

django中日志模块logging的配置和使用

一、文件的配置 settings.py文件中添加LOGGING块的配置&#xff0c;配置如下 # 日志记录 LOGGING {"version": 1,"disable_existing_loggers": False, # 用于确定在应用新的日志配置时是否禁用之前配置的日志器# 格式器"formatters": {"v…

【后端开发实习】用MongoDB和Redis实现消息队列搭建分布式邮件消息系统

用Redis实现消息队列并搭建分布式邮件消息系统 系统介绍Redis实现消息队列思路分析代码实现 MongoDB监听数据变化思路分析代码实现Mongoose测试连接监听mongodb数据变化 注意点 系统介绍 本次要实现的是一个能够实现实时监控Mongodb中数据变化的系统&#xff0c;要能够在数据发…

电机泵盖机器人打磨去毛刺,选德国进口高精度主轴

机器人打磨去毛刺该如何选择主轴呢&#xff1f;首先我们需要考虑的是工件的材质&#xff0c;电机泵盖通常使用铸铁、不锈钢、合金钢等金属材质&#xff0c;因此这类保持的硬度较高&#xff0c;一般会选择功率、扭矩较大的德国进口高精度主轴Kasite 4060 ER-S。 Kasite 4060 ER-…

持续集成03--Jenkins的安装与配置

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的实践中&#xff0c;Jenkins作为一个开源的自动化服务器&#xff0c;扮演着至关重要的角色。本篇“持续集成03--Jenkins的安装配置”将带您走进Jenkins的世界&#xff0c;深入了解如何在Linux环境中安装并配置Jenkins。…

redis安装,启动客户端、验证(redis第一次作业)

Redis简介 全称&#xff1a; mote ctionary erver &#xff08;远程字典服务器&#xff09;。是完全开源免费的&#xff0c;用 C 语言编写的&#xff0c;遵守 BSD协议。是一个高性能的 (key/value) 分布式内存数据库&#xff0c;基于内存运行并支持持久化的 NoSQL 数据库&#…

react Jsx基础概念和本质

什么是jsx jsx是JavaScript和XML(HTML)的缩写&#xff0c;表示在js代码中编写HTML模板结构&#xff0c;它是react中编写UI模板的方式 const message this is message function App(){return (<div><h1>this is title</h1>{message}</div>) } jsx优…

昇思25天学习打卡营第12天|Vision Transformer图像分类、SSD目标检测

Vision Transformer&#xff08;ViT&#xff09;简介 近些年&#xff0c;随着基于自注意&#xff08;Self-Attention&#xff09;结构的模型的发展&#xff0c;特别是Transformer模型的提出&#xff0c;极大地促进了自然语言处理模型的发展。由于Transformers的计算效率和可扩…

南京邮电大学统计学课程实验2 用EXCEL进行参数估计假设检验 指导

一、实验描述 实验目的 1、学会用Excel进行参数估计&#xff1b; 2、学会用Excel进行z检验-双样本平均差检验&#xff1b; 实验环境 实验中使用以下软件和硬件设备 &#xff08;1&#xff09;Windows XP操作系统&#xff1b; &#xff08;2&#xff09;PC机、EXCEL软件&…

Mysql基础与安装

一、数据库的概念和相关的语法和规范 1、数据库的概念 数据库&#xff1a;组织&#xff0c;存储&#xff0c;管理数据的仓库。 数据库的管理系统&#xff08;DBMS&#xff09;&#xff1a;实现对数据有效组织&#xff0c;管理和存取的系统软件。 数据库的种类&#xff1a; …

Jenkins整合Owasp DependencyCheck实现SCA

简介 Dependency-Check 是 OWASP&#xff08;Open Web Application Security Project&#xff09;的一个实用开源程序&#xff0c;用于识别项目依赖项并检查是否存在任何已知的&#xff0c;公开披露的漏洞。 目前&#xff0c;已支持Java、.NET、Ruby、Node.js、Python等语言编写…

ArkTS学习笔记_UI界面的状态管理简述

ArkTS学习笔记_UI界面的状态管理简述 背景&#xff1a; 我们在UI开发中&#xff0c;绝大多数的UI界面都是动态的、有用户交互的&#xff0c;为了实现动态交互&#xff0c;引入了一个概念“状态”&#xff0c;它主要是用来记录管理UI界面的状态变化&#xff08;数据变化&#x…

【EXCELL技巧篇】使用Excel公式,获取当前 Excel的Sheet页的名字

【通知】&#xff1a; 正式跟大家说个难过的消息&#xff0c;本来在「中国朝代史」结束后&#xff0c;开启的下一个专栏「中国近代史」前面几期做的还好好的&#xff0c;可是今天起正式通知审核不过&#xff0c;因为一些原因。 其实我对于历史这一块我还是很感兴趣的&#xff0…

Abaqus基于CT断层扫描的三维重建插件CT2Model 3D

插件介绍 AbyssFish CT2Model 3D V1.0 插件可将采用X射线等方法获取的计算机断层扫描&#xff08;CT&#xff09;图像在Abaqus有限元软件内进行三维重建&#xff0c;进而高效获取可供模拟分析的有限元模型。插件可用于医学影像三维重构、混凝土细观三维重建、岩心数字化等领域…

Qcom平台通过Hexagon IDE 测试程序性能指导

Qcom平台通过Hexagon IDE 测试程序性能指导 1 安装Hexagon IDE工具2 测试工程2.1 打开Hexagon IDE2.2 新建工程2.3 添加测试案例2.3.1 方法一&#xff1a;新建2.3.2 方法二&#xff1a;拷贝 2.4 配置测试环境2.4.1 包含头文件2.4.2 添加程序优化功能(需先bulid一下)2.4.3 添加g…

nodejs安装+踩坑报错解决

下载Node.js安装包 官网下载地址&#xff1a;http://nodejs.cn/download/&#xff0c;根据自己电脑选择32位还是64位&#xff0c; 下载地址 选择合适的版本下载 X86是32位的&#xff0c;X64是64位的&#xff0c;我们一般是下载win版X64的msi文件的是点击可以直接启动安装程序的…

框架设计MVC

重点&#xff1a; 1.用户通过界面操作&#xff0c;传输到control&#xff0c;control可以直接去处理View&#xff0c;或者通过模型处理业务逻辑&#xff0c;然后将数据传输给view。 2.control包含了model和view成员。 链接&#xff1a; MVC框架详解_mvc架构-CSDN博客 MVC架…