fpga系列 HDL:跨时钟域同步 双触发器同步器

  • 跨时钟域的设计需要特别小心,以避免亚稳态问题。双触发器同步器(2-Flip-Flop Synchronizer) 是一种简单且广泛应用的 时钟域交叉(CDC) 同步方法,用于将一个时钟域中的信号同步到另一个时钟域中。它通过使用两个触发器级联,确保信号在跨越不同时钟域时,(以指数平方级别)降低因为时钟的不匹配导致不稳定或亚稳态(metastability)发生的概率。

https://github.com/Strivekaudani/CDC-FIFO/blob/master/source/two_flip_flop_sync.v

双触发器同步器(Two-Flip-Flop Synchronizer)示例代码

module nocdc (
    input wire clk_dst,      // 目标时钟域时钟
    input wire async_signal, // 来自源时钟域的异步信号
    input wire rst_n,        // 异步复位信号,低电平有效
    output reg sync_signal,  // 同步后的信号
    output reg [7:0] counter // 计数器输出
);

    reg sync_ff1, sync_ff2;

    // 使用双触发器进行同步
    always @(posedge clk_dst or negedge rst_n) begin
        if (!rst_n) begin
            sync_ff1 <= 1'b0;
            sync_ff2 <= 1'b0;
        end else begin
            sync_ff1 <= async_signal; // 第一阶段采样异步信号
            sync_ff2 <= sync_ff1;     // 第二阶段消除亚稳态
        end
    end

    assign sync_signal = sync_ff2; // 输出同步后的信号

    // 使用同步后的信号更新计数器
    always @(posedge clk_dst or negedge rst_n) begin
        if (!rst_n) begin
            counter <= 8'b0;
        end e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值