异步复位和同步复位的区别
来源:互联网 发布:breed改mac 编辑:程序博客网 时间:2024/05/01 11:08
对于同步复位,复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。
对于异步复位,复位可以在任何时候发生,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿,因为在复位释放的时候复位信号的电平可能是中间值,即出现亚稳态现象。这个时候既是异步复位信号持续时间再长都没有办法,因为不定态已经传递下去。
1 同步复位的优缺点
同步复位的优点大概有3条:
a、有利于仿真器的仿真。
b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。
同步复位的缺点:
a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源
2 异步复位优缺点
异步复位的优点:
a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b、设计相对简单。
c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
异步复位的缺点:
a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
b、复位信号容易受到毛刺的影响。
3 推荐的复位方式
所谓推荐的复位方式就是上文中所说的:“异步复位,同步释放”。这就结合了双方面的优点,很好的克服了异步复位的缺点。
3.1 单时钟域复位方式
module Reset_Synchronizer
( output reg rst_n,
input clk, asyncrst_n
);
reg rff1;
always @ (posedge clk , negedge asyncrst_n) begin
if (!asyncrst_n) {rst_n,rff1} <= 2'b0;
else {rst_n,rff1} <= {rff1,1'b1};
end
endmodule
3.2 多时钟域复位方式
例子:三级复位系统,系统中的时钟分别为1M,2M,11M:
第一级Reset_Sychronizer程序:
module Reset_Synchronizer
(output reg rst_n,
input clk, asyncrst_n
);
reg rff1;
always @ (posedge clk , negedge asyncrst_n)
begin
if (!asyncrst_n) {rst_n,rff1} <= 2'b0;
else {rst_n,rff1} <= {rff1,1'b1};
end
endmodule
第2,3级的Reset_Sychronizer程序:
module Reset_Synchronizer2
(output reg rst_n,
input clk, asyncrst_n,d
);
reg rff1;
always @ (posedge clk , negedge asyncrst_n) begin
if (!asyncrst_n) {rst_n,rff1} <= 2'b0;
else {rst_n,rff1} <= {rff1,d};
end
endmodule
顶层模块的源程序:
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)
);
endmodule
- 异步复位和同步复位的区别
- 同步复位和异步复位的比较
- 同步复位和异步复位的比较
- 同步复位和异步复位的比较
- 同步复位和异步复位的对比
- 同步复位和异步复位的比较
- 同步复位和异步复位
- 异步复位和同步复位
- 同步异步复位的区别
- 异步复位、同步复位和异步复位同步释放的比较
- 同步复位和异步复位的比较(转载)
- [转]同步复位和异步复位
- FPGA中异步复位和同步复位
- verilog同步复位和异步复位
- 同步与异步置复位的区别
- Verilog同步复位,异步复位
- 同步复位与异步复位
- 【Verilog】 同步复位和异步复位比较 async vs. sync
- 初识合成孔径雷达SAR
- 跨平台中对于 条件量(condition) 的包装
- JAVA学习日记
- MyEclipse中使用SVN插件方法
- C++: Socket工作流程图(WinSock)
- 异步复位和同步复位的区别
- JDBC的Statement和PreparedStatement区别
- http协议
- MODBUS异常码
- linux中nohup写操作与程序中读操作冲突引起cpu占用100%
- 简洁极致的Vim配置
- web项目中各种路径的获取
- 《Bible》各版本
- 字符串的全排列与拓展