| module top ( | |
| input wire clk, | |
| input wire sw, | |
| output wire led | |
| ); | |
| wire O_LOCKED; | |
| wire RST; | |
| wire clk0; | |
| wire clk1; | |
| wire clk_out; | |
| wire clk_fb_i; | |
| wire clk_fb_o; | |
| reg [25:0] cnt; | |
| assign RST = 1'b0; | |
| BUFG bufg0 ( | |
| .I(clk_fb_i), | |
| .O(clk_fb_o) | |
| ); | |
| wire clk_ibuf; | |
| IBUF ibuf0 ( | |
| .I(clk), | |
| .O(clk_ibuf) | |
| ); | |
| wire clk_bufg; | |
| BUFG bufg1 ( | |
| .I(clk_ibuf), | |
| .O(clk_bufg) | |
| ); | |
| PLLE2_ADV #( | |
| .BANDWIDTH ("HIGH"), | |
| .COMPENSATION ("ZHOLD"), | |
| .CLKIN1_PERIOD (10.0), // 100MHz | |
| .CLKFBOUT_MULT (16), | |
| .CLKOUT0_DIVIDE (8), | |
| .CLKOUT1_DIVIDE (32), | |
| .STARTUP_WAIT ("FALSE"), | |
| .DIVCLK_DIVIDE (1) | |
| ) | |
| pll ( | |
| .CLKIN1 (clk_bufg), | |
| .CLKINSEL (1), | |
| .RST (RST), | |
| .PWRDWN (0), | |
| .LOCKED (O_LOCKED), | |
| .CLKFBIN (clk_fb_i), | |
| .CLKFBOUT (clk_fb_o), | |
| .CLKOUT0 (clk0), | |
| .CLKOUT1 (clk1) | |
| ); | |
| BUFGMUX bufgmux ( | |
| .I0(clk0), | |
| .I1(clk1), | |
| .S(sw[0]), | |
| .O(clk_out) | |
| ); | |
| always @(posedge clk_out) begin | |
| cnt <= cnt + 1'b1; | |
| end | |
| assign led[0] = cnt[25]; | |
| endmodule |