blob: 4a416d81213ac7cc46718ad151c48bccffeb620b [file] [log] [blame]
`timescale 1ns / 1ps
module el_sync
(
//---------CTRL-----------------------
input rst,
input clk,
//---------IN-------------------------
input [1:0] in_async,
input in_ack,
//---------OUT------------------------
output out_sync
//------------------------------------
);
reg [1:0] sync;
reg [1:0] ack_dly;
always@(posedge clk)
begin
if(rst)
begin
ack_dly <= 0;
end
ack_dly[0] <= in_ack;
ack_dly[1] <= ack_dly[0];
end
always@(posedge clk)
begin
if(rst)
begin
sync <= 0;
end
else if(ack_dly[1] ^^ ack_dly[0])
begin
sync <= {sync[0],in_async[1]};
end
end
assign out_sync = ^sync;
endmodule