// ---------------------------------------------------------------------- // "THE BEER-WARE LICENSE" (Revision 42): // wrote this file. As long as you retain this // notice you can do whatever you want with this stuff. If we meet // some day, and you think this stuff is worth it, you can buy me a // beer in return Yasunori Osana at University of the Ryukyus, // Japan. // ---------------------------------------------------------------------- // OpenFC project: an open FPGA accelerated cluster toolkit // Kyokko project: an open Multi-vendor Aurora 64B/66B-compatible link // // Modules in this file: // a10_xcvr_4ch: Quad Arria 10 GX transceiver wrapper // c10_phy_bitorder: Bit order reverser for Intel GX transceivers // ---------------------------------------------------------------------- `default_nettype none module a10_xcvr_4ch # ( parameter NumCh=4 ) ( input wire RST, // RST somehow input wire USRCLK, // 125MHz on HawkEye input wire REFCLK644P, input wire [NumCh-1:0] SFP_RXP, output wire [NumCh-1:0] SFP_TXP, input wire [NumCh*64-1:0] TX_DATA, output wire [NumCh*64-1:0] RX_DATA, input wire [NumCh*2-1:0] TX_CTRL, output wire [NumCh*2-1:0] RX_CTRL, output wire [NumCh-1:0] TX_USRCLK, RX_USRCLK, input wire [NumCh-1:0] TX_VALID, RX_BITSLIP, output wire PLL_LOCKED, output wire [NumCh-1:0] RX_LOCKED ); wire PLL_PD; wire TX_SCLK; atx_5g atxpll ( .pll_powerdown (PLL_PD), // I .pll_refclk0 (REFCLK644P), // I .tx_serial_clk (TX_SCLK), // O .pll_locked (PLL_LOCKED), // O .pll_cal_busy () // O ); wire [NumCh-1:0] TX_ARST, TX_DRST, RX_ARST, RX_DRST; wire [NumCh-1:0] TX_CALBUSY, TX_READY; wire [NumCh-1:0] RX_CALBUSY, RX_READY; phy_rst_ctrl_4ch phy_rst ( .clock (USRCLK), // I .reset (RST), // I .pll_powerdown (PLL_PD), // O .tx_analogreset (TX_ARST), // O [NumCh-1:0] .tx_digitalreset (TX_DRST), // O [NumCh-1:0] .tx_ready (TX_READY), // O [NumCh-1:0] .pll_locked (PLL_LOCKED), // I .pll_select (1'b0), // I .tx_cal_busy (TX_CALBUSY), // I [NumCh-1:0] .rx_analogreset (RX_ARST), // O [NumCh-1:0] .rx_digitalreset (RX_DRST), // O [NumCh-1:0] .rx_ready (RX_READY), // O [NumCh-1:0] .rx_is_lockedtodata (RX_LOCKED), // I [NumCh-1:0] .rx_cal_busy (RX_CALBUSY) // I [NumCh-1:0] ); generate genvar ch; for (ch=0; ch