跨时钟域设计是FPGA设计中经常遇到的问题,特别是对Trigger信号进行同步设计,往往需要把慢时钟域的Trigger信号同步到快时钟域下,下面是我工作中用到的慢时钟域到快时钟域的Verilog HDL设计。

 

  // Trigger Cross Domain Design, Slow to fast clock domain
  module Trig_ CrossDomain _S2F (
      input clkB,
      input rst_n,
      input TrigIn_clkA,



      output TrigOut_clkB
      );



    reg [2:0] Trig_dealy;



   always @(posedge clkB or negedge rst_n)
      if(!rst_n)
         Trig_dealy <= 0;
      else
      begin 
        Trig_dealy[0] <= TrigIn_clkA;
        Trig_dealy[1] <= Trig_dealy[0];
        Trig_dealy[2] <= Trig_dealy[1];
      end



   assign TrigOut_clkB = Trig_dealy[1] & (!Trig_dealy[2]);



  endmodule

04-14 19:44