sdc_divider_drc.vf 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. ////////////////////////////////////////////////////////////////////////////////
  2. // Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved.
  3. ////////////////////////////////////////////////////////////////////////////////
  4. // ____ ____
  5. // / /\/ /
  6. // /___/ \ / Vendor: Xilinx
  7. // \ \ \/ Version : 14.7
  8. // \ \ Application : sch2hdl
  9. // / / Filename : sdc_divider_drc.vf
  10. // /___/ /\ Timestamp : 07/19/2018 19:40:31
  11. // \ \ / \
  12. // \___\/\___\
  13. //
  14. //Command: /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/unwrapped/sch2hdl -intstyle ise -family spartan6 -verilog sdc_divider_drc.vf -w /home/trurl/STM32_Devel/FPGA/CNC/step_driver_control/sdc_divider.sch
  15. //Design Name: sdc_divider
  16. //Device: spartan6
  17. //Purpose:
  18. // This verilog netlist is translated from an ECS schematic.It can be
  19. // synthesized and simulated, but it should not be modified.
  20. //
  21. `timescale 100 ps / 10 ps
  22. module FTC_HXILINX_sdc_divider(Q, C, CLR, T);
  23. output Q;
  24. input C;
  25. input CLR;
  26. input T;
  27. parameter INIT = 1'b0;
  28. reg Q = INIT;
  29. always @(posedge C or posedge CLR)
  30. begin
  31. if (CLR)
  32. Q <= 1'b0;
  33. else if(T)
  34. Q <= !Q;
  35. end
  36. endmodule
  37. `timescale 100 ps / 10 ps
  38. module COMP8_HXILINX_sdc_divider (EQ, A, B);
  39. output EQ;
  40. input [7:0] A;
  41. input [7:0] B;
  42. assign EQ = (A==B) ;
  43. endmodule
  44. `timescale 100 ps / 10 ps
  45. module SR8CE_HXILINX_sdc_divider(Q, C, CE, CLR, SLI) ;
  46. output [7:0] Q;
  47. input C;
  48. input CE;
  49. input CLR;
  50. input SLI;
  51. reg [7:0] Q;
  52. always @(posedge C or posedge CLR)
  53. begin
  54. if (CLR)
  55. Q <= 8'b0000_0000;
  56. else if (CE)
  57. Q <= {Q[6:0], SLI};
  58. end
  59. endmodule
  60. `timescale 100 ps / 10 ps
  61. module CB8CE_HXILINX_sdc_divider(CEO, Q, TC, C, CE, CLR);
  62. localparam TERMINAL_COUNT = 8'b1111_1111;
  63. output CEO;
  64. output [7:0] Q;
  65. output TC;
  66. input C;
  67. input CE;
  68. input CLR;
  69. reg [7:0] Q;
  70. always @(posedge C or posedge CLR)
  71. begin
  72. if (CLR)
  73. Q <= 8'b0000_0000;
  74. else if (CE)
  75. Q <= Q + 1;
  76. end
  77. assign CEO = TC & CE;
  78. assign TC = (Q == TERMINAL_COUNT);
  79. endmodule
  80. `timescale 1ns / 1ps
  81. module sdc_divider(DIV_EN,
  82. RST,
  83. SET_DIV_CLK,
  84. SET_DIV_DATA_div2,
  85. SET_DIV_EN,
  86. SYS_CLK,
  87. MAIN_TICK);
  88. input DIV_EN;
  89. input RST;
  90. input SET_DIV_CLK;
  91. input SET_DIV_DATA_div2;
  92. input SET_DIV_EN;
  93. input SYS_CLK;
  94. output MAIN_TICK;
  95. wire [7:0] XLXN_1;
  96. wire [7:0] XLXN_2;
  97. wire XLXN_8;
  98. wire XLXN_12;
  99. wire XLXN_23;
  100. wire XLXN_25;
  101. assign XLXN_25 = 1;
  102. (* HU_SET = "XLXI_2_0" *)
  103. SR8CE_HXILINX_sdc_divider XLXI_2 (.C(SET_DIV_CLK),
  104. .CE(SET_DIV_EN),
  105. .CLR(RST),
  106. .SLI(SET_DIV_DATA_div2),
  107. .Q(XLXN_1[7:0]));
  108. (* HU_SET = "XLXI_3_3" *)
  109. CB8CE_HXILINX_sdc_divider XLXI_3 (.C(SYS_CLK),
  110. .CE(DIV_EN),
  111. .CLR(XLXN_8),
  112. .CEO(),
  113. .Q(XLXN_2[7:0]),
  114. .TC());
  115. (* HU_SET = "XLXI_4_1" *)
  116. COMP8_HXILINX_sdc_divider XLXI_4 (.A(XLXN_1[7:0]),
  117. .B(XLXN_2[7:0]),
  118. .EQ(XLXN_23));
  119. (* HU_SET = "XLXI_7_2" *)
  120. FTC_HXILINX_sdc_divider XLXI_7 (.C(XLXN_23),
  121. .CLR(RST),
  122. .T(XLXN_25),
  123. .Q(MAIN_TICK));
  124. OR2 XLXI_16 (.I0(XLXN_12),
  125. .I1(RST),
  126. .O(XLXN_8));
  127. AND2 XLXI_17 (.I0(XLXN_23),
  128. .I1(SYS_CLK),
  129. .O(XLXN_12));
  130. endmodule