同步复位和异步复位比较
同步复位和异步复位的区别

针对数字系统的设计,我们经常会遇到复位电路的设计,对初学者来说不知道同步复位与异步复位的区别与联系,今天我对这个问题简要的阐述下,希望对初学者有一定的参考意义,若有不正确的地方愿大家明示。
同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保证系统复位。
异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个好的复位最好使用异步复位同步释放。
同步复位与异步复位的优劣:异步复位消耗的PFGA逻辑资源相对来说要少些,因此触发器自身带有清零端口不需要额外的门电路,这是其自身的优势,通常在要求不高的情况下直接使用异步复位就OK。
下面我用verilog来演示下同步复位与异步复位。
同步复位的verilog程序如下:module D_FF(//Input portsSYSCLK,RST_B,A,//Output portsB);//========================================= //Input and output declaration//========================================= input SYSCLK;input RST_B;input A;output B;//========================================= //Wire and reg declaration//=========================================wire SYSCLK;wire RST_B;wire A;reg B;//========================================= //Logic//========================================= always@(posedge SYSCLK)beginif(!RST_B)B<=1'b0;elseB<=A;endendmodule综合后的RTL级电路图如下:异步复位的verilog程序如下:module D_FF(//Input portsSYSCLK,RST_B,A,//Output portsB);//========================================= //Input and output declaration//========================================= input SYSCLK;input RST_B;input A;output B;//========================================= //Wire and reg declaration//=========================================wire SYSCLK;wire RST_B;wire A;reg B;//========================================= //Logic//========================================= always@(posedge SYSCLK or negedge RST_B)beginif(!RST_B)B<=1'b0;elseB<=A;endendmodule综合后的RTL级电路图如下:通过比较显然异步复位消耗的逻辑资源要少些,因此通常的设计中都采用异步复位的方式,需要进一步的学习的话,可以再研究下其它的资料。
异步复位还是同步复位?

altera的LE是没有latch的结构的
又查了sp3和sp2e,别的不查了,手册上说支持这种配置。有关altera的表述wangdian说的对,altera的ff不能配置成latch,它使用查找表来实现latch,
latch的最大缺点就是没有时钟端,和当前我们尽可能采用时序电路的设计思路不符。
latch是电平触发,相当于有一个使能端,且在激活之后(在使能电平的时候)相当于导线了,随输出而变化,在非使能状态下是保持原来的信号,这就可以看出和flip-flop的差别,其实很多时候latch是不能代替ff的
一般的设计规则是:在绝大多数设计中避免产生LATCH.
它会让您设计的时序完蛋,并且它的隐蔽性很强,非老手不能查出.
latch最大的危害在于不能过滤毛刺。这对于下一级电路是极其危险的。
所以,只要能用D触发器的地方,就不用latch。
有些地方没有时钟,也只能用latch了。
很简单一个例子来说明:
关于latch的讨论
latch和flip-flop都是时序逻辑,区别为:latch同其所有的输入信号相关,当输入信号变化时latch就变化,没有时钟端;flip-flop受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。当然因为二者都是时序逻辑,所以输出不但同当前的输入相关还同上一时间的输出相关。
比如现在用一个clk接到latch的使能端(假设是高电平使能),这样需要的setup时间,就是数据在时钟的下降沿之前需要的时间,但是如果是一个DFF,那么setup时间就是在时钟的上升沿需要的时间.这就说明如果数据晚于控制信号的情况下,只能用latch,这种情况就是,前面所提到的latch timing borrow.基本上相当于借了一个高电平时间.也就是说,latch借的时间也是有限的.
同步复位和异步复位的优缺点

同步复位和异步复位的优缺点Advantages of synchronous resets1. Synchronous reset logic will synthesize to smaller flip-flops, paticularly if the reset if gated with the logic generating the d-input.2. Synchronous resets generally insure that the circuit is 100% synchronous.3. In some designs, the reset must be generated by a set of internal conditions. A synchronous reset is recommended for these types of designs because it will filter the logic equation glitches between clocks.Disadvantages of synchronous resets1. Not all ASIC libraries have flip-flops with built-in synchronous resets. However since synchronous reset is just another data input, you don't really neea a special flop. The reset logic can easily be synthesized outside the flop itself.2. Synchronous resets may need a pulse stretcher to guarantee a reset pulse width wide enough to ensure reset is present during an active edge of the clock.3. By its very nature, a synchronous reset will require a clock in order to reset the circuit. This may not be a disadvantage to some design styles but to others, it may be an annoyance.Advantages of asynchronous resets1. The beggest advantage to using asynchronous resets is that, as long as the vendor library has asynchronously reset-able flip-flops, the data path is guaranteed to be clean.2. Another advantage favoring asynchronous resets is that the circuit can be reset with or without a clock present. Disadvantages of asynchronous resets1. The Reuse Methodology Manual(RMM) syggests that asynchronous resets are not be used because they cannot be used with cycle based simulators.2. For DFT, if the asynchronous reset is not directly driven from an I/O pin, then the reset net from the reset driver must be disabled for DFT scanning and testing. This is required for the synchronizer circuit.3. The beggest problem with asynchronous resets is that they are asynchronous, both at the assertion and at the de-assertion of the reset. The assertion is a non issue, the de-assertion is the issue. If the asynchronous reset is released at or near the active clock edge of a flip-flop, the output of the flip-flop could go metastable and thus the reset state of the ASIC could be lost.4. Another problem that an asynchronous reset can have, depending on its source, is spurious resets due to noise or glitches on the board or system reset.。
如何区分同步复位和异步复位?

如何区分同步复位和异步复位?
问:如何区分同步复位和异步复位?可以理解为同步复位是作用于状态,然后通过状态来驱动电路复位的吗(这样理解的话,复位键作为激励拉高到响应拉高,是不是最少要2拍啊)?
以上问题可以理解为:1. 何时采用同步复位,何时采用异步复位;2. 复位电路是用来干嘛的;3. 激励和响应的分析(单拍潜伏期)是否适用与复位逻辑。
1. 电路中,何时采用同步或异步,取决与设计者,取决于当前设计电路的需要。
一般而言:高速逻辑应该采用同步复位,低速逻辑可以采用异步复位;涉及人机交互的复位,适合异步复位;涉及机器之间的握手交互,应该采用同步;涉及到全局作用域的复位信号,作用于高速逻辑时,应该采用同步复位,作用于低速逻辑时,应该采用异步复位。
IC设计中同步复位与

IC设计中同步复位与异步复位的区别异步复位是不受时钟影响的,在一个芯片系统初始化(或者说上电)的时候需要这么一个全局的信号来对整个芯片进行整体的复位,到一个初始的确定状态。
而同步复位需要在时钟沿来临的时候才会对整个系统进行复位。
请注意,如果芯片是有多个时钟的系统,那么如何保证不同时钟域的电路能够“同时”复位将会是一个重要的问题,此外,如果你的时钟是一个低频时钟,那么在这个系统(包括其他芯片)上电时如何保证能和其他芯片同时复位?硬件全局异步复位是必要的,请注意这里加上了“全局”,这是因为异步复位既然要对整个芯片“同时”复位,那么布线延时绝不能不考虑,使用FPGA设计时芯片的异步复位必须要走全局网络。
再提醒一点,芯片中最好不要出现多个异步复位。
一个关键原因是对于FPGA而言,多个异步复位信号难以实现前面要求的“全局网络”。
异步复位最大的优点是, 数据通路就可以不依赖于时钟而确保清洁可控。
然而, 异步复位也有其固有的缺陷。
异步复位设计的DFT (可测性设计) 与STA (静态时序分析) 的复杂性要高于同步复位设计; 但异步复位中最严重的问题是, 如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效) 的话, 可能会导致触发器输出的亚稳态。
同步复位和异步复位的比较(转载)无论同步还是异步复位,在对触发器时序进行分析的时候,都要考虑复位端与时钟的相位关系。
对于同步复位,复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。
对于异步复位,复位可以在任何时候发生,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿,因为时钟沿变化和异步复位都可以引起Q端数据变化,如果异步复位信号跟时钟在一定时间间隔内发生变化,Q值将无法确定,即亚稳态现象。
这个时候既是异步复位信号持续时间再长都没有办法,因为不定态已经传递下去。
verilog 复位赋值

Verilog 复位赋值详解
Verilog是一种硬件描述语言,用于描述数字电路和系统。
在Verilog中,复位是一个重要的概念,它用于将电路或模块的状态初始化为特定的值。
复位通常在系统启动时或出现异常情况时使用。
在Verilog中,有两种常见的复位方式:异步复位和同步复位。
1.异步复位
异步复位是一种立即生效的复位方式,它不需要时钟信号的配合。
当异步复位信号为高电平时,电路或模块的状态将被立即清零或置为特定的初始值。
异步复位通常用于一些不需要时钟的简单电路或模块。
例如,以下代码实现了一个简单的异步复位逻辑:
在这个例子中,reset是异步复位信号,当它为高电平时,counter_reg将被清零。
2.同步复位
同步复位是一种需要时钟信号配合的复位方式。
当同步复位信号为高电平时,电路或模块的状态将被清零或置为特定的初始值。
只有在时钟信号的上升沿到来时,同步复位才会生效。
同步复位通常用于一些需要时钟的复杂电路或模块。
例如,以下代码实现了一个简单的同步复位逻辑:
在这个例子中,reset是同步复位信号,当它为高电平时,count将被清零。
只有在时钟信号的上升沿到来时,count才会被清零。
需要注意的是,在实现复位逻辑时,应该考虑一些特殊情况,例如异步复位的延迟和同步复位的时序要求。
此外,还应该注意复位的稳定性和可靠性,以确保系统能够正常工作。
异步复位与同步释放

异步复位与同步释放很多时候,我们都希望系统一上电以及在仿真开始的时候所有寄存器都有一个已知的状态。
复位有两种方式,即同步复位和异步复位。
同步复位:“同步”的意思是和工作时钟同步。
也就是说当时钟的上升沿(下降沿)来到时检测到按键的复位操作才有效,否则无效。
如下图所示为同步低复位波形。
异步复位:“异步”的意思是和工作时钟不同步。
也就是说寄存器的复位不关心时钟的上升沿(下降沿)是否到来,只要有检测到按键被按下,就立刻执行复位操作。
如下图所示为同步低复位波形。
同步复位还是异步复位我们以D触发器为例来说明Inter(Altera)的器件是用同步复位好还是异步复位好。
先来看一下同步复位D触发器的RTL代码,如下所示://---------------------------------01module test(02 input wire sclk ,03 input wire rst_syncn ,04 input wire d ,0506 outputreg q07);0809always@(posedge sclk)10 if(rst_sync_n ==1'b0)11 q <=1'b0;12 else13 q <= d;1415endmodule//--------------------------------在Quartus工具中编写完RTL后点击“Start Analysis & Synthesis”图标进行分析和综合。
然后双击“Netlist Viewers”下的“RTL Viewer”查看RTL视图。
如下图所示,可以看到一个 D触发器的结构,也可以称为寄存器,但是还附加了一个选择器,用于同步复位的控制。
点击“Start Compilation”图标全编译进行布局布线,完成后我们可以看到“Flow Summary”资源使用量,如下图所示,可以看到使用了LE中的一个组合逻辑资源和一个时序逻辑资源。
ASIC设计中的同步复位与异步复位

ASIC 设计中的同步复位与异步复位Synchronous Reset and Asynchronous Reset in ASIC Design盛 娜3 刘志军SHENG Na LIU Zhi 2jun摘 要 复位问题是ASIC 设计中的一个关键问题,其处理得当与否将直接影响整个电路的性能,在此本文从多个角度对同步复位和异步复位进行了讨论和分析,并且比较了各自的优缺点,重点针对异步复位过程中存在的亚稳态问题采用两级复位同步和复位分配缓冲树的方法进行了相应的解决。
关键词 同步复位 异步复位 亚稳态 ASIC Abstract Reset is one of the key problems in ASIC design ,it will directly in fluence the performance of the whole design if it is done properly or not.This paper discussed and analyzed the synchronous reset and the asynchronous reset from several different perspectives.A C omparis on between them in the advantages and the disadvantages was conducted.The metastability problem ,exiting in the process of asynchronous reset ,was res olved by adding the tw o 2level reset syn 2chronizer logic and using reset distribution bu ffer tree.K eyw ords Synchronous reset Asynchronous reset Metastability ASIC3山东大学信息科学与工程学院 济南 2501001 引言复位问题是ASIC 设计中一个基本而又重要的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同步复位sync 异步复位async特点复位信号只有在时钟上升沿到来时才能有效。
无论时钟沿是否到来,只要复位信号有效,就进行复位。
Verilog描述always@(posedge CLK)always@(posedge CLK , negedgeRst_n)优点1)利于仿真器仿真。
2)因为只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。
3)可以使所设计的系统成为100%的同步时序电路,有利于时序分析。
1)设计相对简单。
2)因为大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
3)异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
缺点1)复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。
同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
2)由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。
1)复位信号容易受到毛刺的影响。
2)在复位信号释放(release)的时候容易出现问题。
具体就是说:若复位释放刚好在时钟有效沿附近时,很容易使寄存器输出出现亚稳态,从而导致亚稳态。
总结推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。
2:推荐的复位方式所谓推荐的复位方式就是上文中所说的:“异步复位,同步释放”。
这就结合了双方面的优点,很好的克服了异步复位的缺点(因为异步复位的问题主要出现在复位信号释放的时候,具体原因可见上文)。
其实做起来也并不难,我推荐一种我经常使用的方式吧:那就是在异步复位键后加上一个所谓的“reset synchronizer”,这样就可以使异步复位信号同步化,然后,再用经过处理的复位信号去作用系统,就可以保证比较稳定了。
reset sychronizer的Verilog代码如下:module Reset_Synchronizer(output reg rst_n, input clk, asyncrst_n);reg rff1;always @ (posedge clk , negedge asyncrst_n) beginif (!asyncrst_n) {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,1'b1};endendmodule大家可以看到,这就是一个dff,异步复位信号直接接在它的异步复位端口上(低电平有效),然后数据输入端rff1一直为高电平…1‟。
倘若异步复位信号有效的话,触发器就会复位,输出为低,从而复位后继系统。
但是,又由于这属于时钟沿触发,当复位信号释放时,触发器的输出要延迟一个时钟周期才能恢复成…1‟,因此使得复位信号的释放与时钟沿同步化。
此外,还有一种方法更为直接,就是直接在异步复位信号后加一个D触发器,然后用D触发器的输出作为后级系统的复位信号,也能达到相同的效果。
这里就不多说了。
3:多时钟系统中复位的处理方法这是一个很实际的问题,因为在较大型的系统中,一个时钟驱动信号显然不能满足要求,一定会根据系统的要求用多个同源时钟(当然也可以是非同源了)去驱动系统的不同部分。
那么在这样的多时钟系统中,复位键怎么设置?它的稳定与否直接关系到了整个系统的稳定性,因此要格外注意(在我看来,复位信号在同步时序系统中的地位和时钟信号一样重要)。
下面就说一下具体的处理方法,当然所遵循的原则就仍应该是上文的“异步复位,同步释放”:1.non-coordinated reset removal:顾名思义,就是同一个系统中的多个同源时钟域的复位信号,由彼此独立的“reset synchronizer”驱动。
当异步复位信号有效时,各时钟域同时复位,但是复位释放的时间由各自的驱动时钟决定,也是就说:时钟快的先释放,时钟慢的后释放,但是各复位信号之间没有先后关系。
2.sequence coordinated reset removal:这是相对于上述方式来说的,也就是说各时钟域的复位信号彼此相关,各个部分系统虽然也同时复位,但是却分级释放。
而分级的顺序可由各个“reset synchronizer”的级联方式决定。
可以先复位前级,再复位后级,也可以反过来。
反正方式很灵活,需要根据实际需要而定。
由于图片上传问题,我只能用程序表示了,例子:三级复位系统,系统中的时钟分别为1M,2M,11M:第一级Reset_Sychronizer程序:module Reset_Synchronizer(output reg rst_n,input clk, asyncrst_n);reg rff1;always @ (posedge clk , negedge asyncrst_n)beginif (!asyncrst_n) {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,1'b1};endendmodule第2,3级的Reset_Sychronizer程序:module Reset_Synchronizer2(output reg rst_n,input clk, asyncrst_n,d);reg rff1;always @ (posedge clk , negedge asyncrst_n) beginif (!asyncrst_n) {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,d};endendmodule顶层模块的源程序:include "Reset_Synchronizer.v"include "Reset_Synchronizer2.v"module AsynRstTree_Trans( input Clk1M,Clk2M,Clk11M,SysRst_n,output SysRst1M_n,SysRst2M_n,SysRst11M_n);Reset_Synchronizer Rst1M(.clk(Clk1M),.asyncrst_n(SysRst_n),.rst_n(SysRst1M_n));Reset_Synchronizer2Rst2M(.clk(Clk2M),.d(SysRst1M_n),.asyncrst_n(SysRst_n),.rst_n(SysRst2M_n));Reset_Synchronizer2Rst11M(.clk(Clk11M),.d(SysRst2M_n),.asyncrst_n(SysRst_n),.rst_n(SysRst11M_n));endmodule1、同步电路和异步电路的区别是什么?异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才发生变化。
也就是说一个时刻允许一个输入发生变化,以避免输入信号之间造成的竞争冒险。
电路的稳定需要有可靠的建立时间和持时间,待下面介绍。
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。
这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。
比如D触发器,当上升延到来时,寄存器把D端的电平传到Q输出端。
在同步电路设计中一般采用D触发器,异步电路设计中一般采用Latch。
2、什么是同步逻辑和异步逻辑?同步逻辑是时钟之间有固定的因果关系。
异步逻辑是各时钟之间没有固定的因果关系。
电路设计可分类为同步电路和异步电路设计。
同步电路利用时钟脉冲使其子系统同步运作,而异步电路不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号使之同步。
由于异步电路具有下列优点--无时钟歪斜问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性--因此近年来对异步电路研究增加快速,论文发表数以倍增,而Intel Pentium 4处理器设计,也开始采用异步电路设计。
异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,其逻辑输出与任何时钟信号都没有关系,译码输出产生的毛刺通常是可以监控的。
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。
这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。
3、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?线与逻辑是两个输出信号相连可以实现与的功能。
在硬件上,要用oc门来实现(漏极或者集电极开路),由于不用oc门可能使灌电流过大,而烧坏逻辑门,同时在输出端口应加一个上拉电阻。
(线或则是下拉电阻)4、什么是Setup 和Holdup时间?5、setup和holdup时间,区别.6、解释setup time和hold time的定义和在时钟信号延迟时的变化。
7、解释setup和hold time violation,画图说明,并说明解决办法。
时间(Setup Time)和保持时间(Hold time)。
建立时间是指在时钟边沿前,数据信号需要保持不变的时间。
保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。
如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。
如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。
8、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除。
9、什么是竞争与冒险现象?怎样判断?如何消除?在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。
产生毛刺叫冒险。
如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的(冗余)消去项,但是不能避免功能冒险,二是在芯片外部加电容。
三是增加选通电路。
在组合逻辑中,由于多少输入信号变化先后不同、信号传输的路径不同,或是各种器件延迟时间不同(这种现象称为竞争)都有可能造成输出波形产生不应有的尖脉冲(俗称毛刺),这种现象成为冒险。
10、你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、PECL (Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage Differential Signaling)、GTL (Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、RS422、RS485(12V,5V,3.3V);TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。