IP设置
代码
aurora_8b10b aurora_8b10b_inst (
/**********************************************************************************///axi_stream tx
.s_axi_tx_tdata(s_axi_tx_tdata), // input wire [0 : 31] s_axi_tx_tdata
.s_axi_tx_tkeep(s_axi_tx_tkeep), // input wire [0 : 3] s_axi_tx_tkeep
.s_axi_tx_tlast(s_axi_tx_tlast), // input wire s_axi_tx_tlast
.s_axi_tx_tvalid(s_axi_tx_tvalid), // input wire s_axi_tx_tvalid
.s_axi_tx_tready(s_axi_tx_tready), // output wire s_axi_tx_tready
/**********************************************************************************///ufc no use tx frame
.s_axi_ufc_tx_tvalid(s_axi_ufc_tx_tvalid), // input wire s_axi_ufc_tx_tvalid
.s_axi_ufc_tx_tdata(s_axi_ufc_tx_tdata), // input wire [0 : 2] s_axi_ufc_tx_tdata
.s_axi_ufc_tx_tready(s_axi_ufc_tx_tready), // output wire s_axi_ufc_tx_tready
/**********************************************************************************///axi_stream rx
.m_axi_rx_tdata(m_axi_rx_tdata), // output wire [0 : 31] m_axi_rx_tdata
.m_axi_rx_tkeep(m_axi_rx_tkeep), // output wire [0 : 3] m_axi_rx_tkeep
.m_axi_rx_tlast(m_axi_rx_tlast), // output wire m_axi_rx_tlast
.m_axi_rx_tvalid(m_axi_rx_tvalid), // output wire m_axi_rx_tvalid
/**********************************************************************************///ufc no use rx frame
.m_axi_ufc_rx_tdata(m_axi_ufc_rx_tdata), // output wire [0 : 31] m_axi_ufc_rx_tdata
.m_axi_ufc_rx_tkeep(m_axi_ufc_rx_tkeep), // output wire [0 : 3] m_axi_ufc_rx_tkeep
.m_axi_ufc_rx_tlast(m_axi_ufc_rx_tlast), // output wire m_axi_ufc_rx_tlast
.m_axi_ufc_rx_tvalid(m_axi_ufc_rx_tvalid), // output wire m_axi_ufc_rx_tvalid
/**********************************************************************************///
.hard_err(hard_err), // output wire hard_err
.soft_err(soft_err), // output wire soft_err
.frame_err(frame_err), // output wire frame_err
/**********************************************************************************///error
.channel_up(channel_up), // output wire channel_up
.lane_up(lane_up), // output wire [0 : 0] lane_up
.txp(txp), // output wire [0 : 0] txp
.txn(txn), // output wire [0 : 0] txn
/**********************************************************************************///reset
.reset(reset), // input wire reset
.gt_reset(gt_reset), // input wire gt_reset
/**********************************************************************************///
.loopback(3'b000), // input wire [2 : 0] loopback
.rxp(rxp), // input wire [0 : 0] rxp
.rxn(rxn), // input wire [0 : 0] rxn
/**********************************************************************************///crc
.crc_valid(crc_valid), // output wire crc_valid
.crc_pass_fail_n(crc_pass_fail_n), // output wire crc_pass_fail_n //1 is pass ,0 is fail
/**********************************************************************************///dynamic setup
.drpclk_in(drpclk_in), // input wire drpclk_in
.drpaddr_in(drpaddr_in), // input wire [8 : 0] drpaddr_in
.drpen_in(1'b0), // input wire drpen_in
.drpdi_in(drpdi_in), // input wire [15 : 0] drpdi_in
.drprdy_out(drprdy_out), // output wire drprdy_out
.drpdo_out(drpdo_out), // output wire [15 : 0] drpdo_out
.drpwe_in(1'b0), // input wire drpwe_in
/**********************************************************************************///power down mode
.power_down(1'b0), // input wire power_down
/**********************************************************************************///
.tx_lock(tx_lock), // output wire tx_lock
.tx_resetdone_out(tx_resetdone_out), // output wire tx_resetdone_out
.rx_resetdone_out(rx_resetdone_out), // output wire rx_resetdone_out
.link_reset_out(link_reset_out), // output wire link_reset_out
/**********************************************************************************///initial clk signle
.init_clk_in(init_clk_in), // input wire init_clk_in
/**********************************************************************************///user clk
.user_clk_out(user_clk_out), // output wire user_clk_out
.pll_not_locked_out(pll_not_locked_out), // output wire pll_not_locked_out
/**********************************************************************************///high en
.sys_reset_out(sys_reset_out), // output wire sys_reset_out
/**********************************************************************************///pin refclk
.gt_refclk1_p(gt_refclk1_p), // input wire gt_refclk1_p
.gt_refclk1_n(gt_refclk1_n), // input wire gt_refclk1_n
.sync_clk_out(sync_clk_out), // output wire sync_clk_out
.gt_reset_out(gt_reset_out), // output wire gt_reset_out
.gt_refclk1_out(gt_refclk1_out), // output wire gt_refclk1_out
.gt0_pll0refclklost_out(gt0_pll0refclklost_out), // output wire gt0_pll0refclklost_out
.quad1_common_lock_out(quad1_common_lock_out), // output wire quad1_common_lock_out
.gt0_pll0outclk_out(gt0_pll0outclk_out), // output wire gt0_pll0outclk_out
.gt0_pll1outclk_out(gt0_pll1outclk_out), // output wire gt0_pll1outclk_out
.gt0_pll0outrefclk_out(gt0_pll0outrefclk_out), // output wire gt0_pll0outrefclk_out
.gt0_pll1outrefclk_out(gt0_pll1outrefclk_out) // output wire gt0_pll1outrefclk_out
);
channel up
lane up
在仿真的时候大概需要700us才会有效,不然数据一直处于复位状态。
ufc在没帧之后有一个周期的发送,(设置为一周期4byte,发送32bit)