跨时钟域设计是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