异步复位,同步释放

平时接触到的复位有三种,分别是同步复位、异步复位还有异步复位同步释放

·1、同步复位

同步复位里,复位做为使能信号,就不存在因为不满足建立时间而产生的亚稳态,但是如果复位信号有效

周期小于一个时钟周期的话,会出现复位信号采样不到的问题。

always @(posedge clk )
begin
    if(!rst_n)
        a <= 1'd0;
    else
        a <= b;
end

 

2、异步复位

 异步复位比同步复位节省资源,但是如果异步复位结束之后,紧跟着一个时钟上升沿,这时候会产生亚稳态

现象

 

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        a <= 1'd0;
    else
        a <= b;
end

3、异步复位同步释放

异步复位同步释放:这里我参考CB的书上的定义

reg            sys_rst_n            ;

always @(posedge clk)
begin
    sys_rst_n <= rst_n;
end
            

always @(posedge clk or negedge sys_rst_n)
begin
    if(!rst_n)
        a <= 1'd0;
    else
        a <= b;
end

第一个always块实现了外部时钟的同步化,第二always块将同步的sys_rst_n做为D触发器的复位端。

posted @ 2017-09-17 17:18  peng_blog  阅读(1386)  评论(0编辑  收藏  举报