AdcSync.v 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. module AdcSync
  2. #(
  3. parameter AdcDataWidth = 14
  4. )
  5. (
  6. input Clk_i,
  7. input Rst_i,
  8. input [AdcDataWidth*2-1:0] Data_i,
  9. output [AdcDataWidth*2-1:0] Data_o
  10. );
  11. //================================================================================
  12. // REG/WIRE
  13. //================================================================================
  14. reg [AdcDataWidth*2-1:0] adcDataSyncPipe [2:0];
  15. integer i;
  16. //================================================================================
  17. // ASSIGNMENTS
  18. //================================================================================
  19. assign Data_o = adcDataSyncPipe[2];
  20. //================================================================================
  21. // CODING
  22. //================================================================================
  23. always @(posedge Clk_i) begin
  24. if (!Rst_i) begin
  25. adcDataSyncPipe[0] <= Data_i;
  26. for(i=1; i<3; i=i+1) begin
  27. adcDataSyncPipe [i]<=adcDataSyncPipe[i-1];
  28. end
  29. end else begin
  30. adcDataSyncPipe [i] <= 0;
  31. end
  32. end
  33. endmodule