脉冲同步器

跨时钟域处理中,单比特脉冲,由快时钟域到慢时钟域可用脉冲同步器;

// 脉冲同步器
// 输入高电平,寄存器内容反转,输入低电平寄存器保持不变;
module pulse_syn1(
input 	clk1,
input	clk2,
input	rst_n,
input	p_in,
output	p_out);

reg	p;
reg	p0, p1, p2;

always@(posedge clk1 or negedge rst_n)
	if(!rst_n)
		p<=0;
	else if(p_in)
		p<=!p;
	else p<=p;
	
always@(posedge clk2 or negedge rst_n)
if(!rst_n)
	{p2, p1, p0}<=3'b000;
else 
	{p2, p1, p0}<={p1, p0, p};
	
assign p_out= p1^p2;

endmodule

//-------------------------------------
// 脉冲同步器另一种写法

module pulse_sync(
input  sclk_1,
input  sclk_2,
input  rst_n,
input  p_in  ,
output p_out ,
output p_out1    );

reg p_in_reg;
reg delay0,delay1,delay2;
wire mux_2;
assign mux_2=(p_in==1'b1)?~p_in_reg:p_in_reg;

always@(posedge sclk_1, negedge rst_n) 
if (!rst_n)
p_in_reg<=1'b0;
else
p_in_reg<=mux_2;

assign p_out1=p_in_reg;

always@(posedge sclk_2, negedge rst_n)
if (!rst_n)
      {delay2,delay1,delay0}<=3'b000;
else
      {delay2,delay1,delay0}<={delay1,delay0,p_in_reg};
assign p_out=delay2^delay1;
endmodule
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
握手信号常用于不同时钟域之间的数据传输,确保数据的可靠性。握手协议通过在源和目的时钟域之间进行多级同步来实现数据的安全传输。它的工作原理是,源时钟域内的状态机生成一个更新信号,然后通过脉冲同步器将该信号传输到目的时钟域。在目的时钟域内,脉冲同步器完成同步和输出脉冲的生成工作,然后将反馈信号传输回源时钟域。通过这种方式,源和目的时钟域能够在不同的时钟频率下进行数据的可靠传输。 脉冲同步器是一种电路,它能够在不同时钟域之间进行脉冲信号的同步。它通常使用全握手机制来生成输出脉冲脉冲同步器接收源时钟域内的脉冲信号,并在目的时钟域内产生一个同步的脉冲信号。脉冲同步器的设计需要考虑同步延迟和逻辑错误的问题,因此在源时钟域和目的时钟域之间需要适当的时间间隔。 为了解决握手协议中同步延迟大的问题,引入脉冲同步器电路可以提高数据传输的效率。脉冲同步器允许状态机在源时钟域内生成更新脉冲,并在之后继续执行其他操作。脉冲同步器可以接收源时钟域的脉冲信号,并完成同步和输出脉冲的生成工作。但需要注意的是,脉冲同步器的全握手操作需要消耗多个时钟周期,因此在状态机发出两个脉冲之间需要有足够的时间间隔,以避免逻辑错误的发生。 握手信号和脉冲同步器在时钟域间数据传输中起到了关键的作用,确保了数据的可靠性和同步性。通过合理的设计和配置,握手信号和脉冲同步器可以有效地解决不同时钟域之间数据传输的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值