AXI Memory Mapped to PCI Express 学习笔记(四)——仿真设计

news2024/11/24 8:42:54

本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。

一、仿真设计概述

在仿真设计中,事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core,并在AXI块RAM控制器设计中进行处理。
AXI-PCIe块的Endpoint配置的示例仿真设计由几部分组成:
Root Port模型
这是模拟PCIe总线操作的测试平台,它模拟了一个PCIe Root Port的行为,用于与AXI-PCIe块的Endpoint进行通信。这个模型能够生成PCIe事务,并检查来自Endpoint的响应是否正确。此外,它还可以捕获和记录总线上的流量,以便进行进一步的分析和验证。
AXI Memory Mapped to PCI Express core
这是作为Endpoint配置的PCIe core,它接收来自Root Port的PCIe事务,并将它们转换为AXI接口可以理解的格式。
AXI块RAM控制器
它则代表了AXI接口的存储器映射端。它实现了AXI接口协议,使得AXI-PCIe块能够与FPGA上的其他AXI兼容组件进行通信。在此示例设计中,AXI块RAM控制器被用作一个简单的存储器,模拟了Endpoint配置中AXI接口的功能。
这个示例设计提供了一个完整的PCIe通信链路模拟环境,用于验证AXI-PCIe块的功能和性能。但是,这只是一个示例设计,用于说明AXI-PCIe块如何与Root Port和AXI接口进行交互。
图5-1展示了AXI Memory Mapped to PCI Express core的仿真设计。
在这里插入图片描述
注意:这个例程支持Verilog作为目标语言。

二、定义和生成例程

在“Customize IP”对话框中,为例程进行以下选择:
1、在“PCIE:Basics”页面上,示例设计仅支持Endpoint(EP)设备。
2、支持默认的“PCIE:ID”设置。
3、支持默认的“PCIE:BARS”设置。
4、支持默认的“PCIE:Misc”页面设置。
5、在“AXI:BARS”页面上,为基地址、高地址以及AXI到PCIe转换值分配默认值。
6、支持默认的“AXI:System”页面设置。
注意:在自定义IP core后,右键单击组件名称,然后选择“Open IP Example Design”。这将打开一个单独的例程。请按照下一节中的步骤来仿真IP core。

三、模拟示例设计

示例设计可以使用以下任一配置来运行:
Vivado模拟器
默认情况下,模拟器设置为Vivado模拟器。要运行仿真,请在Flow Navigator中点击“运行行为仿真”(Run Behavioral Simulation)。
Cadence IES模拟器
在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。
Mentor Graphics Questa高级模拟器
对于Questa高级模拟器仿真,需要执行以下步骤:
1、在Vivado IDE中,更改仿真设置如下:
目标模拟器:Questa Advanced Simulator/ModelSim
2、在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。
注意:为了成功运行Cadence IES或Mentor Graphics Questa高级模拟器,可能需要在开发环境中安装相应的模拟器软件,并确保它们与Vivado IDE正确集成。此外,某些模拟器可能需要特定的库文件或配置设置才能与您的设计兼容。
• VCS模拟器
对于VCS仿真,需要执行以下步骤:
1、在Vivado IDE中,更改仿真设置,选择目标模拟器为Verilog Compiler Simulator (VCS)。VCS是一个高性能的Verilog和SystemVerilog仿真器,广泛用于硬件设计和验证。
2、在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。这将启动VCS仿真器,并加载您的设计以进行仿真。
另外,VCS通常也提供了一些高级功能和选项,如编译优化、性能分析和调试工具等。可以根据需要启用这些功能,以提高仿真性能和调试效率。

四、实施设计

为了实施设计,AXI块RAM控制器可以用作向块RAM位置写入和读取的暂存存储器。
1、AXI Memory Mapped to PCI Express core封装内容
• 一个示例Verilog HDL或VHDL封装(实例化核心和示例设计)。
定义了如何实例化PCIe core和其他必要的组件来构建完整的示例设计。这个文件将包括所有必要的端口映射和连接,以确保core和其他组件之间的正确通信。
• 一个可定制的演示测试平台,用于模拟示例设计。
这个测试平台是一个模拟环境,用于运行示例设计并验证其功能。它通常包括测试向量(即,输入数据和预期输出),用于驱动示例设计的输入端口,并检查输出端口的行为是否符合预期。测试平台还可能包括一些辅助函数和工具,用于初始化仿真环境、控制仿真流程以及收集和报告结果。
通过运行这个可定制的测试平台,可以在仿真环境中模拟示例设计的行为,并检查其是否按预期工作。这有助于在硬件实现之前发现和修复设计中的问题,从而节省时间和成本。
2、示例设计输出结构
图5-2展示了示例设计的输出结构。该图提供了一个可视化的表示,说明了示例设计在仿真或实际硬件运行期间产生的输出数据的组织和布局。
在这里插入图片描述
通常,输出结构会包括以下几个关键组成部分:
PCIe事务输出
显示了通过PCIe接口发送和接收的事务。这可能包括数据包、帧或其他PCIe协议层的数据单元。这些事务可能包括读请求、写请求、完成包等,具体取决于设计的PCIe功能和所执行的操作。
AXI接口输出
示例设计可能通过AXI接口与其他组件(如AXI块RAM控制器)进行通信。AXI接口的输出将显示通过这些接口传输的数据和命令。这可能包括AXI读写请求、响应以及数据传输等。
状态和控制信号
输出结构还可能包括各种状态和控制信号,用于指示设计的当前状态或控制其操作。例如,可能有信号指示PCIe链路的连接状态、事务的完成状态、错误状态等。
调试和监视信息
为了方便调试和性能分析,输出结构还可能包含调试和监视信息。这可能包括内部信号的状态、时序信息、性能计数器等。
Table 5-1 提供了对示例设计目录内容的描述。
在这里插入图片描述

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

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

相关文章

ubuntu+clangd+vscode 实现项目代码快速跳转(如: Linux 内核源码)

1. 准备工作 虚拟机 ubuntu 环境,笔者用的是 ubuntu20.04。windows 安装好 vscode 软件。 2. 配置过程 2.1 vscode远程连接 ubuntu ubuntu 虚拟机开启 ssh 服务 sudo apt install openssh-server sudo service ssh startvscode 安装 remote-ssh 插件 vscode 远…

前端三剑客 —— CSS (上)

上节内容中提到了 前端三剑客 —— HTML 超文本标记语言,这节内容 跟大家讲述三剑客中的第二个 CSS。 CSS 什么是CSS Cascading Style Sheel,简称CSS,中文叫层叠样式表,也叫级联样式表。主要作用是来修饰HTML页面的一种技术。 …

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件(本章) 第四章 底部嵌入HwndHost 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Conten…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

Python进阶编程 --- 1.类和对象

文章目录 第一章:1.初始对象1.1 使用对象组织数据1.2 类的成员方法1.2.1 类的定义和使用1.2.2 创建类对象1.2.3 成员变量和成员方法1.2.4 成员方法的定义语法1.2.5 注意事项 1.3 类和对象1.3.1 基于类创建对象 1.4 构造方法1.5 其他内置方法1.5.1 魔术方法str字符串…

http认证

1.Digest认证 各字段含义: Nonce 服务器直接返回的数据 H1MD5(user”:”realmpassword) H2MD5(method”:”url) method为请求类型、url不包括域名 Nc 指当前的第几次请求,使用8位16进制显示 Cnonce 8位随机字符串 ResponseMD5(H1”:”nonce”:”…

Mysql---安全值守常用语句

文章目录 目录 文章目录 一.用户权限设置 用户设置 元数据查询 Union联合查询 分组查询 字符串函数 总结 一.用户权限设置 用户设置 #用户创建 create user "用户名""%主机名" identified by "密码" #用户删除 drop user 用户名 #用户查询…

ACGO愚人节欢乐赛#18

念旧的人,注定被困在回忆里 解题思路: 将数组升序排序,然后找每m个数的最大值减最小值的最小值,如不不排序直接判断的话,不能保证最优解。注意判断每m个数时都要赋值初值,避免影响结果 下面是c代码&#…

光明源@智慧厕所公厕软件系统有哪些核心功能?

在现代城市的建设中,智慧公厕的建设成为了提升城市品质和居民生活质量的重要举措。而智慧公厕的核心,不仅仅在于其硬件设备的智能化,同样重要的是其背后支持的智慧厕所公厕软件系统。让我们一起探讨,智慧厕所公厕软件系统有哪些核…

深度学习基础模型之Mamba

Mamba模型简介 问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长…

【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)

目录 前言 C关键字 命名空间 1.命名空间的定义 A.标准命名空间定义 B.命名空间允许嵌套定义 C.同名命名空间的合并 2.命名空间的使用 加命名空间名称及作用限定符 使用using将命名空间中某个成员引入 使用using namespace命名空间名称引入 C的输入和输出 缺省参数…

【LeetCode热题100】739. 每日温度(栈)

一.题目要求 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 二.题目难度…

上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照,特别是那种几百人、上千人的合照,应该就…

基于SpringBoot的“校园志愿者管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园志愿者管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面图 志愿者注册…

数据分析之POWER Piovt透视表分析

将几个数据表之间进行关联 生成数据透视表 超级透视表这里的字段包含子字段 这三个月份在前面的解决办法 1.选中这三个月份,鼠标可移动的时候移动到后面 2.在原数据进行修改 添加列获取月份,借助month的函数双击日期 选择月份这列----按列排序-----选择月…

记录rocketMQ5.+启动报错解决过程

1.根据官方文档指引下载对应的rocketMQ源码包,上传到服务器解压 2. 启动NameServer nohup sh bin/mqnamesrv & 验证namesrv是否启动成功 tail -f ~/logs/rocketmqlogs/namesrv.log The Name Server boot success… 3.启动BrokerProxy nohup sh bin/mqbroker -n …

活动图高阶讲解-14

37 00:02:26,000 --> 00:02:32,000 接下来,我们看下一个知识点,就是决策 38 00:02:32,000 --> 00:02:38,000 就是令牌的一种什么, 39 00:02:38,000 --> 00:02:42,000 一种分流, 40 00:02:42,000 --> 00:02:47,000 它走哪个流, 41 00:02:…

C语言函数间参数传递

在C语言中,函数是程序的基本组成单元之一,而参数传递则是函数间交换信息的重要方式之一。本文将探讨C语言中函数间参数传递的各种方式及其特点。 以下是我整理的关于C语言的一些入门级资料,免费分享给大家:https://m.hqyjai.net/…

怎么让ChatGPT批量写作原创文章

随着人工智能技术的不断发展,自然语言处理模型在文本生成领域的应用也日益广泛。ChatGPT作为其中的佼佼者之一,凭借其强大的文本生成能力和智能对话特性,为用户提供了一种高效、便捷的批量产出内容的解决方案。以下将就ChatGPT批量写作内容进…