文章目录
前言
前面我们学习了很多基于XILINX 7系列的高速接口使用,本文将介绍xilinx UltraScale+的10G/25G Ethernet Subsystem IP核的使用。大体使用与7系列相差无几,甚至更加简单。大家如果看过7系列那部分的内容,这个上手非常快。
一、设计框图
)
设计框图与7系列大致相似。直接使用官方例程也是可以的,但是这样子更加清晰,我们自己将来使用的时候更加方便,在梳理的过程中也可以加深印象。
1.1、xxv_ethernet_0
xxv_ethernet_0 xxv_ethernet_u0 (
.gt_txp_out (o_gt_txp ), // output wire [0 : 0] gt_txp_out
.gt_txn_out (o_gt_txn ), // output wire [0 : 0] gt_txn_out
.gt_rxp_in (i_gt_rxp ), // input wire [0 : 0] gt_rxp_in
.gt_rxn_in (i_gt_rxn ), // input wire [0 : 0] gt_rxn_in
.rx_core_clk_0 (w_rx_core_clk ), // input wire rx_core_clk_0
.rx_serdes_reset_0 (w_rx_serdes_reset ), // input wire rx_serdes_reset_0
.txoutclksel_in_0 (3'b101 ), // input wire [2 : 0] txoutclksel_in_0
.rxoutclksel_in_0 (3'b101 ), // input wire [2 : 0] rxoutclksel_in_0
.rxrecclkout_0 (w_rxrecclkout ), // output wire rxrecclkout_0
.sys_reset (i_sys_reset ), // input wire sys_reset
.dclk (i_dclk ), // input wire dclk
.tx_clk_out_0 (o_tx_clk_out ), // output wire tx_clk_out_0
.rx_clk_out_0 (o_rx_clk_out ), // output wire rx_clk_out_0
.gtpowergood_out_0 (), // output wire gtpowergood_out_0
.qpll0clk_in (i_qpll0outclk ), // input wire [0 : 0] qpll0clk_in
.qpll0refclk_in (i_qpll0outrefclk ), // input wire [0 : 0] qpll0refclk_in
.qpll1clk_in (i_qpll1outclk ), // input wire [0 : 0] qpll1clk_in
.qpll1refclk_in (i_qpll1outrefclk ), // input wire [0 : 0] qpll1refclk_in
.gtwiz_reset_qpll0lock_in (i_qpll0lock ), // input wire gtwiz_reset_qpll0lock_in
.gtwiz_reset_qpll0reset_out (o_qpll0reset ), // output wire gtwiz_reset_qpll0reset_out
.gtwiz_reset_qpll1lock_in (i_qpll1lock ), // input wire gtwiz_reset_qpll1lock_in
.gtwiz_reset_qpll1reset_out (o_qpll1reset ), // output wire gtwiz_reset_qpll1reset_out
.gt_reset_tx_done_out_0 (w_gt_reset_tx_done ), // output wire gt_reset_tx_done_out_0
.gt_reset_rx_done_out_0 (w_gt_reset_rx_done ), // output wire gt_reset_rx_done_out_0
.gt_reset_all_in_0 (w_gtwiz_reset_all ), // input wire gt_reset_all_in_0
.gt_tx_reset_in_0 (w_gtwiz_reset_tx_datapath ), // input wire gt_tx_reset_in_0
.gt_rx_reset_in_0 (w_gtwiz_reset_rx_datapath ), // input wire gt_rx_reset_in_0
.rx_reset_0 (w_rx_core_reset ), // input wire rx_reset_0
.rx_axis_tvalid_0 (rx_axis_tvalid ), // output wire rx_axis_tvalid_0
.rx_axis_tdata_0 (rx_axis_tdata ), // output wire [63 : 0] rx_axis_tdata_0
.rx_axis_tlast_0 (rx_axis_tlast ), // output wire rx_axis_tlast_0
.rx_axis_tkeep_0 (rx_axis_tkeep ), // output wire [7 : 0] rx_axis_tkeep_0
.rx_axis_tuser_0 (rx_axis_tuser ), // output wire rx_axis_tuser_0
.ctl_rx_enable_0 (ctl_rx_enable_0 ), // input wire ctl_rx_enable_0
.ctl_rx_check_preamble_0 (ctl_rx_check_preamble_0 ), // input wire ctl_rx_check_preamble_0
.ctl_rx_check_sfd_0 (ctl_rx_check_sfd_0 ), // input wire ctl_rx_check_sfd_0
.ctl_rx_force_resync_0 (ctl_rx_force_resync_0 ), // input wire ctl_rx_force_resync_0
.ctl_rx_delete_fcs_0