|  | `default_nettype none | 
|  |  | 
|  | // ============================================================================ | 
|  |  | 
|  | module top | 
|  | ( | 
|  | input  wire clk, | 
|  |  | 
|  | input  wire [7:0] sw, | 
|  | output wire [7:0] led, | 
|  |  | 
|  | input  wire jc1, | 
|  | output wire jc2, | 
|  | input  wire jc3, | 
|  | output wire jc4 | 
|  | ); | 
|  |  | 
|  | // ============================================================================ | 
|  | // MMCM | 
|  |  | 
|  | wire clk_fb; | 
|  |  | 
|  | wire [3:0] oclk; | 
|  | wire [3:0] gclk; | 
|  |  | 
|  | MMCME2_ADV # | 
|  | ( | 
|  | .BANDWIDTH          ("HIGH"), | 
|  | .COMPENSATION       ("INTERNAL"), | 
|  |  | 
|  | .CLKIN1_PERIOD      (10.0), | 
|  | .CLKIN2_PERIOD      (10.0), | 
|  |  | 
|  | .CLKFBOUT_MULT_F    (10.5), | 
|  | .CLKFBOUT_PHASE     (0), | 
|  |  | 
|  | .CLKOUT0_DIVIDE_F   (12.5), | 
|  | .CLKOUT0_DUTY_CYCLE (0.50), | 
|  | .CLKOUT0_PHASE      (45.0), | 
|  |  | 
|  | .CLKOUT1_DIVIDE     (32), | 
|  | .CLKOUT1_DUTY_CYCLE (0.53125), | 
|  | .CLKOUT1_PHASE      (90.0), | 
|  |  | 
|  | .CLKOUT2_DIVIDE     (48), | 
|  | .CLKOUT2_DUTY_CYCLE (0.50), | 
|  | .CLKOUT2_PHASE      (135.0), | 
|  |  | 
|  | .CLKOUT3_DIVIDE     (64), | 
|  | .CLKOUT3_DUTY_CYCLE (0.50), | 
|  | .CLKOUT3_PHASE      (45.0), | 
|  |  | 
|  | .STARTUP_WAIT       ("FALSE") | 
|  | ) | 
|  | mmcm | 
|  | ( | 
|  | .CLKIN1     (clk), | 
|  | .CLKIN2     (clk), | 
|  | .CLKINSEL   (1'b0), | 
|  |  | 
|  | .RST        (sw[0]), | 
|  | .PWRDWN     (1'b0), | 
|  |  | 
|  | .CLKFBIN    (clk_fb), | 
|  | .CLKFBOUT   (clk_fb), | 
|  |  | 
|  | .CLKOUT0    (oclk[0]), | 
|  | .CLKOUT1    (oclk[1]), | 
|  | .CLKOUT2    (oclk[2]), | 
|  | .CLKOUT3    (oclk[3]) | 
|  | ); | 
|  |  | 
|  | // ============================================================================ | 
|  | // Outputs | 
|  |  | 
|  | genvar i; | 
|  | generate for (i=0; i<4; i=i+1) begin | 
|  |  | 
|  | BUFG bufg (.I(oclk[i]), .O(gclk[i])); | 
|  |  | 
|  | reg r; | 
|  | always @(posedge gclk[i]) | 
|  | r <= ~r; | 
|  |  | 
|  | assign led[i] = r; | 
|  |  | 
|  | end endgenerate | 
|  |  | 
|  | // Unused | 
|  | assign led[4] = 1'b0; | 
|  | assign led[5] = 1'b0; | 
|  | assign led[6] = 1'b0; | 
|  | assign led[7] = |sw; | 
|  |  | 
|  | assign jc2 = jc1; | 
|  | assign jc4 = jc3; | 
|  |  | 
|  | endmodule | 
|  |  |