单bit跨时钟域同步电路设计

做个假设:需要将100M时钟下的脉冲同步到1M的时钟域下,如果按照打拍的方式,需要延展100拍后再进行跨时钟域才能保证信号能在1M时钟域正确采到,这种设计方法未免太愚蠢而又浪费资源。

本篇介绍两种可以同时处理快到慢、慢到快所有时钟频率的脉冲同步设计电路情况。

  • 脉冲同步
  • 电平同步

脉冲同步

sync_pluse.jpg

注:
* 蓝色为 A 时钟域的寄存器;
* 红色为 B 时钟域的寄存器;

实现说明

  • 该模块关键寄存器是signal_a,在A时钟域下,捕获到i_plus_a的脉冲,转化为电平反转传输到B时钟域,等待B时钟域捕获到有电平变化,signal_a再清0,等待下一个脉冲输入。

HDL代码

module sync_pulse
(
//A  clock  domain
	input  		clk_A			,
	input  		rst_n_A			,

//B  clock  domain
	input  		clk_B			,
	input  		rst_n_B			,

//input plus(A)
	input  		i_puls_a		,

//output plus(B)
	output reg 	o_puls_b
);

//------------------------------  Reg & Wire  --------------------------

	reg		signal_a		    ;            // A clock domain
	reg		signal_b1_a1	    ;            // A clock domain
	reg		signal_b1_a2	    ;            // A clock domain

	reg		signal_b		    ;            // B clock domain
	reg		signal_b_b1		    ;            // B clock domain
	reg		signal_b_b2		    ;            // B clock domain

//--------------------------------  logic  -----------------------------


	always @(posedge clk_A or negedge rst_n_A)		
	begin
		if(!rst_n_A)
			signal_a <= 1'b0;
		else if(i_puls_a == 1'b1)
			signal_a <= 1'b1;
		else if(signal_b1_a2 == 1'b1)
			signal_a <= 1'b0;
	end
	
	
	always @(posedge clk_B)
	begin
		signal_b    <= signal_a		;
		signal_b_b1 <= signal_b		;
		signal_b_b2 <= signal_b_b1	;
	end
	
	
	always @(posedge clk_A)
	begin
		signal_b1_a1 <= signal_b_b1 ;
		signal_b1_a2 <= signal_b1_a1;
	end
	
	
	always @(posedge clk_B or negedge rst_n_B)
	begin
		if(!rst_n_B)
			o_puls_b <= 1'b0;
		else if(signal_b_b1 && !signal_b_b2)
			o_puls_b <= 1'b1;
		else
			o_puls_b <= 1'b0;
	end

endmodule

电平同步
以上的思想是脉冲跨时钟域,其实也可以通过电平跳转的方法跨时钟域:

sync_pluse.png

  • 在A时钟域检测脉冲上升沿,然后通过改变电平Z状态的方式传送给B时钟域,然后通过检测电平Z状态是否发生变化来判断A时钟域是否有脉冲。
  • 电平同步比脉冲同步更节省资源,电路更加简单,效果也不比脉冲同步差。

有问题联系可以我,一起讨论。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值