ic基础|时钟篇06:crg到底是什么?一文带你了解crg中的时钟系统

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~

在前面的文章里,我们对时钟的切换电路,分频电路和时钟门控电路进行了介绍,其实这些电路都是芯片中必备的时钟和复位产生模块(CRG, clock reset generator)中的时钟生成模块的基本组成部分。

在本篇文章中,我们将之前介绍的几个crg的组成部分拼合起来,组成一个基础的时钟系统电路。

一、crg电路

在我们的芯片中,各个模块的工作需要一个稳定的时钟源来确保其功能的正常实现。因此通常是通过振荡器(OSC,Oscillator)产生一个稳定的低频时钟,从osc输出的时钟经过了pll的倍频,再经过各种分频器后,会经过各种icg,buffer,最终到达各个触发器的时钟端。以下让我们展示一个基础的crg电路:
在这里插入图片描述

我们对上图中的各部分模块的功能进行介绍:

-振荡器(OSC):产生稳定的低频基准时钟,在osc的输出端,还添加了一个mux,用于选择pll的参考时钟的输入是来自与片内osc还是片外osc(即clk_osc_ext),这里之所以使用普通的mux,是因为我们不需要再芯片正常工作时,切换pll的参考钟,并且也不能随意切换!因为这很可能导致pll出现失锁等问题。

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

  • 分频器(Divider):

    将PLL输出的高频时钟进行分频,以满足不同模块对时钟频率的需求。

    在这里clk_bypass_sel和clk_bypass_div是为了保证进行可测性设计(dft,design for test)的全速测试at-speed时,芯片内时钟频率是其最高频率,需要使得对应的时钟分频比为1,因此可通过加入一个mux,并利用clk_bypass_sel选择clk_bypass_div(该信号使得时钟的分频比为1),而非芯片内部寄存器的时钟分频比。

  • 片上时钟控制器(OCC):用于在自动测试机台上对芯片进行全速测试时,根据scan信号控制选通ate时钟或者芯片内部的高速时钟进行测试。

  • 时钟门控(ICG):

    控制各个模块时钟信号的开启和关闭,以实现低功耗设计。

    在这里有个信号scan_en,该信号的主要作用是:由于芯片的门控时钟使能信号是来自寄存器,且在进行scan shift时,寄存器的值并不确定,因此为了避免时钟被错误关闭,通过加入scan_en信号,使得时钟使能一直有效,从而时钟不会被关闭。

  • 时钟选择器(glitch free clock switching circuit):

    这里的glitch free clock mux是为了在芯片工作状态时切换时钟,并起到避免毛刺产生的作用。

    除此之外,我们也可以使用普通的mux和这两个时钟路径上的时钟门控实现无毛刺切换时钟,例如:假设从clk0切换到clk1时,先关闭之前选择的时钟clk0的时钟使能信号,再改变sel信号选择另一个时钟clk1,最后使能时钟clk1,这样也可以实现无毛刺的切换时钟。

  • 缓冲器(Buffer):增强时钟信号的驱动能力,确保时钟信号在传输过程中的稳定性和准确性。

    在一个crg的时钟系统中,osc和pll是模拟电路,后续的时钟分频和时钟门控都是数字负责的,我们需要根据模块需求的工作频率,配置时钟的分频比,以得到满足性能的时钟,也需要根据芯片的工作模式,在模块不需要工作的时钟,对模块的时钟进行门控,关闭时钟的翻转,以减小不必要的功耗消耗。

    除此之外,还有很多需要我们注意的细节,例如pll的lock需要时间,我们需要配合复位信号,最好等待pll稳定,再释放复位,以及芯片的操作系统和一些重要信息可能放在flush这类的非易失存储器中,我们需要在上电时先读取这些重要的信息再释放芯片中某些模块的复位等等。这些上电控制电路可以和crg进行配合,以确保芯片能够在上电后恢复到理想的工作状态。

二、总结

一个完整的crg模块由振荡器、锁相环、分频器、时钟门控和时钟缓冲器等组件组成。这些组件协同工作,为芯片内的各个模块提供稳定、可靠的时钟信号,本篇文章对crg中的时钟系统进行了简单的介绍,只是作为抛砖引玉,大家可以在后面的工作学习中积累更多的相关知识呢~

此外,在一个crg模块中,除了时钟系统外,还有复位系统,这部分我们就留到下篇文章在进行分享吧~

如果你喜欢这篇文章的话,请关注我的公众号-熊熊的ic车间,里面还有ic设计和ic验证的学习资料和书籍等着你呢~欢迎您的关注!
在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
绘制时钟复位CRG(Clock and Reset Generator)图是通过使用一种通用的描述语言来定义硬件设计的时钟和复位信号生成器。其,YAML(Yet Another Markup Language)是一种用于定义数据序列化格式的简单文本文件。 首先,使用YAML语言编写一个描述时钟复位CRG的配置文件,例如clock_reset.crg.yaml。该文件可以包含以下信息: 1. 时钟源:指定使用的时钟源类型,如内部时钟或外部时钟,并指定时钟的频率。 2. 时钟分频器:定义时钟分频器的分频比,以便生成所需的时钟。 3. 时钟相位:设置时钟相位,确保时钟信号与其他时钟或数据信号同步。 4. 复位信号:定义复位信号的类型和边沿触发条件,并设置复位信号的配时。 接下来,使用图形绘制工具(如Visio、Draw.io等)打开该文件并绘制CRG框图。根据设计需要,可以使用不同的图形符号表示时钟、分频器和复位信号,并将它们连接在一起以形成正确的信号生成器。 例如,将时钟源表示为矩形框,并使用箭头表示时钟信号的方向。然后,在该框下方添加一个更小的矩形,表示时钟分频器。使用箭头从时钟源指向分频器,表示时钟信号通过分频器生成所需的时钟。类似地,根据复位信号的类型和触发条件,使用适当的图形符号表示复位信号,并将其连接到时钟源或其他信号源。 最后,根据CRG配置文件的具体定义,将时钟源、时钟分频器和复位信号的参数值标注在绘制的图形元素旁边,以便更清楚地描述硬件设计的要求和约束。 通过这种方式,可以使用YAML文件和图形绘制工具将时钟复位CRG图形化,并进一步改进和优化硬件设计。同时,这种图形化的表示方式也便于设计团队之间的沟通和共享,有助于更好地理解和实现所需的时钟和复位信号生成器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字ic小熊饼干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值