mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			217 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
module endpoint_phy_wrapper
 | 
						|
  (
 | 
						|
   input clk_sys_i,
 | 
						|
   input clk_ref_i,
 | 
						|
   input clk_rx_i,
 | 
						|
   input rst_n_i,
 | 
						|
 | 
						|
   IWishboneMaster.master src,
 | 
						|
   IWishboneSlave.slave snk,
 | 
						|
   IWishboneMaster.master sys,
 | 
						|
   
 | 
						|
   output [9:0] td_o,
 | 
						|
   input [9:0] rd_i,
 | 
						|
 | 
						|
   output txn_o,
 | 
						|
   output txp_o,
 | 
						|
 | 
						|
   input rxn_i,
 | 
						|
   input rxp_i
 | 
						|
   );
 | 
						|
 | 
						|
   wire rx_clock;
 | 
						|
   
 | 
						|
   parameter g_phy_type   = "GTP";   
 | 
						|
 | 
						|
   wire[15:0] gtx_data;
 | 
						|
   wire [1:0]gtx_k;
 | 
						|
   wire gtx_disparity;
 | 
						|
   wire gtx_enc_error;
 | 
						|
   wire [15:0] grx_data;
 | 
						|
   wire grx_clk;
 | 
						|
   wire [1:0]grx_k;
 | 
						|
   wire grx_enc_error;
 | 
						|
   wire [3:0] grx_bitslide;
 | 
						|
   wire gtp_rst;
 | 
						|
   wire tx_clock;
 | 
						|
   
 | 
						|
   generate
 | 
						|
      if(g_phy_type == "TBI") begin
 | 
						|
 | 
						|
         assign rx_clock  = clk_ref_i;
 | 
						|
         assign tx_clock  = clk_rx_i;
 | 
						|
         
 | 
						|
         
 | 
						|
         wr_tbi_phy U_Phy 
 | 
						|
           (
 | 
						|
            .serdes_rst_i (gtp_rst),
 | 
						|
            .serdes_loopen_i(1'b0),
 | 
						|
            .serdes_prbsen_i(1'b0),
 | 
						|
            .serdes_enable_i(1'b1), 
 | 
						|
            .serdes_syncen_i(1'b1),
 | 
						|
 | 
						|
            .serdes_tx_data_i  (gtx_data[7:0]),
 | 
						|
            .serdes_tx_k_i     (gtx_k[0]),
 | 
						|
            .serdes_tx_disparity_o (gtx_disparity),
 | 
						|
            .serdes_tx_enc_err_o   (gtx_enc_error),
 | 
						|
 | 
						|
            .serdes_rx_data_o      (grx_data[7:0]),
 | 
						|
            .serdes_rx_k_o        (grx_k[0]),
 | 
						|
            .serdes_rx_enc_err_o  (grx_enc_error),
 | 
						|
            .serdes_rx_bitslide_o (grx_bitslide),
 | 
						|
 | 
						|
 | 
						|
            .tbi_refclk_i (clk_ref_i),
 | 
						|
            .tbi_rbclk_i  (clk_rx_i),
 | 
						|
 | 
						|
            .tbi_td_o     (td_o),
 | 
						|
            .tbi_rd_i     (rd_i),
 | 
						|
            .tbi_syncen_o (),
 | 
						|
            .tbi_loopen_o (),
 | 
						|
            .tbi_prbsen_o (),
 | 
						|
            .tbi_enable_o ()
 | 
						|
            );
 | 
						|
 | 
						|
      end else if (g_phy_type == "GTX") begin // if (g_phy_type == "TBI")
 | 
						|
         wr_gtx_phy_virtex6
 | 
						|
           #(
 | 
						|
             .g_simulation(1)
 | 
						|
             ) U_PHY 
 | 
						|
             (
 | 
						|
              .clk_ref_i(clk_ref_i),
 | 
						|
              
 | 
						|
              .tx_clk_o   (tx_clock),
 | 
						|
              .tx_data_i (gtx_data),
 | 
						|
              .tx_k_i (gtx_k),
 | 
						|
              .tx_disparity_o (gtx_disparity),
 | 
						|
              .tx_enc_err_o(gtx_enc_error),
 | 
						|
              .rx_rbclk_o (rx_clock),
 | 
						|
              .rx_data_o (grx_data),
 | 
						|
              .rx_k_o  (grx_k),
 | 
						|
              .rx_enc_err_o (grx_enc_error),
 | 
						|
              .rx_bitslide_o  (),
 | 
						|
 | 
						|
              .rst_i    (!rst_n_i),
 | 
						|
              .loopen_i (1'b0),
 | 
						|
 | 
						|
              .pad_txn_o (txn_o),
 | 
						|
              .pad_txp_o (txp_o),
 | 
						|
 | 
						|
              .pad_rxn_i (rxn_i),
 | 
						|
              .pad_rxp_i (rxp_i)
 | 
						|
    );
 | 
						|
                   
 | 
						|
      end  else if (g_phy_type == "GTP") begin // if (g_phy_type == "TBI")
 | 
						|
         assign #1 tx_clock  = clk_ref_i;
 | 
						|
         
 | 
						|
         wr_gtp_phy_spartan6
 | 
						|
           #(
 | 
						|
             .g_simulation(1)
 | 
						|
             ) U_PHY 
 | 
						|
             (
 | 
						|
              .gtp_clk_i(clk_ref_i),
 | 
						|
              .ch0_ref_clk_i(clk_ref_i),
 | 
						|
              
 | 
						|
              .ch0_tx_data_i (gtx_data[7:0]),
 | 
						|
              .ch0_tx_k_i (gtx_k[0]),
 | 
						|
              .ch0_tx_disparity_o (gtx_disparity),
 | 
						|
              .ch0_tx_enc_err_o(gtx_enc_error),
 | 
						|
              .ch0_rx_rbclk_o (rx_clock),
 | 
						|
              .ch0_rx_data_o (grx_data[7:0]),
 | 
						|
              .ch0_rx_k_o  (grx_k[0]),
 | 
						|
              .ch0_rx_enc_err_o (grx_enc_error),
 | 
						|
              .ch0_rx_bitslide_o  (),
 | 
						|
 | 
						|
              .ch0_rst_i    (!rst_n_i),
 | 
						|
              .ch0_loopen_i (1'b0),
 | 
						|
 | 
						|
              .pad_txn0_o (txn_o),
 | 
						|
              .pad_txp0_o (txp_o),
 | 
						|
 | 
						|
              .pad_rxn0_i (rxn_i),
 | 
						|
              .pad_rxp0_i (rxp_i)
 | 
						|
              );
 | 
						|
         
 | 
						|
      end // else: !if(g_phy_type == "TBI")
 | 
						|
   endgenerate
 | 
						|
   
 | 
						|
   wr_endpoint
 | 
						|
     #(
 | 
						|
       .g_simulation          (1),
 | 
						|
       .g_pcs_16bit(g_phy_type == "GTX" ? 1: 0),
 | 
						|
       .g_rx_buffer_size (1024),
 | 
						|
       .g_with_rx_buffer(0),
 | 
						|
       .g_with_timestamper    (1),
 | 
						|
       .g_with_dmtd           (0),
 | 
						|
       .g_with_dpi_classifier (1),
 | 
						|
       .g_with_vlans          (0),
 | 
						|
       .g_with_rtu            (0)
 | 
						|
       ) DUT (
 | 
						|
              .clk_ref_i (clk_ref_i),
 | 
						|
              .clk_sys_i (clk_sys_i),
 | 
						|
              .clk_dmtd_i (clk_ref_i),
 | 
						|
              .rst_n_i  (rst_n_i),
 | 
						|
              .pps_csync_p1_i (1'b0),
 | 
						|
 | 
						|
              .phy_rst_o   (),
 | 
						|
              .phy_loopen_o (),
 | 
						|
              .phy_enable_o (),
 | 
						|
              .phy_syncen_o (),
 | 
						|
 | 
						|
              .phy_ref_clk_i      (tx_clock),
 | 
						|
              .phy_tx_data_o      (gtx_data),
 | 
						|
              .phy_tx_k_o         (gtx_k),
 | 
						|
              .phy_tx_disparity_i (gtx_disparity),
 | 
						|
              .phy_tx_enc_err_i   (gtx_enc_error),
 | 
						|
 | 
						|
              .phy_rx_data_i     (grx_data),
 | 
						|
              .phy_rx_clk_i      (rx_clock),
 | 
						|
              .phy_rx_k_i        (grx_k),
 | 
						|
              .phy_rx_enc_err_i  (grx_enc_error),
 | 
						|
              .phy_rx_bitslide_i (5'b0),
 | 
						|
 | 
						|
              .src_dat_o   (snk.dat_i),
 | 
						|
              .src_adr_o   (snk.adr),
 | 
						|
              .src_sel_o   (snk.sel),
 | 
						|
              .src_cyc_o   (snk.cyc),
 | 
						|
              .src_stb_o   (snk.stb),
 | 
						|
              .src_we_o    (snk.we),
 | 
						|
              .src_stall_i (snk.stall),
 | 
						|
              .src_ack_i   (snk.ack),
 | 
						|
              .src_err_i(1'b0),
 | 
						|
 | 
						|
              .snk_dat_i   (src.dat_o[15:0]),
 | 
						|
              .snk_adr_i   (src.adr[1:0]),
 | 
						|
              .snk_sel_i   (src.sel[1:0]),
 | 
						|
              .snk_cyc_i   (src.cyc),
 | 
						|
              .snk_stb_i   (src.stb),
 | 
						|
              .snk_we_i    (src.we),
 | 
						|
              .snk_stall_o (src.stall),
 | 
						|
              .snk_ack_o   (src.ack),
 | 
						|
              .snk_err_o   (src.err),
 | 
						|
              .snk_rty_o   (src.rty),
 | 
						|
 | 
						|
              .txtsu_ack_i (1'b1),
 | 
						|
 | 
						|
              .rtu_full_i (1'b0),
 | 
						|
              .rtu_almost_full_i (1'b0),
 | 
						|
              .rtu_rq_strobe_p1_o  (),
 | 
						|
              .rtu_rq_smac_o  (),
 | 
						|
              .rtu_rq_dmac_o (),
 | 
						|
              .rtu_rq_vid_o  (),
 | 
						|
              .rtu_rq_has_vid_o (),
 | 
						|
              .rtu_rq_prio_o (),
 | 
						|
              .rtu_rq_has_prio_o (),
 | 
						|
 | 
						|
              .wb_cyc_i(sys.cyc),
 | 
						|
              .wb_stb_i (sys.stb),
 | 
						|
              .wb_we_i (sys.we),
 | 
						|
              .wb_sel_i(sys.sel),
 | 
						|
              .wb_adr_i(sys.adr[7:0]),
 | 
						|
              .wb_dat_i(sys.dat_o),
 | 
						|
              .wb_dat_o(sys.dat_i),
 | 
						|
              .wb_ack_o (sys.ack)
 | 
						|
    );
 | 
						|
 | 
						|
endmodule // endpoint_phy_wrapper
 |