module AdcSync #( parameter AdcDataWidth = 14 ) ( input Clk_i, input Rst_i, input [AdcDataWidth*2-1:0] Data_i, output [AdcDataWidth*2-1:0] Data_o ); //================================================================================ // REG/WIRE //================================================================================ reg [AdcDataWidth*2-1:0] adcDataSyncPipe [2:0]; integer i; //================================================================================ // ASSIGNMENTS //================================================================================ assign Data_o = adcDataSyncPipe[2]; //================================================================================ // CODING //================================================================================ always @(posedge Clk_i) begin if (!Rst_i) begin adcDataSyncPipe[0] <= Data_i; for(i=1; i<3; i=i+1) begin adcDataSyncPipe [i]<=adcDataSyncPipe[i-1]; end end else begin adcDataSyncPipe [i] <= 0; end end endmodule