SRIO--IP讲解及环回测试

2024-02-29 03:44
文章标签 讲解 ip 测试 环回 srio

本文主要是介绍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讲解及环回测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757483

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服