MmcmClkMux.v 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. module MmcmClkMux(
  2. input Rst_i,
  3. input [2:0]clkNum,
  4. input Clk0_i,
  5. input Clk1_i,
  6. input Clk2_i,
  7. input Clk3_i,
  8. input Clk4_i,
  9. input Clk5_i,
  10. input Clk6_i,
  11. output ClkOutMMCM_o
  12. );
  13. //================================================================================
  14. // REG/WIRE
  15. //================================================================================
  16. reg clkOutMMCMReg;
  17. wire clkOutMMCM;
  18. //================================================================================
  19. // ASSIGNMENTS
  20. //===============================================================================
  21. assign clkOutMMCM = clkOutMMCMReg;
  22. //================================================================================
  23. // CODING
  24. //================================================================================
  25. always @(*) begin
  26. if (Rst_i) begin
  27. clkOutMMCMReg = 0;
  28. end
  29. else begin
  30. case (clkNum)
  31. 0: clkOutMMCMReg = Clk0_i;
  32. 1: clkOutMMCMReg = Clk1_i;
  33. 2: clkOutMMCMReg = Clk2_i;
  34. 3: clkOutMMCMReg = Clk3_i;
  35. 4: clkOutMMCMReg = Clk4_i;
  36. 5: clkOutMMCMReg = Clk5_i;
  37. 6: clkOutMMCMReg = Clk6_i;
  38. default: clkOutMMCMReg = 0;
  39. endcase
  40. end
  41. end
  42. BUFG BUFG_inst (
  43. .O(ClkOutMMCM_o), // 1-bit output: Clock output
  44. .I(clkOutMMCM) // 1-bit input: Clock input
  45. );
  46. endmodule