精华内容
下载资源
问答
  • 单片机时钟电路
    万次阅读
    2019-08-15 08:08:00

     

    首先,单片机能正常工作的必要条件之一就是时钟电路,所以单片机就很需要晶振。

      晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。

    单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12兆赫兹晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。

     MCS—51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12兆赫兹,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。

      机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12兆赫兹晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

      晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。比如12兆晶振。单片机工作速度就是每秒12兆。单片机内部也有晶振。接外部晶振可以或得更稳定的频率.

    转载于:https://www.cnblogs.com/yuanqiangfei/p/11355758.html

    更多相关内容
  • 在MCS-51单片机片内一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部...
  •  在MCS-51单片机片内一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部...
  • FPGA设计的心脏——时钟电路

    千次阅读 2020-06-13 22:35:55
    时钟的概念,是数字电路设计的基础,如果时钟噪声非常大,或者没有跟数据同步,对于设计来说,无疑是失败的。 好在FPGA平台,对时钟的设计考虑的非常周到。

    FPGA设计的心脏——时钟电路

    用心脏来比喻硬件设计中的时钟,再合适不过了。

    心脏跳动的节拍,频率,就好比时钟的频率大小,上升和下降;

    时钟虽起伏有别,却周而复始。

    本文内容出自《通信IC设计》一书,仅作整合用于学习。

    时钟电路

    设计不良的时钟再极限的温度,电压或制造工艺的偏差下将导致错误的行为,并且调试困难、花销很大。根据时钟的分类,可以分为逻辑时钟、接口时钟、外部存储器时钟等。

    1. 逻辑时钟

      逻辑时钟取决于生成该时钟逻辑的关键路径,通常需要遵循一定的原则进行时钟设计。逻辑时钟进一步可细分为:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统包括上述4种时钟类型的任意组合。

    2. 接口时钟

      异步信号的时序一般也是通过FPGA片内同步逻辑产生,一般需要同步化,即接口的同步化采样。某些接口的同步时钟一般是固定而精确的,例如SerDes的时钟尽量由该组的专用时钟引脚输入,这样可保证由一组SerDes组成的高速接口的时钟偏斜一致。

    3. 外部存储器时钟

      外部存储器时钟主要包括LPDDR / DDR2 / DDR3等器件的时钟。一般来书,FPGA的接口不用工作在相应器件的最高频率,只要满足系统缓存数据的性能即可。但由于此类接口需要对外部存储器进行定时刷新,工作频率过低会造成数据丢失或者不稳定,因此外部存储时钟存在一个最小时钟频率的问题。

    4. 其余时钟

      对于类似SPI / IIC / MDIO /等要输出低速时钟的电路,通常通过计数器或者内部寄存器逻辑输出。这类电路无需通过PLL / DCM产生所需时钟,因为这类时钟的驱动负载都可以通过引脚配置设定,而且要求的抖动、建立 / 保持时间都基本能够满足需求。

    逻辑时钟的时序模型

    由于逻辑时钟会对每个寄存器单元进行时序控制,而这些单元是按照一定的组织构架排列在FPGA内部的,所以将所有时钟连线串接在一起,就会形成一个逻辑树,即时钟树的概念。

    时钟树同样可以按照建立 / 保持时间、抖动等概念建立时序模型。该模型还需要考虑传播中的偏斜、跳变和绝对垂直的偏差,以及其他一些不确定因素。不同的时钟组合对应不同的参数组合(如网络延迟、有效工作区等),因此组合时钟数量越多,参数组合数量就越多,每个参数都满足的几率就会变小。这就是组合时钟电路不受欢迎的根源。

    时钟电路的时序模型

    全局时钟的设计

    对于FPGA设计而言,全局时钟是最简单和最可预测的时钟。在FPGA设计中,最好的时钟方案是:由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能,就尽量在设计项目中采用全局时钟。FPGA都具有专门的全局时钟引脚,它直接连接到器件的每一个寄存器上。这种全局时钟提供器件中最短的时钟到输出的延时。(前面的I / O部分已经对此有详细的说明)

    门控时钟设计

    在许多应用中,整个项目都采用外部的全局时钟是不可能或不实际的。FPGA中有专门的时钟逻辑,以用于控制各个触发器。驱动时钟的逻辑必须只包含一个‘与’门或一个‘或’们。如果下图的逻辑信号A附加了额外的毛刺,必然会影响到门控时钟的输出,且会产生时钟毛刺,因此逻辑信号A最好是D锁存器的直接输出。

    门控时钟

    门控时钟波形如下图:

    门控时钟产生的毛刺与冒险

    多级时钟设计

    当产生门控时钟的组合逻辑超过一级时,即超过单个的‘与’门或‘或’门时,该时钟实际上会存在很多风险,因为组合电路与时钟结合往往会存在很多的毛刺,即使仿真结果中没有显现。多级时钟实际上是不适合在FPGA中使用的,如果非要使用,最佳方法是将多级逻辑时钟进行转换。一种转换方法是将组合电路进行时钟锁存,然后再与标准时钟组合,形成最终时钟输出。

    下图左侧是一个多级时钟例子,这个时钟电路必然会产生较多的毛刺,因此时钟1时钟2以及组合电路1会形成多种情况,必然也会有各种组合翻转出现。

    下图右侧的电路,则是对上述电路进行优化的实现方案。对电路的逻辑进行梳理,并将单个时钟作为D触发器的输入端,组合电路作为使能端,这种情况下的生成时钟非常稳定可靠,然后将两个电路的时钟通过FPGA专用时钟选择逻辑输出最后的组合时钟。

    多级时钟的修订方法

    行波时钟

    行波时钟通常用于低速分频时钟,即讲一个触发器的输出用作另一个触发器的书中输入。通常情况下,行波时钟是触发器的Q端输出,如果该时钟负载较小,且驱动电路能容忍的建立 / 保持时间较大,则可以像全局时钟一样可靠地工作。

    如果行波时钟在行波链上各触发器的时钟之间产生较大的时间偏移,并且会超出最坏情况下的建立 / 保持时间以及组合电路延迟之和,则该时钟不能满足要求。

    在这里插入图片描述

    行波时钟的建立 / 保持时间不够的情况如下图:

    行波时钟原理图

    由于行波时钟的时钟沿与标准时钟沿的关系较为复杂,通常在ASIC电路中不提倡使用,FPGA也不推荐使用。推荐的办法是采用同步计数器,并采用沿指示的方法产生时钟(这个短句没有理解)。例如:

    module clock_div_new #(parameter cfactor=2,parameter cnt_len=8)(
    	input clk_in,
    	input rst,
    	output clk_out
    	);
    reg clk_loc; 
    reg [cnt_len-1:0] cnt;//allowed maximum clock division factor is 256
    assign clk_out = (cfactor==1)? clk_in : clk_loc;
    always@(posedge clk_in) begin
        if(rst==1) begin
    		cnt <= 'd0;
    		clk_loc = 1;
    	end else begin
    		cnt <= cnt + 1'b1;
        	if(cnt==cfactor/2-1) 
    			clk_loc = 0;
        	else if(cnt==cfactor-1) begin 
    			cnt <= 'd0;
    			clk_loc = 1;
        	end
        end
    end
    endmodule
    

    After

    时钟的概念,是数字电路设计的基础,如果时钟噪声非常大,或者没有跟数据同步,对于设计来说,无疑是失败的。

    好在FPGA平台,对时钟的设计考虑的非常周到。

    一般来说,像笔者做FPGA设计,主时钟,那都是PLL来实现的;时钟约束起来也挺方便的,而且部分PLL的IP是自带时钟约束的。

    关于时钟约束的文章,网上有一大堆,也做过收藏:

    关于时钟约束的文章收藏

    看完这个系列,就OK了。

    以下是广告?

    Python企业招聘百万级信息爬取

    展开全文
  • 时钟电路之晶体和晶振

    千次阅读 2019-10-10 14:52:14
    概述 在数字电路中,数据的发送和接收都需要时钟作参考,数据可在时钟的...晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振与有源晶振的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillat...

    概述
    在数字电路中,数据的发送和接收都需要时钟作参考,数据可在时钟的上升沿采样,下降沿采样或者是上升沿和下降沿同时采样。
    常用输入时钟信号都由晶体振荡器产生。在电子学上,通常将含有晶体管元件的电路称作“有源电路”,而仅由阻容元件组成的电路称作“无源电路”。晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振与有源晶振的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(晶振)。晶体需要借助于时钟电路才能产生振荡信号,自身无法振荡起来,所以“无源晶振”这个说法并不准确;有源晶振是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件,因此体积较大,晶体和晶振结构上的差异决定原理图设计上的差异。
    晶体振荡器的工作原理
    1、石英晶体的特性
    石英晶体之所以能作为振荡器使用,是基于它的压电效应:在晶片的两个极上加一电场,会使晶体产生机械变形;在石英晶片上加上交变电压,晶体就会产生机械振动,同时机械变形振动又会产生交变电场,虽然这种交变电场的电压极其微弱,但其振动频率是十分稳定的。当外加交变电压的频率与晶片的固有频率(由晶片的尺寸和形状决定)相等时,机械振动的幅度将急剧增加,这种现象称为“压电谐振”。
    在这里插入图片描述
    图1:石英晶体的符号、等效电路及特性曲线
    图 1所示图形从左至右分别为石英晶体的代表符号、等效电路以后其电抗频率特性示意图。等效电路中C0为切片与金属板构成的静电电容,它的大小与晶体的几何尺寸、电极面积有关,一般约几个pF到几十pF。当晶体振荡时,机械振动的惯性可用电感L来等效,一般L的值为几十mH 到几百mH。晶片的弹性可用电容C 来等效,C 的值很小,一般只有0.0002~0.1pF。晶体振动时因摩擦而造成的损耗则用电阻R 来表示,它的数值一般为几十Ω。由于晶片的等效电感很大,而C 很小,R也小,因此回路的品质因数Q 很大,可达1000~10000。加上晶片本身的谐振频率基本上只与晶片的切割方式、几何形状、尺寸有关,而且可以做得精确,因此利用石英谐振器组成的振荡电路可获得很高的频率稳定度。
    从石英晶体的电抗频率特性示意图可知,石英晶体有两个谐振频率,即
    (1)当R、L、C 支路发生串联谐振时,其串联谐振频率为 f s = 1 2 π L C fs=\frac{1}{2π\sqrt{LC}} fs=2πLC 1
    (2)当频率高于fs 小于fd 时,R、L、C 支路呈感性,当与C0 发生并联谐振时,其振荡频率为 f d = 1 2 π L C 1 + C / C 0 = f s 1 + C / C 0 fd=\frac{1}{2π\sqrt{LC}}\sqrt{1+C/C0}=fs\sqrt{1+C/C0} fd=2πLC 11+C/C0 =fs1+C/C0 由于C<<C0,因此fs 和fd 很接近。
    通常石英晶体产品所给出的标称频率既不是fs 也不是fd,而是外接一个负载电容CL 时的频率,由于CL 与C0 并联,所以此时 f d = 1 2 π L C 1 + C C 0 + C L = f s 1 + C C 0 + C L < f d fd=\frac{1}{2π\sqrt{LC}}\sqrt{1+\frac{C}{C0+CL}}=fs\sqrt{1+\frac{C}{C0+CL}}< fd fd=2πLC 11+C0+CLC =fs1+C0+CLC <fd
    因此石英晶体振荡有两种模式,一种并联谐振模式,一种是串联谐振模式。
    并联谐振
    石英晶体作为振荡器的应用电路如图 5-2所示。这样的组成可以使石英晶体处于并联谐振模式,
    其振荡频率为上述中的 f d = 1 2 π L C 1 + C C 0 + C L = f s 1 + C C 0 + C L fd=\frac{1}{2π\sqrt{LC}}\sqrt{1+\frac{C}{C0+CL}}=fs\sqrt{1+\frac{C}{C0+CL}} fd=2πLC 11+C0+CLC =fs1+C0+CLC
    CMOS 反相器在芯片内体现为一个AB 型放大器,它将输入的电量相移大约180° 后输出;并且由石英晶体,RS,CL1 和CL2 组成的π型网络产生另外180°的相移。所以整个环路的相移为360°。这满足保持振荡的一个条件。其它条件,比如正确起振和保持振荡,则要求闭环增益应≥1。
    反相器附近的电阻Rf 产生负反馈,因为此时的CMOS 反相器是一个真正意义上的反相器,即它的放大倍数趋近于无穷大,而要想构成一个振荡器,要求放大电路有一个合适的增益,这个增益并非越大越好,因此通常会加入反馈电阻降低电路的增益为一个合适的值,这就是加入电阻的作用。你在实际中遇到的不用并联电阻就可以工作的反相器,它本身的增益不是无穷大,而是一个相对合适的数值,这个反馈电阻Rf 电阻值很高,范围通常在500KΩ ~2MΩ 内,SMB 交换机的设计中此电阻的阻值通常取为1MΩ。
    RS 是驱动限流电阻,主要功能是限制反相器输出,这样晶体不会被过驱动(over driven )。过驱动会损坏晶体,要一直保证晶体消耗的功率在厂商说明书规定范围内。在实际的晶体电路设计中,如果晶体的消耗功率能保证在过驱动的范围内,RS 阻值可取0Ω 以便后续调整。
    CL1 和CL2 组成晶体的负载补偿电容,在实际电路中晶体的负载电容还应包括PCB 上的扩散电容CS(包含PCB 走线上的寄生电容,晶体及芯片引脚上的寄生电容等),因此实际晶体的负载补偿电容为 C L = C L 1 ∗ C L 2 C L 1 + C L 2 + C S CL=\frac{CL1*CL2}{CL1+CL2}+CS CL=CL1+CL2CL1CL2+CS。CS 一般为几个pF,CL1 和CL2 一般取相等的值,取值大小由晶体规格书给出的负载电容决定,使晶体电路的实际负载补偿电容尽可能和晶体规格书给出的负载电容相等。
    在这里插入图片描述
    图 2 石英晶体的并联谐振应用电路
    串联谐振
    在这里插入图片描述
    图3:石英晶体的串联谐振应用电路
    由于我们的设计中不涉及串联谐振电路,因此对于串联谐振模式在这只作简单介绍。串联谐振振荡电路其目的就是让晶体工作在串联谐振频率上,在晶体的反馈环路中没有电容。图 5-3所示的电路就是晶体工作在串联谐振的振荡电路,其中Cs 为可调电容,用于微调晶体振荡频率。根据晶体的等效电路,可得晶体新的串联谐振频率 f d = 1 2 π L C 1 + C C S fd=\frac{1}{2π\sqrt{LC}}\sqrt{1+\frac{C}{CS}} fd=2πLC 11+CSC ,并考虑C<< Cs,可得电路的串联谐振频率为f≈fs。
    石英晶体振荡器的主要参数
    1、负载频率:在规定的负载电容下晶体的振荡频率即为负载频率 。负载频率是晶体技术条件中规定的频率,通常标识在产品外壳上。需要注意的是, 晶体外壳所标注的频率,既不是串联谐振频率也不是并联谐振频率,而是在外接负载电容时测定的频率,数值界于串联谐振频率与并联谐振频率之间。所以即使两个晶体外壳所标注的频率一样,其实际频率也会有些偏差(工艺引起的离散性)。对晶体频率的测试用普通的示波器即可,除测试时钟的频率(FRE)外,需测试时钟的峰峰值(Vp-p)、上升时间(rise time)和下降时间(fall time)。
    2、频率容差(Frequency Tolerance):在规定条件下,基准温度(25± 3℃)时工作频率相对于标称频率所允许的偏差。一般用ppm(百万分之)表示。
    3、频率稳定性(Frequency Stability):在规定条件下,在工作温度范围内(如0~70℃)相对于基准温度(Refer 25℃)时工作频率的允许偏差。一般用ppm(百万分之)表示。值得注意的是,实际情况下我们用频谱仪测试的时钟频偏除了调整频差和温度频差因素之外,还与实际的负载电容的取值有关,因为调整频差和温度频差都是在规定条件下,即晶体负载电容等于负载频率下的负载电容得出的, 而实际晶体电容一般与负载频率下的负载电容有一定差异。
    当实测时钟频偏不符合要求时,我们一般可以通过调整负载电容使频偏符合要求,电容调整的一般原则为(调整频偏时需保证其他时钟参数也符合要求):当正偏过大时,应适当增大负载电容的值;当负偏过大时,应适当减小负载电容的值。
    4、老化率(Aging):在规定条件下,晶体工作频率随时间而允许的相对变化。以年为时间单位衡量时称为年老化率。一般用ppm(百万分之)表示,如±3ppm。
    5、静态电容(Shunt Capacitance):等效电路中与串联臂并接的电容,也叫并电容,通常用C0表示。
    6、负载电容(Load Capacitance)CL:负载电容CL是与晶体一起决定负载谐振频率FL的有效外界电容。晶振元件相当于电感,组成振荡电路时需配接外部电容,此电容即负载电容。
    7、串联等效电阻(ESR)Rr:串联谐振频率下的等效电阻,晶体规格书中会给出最大串联等效电阻。
    8、驱动电平(Drive Level)DL:驱动电平(功率)是指晶体工作时消耗的有效功率。
    晶体规格书中一般会给出晶体驱动电平的最小值和最大值,如最小值为0.01uW,最大值为500uW。在振荡回路中,驱动电平应大小适中,超过最大驱动电平会造成过驱动,容易造成晶体损坏;小于最小驱动电平会造成欠驱动,会引起晶体不容易起振。
    电路设计举例
    1、Crystal(晶体)
    使用晶体作为时钟源时,芯片内部都会集成反向放大器,举例电路如图 4所示:
    在这里插入图片描述
    图 4 Crystal(晶体)时钟电路设计举例
    在图 4所示的电路中,C1、C2是负载补偿电容(对应图 5-2中的CL1、CL2)、R1是反馈电阻,当晶体不起振或中心频率偏移时可以调节这些元件的取值,在许可范围内,C1、C2取值越小越容易起振,C1、C2取值越大频率越稳定,但起振时间越长。R2作为限流电阻,需根据芯片本身的特点取值,当出现时钟输出波形波峰和波谷两端被削平变成方波时,则说明晶体已被过分驱动,应增大R2的阻值。XTAL_IN和XTAL_OUT分别连接芯片内部反向放大器的输入端和输出端。
    2、Oscillator(晶振)
    Oscillator(晶振)的时钟电路举例如图 5-5所示。图 5-5所示电路中晶振共有四个引脚,分别是1号引脚OE使能引脚,此引脚悬空或者接高电平晶体才会有时钟输出,2号引脚GND接地,3号引脚为时钟输出引脚,R32取值33Ω作源端匹配,吸收发射改善时钟输出波形,设计预留电容C51是为了如果晶振输出存在EMI等问题时有个可调手段(在晶振容性负载的许可范围内,此电容越大越能改善EMI问题),4号引脚VDD为电源输入引脚,目前存在的晶振电源输入有3.3V、2.5V和1.8V输入。
    在这里插入图片描述
    图 5 Oscillator(晶振)时钟电路设计举例
    3、PCB Layout 注意事项
    时钟电路为高速电路,对Layout 要求较高,设计时应注意以下方面:
    1、 使晶振(或晶体)与 IC之间的信号线尽可能保持最短。如果线路太长,会使时钟信号对EMC、ESD 与串扰产生非常敏感的影响。而且长线路还会给振荡器增加寄生电容。
    2、 尽可能将其它时钟线路与频繁切换的信号线路布置在远离晶振(或晶体)连接的位置。
    3、 时钟信号线下方要保证完整的地平面。

    展开全文
  • 两种异步时钟同步化区别分析

    千次阅读 2021-03-04 08:49:50
    今天面试被问到异步复位同步释放和异步复位打什么区别,没回答上来,主要忘记了异步复位同步释放的实现方式,回来查了一下资料,觉得复位还是值得写一写的。 在FPGA或者数字IC设计中肯定会涉及到同步和异步...

    今天面试被问到异步复位同步释放和异步复位打两拍有什么区别,没回答上来,主要忘记了异步复位同步释放的实现方式,回来查了一下资料,觉得复位还是值得写一写的。

    在FPGA或者数字IC设计中肯定会涉及到同步和异步复位的问题,首先介绍一下同步复位和异步复位。

    同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:
    always @ (posedge clk) begin
    if (!Rst_n)

    end
    同步复位的优点:

    1. 有利于仿真器的仿真。
    2. 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
    3. 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

    同步复位的缺点:

    1. 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
    2. 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

    异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:
    always @ (posedge clk,negedge Rst_n) begin
    if (!Rst_n)

    end
    异步复位的优点:

    1. 大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
    2. 设计相对简单。
    3. 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

    异步复位的缺点:

    1. 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
    2. 复位信号容易受到毛刺的影响。
      为什么会产生亚稳态呢,这里就需要明确两个概念removal time 和recovery time。

    在这里插入图片描述
    Removal timing check

    Removal time是指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。满足这个最短时间才能确保对寄存器进行正常的复位。Removal time check的波形图如下图所示。Removal timing check与hold time check类似。

    Recovery timing check

    Recovery time是指在时钟有效沿到来之前,复位信号保持高电平的最短时间。即复位信号变到非复位状态的电平必须在clk之前一定的时间到达。满足这个Recovery time,可以确保在时钟有效沿来临时,异步复位信号处于无效状态,从而确保正常的数据采样。

    从Removal 和Recovery time的定义知道,只要DFF的复位信号不在时钟有效沿附近变化(复位信号远离时钟有效沿),就可以保证电路的正常复位和撤销。

    下面举例说明异步复位的亚稳态产生,当触发器的复位和解复位都是异步的,与时钟的边沿无关时称之为完全异步复位。如下图所示,图中触发器DFF的复位信号由复位控制电路给出,复位控制电路与触发器的时钟没有任何关系。
    在这里插入图片描述
    触发器解复位与解复位后与下一个时钟有效沿之间必须保持的最小时间称之为复位恢复时间(reset recovery time)也就是上面介绍的recovery time。下图是复位恢复时间违规时序图,当异步复位释放点不满足复位恢复时间时,会导致输出不定态或亚稳态,使系统功能出现异常。
    在这里插入图片描述
    结论:
    为了避免纯粹的同步复位和纯粹异步复位的问题,可以使用一种叫做同步化的异步复位,我们称其为第三类复位。这种复位完全结合了异步复位和同步复位的优势,我们知道异步复位的优势是不参与数据路径,所以不影响数据路径速度,而复位几乎是瞬间起作用;而同步复位的优势是百分百地同步时序分析且具有抗噪声性能。这种复位其实就是通常我们所说的异步复位同步释放。就如同我之前讨论的那样,异步地进入复位是最好的,只是异步地退出复位会导致一些类似亚稳态和由同步电路参与反馈而引起不想要的状态之类的危害等问题。

    异步复位同步化
    啰嗦的一大堆终于进入正题了。
    异步复位同步化的方式有两种,一种是同步化的异步复位,另外一种是大名鼎鼎的异步复位同步释放。
    首先介绍第一种同步化的异步复位。
    同步寄存器(Synchronizer Register)像同步复位那样被使用,不过被同步后的异步复位和原始异步复位经过门控以后用来异步地复位后续寄存器。这个电路中异步复位信号异步地复位后续电路,并且复位是异步地释放。它的缺点就是复位路径上引入了门电路的延迟。
    其实简单的理解就是异步复位信号打两拍进行同步化,因此增加了复位电路的延时。
    在这里插入图片描述为了解决上述电路复位路径上门电路延迟。异步复位输入直接连接到同步寄存器(Synchronizer Register)的CLRN端口上,这样复位立即生效。当复位撤除(释放)时,一个逻辑“1”从同步器(Synchronizer)被时钟打出用来同步地释放后续寄存器的复位,也就是异步复位同步释放。
    在这里插入图片描述
    注意
    当有PLL涉及时,有些特殊情况需要考虑。比如我们来如图19所示的电路。需要同步的复位跟之前一样直接接到了同步器中寄存器的CLRN端口,而同步后的寄存器也同样接到了reg1和reg2的CLRN端口,同时也被接到PLL的areset端口。所有寄存器包括同步器中的寄存器的驱动时钟来自PLL的输出时钟。虽然看起来PLL使用了同步后的复位,实际上这是行不通的。当PLL处于复位状态时,PLL的c0是没有时钟输出的,因此同步器中的寄存器将无法清除复位(意思是复位无法得到释放)。结果是,这个电路将永远无法跳出复位。
    在这里插入图片描述RDC(Reset Domain Crossing)跨复位域
    这里顺便提一下RDC,当前复杂FPGA或者数字IC设计除了包含多个时钟域外还包含了多个异步复位域,检测人员对CDC跨时钟域处理已经有了足够的重视,而实际上,如果设计种存在跨异步复位域时同样会经常会遇到亚稳态的问题。 具体而言,对于有多个异步复位域的设计,如果某个异步复位在复位时,其复位的信号可能正好落在接受域时钟的建立和保持时间窗口内,这会造成接受端采样到发送端信号复位前后或复位后的值,从而造成仿真行为和FPGA真实行为的不一致。因此,需要不同异步复位域之间需要进行有效隔离或同步,或者提前指定异步复位的先后顺序,以确保设计可以可靠复位,避免由于跨异步复位域而引起的亚稳态问题。
    在这里插入图片描述当一个复位域的异步复位边沿太接近另一个复位域的触发器的时钟边缘或不复位时,就会发生亚稳态,导致触发器的值不确定,并在整个设计中传播,从而导致功能故障。

    展开全文
  • 数字电路时钟无毛刺切换

    千次阅读 2019-05-10 09:56:14
    两种情况都可能在开关时产生毛刺(glitch),而系统上的毛刺对系统来说是危险的,他可能能够被一些寄存器捕获为触发边沿,而其他寄存器忽略此毛刺。 、 时钟切换的简单实现 在这种情况下就会出现毛刺,产生...
  • glitch-free的时钟切换电路

    千次阅读 多人点赞 2019-07-16 21:43:47
    毛刺的时钟切换电路 原理图: 这个时钟切换电路是一个纯组合逻辑,输出时钟(OUT CLOCK)由选择信号(SELECT)控制,当SELECT为1时输出CLK1,反之,输出CLK0. 看似很简单,实现了时钟的切换,实则存在着很大...
  • F28335的时钟源有两种,外部时钟源信号,内部时钟源信号。 其中,内部时钟源信号接法时更常用的接法。如图:XCLKIN引脚置地,X1、X2引脚之间直接接入晶振。 如下图,内部信号时钟源与外部信号时钟源通过异或门选择...
  • 推挽电路个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从...
  • 08-22 CDR数据时钟恢复电路

    千次阅读 2020-08-22 19:22:36
    CDR是光模块的一个重要组成部分,也叫时钟恢复电路。它的作用主要是从接收到的信号中提取出数据序列,并且恢复出与数据序列相对应的时钟时序信号,从而还原接收到的具体信息。4 级脉幅调制 (PAM4) 由于具有在相同带宽...
  • 数据通信方式有哪几

    千次阅读 2021-06-27 01:24:05
    描述数字通信(digital ...数据通信是通信技术和计算机技术相结合而产生的一新的通信方式。要在两地间传输信息必须传输信道,根据传输媒体的不同,有线数据通信与无线数据通信之分。但它们都是通过传输信...
  • C264最小系统的大部分我们都在前面介绍了,只剩下了时钟电路和外部器件。下面我们来介绍一下 系统时钟 简介 对于一个单片机来说,时钟单元一定是最重要的一部分,因为它相当于单片机的心脏。TC264单片机的时钟...
  • glitch-free的时钟切换电路。 可以看到这是一个星期之前的题目了,现在才抽空做,把这篇颠倒个顺序吧,也是最后一天了,以后的题目都是讨论性质的,不会以第多少天的形式来写了。 这个题目是设计一个时钟切换...
  • 当智能手机接上电源之后,电源电路两端就会产生3.7V的电压,这个电压直接为处理器内部的振荡器供电,随即时钟电路开始工作,为处理器芯片内部的微处理器电路中的开机模块提供所需的时钟频率。 这个过程中,最重要的...
  • GPIO输入输出模式原理(八工作方式电路图详解)

    千次阅读 多人点赞 2021-07-05 14:20:50
    对于负向递减和正向递增两种不同变化方向的输入信号,施密特触发器不同的阈值电压。 下拉输入模式 默认情况下输入引脚为0,低电平。 下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空...
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    万次阅读 多人点赞 2019-08-08 15:42:35
    时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有了心跳,人才能做其他的事情,而单片机时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为什么 STM32 ...
  • 电赛中常用的模块电路设计

    千次阅读 多人点赞 2021-06-12 22:31:12
    包括:C、C++、C#、JAVA、Python、JavaScript、PHP、数据库、微信小程序、人工智能、嵌入式、Linux、Unix、QT、物联网、算法导论、大数据等资料 原文链接 点击查看 波形发生器 方波发生电路电路用于产生...
  • stm32可以使用三不同的时钟源来驱动系统时钟 (SYSCLK): HSI 振荡器时钟, HSE 振荡器时钟,主 PLL (PLL) 时钟; HSI 时钟信号由内部16 ... HSE时钟信号有两时钟源: HSE 外部晶振/陶瓷谐振器, HSE 外部用户时钟
  • 单片机之外部时钟与内部时钟

    万次阅读 多人点赞 2018-12-15 20:33:53
     首先,单片机能正常工作的必要条件之一就是时钟电路,时钟是单片机的脉搏,是单片机的驱动源,单片机工作是在统一的时钟脉冲控制下一拍一拍进行工作的。这个脉冲由单片机控制器中的时序电路发出的。所以单片机就很...
  • STM32 最小系统中的4种电路

    千次阅读 2022-02-19 15:33:44
    STM32 最小系统中的4种电路
  • 三天研读《中兴电路设计规范》精华总结

    万次阅读 多人点赞 2020-05-16 18:25:52
    正确的画法为: 错误的画法为: 两种连接方式看起来完全一样,但是实际上第二种方式在打包时不能形成正确的连接。 16、禁止使用SIZE 属性放置多个器件 采用定义 SIZE 属性放置多个相同连接关系器件的方法,例如去耦...
  • 用非门74HC04与无源晶振产生时钟信号的两种电路 第一种如下图所示,此电路晶振频率不能太高,5Mhz以上不适用。不作研究 第二种如下图,比较好用。 以下是网上摘录的关于该电路的...
  • 时钟信号

    千次阅读 2020-07-06 11:42:35
    (3)所有寄存器接收同一个时钟电路 (4)若环路,则环路至少包含一个寄存器 2、对于不算很严格的同步电路定义: (1)所有时钟的时钟来自同一个时钟源:比如下面的(分频电路) CLKA、CLKC、CLKD、CLKE都是由...
  • 由边沿触发方式的D触发器组成的4位移位寄存器,第一个触发器的输入端D1接收输入信号,其余的每个触发器输入端D均与前一个触发器的输出端Q相连。其可以实现将原有的代码依次右移1位,利用这个性质还可以实现代码的...
  • 器件带冷端补偿检测和修正、数字控制器、SPI兼容接口,以及相关的控制逻辑,在温度控制器、过程控制或监测系统中设计用于配合外部微控制器(μC)工作。提供多个版本的器件,每个版本针对特定的热电偶类型(K、J、N、...
  • 一.时钟电路与时序 二。复位电路与复位操作; 三。其他硬件操作;
  • 无论是逻辑电路的主时钟还是实时时钟,均是手机正常工作的必要条件,由于手机各厂家设计思路和电路结构不同,主时钟和实时时钟电路若不正常时,反映出的故障现象也不尽相同。  一、时钟频率的产生  1、 逻辑...
  • 从秋招的经验来看,Verilog设计类的题目,如:奇偶分频,状态机,序列检测,波形产生,跨时钟域处理,门控时钟,同步FIFO,格雷码与二进制码转换,异步复位同步释放,时钟切换,异步FIFO等,其中最为复杂的恐怕属于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,356
精华内容 19,342
关键字:

常用的时钟电路有两种方式