前言

本章将为大家介绍 “Serial RapidIO Gen2 ”IP 的使用以及配置方法。“Serial RapidIO Gen2 ”IP 在进行数据传输时需要按照 Rapidio 协议进行数据传输。Rapidio 协议组成的基本要素是包和控制符号:包是基于各种协议的传输数据内容,控制符号则用于控制物理层数据交互的方式。本章实验的方案是产生一组累加的测试数据,测试数据在经过光模块后再对数据进行接收,将发送和接收的数据进行对比,从而测试我们的开发板是否支持“Serial RapidIO Gen2 ”IP 数据的收发。


提示:任何文章不要过度深思!万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」 ;不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人 。怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

一、IP例化文件

srio_gen2_0 your_instance_name (
  .log_clk_in(log_clk_in),                                        // input wire log_clk_in
  .buf_rst_in(buf_rst_in),                                        // input wire buf_rst_in
  .log_rst_in(log_rst_in),                                        // input wire log_rst_in
  .gt_pcs_rst_in(gt_pcs_rst_in),                                  // input wire gt_pcs_rst_in
  .gt_pcs_clk_in(gt_pcs_clk_in),                                  // input wire gt_pcs_clk_in
  .cfg_rst_in(cfg_rst_in),                                        // input wire cfg_rst_in
  .deviceid(deviceid),                                            // output wire [15 : 0] deviceid
  .port_decode_error(port_decode_error),                          // output wire port_decode_error
  .s_axis_ireq_tvalid(s_axis_ireq_tvalid),                        // input wire s_axis_ireq_tvalid
  .s_axis_ireq_tready(s_axis_ireq_tready),                        // output wire s_axis_ireq_tready
  .s_axis_ireq_tlast(s_axis_ireq_tlast),                          // input wire s_axis_ireq_tlast
  .s_axis_ireq_tdata(s_axis_ireq_tdata),                          // input wire [63 : 0] s_axis_ireq_tdata
  .s_axis_ireq_tkeep(s_axis_ireq_tkeep),                          // input wire [7 : 0] s_axis_ireq_tkeep
  .s_axis_ireq_tuser(s_axis_ireq_tuser),                          // input wire [31 : 0] s_axis_ireq_tuser
  .m_axis_iresp_tvalid(m_axis_iresp_tvalid),                      // output wire m_axis_iresp_tvalid
  .m_axis_iresp_tready(m_axis_iresp_tready),                      // input wire m_axis_iresp_tready
  .m_axis_iresp_tlast(m_axis_iresp_tlast),                        // output wire m_axis_iresp_tlast
  .m_axis_iresp_tdata(m_axis_iresp_tdata),                        // output wire [63 : 0] m_axis_iresp_tdata
  .m_axis_iresp_tkeep(m_axis_iresp_tkeep),                        // output wire [7 : 0] m_axis_iresp_tkeep
  .m_axis_iresp_tuser(m_axis_iresp_tuser),                        // output wire [31 : 0] m_axis_iresp_tuser
  .m_axis_treq_tvalid(m_axis_treq_tvalid),                        // output wire m_axis_treq_tvalid
  .m_axis_treq_tready(m_axis_treq_tready),                        // input wire m_axis_treq_tready
  .m_axis_treq_tlast(m_axis_treq_tlast),                          // output wire m_axis_treq_tlast
  .m_axis_treq_tdata(m_axis_treq_tdata),                          // output wire [63 : 0] m_axis_treq_tdata
  .m_axis_treq_tkeep(m_axis_treq_tkeep),                          // output wire [7 : 0] m_axis_treq_tkeep
  .m_axis_treq_tuser(m_axis_treq_tuser),                          // output wire [31 : 0] m_axis_treq_tuser
  .s_axis_tresp_tvalid(s_axis_tresp_tvalid),                      // input wire s_axis_tresp_tvalid
  .s_axis_tresp_tready(s_axis_tresp_tready),                      // output wire s_axis_tresp_tready
  .s_axis_tresp_tlast(s_axis_tresp_tlast),                        // input wire s_axis_tresp_tlast
  .s_axis_tresp_tdata(s_axis_tresp_tdata),                        // input wire [63 : 0] s_axis_tresp_tdata
  .s_axis_tresp_tkeep(s_axis_tresp_tkeep),                        // input wire [7 : 0] s_axis_tresp_tkeep
  .s_axis_tresp_tuser(s_axis_tresp_tuser),                        // input wire [31 : 0] s_axis_tresp_tuser
  .s_axi_maintr_rst(s_axi_maintr_rst),                            // input wire s_axi_maintr_rst
  .s_axi_maintr_awvalid(s_axi_maintr_awvalid),                    // input wire s_axi_maintr_awvalid
  .s_axi_maintr_awready(s_axi_maintr_awready),                    // output wire s_axi_maintr_awready
  .s_axi_maintr_awaddr(s_axi_maintr_awaddr),                      // input wire [31 : 0] s_axi_maintr_awaddr
  .s_axi_maintr_wvalid(s_axi_maintr_wvalid),                      // input wire s_axi_maintr_wvalid
  .s_axi_maintr_wready(s_axi_maintr_wready),                      // output wire s_axi_maintr_wready
  .s_axi_maintr_wdata(s_axi_maintr_wdata),                        // input wire [31 : 0] s_axi_maintr_wdata
  .s_axi_maintr_bvalid(s_axi_maintr_bvalid),                      // output wire s_axi_maintr_bvalid
  .s_axi_maintr_bready(s_axi_maintr_bready),                      // input wire s_axi_maintr_bready
  .s_axi_maintr_bresp(s_axi_maintr_bresp),                        // output wire [1 : 0] s_axi_maintr_bresp
  .s_axi_maintr_arvalid(s_axi_maintr_arvalid),                    // input wire s_axi_maintr_arvalid
  .s_axi_maintr_arready(s_axi_maintr_arready),                    // output wire s_axi_maintr_arready
  .s_axi_maintr_araddr(s_axi_maintr_araddr),                      // input wire [31 : 0] s_axi_maintr_araddr
  .s_axi_maintr_rvalid(s_axi_maintr_rvalid),                      // output wire s_axi_maintr_rvalid
  .s_axi_maintr_rready(s_axi_maintr_rready),                      // input wire s_axi_maintr_rready
  .s_axi_maintr_rdata(s_axi_maintr_rdata),                        // output wire [31 : 0] s_axi_maintr_rdata
  .s_axi_maintr_rresp(s_axi_maintr_rresp),                        // output wire [1 : 0] s_axi_maintr_rresp
  .gt_clk_in(gt_clk_in),                                          // input wire gt_clk_in
  .drpclk_in(drpclk_in),                                          // input wire drpclk_in
  .refclk_in(refclk_in),                                          // input wire refclk_in
  .buf_lcl_response_only_out(buf_lcl_response_only_out),          // output wire buf_lcl_response_only_out
  .buf_lcl_tx_flow_control_out(buf_lcl_tx_flow_control_out),      // output wire buf_lcl_tx_flow_control_out
  .idle2_selected(idle2_selected),                                // output wire idle2_selected
  .idle_selected(idle_selected),                                  // output wire idle_selected
  .buf_lcl_phy_buf_stat_out(buf_lcl_phy_buf_stat_out),            // output wire [5 : 0] buf_lcl_phy_buf_stat_out
  .phy_clk_in(phy_clk_in),                                        // input wire phy_clk_in
  .gt0_qpll_clk_in(gt0_qpll_clk_in),                              // input wire gt0_qpll_clk_in
  .gt0_qpll_out_refclk_in(gt0_qpll_out_refclk_in),                // input wire gt0_qpll_out_refclk_in
  .phy_rst_in(phy_rst_in),                                        // input wire phy_rst_in
  .
02-29 08:09