AXI Memory Mapped to PCI Express 学习笔记(五)—— Test Bench

本文包含有关Vivado Design Suite环境中提供的测试平台(Test Bench)的信息。

一、Endpoint的Root Port模型测试平台

PCI Express Root Port Model是一个强大的测试平台环境,它提供了一个测试程序接口,可以与提供的PIO设计(Programmed Input-Output,指的是可编程输入输出。在PCIe通信中,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理)或用户设计一起使用。Root Port Model的目的是提供一个源机制,用于生成下游PCI Express TLP(事务层数据包)流量以便对设计进行仿真,并提供一个目标机制,用于在仿真环境中接收来自设计的上游PCI Express TLP流量。
源代码中包含Root Port Model,这是为测试平台提供起点模型。所有关于初始化配置空间、创建TLP事务、生成TLP日志以及提供创建和验证测试的接口的重要工作都已经完成,这方便设计师将精力集中在验证设计的正确功能上,而不是花费时间在开发Endpoint core测试平台基础设施上。
Root Port Model包括以下内容:
• 测试程序接口(TPI),这是为了模拟模型中的Endpoint设备。
• 示例测试,说明如何使用测试程序TPI。
图1展示了Root Port Model与PIO设计相结合的情景。
在这里插入图片描述

二、架构

Root Port Model主要由以下模块组成,这些模块在图6-1中进行了说明:
• dsport(Root Port)
• usrapp_tx
• usrapp_rx
• usrapp_com(仅Verilog)
usrapp_tx和usrapp_rx模块与dsport模块进行接口连接,以便向待测试的Endpoint Design Under Test (DUT)发送和接收TLPs(事务层数据包)。Endpoint DUT包括AXI-PCIe的Endpoint和Block RAM控制器设计(Figure 6-1中已展示)或用户设计。
usrapp_tx模块将TLPs发送到dsport模块,以便通过PCI Express链路传输到Endpoint DUT。反过来,Endpoint DUT设备通过PCI Express链路将TLPs传输到dsport模块,然后这些TLPs被传递给usrapp_rx模块。在通过PCI Express逻辑进行通信时,dsport和core负责数据链路层和物理链路层的处理。usrapp_tx和usrapp_rx都使用usrapp_com模块来执行共享功能,例如TLP处理和日志文件输出。
事务序列或测试程序由usrapp_tx模块发起,以模拟Endpoint设备的逻辑接口。来自Endpoint设备的TLP响应由usrapp_rx模块接收。usrapp_tx和usrapp_rx模块之间的通信允许usrapp_tx模块验证Endpoint设备的正确行为,并在usrapp_rx模块从Endpoint设备接收到TLPs时相应地采取行动。
通过这种架构和机制,测试人员能够精确地控制测试流程,并实时地验证Endpoint设备的响应是否符合预期。

三、Root Port的Endpoint模型测试平台

Root Port配置中AXI Memory Mapped to PCI Express core的Endpoint模型测试平台是一个简单的示例测试平台,它连接Configurator示例设计和PCI Express Endpoint模型,使两者像物理系统中的两个设备一样运行。由于Configurator示例设计包含初始化自身的逻辑以及生成和消耗总线流量的逻辑,因此示例测试平台仅实现了用于监控系统运行和终止仿真的逻辑。
Endpoint模型测试平台包含以下部分:
• 所有Endpoint模型组件的Verilog源代码
• PIO从设备设计
在这里插入图片描述
PIO从设备设计通常指的是一个可编程输入/输出(PIO)的接口,它作为PCI Express Endpoint的一个组件,允许主机(或Root Port)访问和控制Endpoint的某些功能或资源。PIO从设备设计通常包括逻辑来解码传入的TLPs,识别它们是否是针对PIO空间的请求,并执行相应的读写操作。在测试平台中,PIO从设备设计将模拟Endpoint的PIO接口,并与Configurator示例设计进行交互,以验证PIO操作的正确性。
测试平台通过配置和连接这些组件,能够模拟一个完整的PCI Express通信环境,从而验证Endpoint设计的正确性和性能。通过监控仿真过程中的系统行为,测试人员可以收集有关Endpoint模型如何响应不同TLPs的信息,并检查是否有任何错误或不符合预期的行为。

四、架构

Endpoint模型由以下模块组成:
• PCI Express Endpoint(在Endpoint配置中AXI Memory Mapped to PCI Express)模型。
• PIO从设备设计,包括:
pio_rx_engine(PIO接收引擎)
pio_tx_engine(PIO发送引擎)
pio_ep_mem(PIO端点内存)
pio_to_ctrl(PIO到控制器的接口)
pio_rx_engine和pio_tx_engine模块与ep模块进行接口连接,用于从Root Port DUT接收和发送TLPs(事务层数据包)。Root Port DUT由配置为Root Port的core以及Block RAM控制器组成,同时包含σ_αξι和s_axi_ctl模型,用于在s_axi和s_axi_ctl上驱动流量。
PIO从设备设计提供了与Root Port进行通信的接口,使得Endpoint能够响应来自Root Port的PIO读写请求。pio_rx_engine负责接收来自Root Port的PIO读请求,并协调从Endpoint内存中读取相应的数据,然后通过pio_tx_engine发送回Root Port。相反,当Root Port发起PIO写请求时,pio_rx_engine接收TLPs,并将数据写入Endpoint内存。
PIO从设备设计还包括pio_ep_mem,它代表Endpoint的内存空间,并存储PIO操作所需的数据。pio_to_ctrl模块可能用于管理PIO操作的控制逻辑,确保PIO引擎与Endpoint内存之间的数据一致性。
通过这种架构,Endpoint模型能够模拟一个真实的PCI Express Endpoint设备,并与Root Port DUT进行交互,以验证PIO操作的功能性和性能。这有助于测试人员确保Endpoint模型在PCI Express通信环境中的正确性和可靠性,为进一步的集成和验证工作奠定基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/775905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷_P4995 跳跳!_python写法

P4995 跳跳&#xff01; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) n int(input()) data list(map(int,input().split())) data.append(0) data.sort()sum 0 l 0 r len(data)-1 flag 1 while l<r:sum (data[l]-data[r])**2if flag:l 1flag 0else:r - 1flag 1…

LinkedList讲解指南

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

教育数字化调研团走进锐捷,共议职业教育数字化转型新思路

为贯彻落实国家教育数字化战略行动部署和2024年全国教育工作会议精神,加快推进职业教育数字化转型与发展,梳理职业教育数字化转型的现状、问题及发展趋势,并总结展示职业教育数字化转型的好经验、好做法,培育职业教育数字化创新成果,推动数字技术与职业教育深度融合、提高数字化…

SpringBoot + Vue 是否可以不分离前后端?

Spring Boot 和 Vue.js 是两个非常流行的技术栈&#xff0c;分别用于构建后端和前端应用程序。在传统的开发中&#xff0c;通常会将它们分离开发&#xff0c;即后端和前端分别独立开发、部署和维护。然而&#xff0c;你也可以选择不分离前后端&#xff0c;将它们整合在一起开发…

ensp的PPP实验报告

实验要求&#xff1a; 1、R1和R2使用PPP链路直连&#xff0c;R2和R3把2条PPP链路捆绑为PPP MP直连 2、按照图示配置IP地址 3、R2对R1的PPP进行单向chap验证 4、R2和R3的PPP进行双向chap验证 1、配置ip地址 R1&#xff1a; [R1] int Serial 3/0/0 [Rl-Seria13/0/0] ip add 192…

【Java 面试题】instanceof 关键字的作用

instanceof 关键字的作用&#xff1f; instanceof关键字是Java中的一个运算符&#xff0c;用于检查一个对象是否是某个类的实例&#xff0c;或者是否实现了某个接口。其作用可以概括如下&#xff1a; 判断对象类型&#xff1a; 使用instanceof可以判断一个对象是否是某个类的实…

机器学习——聚类算法-DBSCAN

机器学习——聚类算法-DBSCAN DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种基于密度的聚类算法&#xff0c;可以发现任意形状的簇&#xff0c;并能有效处理噪声数据。本文将介绍DBSCAN算法的核心概念、算法流程、优缺点…

for in 和 for of的区别

区别一&#xff1a;for in 和 for of 都可以循环数组&#xff0c;for in 输出的是数组的index下标&#xff0c;而for of 输出的是数组的每一项的值。 const arr [1,2,3,4,5]// for ... in for (const key in arr){console.log(key) // 输出 0,1,2,3,4}// for ... of for (con…

C语言基于TCP的多线程服务器

核心思想: 1 在无限循环中 accpet()后 创建线程 2 预防多线程下的数据竞态: accept()返回的client_sockfd 是否可以直接填入pthread_create()作为创建线程的参数? 我们观察到 while(1)中并没有阻塞的函数,假设accept()的速度足够快 他会不断地更新client_sockfd的值,而传…

MyBatis-03

MyBatis 1.联查 1.1 一对一 例如&#xff0c;有user表和address表&#xff0c;其中每一个用户可以有多个地址&#xff0c;每个地址只能对应一个用户 以address表为主表&#xff0c;user表为副表&#xff0c;通过address表联查user表的形式就是一对一 如何进行一对一查询&a…

Kali远程操纵win7

一.准备 1.介绍 攻击方&#xff1a;kali IPV4:192.168.92.133 被攻击方&#xff1a;win7 IPV4:192.168.92.130 2.使用永恒之蓝漏洞 (1.使用root权限 (2.进入msfconsole (3.添加rhosts (4.run进行一下 二.进行远程操作 1.获取用户名和密码 在cmd5查询 2.获取syste…

抓包工具charles修改请求和返回数据

数据篡改的主要使用场景&#xff1a; &#xff08;1&#xff09;mock场景&#xff0c;mock入参和返回值参数&#xff0c;实现mock测试 &#xff08;2&#xff09;安全测试&#xff0c;对于支付金额等比较重要的字段&#xff0c;可以修改请求参数来进行安全测试 1.首先选择要…

[数据集][目标检测]道路交通事故检测数据集VOC+YOLO格式11819张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;11819 标注数量(xml文件个数)&#xff1a;11819 标注数量(txt文件个数)&#xff1a;11819 标…

Qt中QIcon图标设置(标题、菜单栏、工具栏、状态栏图标)

1 exe程序图标概述 在 Windows 操作系统中&#xff0c;程序图标一般会涉及三个地方&#xff1b; &#xff08;1&#xff09; 可执行程序&#xff08;以及对应的快捷方式&#xff09;的图标 &#xff08;2&#xff09; 程序界面标题栏图标 &#xff08;3&#xff09;程序在任务…

[激光原理与应用-77]:基于激光器加工板卡的二次开发软件的系统软硬件架构

目录 一、1个板卡、1个激光器、1个振镜的应用架构、1个工位 &#xff08;1&#xff09;PLC &#xff08;2&#xff09;MES &#xff08;3&#xff09;加工板卡 &#xff08;4&#xff09;激光加工板卡与激光器之间的转接卡 &#xff08;5&#xff09;DB25、DB15 &#x…

Typecho如何去掉/隐藏index.php

Typecho后台设置永久链接后&#xff0c;会在域名后加上index.php&#xff0c;很多人都接受不了。例如如下网址&#xff1a;https://www.jichun29.cn/index.php/archives/37/&#xff0c;但我们希望最终的形式是这样&#xff1a;https://www.jichun29.cn/archives/37.html。那么…

图神经网络实战(6)——使用PyTorch构建图神经网络

图神经网络实战&#xff08;6&#xff09;——使用PyTorch构建图神经网络 0. 前言1. 传统机器学习与人工智能2. 人工神经网络基础2.1 人工神经网络组成2.2 神经网络的训练 3. 图神经网络4. 使用香草神经网络执行节点分类4.1 数据集构建4.2 模型构建4.3 模型训练 5. 实现香草图神…

大话设计模式之装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象动态地添加新功能&#xff0c;同时又不改变其结构。装饰模式通过将对象放入包装器中来实现&#xff0c;在包装器中可以动态地添加功能。 在装饰模式中&#xff0c;通常会有…

【教程】JavaScript代码混淆及优化

摘要 本文将介绍常见的JavaScript代码混淆技术&#xff0c;包括字符串转十六进制、Unicode编码、Base64加密、数值加密、数组混淆、花指令、逗号表达式、控制流程平坦化和eval执行。通过对这些混淆技术的理解和应用&#xff0c;可以提高代码的安全性和保护知识产权。 引言 随…

(4)(4.3) Kogger Sonar

文章目录 前言 1 推荐硬件 2 配置回声探测仪模块 3 连接ArduPilot硬件 4 参数说明 前言 KOGGER 声纳(KOGGER Sonar)是一款结构紧凑、成本低廉的水下回声测深仪模块&#xff0c;带有 UART 接口&#xff0c;电源电压为 5-14v。 1 推荐硬件 CP210x USB->UART 转换器和安装…