单bit跨时钟域

慢到快:打两拍

快到慢:

module pulse_sys(
   input clk1,             ////////////快时钟域
   input clk2,             ////////////慢时钟域
   input ret_n,
   input data_in,
    
   output data_out
);
 
reg fast_clk_data;
reg slow_clk_data0;
reg slow_clk_data1;
reg slow_clk_data2;
 
//脉冲展宽模块:由一个寄存器和一个二选一多路选择器构成,将脉冲信号转换成电平信号
always@(posedge clk1 or negedge rst_n)begin
  if(!rst_n)
    fast_clk_data<=0;
  else begin
    case(data_in)
      1'b0:fast_clk_data<=fast_clk_data;
      1'b1:fast_clk_data<=~fast_clk_data;
    endcase
  end
end
 
//同步器模块
always@(posedge clk2 or negedge rst_n)begin
  if(!rst_n)begin
     slow_clk_data0<=0;
     slow_clk_data1<=0;
     slow_clk_data2<=0;
  end
  else begin
     slow_clk_data0<=fast_clk_data;
     slow_clk_data1<=slow_clk_data0;
     slow_clk_data2<=slow_clk_data1;
  end
end
 
//输出模块
assign data_out=slow_clk_data1^slow_clk_data2;
endmodule
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值