RxFifoRstSync.v 618 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. module RxFifoRstSync #(
  2. parameter WIDTH = 1,
  3. parameter STAGES = 3
  4. )
  5. (
  6. input ClkFast_i,
  7. input ClkSlow_i,
  8. input [WIDTH-1:0] RxFifoRst_i,
  9. output [WIDTH-1:0] RxFifoRst_o
  10. );
  11. //lauch registers
  12. reg [WIDTH-1:0] rxFifoRstReg;
  13. // capture registers
  14. (* ASYNC_REG = "TRUE" *) reg [STAGES*WIDTH-1:0] rxFifoRstReg_c;
  15. assign RxFifoWrPtr_o = rxFifoWrPtrReg_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  16. always @(posedge ClkFast_i) begin
  17. rxFifoRstReg <= RxFifoRst_i;
  18. end
  19. always @(posedge ClkSlow_i) begin
  20. rxFifoRstReg_c <= {rxFifoRstReg_c[(STAGES-1)*WIDTH-1:0], rxFifoRstReg};
  21. end
  22. endmodule