MmcmWrapper.v 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. module MmcmWrapper
  2. #(
  3. parameter SpiNum = 7
  4. )
  5. (
  6. input Clk_i,
  7. input Rst_i,
  8. output [SpiNum-1:0] SpiCLk_o
  9. );
  10. //================================================================================
  11. // REG/WIRE
  12. //================================================================================
  13. wire clkfb_bufgout;
  14. wire clkfb_bufgin;
  15. wire clk0_bufgin;
  16. wire clk1_bufgin;
  17. wire clk2_bufgin;
  18. wire clk3_bufgin;
  19. wire clk4_bufgin;
  20. wire clk5_bufgin;
  21. wire clk6_bufgin;
  22. //================================================================================
  23. // ASSIGNMENTS
  24. //================================================================================
  25. //================================================================================
  26. // LOCALPARAMS
  27. //================================================================================
  28. //================================================================================
  29. // CODING
  30. //================================================================================
  31. MMCME2_ADV
  32. #(
  33. .BANDWIDTH ("OPTIMIZED"),
  34. .DIVCLK_DIVIDE (1),
  35. .CLKFBOUT_MULT_F (10),
  36. .CLKFBOUT_PHASE (0.0),
  37. .CLKFBOUT_USE_FINE_PS("FALSE"),
  38. // .CLKIN1_PERIOD (10.000),
  39. .CLKIN1_PERIOD (8.130081300813),
  40. .CLKIN2_PERIOD (10.000),
  41. .CLKOUT0_DIVIDE_F (15.25),
  42. .CLKOUT0_DUTY_CYCLE (0.5),
  43. .CLKOUT0_PHASE (0.0),
  44. .CLKOUT0_USE_FINE_PS ("FALSE"),
  45. .CLKOUT1_DIVIDE (12.3),
  46. .CLKOUT1_DUTY_CYCLE (0.5),
  47. .CLKOUT1_PHASE (0.0),
  48. .CLKOUT1_USE_FINE_PS ("FALSE"),
  49. .CLKOUT2_DIVIDE (12.3),
  50. .CLKOUT2_DUTY_CYCLE (0.5),
  51. .CLKOUT2_PHASE (0.0),
  52. .CLKOUT2_USE_FINE_PS ("FALSE"),
  53. .CLKOUT3_DIVIDE (12.3),
  54. .CLKOUT3_DUTY_CYCLE (0.5),
  55. .CLKOUT3_PHASE (0.0),
  56. .CLKOUT3_USE_FINE_PS ("FALSE"),
  57. .CLKOUT4_DIVIDE (12.3),
  58. .CLKOUT4_DUTY_CYCLE (0.5),
  59. .CLKOUT4_PHASE (0.0),
  60. .CLKOUT4_USE_FINE_PS ("FALSE"),
  61. .CLKOUT4_CASCADE ("FALSE"),
  62. .CLKOUT5_DIVIDE (12.3),
  63. .CLKOUT5_DUTY_CYCLE (0.5),
  64. .CLKOUT5_PHASE (0.0),
  65. .CLKOUT5_USE_FINE_PS ("FALSE"),
  66. .CLKOUT6_DIVIDE (12.3),
  67. .CLKOUT6_DUTY_CYCLE (0.5),
  68. .CLKOUT6_PHASE (0.0),
  69. .CLKOUT6_USE_FINE_PS ("FALSE"),
  70. .COMPENSATION ("ZHOLD"),
  71. .STARTUP_WAIT ("FALSE")
  72. )
  73. mmcme2_test_inst
  74. (
  75. .CLKFBOUT (clkfb_bufgin),
  76. .CLKFBOUTB (),
  77. .CLKFBSTOPPED (),
  78. .CLKINSTOPPED (),
  79. .CLKOUT0 (clk0_bufgin),
  80. .CLKOUT0B (),
  81. .CLKOUT1 (clk1_bufgin),
  82. .CLKOUT1B (),
  83. .CLKOUT2 (clk2_bufgin),
  84. .CLKOUT2B (),
  85. .CLKOUT3 (clk3_bufgin),
  86. .CLKOUT3B (),
  87. .CLKOUT4 (clk4_bufgin),
  88. .CLKOUT5 (clk5_bufgin),
  89. .CLKOUT6 (clk6_bufgin),
  90. .DO (dout),
  91. .DRDY (drdy),
  92. .DADDR (daddr),
  93. .DCLK (dclk),
  94. .DEN (den),
  95. .DI (di),
  96. .DWE (dwe),
  97. .LOCKED (LOCKED),
  98. .CLKFBIN (clkfb_bufgout),
  99. .CLKIN1 (Clk_i),
  100. .CLKIN2 (),
  101. .CLKINSEL (1'b1),
  102. .PSDONE (),
  103. .PSCLK (1'b0),
  104. .PSEN (1'b0),
  105. .PSINCDEC (1'b0),
  106. .PWRDWN (1'b0),
  107. .RST (Rst_i)
  108. );
  109. BUFG BUFG_FB (.O (clkfb_bufgout), .I (clkfb_bufgin));
  110. BUFG BUFG_CLK0 (.O (SpiCLk_o[0]), .I (clk0_bufgin));
  111. BUFG BUFG_CLK1 (.O (SpiCLk_o[1]), .I (clk0_bufgin));
  112. BUFG BUFG_CLK2 (.O (SpiCLk_o[2]), .I (clk0_bufgin));
  113. BUFG BUFG_CLK3 (.O (SpiCLk_o[3]), .I (clk0_bufgin));
  114. BUFG BUFG_CLK4 (.O (SpiCLk_o[4]), .I (clk0_bufgin));
  115. BUFG BUFG_CLK5 (.O (SpiCLk_o[5]), .I (clk0_bufgin));
  116. BUFG BUFG_CLK6 (.O (SpiCLk_o[6]), .I (clk0_bufgin));
  117. endmodule