目的:防止异步复位信号 release 释放时出现亚稳态现象。
含义:
异步复位:复位与 clk 无关:always@(posedge clk or negedge rst_n)
同步释放:复位信号在第二级触发器的 clk 边沿来后释放,第二级输出是稳定且被同步。 多打一拍,消除亚稳态。一般触发器都会在一个或两个时钟周期内返回稳态。
1 | always @(posedge clk or negedge rstn) begin |
2 | if(!rstn) begin |
3 | q1 <= 1'b0; |
4 | q2 <= 1'b0; |
5 | end |
6 | else begin |
7 | q1 <= 1'b1; |
8 | q2 <= q1; |
9 | end |
10 | end |
11 | assign rst_syn = q2; |
12 | |
13 | always @(posedge clk or negedge q2) begin |
14 | if(!q2) begin |
15 | q3 <= 0; |
16 | end |
17 | else begin |
18 | q3 <= data_in |
19 | end |
20 | end |