当前位置:网站首页>快时钟同步慢时钟域下的异步控制信号slow clk to fast clk

快时钟同步慢时钟域下的异步控制信号slow clk to fast clk

2022-04-23 17:06:00 icgogogo

这种情况下,异步控制信号可能在己慢时钟下只维持了一个有效时钟,而在快时钟下,已经被采样了几次,一次读请求可能被误以为多次读请求。

       快时钟同步慢时钟信号示意图

RTL代码

module synchronizer(
    clk_fst;
    rst_b;
    rd_en;//原始控制信号
    rd_en_s2f;//处理后的信号   
    );
    input clk_fst;
    input rst_b;
    output rd_en_s2f;

    wire rd_en_s2f;
    
    reg  rd_en_s2f1;
    reg  rd_en_s2f2;
    reg  rd_en_s2f3;
always@(posedge clk_fst or negedge rst_b)
    if(!rst_b)begin
         rd_en_s2f1 <= 1'b0;
         rd_en_s2f2 <= 1'b0;
         rd_en_s2f3 <= 1'b0;
    end else begin//同步器
         rd_en_s2f1 <= rd_en;
         rd_en_s2f2 <= rd_en_s2f1;
         rd_en_s2f3 <= rd_en_s2f2;
    end
end
always@(rd_en_s2f3 or rd_en_s2f3)begin
    case({rd_en_s2f3,rd_en_s2f2})
        2'b01:
              rd_en_s2f <= 1'b1;
        default:
              rd_en_s2f <= 1'b0;
    endcase
end
endmodule

版权声明
本文为[icgogogo]所创,转载请带上原文链接,感谢
https://blog.csdn.net/javagogogo2850/article/details/124360724