ic基础|复位篇02:芯片中的“人生重来枪”!crg之复位系统

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

世界是混沌的,每一个人在出生之时都有着无数的未来可能性,并在环境,家人,朋友和自身等多种因素的影响之下会逐渐向着某种方向发展。而对于芯片来说,其中分布着相当多的触发器,当我们给芯片供电时,每个触发器中存储的是1还是0是不确定的,因此芯片的后续运行也有无数种可能,但是这显然不是我们想要的,芯片工程师并不是神,无法穷究每一种可能性下的发展方向,我们只需要芯片在上电初期有一个确定的初始状态,这样我们才能使得芯片按照我们设定的轨迹运行下去,这就可以通过芯片中的复位系统实现。

 在芯片设计中,复位系统是一个很重要的部分,我们随时可以通过复位来将数字电路中的触发器设置到一个确定的初始值上,从而使得状态机和其他的控制电路可以从一个已知的初始状态开始工作。

ic基础|复位篇∶关于同步复位和异步复位你不得不知道的二三事!

在我们前面的文章中(即上述蓝色连接的那篇文章)已经提过了复位可以分为同步复位和异步复位两种。在这两种复位中,由于同步复位会带来更多的资源消耗,以及挤占数据路径会导致更多的延时,从而对时序的满足造成负面影响等缺陷,我们的芯片中使用更多的还是异步复位。

在本期文章,我们将给出一个基础的时钟和复位产生模块中的复位系统,并会将其和时钟系统的配合进行简要描述。

一、复位系统

下图是一个简单的复位系统,下面我们将对其进行介绍:
在这里插入图片描述

1.1 复位的源头

对于芯片来说,其中的复位信号也有一个源头,那就是上电复位(POR)电路,POR的作用是在芯片上电时,由POR产生的复位信号始终有效,使得芯片内部的电路保持静态,当给芯片施加的电源电压达到了一个能保证芯片正常工作的电压之后,POR才会释放其内部复位信号,芯片内部才能够开始正常工作。

在上图中的por就是这个复位系统的上电复位模块,其中的rst_n_ext为外部输入的复位信号。外部的电路可以使用该信号对芯片的复位进行控制。

1.2 复位的同步

对于复位信号来说,其释放需要满足恢复时间(recovery time)和撤销时间(removal time),因此在我们的复位系统设计之中,需要对每个异步时钟区域独立地同步复位。如上图所示,其中对每个独立的时钟区域都使用了一个独立的复位同步器。

在这里我们还加入了两个信号rst_bypass_sel和rst_bypass_n,这两个信号是用于可测性设计(dft,design for test)的,由于芯片中的部分复位信号是受寄存器控制的,在scan shift过程中寄存器的值并不确定,因此可能导致复位错误触发,因此为了避免这种情况的发生,我们可以通过加入一个mux,通过rst_bypass_sel选择在scan shift过程中选择rst_bypass_n。

1.3 复位和时钟的配合

由于锁相环pll的输出稳定需要一定的时间,在pll没有锁定之前,应该保持复位信号始终有效,以避免由于时钟的不稳定导致芯片的运行出现问题,因此在上图中,我们首先将por释放的原始复位信号输入至pll,等待其稳定之后,即产生了pll的锁定信号pll_locked,后续逻辑部分的复位信号pll_rst_n才能被释放。

1.4 寄存器复位信号

和通过寄存器配置时钟使能信号类似,我们也可以通过寄存器配置模块的复位信号(如图中的reg_rst_n),以便需要的时候,我们能够通过软件控制的模块复位,将其变为一个确定的初始状态。

二、上电流程

下面结合一个实例来说明复位系统的使用:
在这里插入图片描述
先说明一下图上的各个信号:

  • VDDIO和VANA是上电管脚;
  • XSHUTDOWN是管脚输入的外部复位信号;
  • EXTCLK是管脚输入的外部参考钟;
    -SDA和SCL为I2C信号;

在了解了各个信号的内容后,我们进一步对该芯片的上电时序进行说明:

  1. 第一步先在VDDIO和VANA处给电,两个管脚给电顺序可变,只需要满足一定的时间要求即可;
  2. 在VDDIO和VANA两个管脚给电时,根据XSHUTDOWN的电平有以下两种情况:
    -电源VDDA和VDDIO接通时,如果XSHUTDOWN为低电平或关闭,则该芯片进入硬件待机模式(此时不能通过软件配置寄存器)。
    -如果电源接通(超过电压电平的90%, 即达到电压阈值)后将XSHUTDOWN变为高电平,则该芯片进入软件待机模式(即可通过软件配置寄存器)。
    -在这两种情况下,通过POR在合适的时机释放其内部复位信号,确保寄存器值正确初始化为其默认值。
  3. 在释放外部复位后,给入参考钟;
  4. 还需要等待一段时间(即图中的t4),以确保pll稳定,并进行一系列初始化操作等等;
  5. 等待了t4后,此时可以响应i2c命令,对芯片进行配置,例如释放各个模块的软件复位,进行正常工作下的初始化配置等等;
  6. 芯片进入正常工作模式。

三、总结

以上就是我们本篇文章的全部内容了,希望大家看了能有所收获吧~

最后,还提一个关于复位的小知识,由于带有复位引脚的触发器所占用的芯片面积比没有复位引脚的触发器略微大一些,因此,如果用于保存数据信号的触发器的初始值无关紧要(即该数据信号不会用于做控制逻辑驱动后续的电路,且在后续工作过程中会有正确的数据对其进行覆盖),那么,我们可以使用不带复位引脚的触发器,以降低芯片的面积。

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

在这里插入图片描述

绘制时钟复位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图形化,并进一步改进和优化硬件设计。同时,这种图形化的表示方式也便于设计团队之间的沟通和共享,有助于更好地理解和实现所需的时钟和复位信号生成器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数字ic小熊饼干

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

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

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

打赏作者

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

抵扣说明:

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

余额充值