免毛刺时钟切换电路设计方法
时钟电路设计概述-数字电路设计

时钟电路设计概述-数字电路设计本⽂⼀般性地讲解了数字电路设计中的时钟电路设计,包括有源晶振,⽆源晶振,时钟缓冲器,并探讨了有关EMC,端接电阻和信号完整性的设计要点,设计经验来⾃于⽣花通信(Signalsky)的数字电路设计⼯程师。
时钟信号产⽣电路先看图1中的两个时钟电路,不⽤我说,相信读者⼀眼就可以看得出来,左边的那个是有源晶振电路,右边的是⽆源晶振电路。
图1 两个时钟电路振荡器就是可以产⽣⼀定频率的交变电流信号的电路晶体振荡器,简称晶振,是利⽤了晶体的压电效应制造的,当在晶⽚的两⾯上加交变电压时,晶⽚会反复的机械变形⽽产⽣振动,⽽这种机械振动⼜会反过来产⽣交变电压。
当外加交变电压的频率为某⼀特定值时,振幅明显加⼤,⽐其它频率下的振幅⼤得附加外部时钟电路,⼀般是⼀个放⼤反馈电路,只有⼀⽚晶振是不能实现震荡的多,产⽣共振,这种现象称为压电谐。
晶振相对于钟振⽽⾔其缺陷是信号质量较差,通常需要精确匹配外围电路(⽤于信号匹配的电容、电感、电阻等),更换不同频率的晶体时周边配置电路需要做相应的调整。
如果把完整的带晶体的振荡电路集成在⼀块,可能再加点其它控制功能集成到⼀起,封装好,引⼏个脚出来,这就是有源晶振,时钟振荡器,或简称钟振。
英⽂叫Oscillator,⽽晶体则是Crystal。
可以说Oscillator是Crystal经过深加⼯的产品,⽽Crystal是原材料。
好多钟振⼀般还要做⼀些温度补偿电路在⾥⾯。
让振荡频率能更加准确。
相对于⽆源晶体,有源晶振的缺陷是其信号电平是固定的,需要选择好合适输出电平,灵活性较差,⽽且价格⾼。
典型⽆源晶振电路图2是典型的⽆源晶振电路。
图2 典型的⽆源晶振电路与晶振并联的电阻的作⽤与晶振并联的电阻R4是反馈电阻,是为了保证反相器输⼊端的⼯作点电压在VDD/2,这样在振荡信号反馈在输⼊端时,能保证反相器⼯作在适当的⼯作区。
虽然去掉该电阻时,振荡电路仍⼯作了。
但是如果从⽰波器看振荡波形就会不⼀致了,⽽且可能会造成振荡电路因⼯作点不合适⽽停振。
时钟电路工作原理

时钟电路工作原理
时钟电路是一种用于产生和控制电子设备中时间的电路。
它通常由一个或多个振荡器和一组计数器、分频器以及其他辅助电路组成。
其工作原理可以分为以下几个步骤。
1. 振荡器产生稳定的时钟信号。
振荡器是时钟电路的核心部件,它负责产生稳定的振荡输出。
常见的振荡器类型包括晶体振荡器、RC振荡器和LC振荡器。
这些振荡器根据其设计原理,
通过在电路中形成周期性的振荡信号来产生频率稳定的时钟信号。
2. 计数器将时钟信号转换为数字表示。
计数器是时钟电路中的重要组成部分,它接收来自振荡器的时钟信号,并将其转换为相应的数字表示。
计数器通常是二进制计数器,根据时钟信号的上升沿或下降沿触发,逐次递增或递减数字。
计数器的位数决定了其能够表示的最大数字。
3. 分频器将时钟信号进行分频。
分频器用于将高频的时钟信号分频为低频的时钟信号。
这是因为某些电子设备可能需要不同的时钟频率来执行不同的任务。
分频器可以通过设置不同的分频比将时钟频率降低到所需的范围。
4. 辅助电路进行时钟信号处理。
时钟电路中还可以包含一些辅助电路,用于对时钟信号进行进一步处理。
例如,锁相环(PLL)可以用于对时钟信号进行相位或频率调整,以满足特
定的要求。
另外,时钟电路中通常还会包含使能电路、复位电路和延时电路等,以控制和调整时钟信号的行为。
通过以上的步骤,时钟电路可以产生稳定的时钟信号并将其用于电子设备中。
时钟信号的稳定性和准确性对于许多电子设备的正常工作至关重要,因此时钟电路被广泛应用于各种设备中,如计算机、手机、电视和微控制器等。
简单的时钟相位调整

简单的时钟相位调整时钟相位调整是一种常见的技术手段,用于确保时钟信号的准确性和稳定性。
在电子设备中,时钟信号被广泛应用于各种功能模块的同步和协调,因此时钟相位调整对于设备的正常运行至关重要。
时钟相位调整的目的是使时钟信号的到达时间和设备内部的时序要求相匹配。
在数字系统中,时钟信号通常通过时钟线传输,其频率和相位对系统的性能和稳定性有着重要影响。
由于时钟信号的传输受到噪声、延迟等因素的影响,可能会导致时钟信号的相位偏移,进而影响系统的正常工作。
为了解决时钟相位偏移的问题,人们设计了各种时钟相位调整技术。
其中,最常见的方法是通过延迟锁定环(DLL)或者相位锁定环(PLL)来实现时钟相位的调整。
DLL和PLL是一类基于反馈控制的电路,能够根据输入信号的相位偏差来自动调整输出信号的相位,从而实现时钟相位的精确控制。
延迟锁定环是一种基于延迟线的时钟相位调整电路。
它通过不断调整延迟线的长度,从而改变时钟信号的到达时间,以实现相位调整的目的。
延迟线通常由串联的缓冲器和电容组成,通过改变电容的充放电时间来实现延迟的调整。
当输入信号的相位偏移发生变化时,延迟锁定环会自动调整延迟线的长度,使输出信号的相位与输入信号的相位保持一致。
相位锁定环是一种基于反馈控制的时钟相位调整电路。
它通过比较输入信号和本地时钟信号的相位差异,并根据差异来调整本地时钟信号的相位。
相位锁定环通常由相位比较器、低通滤波器、数字控制电路和VCO(Voltage Controlled Oscillator)等组成。
当输入信号的相位发生变化时,相位锁定环会通过调整VCO的控制电压来改变本地时钟信号的频率和相位,使其与输入信号的相位保持一致。
除了DLL和PLL之外,还有其他时钟相位调整技术,如时钟缓冲器、时钟多路复用器等。
这些技术在不同的应用场景下具有各自的优势和局限性。
例如,时钟缓冲器可以提供较大的驱动能力和较低的时钟抖动,适用于高速时钟信号的传输;而时钟多路复用器可以将多个时钟信号进行合并和调整,以满足系统对时钟资源的需求。
ibufg 用法

ibufg 用法IBUFG是FPGA(现场可编程逻辑门阵列)设备中的一种时钟管理组件。
它用于将输入时钟缓冲,并将其提供给设计中的其他逻辑电路。
下面是关于IBUFG用法的详细描述。
在FPGA设计中,时钟信号通常是设计的核心。
时钟频率的稳定性和正确性对于电路功能的正确运行至关重要。
IBUFG(Input Buffer)是一种FPGA时钟输入缓冲器,用于将外部时钟信号引入FPGA芯片内部电路。
使用IBUFG的第一步是将外部时钟信号引入FPGA芯片。
通常,这需要一个外部晶体振荡器或其他时钟源。
将时钟信号引入FPGA后,可以使用IBUFG来处理它。
IBUFG的主要功能是将输入时钟缓冲,并提供一个稳定和干净的时钟信号。
输入的时钟信号经过IBUFG后,会通过减少时钟毛刺和抖动来提供更可靠的时钟信号。
这对于FPGA设计中的时序要求非常重要。
使用IBUFG的方法很简单。
首先,我们需要在设计中实例化一个IBUFG模块。
然后,将外部时钟信号与IBUFG实例连接。
最后,将IBUFG的输出连接到设计中的其他时钟域。
在连接时,确保时钟信号没有受到任何干扰。
这可以通过避免与其他高速信号线靠得太近,以及正确的地线和电源线布局来实现。
这样可以最大程度地减少时钟信号的串扰和噪声。
总结起来,IBUFG是FPGA设计中一个非常有用的时钟管理组件。
它通过提供稳定、干净的时钟信号,确保电路在正确的时序下运行。
使用合适的布局和连接方法,可以最大限度地优化时钟信号的质量,提高整个设计的稳定性和性能。
Glitch Filter工作原理分析

Glitch Filter工作原理分析毛刺的消除主要有三种方法:一种是可改变信号的产生方式,如采用格雷码等,但不是本文关心的内容;另外一种方法是添加D触发器,在时钟边沿进行信号的读取,从而减少信号的毛刺,这种方法的缺点是需要频率较高的额外时钟。
第三种方法是通过在信号线路上添加延迟单元,然后进行‘与’和‘或’的操作来消除毛刺,这种方法的缺点是可能对有用信号产生一定的影响。
采用第三种方法需要解决两个问题:其一,消除一定脉冲宽度的毛刺;其二,尽量减小对有用信号的影响。
所采用的Glitch Filter 电路原理图如下所示:图1电路结构图图2 等效电路对毛刺的滤除作用:一、如果IN出现正的毛刺,如果gwidth<d1,那么在d1时间内,A1保持为低电平,送入与非门后输出B保持不变,因此IN的正毛刺被屏蔽。
如果gwidth>d1:(1)假设gwidth<d1+d2,那么正毛刺将传送到C,宽度为gwidth-d1;反相后送到D,如果该毛刺宽度(gwidth-d1)小于d4,那么输出OUT保持为零,即能滤除的最大正毛刺宽度为d1+d4。
(2)假设gwidth>d1+d2,那么在C点的正毛刺将为gwidth+d2-d1≈gwidth,在D点展宽为gwidth+d3,最后送到OUT的正毛刺宽度约为gwidth,无法滤除该毛刺。
二、负毛刺:假定gwidth<d1,在延迟时间(d1)内,NAND2的延迟输入端A1保持为高电平,毛刺直接到达B点(正毛刺),由于d2=d1,B1保持为0,因此毛刺将被滤除。
假定gwidth>d1,毛刺首先到B点,展宽为gwidth+d1;经过延迟d2后到C点,毛刺宽度还原为约gwidth;由于gwidth>d3,正毛刺送到D,宽度为gwidth-d3;经过d4延迟后,送入E的负毛刺会展宽为gwidth。
因此输入端的负毛刺不能被滤除。
可见,可滤除的最大正毛刺宽度为d1+d4;负毛刺宽度为d1。
第16讲 毛刺问题和时钟问题

门控时钟
整个设计项目都采用外部的全局时钟是不可能 或不实际的。PLD具有乘积项逻辑阵列时钟 (即时钟是由逻辑产生的),允许任意函数单 独地钟控各个触发器。然而,当你用阵列时钟 时,应仔细地分析时钟函数,以避免毛刺。
通常用阵列时钟构成门控时钟。如果符合下述条件, 门控时钟可以象全局时钟一样可靠地工作: 1.驱动时钟的逻辑必须只包含一个“与”门或一个 “或”门。如果采用任何附加逻在某些工作状态下, 会出现竞争产生的毛刺。 2.逻辑门的一个输入作为实际的时钟,而该逻辑门的 所有其它输入必须当成地址或控制线,它们遵守相对 于时钟的建立和保持时间的约束。
不可靠的门控时钟
计数器给出的多个输入起到时钟的作用,这违反了可 靠门控时钟所需的条件之一。在产生RCO信号的触发 器中,没有一个能考虑为实际的时钟线,这是因为所 有触发器在几乎相同的时刻发生翻转。而我们并不能 保证在PLD/FPGA内部QA,QB,QC到D触发器的布线 长短一致,因此,如 图5 的时间波形所示,在器从3 计到4时,RCO线上会出现毛刺(假设QC到D触发器 的路径较短,即QC的输出先翻转)。
两个不同源时钟,一个为3MHz,一个为 5MHz,不同的触发器使用不同的时钟
同步化任意非同源时钟
引入一个20MHz时钟,将3M和5M时钟同步化
需要特别关注的信号
时钟信号 清除和置位信号
–
–
正如使用时钟那样,最好的清除和置位是从器件的引脚直接 地驱动。有一个主复位Reset引脚是常用的最好方法,主复位 引脚给设计项目中每个触发器馈送清除或置位信号。几乎所 有PLD器件都有专门的全局清零脚和全局置位。如果必须从 器件内产生清除或置位信号,则要按照“门控时钟”的设计 原则去建立这些信号,确保输入无毛刺。 若采用门控清除或者门控置位,则单个引脚或者触发器作为 清除或置位的源,而有其它信号作为地址或控制线。在清除 或复位的有效期间,地址或控制线必须保持稳定。决不能用 多级逻辑或包含竞争状态单级逻辑产生清除或置位信号。
数字电路时钟分频设计

数字电路时钟分频设计数字电路时钟分频是现代电子设备中常见的一项技术。
通过分频电路,可以将输入时钟信号的频率减小到所需的频率,以满足特定的应用需求。
本文将介绍数字电路时钟分频的原理和设计方法。
一、分频器的原理分频器是一种常见的数字电路,它可以将输入的时钟信号分频为较小频率的信号。
常见的分频器包括二分频器、四分频器、八分频器等。
这些分频器的原理都基于时钟信号的周期性。
例如,一个二分频器可以将每个上升沿触发的时钟信号变为每两个上升沿触发一次的信号。
通过改变分频器的触发方式和逻辑门的连接方式,可以实现不同的分频比。
二、分频器的设计步骤1. 确定分频比:根据应用需求确定所需的分频比。
分频比是指输入时钟信号的频率与输出时钟信号的频率之比。
例如,如果希望将输入的1MHz时钟信号分频为100kHz,那么分频比为10。
2. 选择适当的分频器类型:根据分频比选择适当的分频器类型。
常见的分频器类型包括二分频器、四分频器、八分频器等。
选择分频器类型时,要考虑到输入时钟信号的频率范围和所需的输出频率。
3. 设计逻辑电路:根据所选的分频器类型,设计相应的逻辑电路。
逻辑电路可以使用逻辑门(如与门、或门、非门等)、触发器(如D触发器、JK触发器等)和计数器等元件来实现。
4. 连接和布线:根据逻辑电路的设计,将各个元件进行连接并进行布线。
在布线过程中,要注意避免干扰和电磁辐射等问题,确保电路的稳定性和可靠性。
5. 测试和优化:完成分频器的设计后,进行测试和优化。
通过测试,检查输出时钟信号的频率是否符合所需的分频比。
如果频率不符合要求,可以对设计进行优化或调整。
三、实例分析以一个八分频器的设计为例,假设输入时钟信号频率为20MHz,要求输出时钟信号频率为2.5MHz。
1. 确定分频比:将输入时钟信号频率除以所需的输出时钟信号频率,得到分频比为8。
2. 选择适当的分频器类型:选择八分频器作为分频器类型。
3. 设计逻辑电路:在八分频器中,可以使用三个D触发器和一个与门来实现。
数字电路时钟同步设计

数字电路时钟同步设计时钟同步是数字电路设计中非常重要的一项技术,它可以确保多个数字电路元件的时钟信号保持同步,以保证系统的稳定性和可靠性。
本文将介绍数字电路时钟同步的设计原理和方法。
一、引言在数字电路系统中,各个元件的时钟信号是系统运行的基础。
如果不同元件的时钟信号不同步,就会导致数据传输错误、时序问题以及系统崩溃等严重后果。
因此,时钟同步设计是数字电路设计中必不可少的一环。
二、时钟同步的设计原理时钟同步的设计原理是通过引入时钟信号的生成和分配机制,使得各个元件的时钟信号保持一致。
具体来说,可以通过以下步骤实现时钟同步的设计:1. 时钟信号的生成:可以采用晶体振荡器或者PLL锁相环等方式生成时钟信号,保证时钟信号的稳定和准确。
2. 时钟信号的分配:将生成的时钟信号分配给各个元件,使得它们使用的时钟信号保持一致。
3. 时钟信号的延迟补偿:由于数字电路中元件的传播延迟存在差异,需要对时钟信号进行合理的延迟补偿,以保证信号的同步性。
三、常用的时钟同步方法在数字电路设计中,有多种常用的时钟同步方法,下面分别进行介绍:1. 同步时钟模块:通过引入同步时钟模块,可以实现各个元件间的时钟信号同步。
该模块通过接收外部的时钟信号,并将其分发给各个元件,保证它们的时钟信号同步。
2. 延迟锁定环:延迟锁定环是一种常用的时钟同步电路,它可以保证时钟信号在各个元件之间的延迟保持一致。
它通过测量不同路径上的传播延迟,并根据测量结果进行延迟补偿,以保证时钟信号的同步性。
3. 握手协议:握手协议是一种基于通信的时钟同步方法,它通过元件之间的通信来交换时钟信息,以实现时钟信号的同步。
常见的握手协议有基于硬件的握手协议和基于软件的握手协议等。
4. 时钟域划分:时钟域划分是一种将数字电路系统划分成多个时钟域,并在时钟域之间添加时钟同步器,以保证时钟信号同步的方法。
通过合理设计时钟域划分和时钟同步器的位置,可以使得各个时钟域的时钟信号保持同步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
免毛刺时钟切换电路设计方法
基于网上资料整理,并进一步作了分析。
这篇文章讲述了时钟切换的时候毛刺(glitch)带来的危害,以及如何设计防止毛刺发生的时钟切换电路。
但是没有讲到电路设计的构思从何而来,大家看了之后知道直接用这个电路,但是假如不看这篇文章,自己从头设计还是无从下手。
在这里,我换另外一个角度,通过电路设计技巧来阐述防毛刺时钟切换电路的设计思路。
希望看过之后,不用参考文章就能够自己设计出这个电路。
对于一个时钟切换电路,输入两个异步时钟clk0、clk1,以及一个选择信号sel。
(1) 假设不考虑glitch,直接使用Mux就可以完成切频。
电路如下:
由于clk0/clk1/sel之间是异步关系,时钟切换会发生在任意时刻,有一定的概率会发生glitch. glitch的危害文章里已经详述,这里不再重复。
Glitch可能导致无法满足setup或hold时序要求而导致寄存器输出为不定态。
(2) 由于sel和clk0和clk1都是不同步的,我们可以从sel同步的方向入手,假如sel需要和clk0和clk1进行同步,那么sel必须分成两路,一个和clk0同步,一个和clk1同步,同步之后的sel信号再和clk0/clk1 gating起来,就可以让问题简单化。
为了将sel分成两路,并且clk0/clk1需要分别gating, 那么可以将mux逻辑用and/or设计出来,如下:
当然此Mux电路还可以用两个or加上一个and来实现,都可以。
注意G0和G1两点就是分别对clk0和clk1进行gating. 将来会在G0/G1点插入同步DFF.
(3) 将上面电路拆开成两部分,一部分电路通过sel产生sel+和sel-两路,另一部分电路是gating mux电路, 如下:
只需要将sel-接上G0, sel+接上G1就是一个mux电路。
将电路分开,是为了后续技巧性的功能替换。
(4) 将part0电路换成同样功能的带反馈的组合电路(为何要这样做,属于电路设计直觉和技巧。
原因有2。
其一,可以防抖。
以part0_a为例,Sel从1到0的跳变,若仅为非常短的glitch,则可能sel+还来不及从1到0跳变,故sel-也保持为0,从而防止了输出因glitch 而抖动。
其二,利用反馈,让时钟切换按照安全的顺序,即先关闭当前时钟,再打开目标时钟。
而不管关闭还是使能,都必须保证当前时钟或目标时钟的使能信号的跳变都是分别在时
钟为低电平期间进行的,防止产生时钟glitch。
详细分析参见下文。
)。
最常见带反馈的电路是RS触发器,因此可以将part0换成如下电路。
(5) 将part0_a或者part0_b替换part0电路,功能不变。
如下:
不过,此时插入同步DFF的地方就多了一个选择,如果直接在G0, G1插入同步DFF, clk0和clk1的gating时间先后顺序不确定,还是有可能发生毛刺。
而在s0和s1处插入同步DFF, 正好利用反馈,让时钟切换按照安全的顺序进行:
(1)先gating住之前选择的时钟
如下图,即通过在S1和S0插入两级DFF,保证:切换时钟时,如从clk1切换到clk0时,sel从1到0跳变,S1=0,经两级DFF同步(后一级其实可以选用clk gating latch), G1才为0,并gating住之前选择的时钟clk1(即关停,hold住为0)。
(2)然后再放开将要选择的时钟
紧接上例,G1=0之后,S0才为1, 即保证clk已被关停。
因clk1和clk0为异步时钟,经两级同步后,G0才置为1,即所谓的“放开将要选择的时钟”。
在(1)和(2)之间,输出时钟clk_out一直都是无效状态(对于2and + 1or的mux来说,无效状态就是0)。
(2)结束后,即G0被置起后,才真正完成时钟的切换。
(6) 按照上面的分析,得到电路如下:
注意几点:
(1) 对s0插入的DFF需要用clk0作为时钟, 对于s1插入的DFF需要用clk1作为时钟。
(2) 后一级的DFF必须使用clock下降沿,因为是用AND门进行gating(如果用上升沿,则更容易出现毛刺)。
如果换成2个OR+1个AND的MUX, 则必须用上升沿。
(3) 必须插入两级DFF防止metal stable, 前一级可以用上升沿,也可以用下降沿,用上升沿是为了节省时间。
(4) 所有的DFF 复位值都是0,即让clk_out处于无效状态。
(5) 必须满足先gating后放开的顺序,如果不满足,可以在G0/G1处各插入一个反相器。
(用part0_b搭配part1的时候需要插入反相器,如下图)
(6)搭配不同的part0电路和part1电路,经过稍许修改,都可以完成防毛刺切频电路的设计。
甚至其他的一些变化。
本质上都是:
1)利用RS触发器,让时钟切换按照安全的顺序进行,即先关闭当前时钟,再打开目标时钟。
2)Clk0和clk1是异步时钟,各自在RS触发器输出通道上的信号需同步后再使用。
区别以上的示例,可增加同步DFF至2~3 级。
3)最后一个DFF和与门,本质上是一个clk gating cell。
如下图,针对2)和3)作了标注。