跨时钟域CDC

https://blog.csdn.net/qq_40456702/article/details/123312706?spm=1001.2014.3001.5506
慢到快时钟域:
单bit数据 延迟打拍法

// 慢时钟域到快时钟域 单bit数据 延迟打拍法
// 一般设计中使用两级触发器进行缓存即可满足设计时序需求
// 两级触发器延迟打拍并检测信号上升沿的 Verilog 描述如下

module slow2fast_delay_clap(
	input	clk1,	// 异步慢时钟
	input	sig1,	// 异步信号
	input	rstn,	// 复位
	input	clk2,	// 目的快时钟
	output	sig2);	// 快时钟域同步后的信号
  
	reg[2:0] sig2_r;  // 寄存三拍,前两级用于同步,后一级用于边沿检测
	always@(posedge clk2 or negedge rstn)begin
	    if(~rstn) sig2_r <= 3'b0;
	    else sig2_r <= {sig2_r[1:0], sig1};  // 缓存
	end
	 
	assign sig2 = sig2_r[1] && !sig2_r[2];  // 上升沿检测
  
endmodule 

//---------testbench--------

`timescale 1ns/10ps
module slow2fast_delay_clap_tb;
  
	  reg clk1,clk2,rstn,sig1;
	  wire sig2;
	  
	  slow2fast_delay_clap m(
	  	clk1,
	    sig1,
	    rstn,
	    clk2,
	    sig2);
  	
  	initial begin
    	clk1=0; clk2=0; sig1=0; rstn=0;
    #20	rstn=1; 
    #30 sig1=1;
    #20 sig1=0;  // 一个慢时钟周期后sig1=0
    #400 $stop;
	end
	  
	always #10 clk1 = ~clk1;  // 慢时钟
	always #5  clk2 = ~clk2;  // 快时钟
  
endmodule




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值