| `default_nettype none | 
 |  | 
 | `define CLKFBOUT_MULT 2 | 
 |  | 
 | // ============================================================================ | 
 |  | 
 | module top | 
 | ( | 
 |     input  wire clk, | 
 |  | 
 |     input  wire rst, | 
 |  | 
 |     input  wire [1:0] sw, | 
 |     output wire [9:0] led, | 
 | ); | 
 |  | 
 | // ============================================================================ | 
 | // Clock & reset | 
 | reg [3:0] rst_sr; | 
 |  | 
 | initial rst_sr <= 4'hF; | 
 |  | 
 | wire CLK; | 
 |  | 
 | BUFG bufg(.I(clk), .O(CLK)); | 
 |  | 
 | always @(posedge CLK) | 
 |     if (rst) | 
 |         rst_sr <= 4'hF; | 
 |     else | 
 |         rst_sr <= rst_sr >> 1; | 
 |  | 
 | wire RST = rst_sr[0]; | 
 |  | 
 | // ============================================================================ | 
 | // Clocks for ISERDES | 
 |  | 
 | wire PRE_BUFG_SYSCLK; | 
 | wire PRE_BUFG_CLKDIV; | 
 | wire PRE_BUFG_REFCLK; | 
 |  | 
 | wire SYSCLK; | 
 | wire CLKDIV; | 
 | wire REFCLK; | 
 |  | 
 | wire clk_fb_i; | 
 | wire clk_fb_o; | 
 |  | 
 | PLLE2_ADV #( | 
 | .BANDWIDTH          ("HIGH"), | 
 | .COMPENSATION       ("ZHOLD"), | 
 |  | 
 | .CLKIN1_PERIOD      (10.0),  // 100MHz | 
 |  | 
 | .CLKFBOUT_MULT      (`CLKFBOUT_MULT), | 
 | .CLKOUT0_DIVIDE     (`CLKFBOUT_MULT / 2), // SYSCLK, 200MHz (Fast clock) | 
 | .CLKOUT1_DIVIDE     ((`CLKFBOUT_MULT * 4) / 2), // CLKDIV, 50MHz (Slow clock) | 
 | .CLKOUT2_DIVIDE     (`CLKFBOUT_MULT / 2), // REFCLK (IDELAYCTRL), 200 MHz | 
 |  | 
 | .STARTUP_WAIT       ("FALSE"), | 
 |  | 
 | .DIVCLK_DIVIDE      (1'd1) | 
 | ) | 
 | pll | 
 | ( | 
 | .CLKIN1     (CLK), | 
 | .CLKINSEL   (1), | 
 |  | 
 | .RST        (RST), | 
 | .PWRDWN     (0), | 
 |  | 
 | .CLKFBIN    (clk_fb_i), | 
 | .CLKFBOUT   (clk_fb_o), | 
 |  | 
 | .CLKOUT0    (PRE_BUFG_SYSCLK), | 
 | .CLKOUT1    (PRE_BUFG_CLKDIV), | 
 | .CLKOUT2    (PRE_BUFG_REFCLK) | 
 | ); | 
 |  | 
 | BUFG bufg_clk(.I(PRE_BUFG_SYSCLK), .O(SYSCLK)); | 
 | BUFG bufg_clkdiv(.I(PRE_BUFG_CLKDIV), .O(CLKDIV)); | 
 | BUFG bufg_refclk(.I(PRE_BUFG_REFCLK), .O(REFCLK)); | 
 |  | 
 | IDELAYCTRL idelayctrl_1 ( | 
 |     .REFCLK(REFCLK) | 
 | ); | 
 |  | 
 | IDELAYCTRL idelayctrl_2 ( | 
 |     .REFCLK(REFCLK) | 
 | ); | 
 |  | 
 | assign led[0] = 0; | 
 | assign led[1] = 0; | 
 |  | 
 | wire OUTPUTS[7:0]; | 
 |  | 
 | // ISERDES reset generator | 
 | wire i_rstdiv; | 
 |  | 
 | // First ISERDES/IDELAY bank | 
 | wire DDLY_1; | 
 |  | 
 | IDELAYE2 # | 
 | ( | 
 | .IDELAY_TYPE    ("FIXED"), | 
 | .DELAY_SRC      ("IDATAIN"), | 
 | .IDELAY_VALUE   (5'd31) | 
 | ) | 
 | idelay_1 | 
 | ( | 
 | .C              (SYSCLK), | 
 | .CE             (1'b1), | 
 | .LD             (1'b1), | 
 | .INC            (1'b1), | 
 | .IDATAIN        (sw[0]), | 
 | .DATAOUT        (DDLY_1) | 
 | ); | 
 |  | 
 | ISERDESE2 # | 
 | ( | 
 | .DATA_RATE          ("SDR"), | 
 | .DATA_WIDTH         (3'd4), | 
 | .INTERFACE_TYPE     ("NETWORKING"), | 
 | .NUM_CE             (2) | 
 | ) | 
 | iserdes_1 | 
 | ( | 
 | .CLK        (SYSCLK), | 
 | .CLKB       (SYSCLK), | 
 | .CLKDIV     (CLKDIV), | 
 | .CE1        (1'b1), | 
 | .CE2        (1'b1), | 
 | .RST        (RST), | 
 | .DDLY       (DDLY_1), | 
 | .Q1         (led[5]), | 
 | .Q2         (led[4]), | 
 | .Q3         (led[3]), | 
 | .Q4         (led[2]), | 
 | ); | 
 |  | 
 | // Second ISERDES/IDELAY bank | 
 | wire DDLY_2; | 
 |  | 
 | IDELAYE2 # | 
 | ( | 
 | .IDELAY_TYPE    ("FIXED"), | 
 | .DELAY_SRC      ("IDATAIN"), | 
 | .IDELAY_VALUE   (5'd31) | 
 | ) | 
 | idelay_2 | 
 | ( | 
 | .C              (SYSCLK), | 
 | .CE             (1'b1), | 
 | .LD             (1'b1), | 
 | .INC            (1'b1), | 
 | .IDATAIN        (sw[1]), | 
 | .DATAOUT        (DDLY_2) | 
 | ); | 
 |  | 
 | ISERDESE2 # | 
 | ( | 
 | .DATA_RATE          ("SDR"), | 
 | .DATA_WIDTH         (3'd4), | 
 | .INTERFACE_TYPE     ("NETWORKING"), | 
 | .NUM_CE             (2) | 
 | ) | 
 | iserdes_2 | 
 | ( | 
 | .CLK        (SYSCLK), | 
 | .CLKB       (SYSCLK), | 
 | .CLKDIV     (CLKDIV), | 
 | .CE1        (1'b1), | 
 | .CE2        (1'b1), | 
 | .RST        (RST), | 
 | .DDLY       (DDLY_2), | 
 | .Q1         (led[9]), | 
 | .Q2         (led[8]), | 
 | .Q3         (led[7]), | 
 | .Q4         (led[6]), | 
 | ); | 
 |  | 
 | endmodule |