本文主要是介绍SRIO--IP讲解及环回测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、IP例化文件
- 二、SRIO环回工程搭建
- 三、板级验证
- 3.1 本实验的板级验证环节,主要验证以下几个目标:
- 3.2 系统所需硬件
- 3.3 ILA波形
前言
本章将为大家介绍 “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.
这篇关于SRIO--IP讲解及环回测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!