Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录

1. 简介

2. 示例

2.1 示例说明

2.2 创建项目

2.2.1 平台信息

2.2.2 AXI NoC Automation

2.2.3 创建时钟和复位

2.3 配置 NoC

2.4 配置 AXI Traffic

2.5 配置 Memory Size

2.6 Validate BD

2.7 添加观察信号

2.8 运行仿真

2.9 查看结果

2.9.1 整体波形

2.9.2 事务详情

2.9.3 事务全过程解读

3. IP 介绍

3.1 AXI Traffic Generator

3.1.1 IP 简介

3.1.2 Config Tab

3.1.3 可综合配置

3.1.4 不可综合配置

3.2 AXI BRAM Controller

3.2.1 IP 简介

3.2.2 IP 配置

3.3 Embedded Memory Gen

3.3.1 IP 简介

3.3.2 单端口 RAM

3.3.3 简单双端口 RAM

3.3.4 真双端口 RAM

3.3.5 单端口 ROM

3.3.6 双端口 ROM

3.3.7 工作模式

4. 总结


1. 简介

Basic NoC Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_DesignAXI NoC 和 AXIS NoC

  • AXI NoC 支持 AXI 内存映射协议
  • AXIS NoC 支持 AXI4-Stream 协议

每实例指定了一组连接,这些连接将映射到物理 NoC 上,并为每条连接指定了 QoS 要求。

一个 Block Design 可以包含任意数量的这两种类型的实例。

IP 集成器自动汇总所有逻辑 NoC 实例的连接性和 QoS 信息,形成 NoC 编译器的统一流量规范。

MCs 被集成到 AXI NoC 核心中。一个AXI NoC IP实例可以配置为包含一个、两个或四个集成MC实例。

如果选择了两个或四个MC实例,它们将被配置为形成单一的交错内存。在这种情况下,内存控制器被配置得相同,并映射到相同的地址。

Interleaving 由 NoC 控制。

2. 示例

2.1 示例说明

该设计使用 AXI4 流量发生器读写块 RAM。具体步骤为:

  • 使用模拟时钟生成器、AXI4 流量生成器、AXI NoC、AXI4 Block RAM 控制器和内存生成器创建块 RAM 实例。
  • 采用自顶向下设计流程,在模块设计画布中实例化 AXI NoC IP。
  • 借助 IP 集成器推断 NoC、时钟发生器和互连。
  • 创建设计后进行仿真,以验证是否满足带宽要求。

2.2 创建项目

2.2.1 平台信息

1)软件版本为:Vivado 2024.2

2)Versal 器件为:XCVE2302-SFVA784-1LP-E-S

3)创建项目,新建 Block Design

4)添加 IP:AXI NoC IP

2.2.2 AXI NoC Automation

对 AXI NoC IP 进行自动化设计:

  • 去掉 CIPS 勾选框
  • AXI Tranffic Generator:1
  • AXI BRAM Controller:1
  • MC Type:None

(注意:Sources 和 Destinations,各选了一个)

得到如下结果:

生成了一些新的 IP:

  • Source 端:
    • Simulation Trigger For NoC AXI TG
    • Performance AXI Traffic Generator
  • Destination 端:
    • AXI BRAM Controller
    • Embeded Memory Generator
  • 时钟:
    • Simulation Clock and Reset Generator

2.2.3 创建时钟和复位

上一个步骤中生成的 Block Design,没有时钟和复位,执行 Run Connection Automation 可以自动生成。全部使用保持默认设置即可:

结果如下图所示:

生成了两个新的 IP:

  • Clock Wizard
  • Processor System Reset

Clock Wizard 的输出时钟驱动 Simulation Clock and Reset Generator 的输入时钟。

这有两个目的:

  • 在仿真阶段,时钟由 Simulation Clock and Reset Generator 驱动。
  • 在 Impl 阶段,时钟由 Clock Wizard 驱动,Simulation Clock and Reset Generator 将直通。

由于 Clock Wizard 的输入时钟和复位源尚未连接,运行连接自动化链接再次变为活动状态继续执行 Run Connection Automation。保持默认即可:

最终的 Block Design 如下:

2.3 配置 NoC

1)NoC 配置决定了设计要使用一组参数:

  • 入口和出口端口的数量和类型
  • 输入时钟与每个端口的关联
  • 入口和出口端口之间的路由连接
  • 每个连接所需的 QoS

2)Inputs / Outputs Tab 可查看输入输出端口的配置

在本例中,定义了一个输入和一个输出,均连接到 PL 域,关联时钟为 aclk0。

偶校验:启用从 AXI 主设备到 NMU 连接的偶校验。可用的校验选项有:

  • 无:不进行奇偶校验
  • 地址:启用 AXI 地址奇偶校验
  • 数据:启用 AXI 数据奇偶校验
  • 地址和数据:启用 AXI 地址和数据奇偶校验

3)Connectivity Tab

显示哪些 NoC 入口接口(例如 S00_AXI )将路由到哪些出口接口(例如 M00_AXI )。

4)QoS Tab

QoS 选项卡允许您为每个 NoC 连接选择服务质量 (QoS) 设置。第一行显示入口端口 ( S00_AXI ) 的 QoS 设置。请注意,默认的读取和写入流量类别是 BEST_EFFORT。

显示了来自所选入口端口的每个输出连接的 QoS 属性集。在此设计中,只有一个输出连接 ( M00_AXI ) 对应于块 RAM 控制器的 AXI4 端口。这里可以指定所需的读写带宽。默认值 1720 MB/s 就足够了。

2.4 配置 AXI Traffic

Performance AXI Traffic Generator v1.0

1)Non-systhesizable TG Options

2)Number of Write Transactions

执行 100 次传输操作。

2.5 配置 Memory Size

1)更改 BRAM 大小

无法在 Embedded Memory Generator 中直接修改,即使修改后,Validate 之后又会恢复修改之前的值。应当在 Address Editor 中修改。

此页面中, Memory Size(存储器大小)为 4K bytes。

当 validate_bd_design 运行时,该值将传播到:

  • AXI BRAM Controller
  • Embeded Memory Generator

2)查看 AXI BRAM Controller IP 中的结果

Memory Size = Data_Width × Memory_Depth =  32 bit × 1024 = 4K bytes。

3)查看 Embeded Memory Generator IP 中的结果

Write Width = Read Width = 32 bit。

Memory Size = Width × Memory_Depth =  32 bit × 1024 = 4K bytes。

2.6 Validate BD

NoC Validate the Block Design 会调用 NoC Compiler 来查找 NoC 的最佳配置。

NoC Compiler 执行以下功能:

  • 完成逻辑入口和出口端口到物理 NMU 和 NSU 资源的映射
  • 在 QoS 约束下,为所有指定连接找到 NoC 的最优路径
  • 配置 NoC 内部资源,使其能够实现路由方案

通过单击工具栏上的 Validate Design 图标(F6)来执行验证。

验证后,NoC 查看器显示编译结果,QoS 标签显示达成的服务质量。

2.7 添加观察信号

Vivado 仿真器有一个事务视图功能,可以更清晰地查看 AXI 总线事务的波形。

仿真时,使用事务视图观察流量发生器和 NoC 之间的接口。

在 Block Design 中,选中下图所示的红线部分,右键单击并标记 Mark Simulation。

这会指示仿真器捕获并显示这条线上的 AXI-MM 事务。

仿真前,需要创建一个顶层 HDL wrapper。

2.8 运行仿真

1)仿真设置

注意仿真设置的顶层(design_1_wrapper_sim_wrapper): 

2)生成行为 RTL 模型并启动模拟器

进入仿真 GUI: 

包含两个 

3)运行仿真

4)复位仿真

2.9 查看结果

2.9.1 整体波形

  • Outstanding Reads:未完成的读取过程
  • Outstanding Writes:未完成的写入过程

2.9.2 事务详情

1)鼠标悬停在某个事务上会弹出一个窗口,显示该事务的详细信息。

2)高亮显示事务流:点击事务的某个部分(比如 “Write Data”)会高亮显示相关的部分。

2.9.3 事务全过程解读

  • 红色序号1:Performance AXI Traffic Generator 发起读写事务,数据位宽 512 bit
  • 红色序号2:数据通过 AXI NoC 到达 AXI BRAM 控制器,数据位宽是 32 bit

整个写事务,耗时 103.354ns,103.354ns/3.334=31clks 个时钟周期。

写事务过程详细图示:

3. IP 介绍

3.1 AXI Traffic Generator

3.1.1 IP 简介

Performance AXI Traffic Generator,高性能 AXI 流量发生器。

它有两个版本:

  • 仅用于仿真的不可综合版本
  • 可用于仿真和在硬件中运行的可综合版本

Vivado 中包含两种 AXI 流量发生器:

《AXI Traffic Generator LogiCORE IP Product Guide (PG125)》

《Performance AXI Traffic Generator LogiCORE IP Product Guide (PG381)》

后者提供更多的特性:

  • 更精细的流量控制: 可以更精确地控制流量的类型、数量、时序等
  • 更灵活的配置选项: 可以根据不同的测试场景进行更灵活的配置
  • 对 Versal 器件的: 评估基于 NoC 的解决方案的性能

参考:

Performance AXI Traffic Generator - IP Release Notes and Known Issueshttps://adaptivesupport.amd.com/s/article/75781?language=zh_CNhttps://adaptivesupport.amd.com/s/article/75781?language=zh_CNhttps://adaptivesupport.amd.com/s/article/75781?language=zh_CNhttps://adaptivesupport.amd.com/s/article/75781?language=zh_CN

3.1.2 Config Tab

3.1.3 可综合配置

3.1.4 不可综合配置

3.2 AXI BRAM Controller

3.2.1 IP 简介

参考:《AXI Block RAM (BRAM) Controller v4.1 Product Guide(PG078)》

1)AXI4 BRAM Controller 框图

2)Features

  • 支持 32 位、64 位、128 位、256 位、512 位和 1024 位 BRAM 数据宽度。
  • 特殊的突发处理: 它将一种叫做“FIXED”的传输方式特殊处理为“INCR”方式,并且不支持“FIFO”方式。这是一种为了简化自身设计而采取的折衷方案。
  • 特定的传输长度: 对于不同的传输方式(WRAP、FIXED、INCR),它有预设的连续传输次数(分别为 16、16 和 256 次)。这就像预先设定好每次搬运多少箱货物。
  • 支持窄突发: 即使需要传输的数据量小于存储器一次能处理的数据量,它也能有效地进行处理。
  • 简单直接: 它只使用基本的通信信号,没有使用一些高级的优化技术(如用户信号、重排序、缓存或缓冲)。

3)Supported Memory Size

| Data Width (Bits) | Memory Depths (Words)                          |
|-------------------|------------------------------------------------|
| 32                | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k |
| 64                | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k |
| 128               | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k       |
| 256               | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k             |
| 512               | 512, 1k, 2k, 4k, 8k, 16k, 32k                  |
| 1024              | 512, 1k, 2k, 4k, 8k, 16k                       |
| 2048              | 512, 1k, 2k, 4k, 8k                            |

3.2.2 IP 配置

3.3 Embedded Memory Gen

参考:《Embedded Memory Generator LogiCORE IP Product Guide (PG326)》

3.3.1 IP 简介

Embedded Memory Generator IP 是一个高级存储器构造器,它使用 AMD 器件中的 Block RAM、UltraRAM 和 Distributed RAM 资源生成 Area and Performance-optimized 的存储器。

典型应用包括一下内容:

3.3.2 单端口 RAM

1)定义: 就像一条单行道,只有一个入口/出口。数据只能按顺序写入和读取,不能同时进行读写操作。

2)应用场景:

  • 处理器暂存 RAM(Scratch RAM): 用于处理器执行运算时的临时数据存储,速度快,但容量通常不大。例如,在进行复杂的数学计算时,中间结果可以先存放在暂存 RAM 中,运算完成后再取出。
  • 查找表(Look-Up Table, LUT): 用于存储预先计算好的数据,通过输入地址直接查找对应的值,提高运算速度。例如,在图像处理中,可以使用 LUT 来快速进行颜色转换。

3.3.3 简单双端口 RAM

1)定义: 像一条有两条独立的入口/出口的通道,可以同时进行读写操作,但通常有一些限制。例如,可能只允许一个端口读,另一个端口写,或者读写操作不能在同一地址进行。

2)应用场景:

  • 内容可寻址存储器(Content Addressable Memory, CAM): 与普通 RAM 通过地址查找数据不同,CAM 通过内容查找数据。输入一个数据,CAM 会返回该数据所在的地址。简单双端口 CAM 可以实现快速查找,但写入操作可能需要一些额外的控制。
  • FIFO(First-In, First-Out): 是一种先进先出的数据结构,数据从一个端口写入,从另一个端口按相同的顺序读出,就像排队一样。简单双端口 RAM 可以方便地实现 FIFO 功能,用于数据缓冲和传输。

3.3.4 真双端口 RAM

1)定义: 像一条有两条完全独立的双向车道,两个端口可以完全独立地同时进行读写操作,互不干扰。
2)应用场景:

  • 多处理器存储: 允许多个处理器同时访问同一块存储空间,实现数据的共享和交换。例如,在一个多核处理器系统中,不同的核心可以通过真双端口 RAM 共享数据,提高系统的并行处理能力。

3.3.5 单端口 ROM

1)定义: 只能读取数据,不能写入数据,数据在出厂前或烧录时就已经确定。类似于一张只读光盘。
2)应用场景:

  • 程序代码存储: 用于存储程序的指令代码,处理器从 ROM 中读取指令并执行。
  • 初始化 ROM: 用于存储系统的初始化代码和配置信息,在系统启动时加载。

3.3.6 双端口 ROM

1)定义: 有两个独立的读取端口,可以同时被两个不同的设备读取,但数据仍然是只读的。

2)应用场景:

  • 在两个处理器/系统之间共享的单个 ROM: 允许多个处理器或系统共享同一份只读数据,例如共享同一份固件代码或查找表,节省存储空间。

3.3.7 工作模式

该 IP 核在 Block Design 中使用的模式。

使用 IP 集成器时有两种模式可用,默认模式是 Memory Controller。

1)存储器控制器模式

  • 如果使用 AXI BRAM Controller 或 LMB BRAM Controller,请选择此模式。
  • 所有端口参数都将灰显,因为它们是从主设备生成的。

2)独立模式

  • 如果您使用自定义接口控制器,请选择此模式。可以选择和更新所有可用的参数。

4. 总结

本示例,使用 AXI4 流量发生器,通过 NoC 读写块 RAM。

  • IP 包括:模拟时钟生成器、AXI4 流量生成器、AXI NoC、AXI4 Block RAM 控制器和内存生成器创建块 RAM。
  • 通过 IP 集成器推断 NoC、时钟发生器和互连。
  • 创建设计后进行仿真,详细分析传输流程和时延。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iperf 测 TCP 和 UDP 网络吞吐量

注:本文为 “iperf 测网络吞吐量” 相关文章合辑。 未整理去重。 使用 iperf3 监测网络吞吐量 Tom 王 2019-12-21 22:23:52 一 iperf3 介绍 (1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽…

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构,该结构在一个基数组(cardinal group)内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…

自动驾驶---苏箐对智驾产品的思考

1 前言 对于更高级别的自动驾驶,很多人都有不同的思考,方案也好,产品也罢。最近在圈内一位知名的自动驾驶专家苏箐发表了他自己对于自动驾驶未来的思考。 苏箐是地平线的副总裁兼首席架构师,同时也是高阶智能驾驶解决方案SuperDri…

【C++】内联函数inline、关键字auto与新式for

内联函数 内联函数背景 我们在使用C语言中我们都学过函数,我们知道函数在调用的过程中需要开辟栈帧。如果我们需要频繁的调用一个函数,假设我们调用10次Add()函数,那我们就需要建立10次栈帧。我们都知道在栈帧中要做很多事情,例如…

Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?

文章目录 13003数据结构与算法全书框架考试题型的分值分布如何? 本次内容概述绪论第一节概览什么是数据、数据元素,数据项,数据项的值?什么是数据结构?分哪两种集合形式(逻辑和存储)&#xff1f…

论文阅读(十六):利用线性链条件随机场模型检测阵列比较基因组杂交数据的拷贝数变异

1.论文链接:Detection of Copy Number Variations from Array Comparative Genomic Hybridization Data Using Linear-chain Conditional Random Field Models 摘要: 拷贝数变异(CNV)约占人类基因组的12%。除了CNVs在癌症发展中的…

深入理解若依RuoYi-Vue数据字典设计与实现

深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components:数据字典组件、字典标签组件 工具目录src/utils:字典工具类 store目录src/store:字典数据 main.js:字典数据初始化 页面使用字典例子&#xf…

思维练习题

目录 第一章 假设法1.题目1. 如何问问题2. 他们的职业是分别什么3. 谁做对了4. 鞋子的颜色 2.答案 空闲时间写一些思维题来锻炼下思维逻辑(题目均收集自网上,分析推理为自己所写)。 第一章 假设法 一个真实的假设往往可以让事实呈现眼前&…

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal,选择版本后点击“install”执行安装

DVC - 数据版本和机器学习实验的命令行工具和 VS Code 扩展

文章目录 一、关于 DVC二、快速启动三、DVC的工作原理四、VS代码扩展五、安装Snapcraft(Linux)Chocolatey (Windows)Brew (mac OS)Anaconda (Any platform)PyPI(Python)Package (Platform-specific)Ubuntu / Debian (deb)Fedora /…

实现前端当中的页面过渡动画

使用 HTML、CSS 和 JavaScript 实现页面过渡动画 在现代网页设计中,用户体验是至关重要的。而页面切换时的平滑过渡效果,不仅能让界面更加美观,也能增强用户的互动体验。 引言 作为一名热爱前端开发的程序员,我一直在寻找能提…

AJAX笔记入门篇

黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…

ts 进阶

吴悠讲编程 : 20分钟TypeScript进阶!无废话快速提升水平 前端速看 https://www.bilibili.com/video/BV1q64y1j7aH

望获实时Linux系统:2024回顾与2025展望

2024年回顾 功能安全认证 2024年4月,望获操作系统V2获ISO26262:2018功能安全产品认证(ASIL B等级),达到国际功能安全标准。 EtherCAT实时性增强 2024年5月,发布通信实时增强组件,EtherCAT总线通信抖…

linux监控脚本+自动触发邮件发送

linux脚本 需求: CPU 负载:使用 uptime 命令,我们可以清楚地了解系统的 CPU 负载情况。这个命令会显示系统在过去 1 分钟、5 分钟和 15 分钟的平均负载。高负载可能意味着系统正在处理大量的任务,可能会导致性能下降或服务响应延迟…

软件工程概论试题一

一、单选 1.下面关于“发布测试”的观点错误的是( )。 A.系统开发团队不应该负责发布测试 B.发布测试是一个确认检查的过程 C.发布测试的目的是让系统供应商确信系统足够好可以使用了 D.发布测试通常采用白盒测试 正答:D 2.下图最有可能是()体系结构风格。 A. C…

iPhone SE(第三代) 设备详情图

目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn

基于物联网设计的疫苗冷链物流监测系统

一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新,疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流,温度、湿度等环境因素的控制直接关系到疫苗的质量和效力,因此高效、可靠的冷链监控系统显得尤为重要。冷…

ZZNUOJ(C/C++)基础练习1000——1010(详解版)

目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一:使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式,设置type加载数据类型 设置线条 鼠标移入改变颜色,设置图层属性,此处是fill-extru…