-
2022-03-28 22:17:34
(46)FPGA同步复位与异步复位(异步复位)
1 文章目录
1)文章目录
2)FPGA入门与提升课程介绍
3)FPGA简介
4)FPGA同步复位与异步复位(异步复位)
5)技术交流
6)参考资料
2 FPGA入门与提升课程介绍
1)FPGA入门与提升文章目的是为了让想学FPGA的小伙伴快速入门以及能力提升;
2)FPGA基础知识;
3)Verilog HDL基本语法;
4)FPGA入门实例;
5)FPGA设计输入,包括代码输入、原语输入;
6)FPGA设计技巧;
7)FPGA时钟设计;
8)FPGA复位设计;
9)FPGA IP核设计;
10)FPGA初始值设置;
11)FPGA约束方法;
12)FPGA能力提升等。
3 FPGA简介
FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA设计不是简单的芯片研究,主要是利用 FPGA 的模式进行其他行业产品的设计。 与 ASIC 不同
更多相关内容 -
基础电子中的同步复位与异步复位-异步复位和同步复位区别-异步复位同步释放
2020-11-15 21:26:03一、同步复位与异步复位特点: 同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。 异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。 二、异步... -
同步复位和异步复位有什么区别?
2020-08-04 13:44:46一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。 -
同步复位与异步复位
2019-07-23 20:24:50在实际的工程中选择复位策略之前必须考虑许多设计方面的问题,如使用同步复位或者异步复位或者异步复位同步释放(Asynchronous Reset Synchronous Release或者Synchronized Asynchronous Reset),以及是否每一个...简介
在实际的工程中选择复位策略之前必须考虑许多设计方面的问题,如使用同步复位或者异步复位或者异步复位同步释放(Asynchronous Reset Synchronous Release或者Synchronized Asynchronous Reset),以及是否每一个触发器都需要进行复位。复位的基本目的是使器件进入到可以稳定工作的确定状态,这避免了器件在上电后进入到随机状态导致跑飞了。在实际设计过程中,设计者必须选择最适合于设计本身的复位方式;
同步复位
同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。同步复位RTL代码:
综合后的RTL图如下:
异步复位
异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。异步复位RTL代码:
综合后的RTL图如下:
对比两者综合后的RTL视图,发现同步复位会多使用一些逻辑单元,这是因为一般的触发器都带有异步复位端;
同步复位与异步复位的优缺点
同步复位的优点:
- 一般能够确保电路是百分之百同步的;
- 确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段;
同步复位的缺点:
- 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素;
- 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源;
异步复位优点:
- 异步复位信号识别方便,而且可以很方便的使用全局复位;
- 由于大多数的厂商目标库内的触发器都有异步复位端口,可以节约逻辑资源;
异步复位缺点:
- 复位信号容易受到毛刺的影响;
- 复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态;
异步复位同步释放
使用异步复位同步释放就可以消除上述缺点。所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。异步复位同步释放的原理图和代码如下:
也就是将复位信号经过两级同步器与输入信号同步,代码如下:
//Synchronized Asynchronous Reset module sync_async_reset ( input clock, input reset_n, input data_a, input data_b, output out_a, output out_b); reg reg1, reg2; reg reg3, reg4; always @ (posedge clock, negedge reset_n) begin if (!reset_n) begin reg3 <= 1'b0; reg4 <= 1'b0; end else begin reg3 <= 1'b1; reg4 <= reg3; end end wire rst_n; assign rst_n = reg4;//同步复位信号 always @ (posedge clock, negedge rst_n) begin if (!rst_n) begin reg1 <= 1'b0; reg2 <= 1'b0; end else begin reg1 <= data_a; reg2 <= data_b; end end assign out_a = reg1;//输出 assign out_b = reg2; endmodule // sync_async_reset
异步复位:显而易见,rst_n异步复位后,rst_n将拉低,即实现异步复位;
同步释放:这个是关键,看如何实现同步释放,即当复位信号rst_n撤除时,由于双缓冲电路的作用,rst_n复位信号不会随着rst_n的撤除而撤除;
假设rst_n撤除时发生在clk上升沿,如果不加此电路则可能发生亚稳态事件。但是加上此电路以后,假设第一级D触发器clk上升沿时rst_n正好撤除,则D1触发器输出高电平“1”,此时第二级触发器也会更新输出,但是输出值为前一级触发器次clk来之前时的Q1输出状态。显然Q1之前为低电平,顾第二级触发器输出保持复位低电平,直到下一个clk来之后,才随着变为高电平,即同步释放;
- 恢复和去除时间(Recovery and Removal Time)
对于一个异步复位寄存器来说,同样异步复位信号同样需要和时钟满足recovery time和removal time 才能有效进行复位操作和复位释放操作,防止输出亚稳态
recovery time:恢复时间
撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来并保持,才能保证时钟能有效恢复到非复位状态,此段时间为recovery time,类似于同步时钟的setup time,也就是说在时钟上升沿到来之前rst_n必须保持为1的时间;
如图所示,rst_n为0表示复位,clk上升沿触发,rst_n从0到1的上升沿与时钟上升沿必须不小于recovery time才能保证寄存器恢复到正常状态;
removal time :去除时间
复位时,在时钟有效沿来临之后复位信号还需要保持为0的时间为去除时间removal time(去除时间),类似同步时钟hold time;
如图所示,rst_n为0表示复位有效,clk为上升沿触发,rst_n保持为0经过clk上升沿后仍需要保持一段时间,才能保证寄存器有效复位,防止亚稳态;
-
同步复位与异步复位-异步复位和同步复位区别-异步复位同步释放.doc
2022-02-11 20:20:57同步复位与异步复位-异步复位和同步复位区别-异步复位同步释放.doc -
RTL设计中的同步复位与异步复位
2022-01-24 10:57:53RTL设计中的同步复位与异步复位 -
FPGA的同步复位与异步复位
2022-04-08 17:02:20fpga中的同步复位和异步复位什么是同步复位和异步复位
- 异步复位
always@(posedge clk_fs or negedge rst_n)begin if(!rst_n) state<=idle; else state<=next_state; end
- 同步复位
always@(posedge clk_fs)begin if(!rst_n) state<=idle; else state<=next_state; end
- 总结:同步复位时,每次复位一定与clk的上升沿对齐,即复位是由clk上升沿触发的。异步复位时,复位可能是由rst_n的下降沿触发的。
复位信号
复位信号是多扇出信号,即复位信号控制着多个信号,如果扇出的信号过多,会导致时序问题。上BUFG可以解决这个问题。
一般用同步复位,因为异步复位会造成亚稳态 -
verilog中的同步复位与异步复位
2020-12-26 15:17:56异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下: always @ (posedge clk,negedge Rst_n) begin if (!Rst_n) … end 各自的优缺点: 1、总的来说,同步复位的优点大概...特点:
同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:
always @ (posedge clk) begin
if (!Rst_n)
…
end
异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:
always @ (posedge clk,negedge Rst_n) begin
if (!Rst_n)
…
end各自的优缺点:
1、总的来说,同步复位的优点大概有3条:
a、有利于仿真器的仿真。
b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。
他的缺点也有不少,主要有以下几条:
a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。
2、对于异步复位来说,他的优点也有三条,都是相对应的:
a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b、设计相对简单。
c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
缺点:
a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
b、复位信号容易受到毛刺的影响。三、总结:
所以说,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。
举例
异步复位的实际电路
always @(posedge clk or negedge rst_n)
if(!rst_n) b <= 1'b0; else b <= a;
如上的逻辑语句将编译成如下:
我们可以看到FPGA的寄存器都有一个异步的清零端(CLR),在异步复位的设计中这个端口一般就是接低电平有效的复位信号rst_n。即使说你的设计中是高电平复位,那么实际综合后会把你的复位信号反向后接这个CLR端。同步复位逻辑电路
一个简单的同步复位的例子
always @ (posedge clk)
if(!rst_n) b <= 1'b0; else b <= a;
和异步复位相比,同步复位没有用上寄存器的CLR端口,综合出来的实际电路只是把复位信号rst_n作为了输入逻辑的使能信号。那么,这样的同步复位势必会额外增加FPGA内部的资源消耗。
两级寄存器异步复位的例子
always @ (posedge clk or negedge rst_n) if(!rst_n) b <= 1'b0; else b <= a; always @ (posedge clk or negedge rst_n) if(!rst_n) c <= 1'b0; else c <= b;
、
如上的代码编译出来的硬件电路应当如下:
正常情况下,clk的上升沿c更新为b,b更新为a。一旦进入复位,b,c都清零;但是我们不能确定复位信号rst_n会在什么时候结束。如果结束于b_reg0和c_reg0的{launch edge –stup,launch edge+hold}时间只外,那么一切都会正常。但如果恰恰相反,会出现什么情况呢? rst_n的上升变化出现在了clk上升的建立保持时间上,此时clk检测到的rst_n的状态就会是一个亚稳态(是0是1不确定)。从代码里我们看到如果此时b_reg0和c_reg0认为rst_n为0,那么依然保持复位清零,而如果认为rst_n为1,那么就跳出复位。因为此时的rst_n的不确定性,就可能出现4种情况,即b_reg0和c_reg0都复位或者都跳出复位,再或者一个复位一个跳出复位。那么后者就会造成了系统工作不同步的问题,在这个简单的两级异步复位实例中这种危害表现的并不明显,但是我们试想一个大的工程项目里众多的寄存器出现如此情况又会是如何一番景象呢?异步复位,同步释放
异步复位、同步释放
always @ (posedge clk) rst_nr <= rst_n; //现将异步复位信号用同步时钟打一拍 always @ (posedge clk or negedge rst_nr) if(!rst_nr) b <= 1'b0; else b <= a; always @ (posedge clk or negedge rst_nr) if(!rst_nr) c <= 1'b0; else c <= b;
参考资料
https://blog.csdn.net/wordwarwordwar/article/details/74091757
-
verilog中同步复位,异步复位,同步释放优缺点以及PLL配置复位设计.docx
2020-04-08 19:15:26verilog中同步复位,异步复位,同步释放优缺点以及PLL配置复位设计 -
verilog-同步复位与异步复位
2021-12-22 17:16:54同步复位sync 异步复位async 特点 复位信号只有时钟上升沿到来时才有效 无论时钟沿是否到来,只要复位信号有效,就进行复位 verilog描述 always@(posedge clk) always@(posedge clk or negedge rst_n) ... -
FPGA同步复位与异步复位_领航者开发板
2021-12-31 12:22:53关于FPGA中的同步复位与异步复位,之前从未考虑过两者之间的区别,使用时也是随意使用。本篇笔记主要记录一下二者之间的区别,内容均摘自百度、博客等。 1.同步复位 同步复位就是指复位信号只有在时钟上升沿到来时... -
VHDL同步复位与异步复位
2020-06-04 22:42:02以D触发器为例来说明同步复位和异步复位的区别。 code library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY Reset IS PORT( clock, clear, d : IN STD_LOGIC; q : OUT STD_LOGIC ); END ENTITY Reset; ARCHIT -
Verilog中同步复位与异步复位的区别
2022-04-05 18:39:46同步复位 只有上升沿(posedge clk)一个敏感项 module top_module ( input clk, input areset, // active high synchronous reset input [7:0] d, output [7:0] q ); always @(posedge clk )begin if(reset) ... -
verilog同步复位PK异步复位
2020-08-18 06:57:21时钟和复位是FPGA中关键,下面是特权写的,复制以备找工作~~~ -
面试经典问题系列--同步复位与异步复位
2021-09-09 13:17:57最近遇到些复位的问题,在这里整理下有关同步复位、异步复位及异步复位同步释放。 复位目的: 复位的基本目的是使器件进入到可以稳定工作的确定状态。 如避免器件在上电后进入到随机状态导致跑飞了。或者运行... -
如何区分同步复位和异步复位?
2021-01-14 21:56:14如何区分同步复位和异步复位? 如何区分同步复位和异步复位?可以理解为同步复位是作用于状态,然后通过状态来驱动电路复位的吗(这样理解的话,复位键作为激励拉高到响应拉高,是不是最少要2拍啊)? 以上问题... -
Verilog同步复位和异步复位
2022-04-26 16:20:10以时钟上升沿触发的同步复位和异步复位为例。 同步复位需要一个reset的输入,可以规定在reset为1时复位。但在同步复位的条件下,并不是reset变成1之后马上就能复位,而是要等到下一个时钟上升沿,此时才能复位。 ... -
同步复位及异步复位设计
2020-11-17 15:32:52到底是采用同步复位还是异步复位,全局复位还是局部复位,是由多方面的因素决定的。但良好的复位设计既可以提高系统的可靠性,又可以节省大量的逻辑资源。在实际应用中,笔者也看到过很多因为复位电路设计问题而导致... -
(47)FPGA同步复位与异步复位(异步复位同步释放)
2022-03-28 22:18:11(47)FPGA同步复位与异步复位(异步复位同步释放) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA同步复位与异步复位(异步复位同步释放) 5)技术交流 6)参考资料 2 FPGA入门与... -
FPGA同步复位与异步复位深度理解
2021-04-07 23:07:071.1 FPGA同步复位与异步复位深度理解 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)FPGA同步复位与异步复位深度理解; 5)结束语。 1.1.2 本节引言 “不积跬步,无以至千里;不积小流,... -
FPGA中同步复位,异步复位介绍
2018-03-02 14:03:02同步复位,异步复位介绍 以及异步复位同步释放 实现方式 -
verilog的同步复位与异步复位
2021-01-15 23:52:502:推荐的复位方式所谓推荐的复位方式就是上文中所说的:“异步复位,同步释放”。这就结合了双方面的优点,很好的克服了异步复位的缺点(因为异步复位的问题主要出现在复位信号释放的时候,具体原因可见上文)。其实... -
[转载]Verilog里的同步复位与异步复位(转)
2020-12-21 14:08:471.同步复位(Synchronous Reset)来看一个简单的同步复位的D触发器,Verilog代码如下:module d_ff (clk,rst_n,datain,dataout);inputclk;inputrst_n;inputdatain;ouputdataout;regdataout;always @(posedge clk)begin... -
ASIC中的同步复位和异步复位
2021-03-15 14:47:42复位操作分为同步复位和异步复位。 同步复位 同步复位指在时钟上升沿时复位信号才起作用,复位时需要时钟。 always @(posedge clk) begin if(!rst_n) dout <= 0; else dout <= din; end 如上,当...