SpiClkMux.v 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. module SpiClkMux (
  2. input Rst_i,
  3. input clkCh,
  4. input clkOutMMCM,
  5. input clkMan,
  6. output SpiClk_o
  7. );
  8. //================================================================================
  9. // REG/WIRE
  10. //================================================================================
  11. reg spiClkReg;
  12. wire spiClk;
  13. //================================================================================
  14. // ASSIGNMENTS
  15. //===============================================================================
  16. assign spiClk = spiClkReg;
  17. //================================================================================
  18. // CODING
  19. //================================================================================
  20. always @(*) begin
  21. if (Rst_i) begin
  22. spiClkReg = 0;
  23. end
  24. else begin
  25. if (clkCh) begin
  26. spiClkReg = clkOutMMCM;
  27. end
  28. else begin
  29. spiClkReg = clkMan;
  30. end
  31. end
  32. end
  33. BUFG BUFG_inst (
  34. .O(SpiClk_o), // 1-bit output: Clock output
  35. .I(spiClk) // 1-bit input: Clock input
  36. );
  37. endmodule