0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Versal中通过NoC从PS-APU对AXI BRAM执行基本读写操作

XILINX开发者社区 来源:XILINX开发者社区 作者:XILINX开发者社区 2022-11-09 10:24 次阅读

本篇博文旨在演示如何通过 NoC 从 Versal 应用处理单元 (APU) 访问 AXI BRAM。

设计示例是使用 Vivado 2020.2 版本创建的,评估板使用的是 VCK190 评估板。

Versal

Versal 架构将“Scalar Engine”(标量引擎)、“Adaptable Engine”(自适应引擎)和“Intelligent Engine”(智能引擎)这三种不同类型的引擎与丰富的连接和通信功能以及片上网络 (NoC) 有机结合,从而支持实现覆盖整个器件的无缝式存储器映射访问。

智能引擎包括:

SIMD VLIW AI 引擎,适用于自适应推断和高级信号处理计算

DSP 引擎,适用于定点运算、浮点运算和复杂的 MAC 运算。

自适应引擎将可编程逻辑块与存储器有机结合,它具备专为应对高计算密度需求而设计的架构。
标量引擎包括 Arm Cortex-A72 和 Cortex-R5 处理器,支持计算密集型任务。

片上网络 (NoC)

片上网络 (NoC) 是一个 AXI 互连网络,用于在可编程逻辑 (PL)、处理器系统 (PS) 和其它硬核块中的 IP 端点之间共享数据。
此基础架构覆盖整个器件,基于专有的切换开关形成高速集成的数据路径。

模块框图

218a5e1a-5f5b-11ed-8abf-dac502259ad0.png

Vivado 步骤

步骤 1:

以 VCK190 评估板为目标创建工程,并在 IP integrator 内创建块设计。
步骤 2:

添加 versal_cips IP (Control, Interfaces and Processing System),并运行块自动化设置。在设置中配置 NoC 的存储器控制器 (DDR4),并将 PL 时钟和 PL 复位的数量配置为 1。

21a7ab32-5f5b-11ed-8abf-dac502259ad0.png

步骤 3:

双击打开 NoC IP,在“General”(常规)选项卡中进行以下设置:
Number of AXI Master Interfaces(AXI 主接口数)= 1
Number of AXI Clocks(AXI 时钟数)= 7

21d4afec-5f5b-11ed-8abf-dac502259ad0.png

步骤 4:

转至“Connectivity”(连接)选项卡,检查 S0xAXI 与 M00_AXI 之间的连接,然后单击“OK”(确定)。

2212c926-5f5b-11ed-8abf-dac502259ad0.png

步骤 5:

将 AXI BRAM 添加到块设计中,单击“Run Connection Automation”(运行自动连接),然后选中 pl_clk0 作为从接口的时钟源。

2237f778-5f5b-11ed-8abf-dac502259ad0.png

步骤 6:

再次运行“Run Connection Automation”,配置 ext_reset_in接口。

225a81d0-5f5b-11ed-8abf-dac502259ad0.png

步骤 7:

运行“validation”(确认)步骤,确认成功后,检查“Address Editor”(地址编辑器)选项卡。

22bcdd30-5f5b-11ed-8abf-dac502259ad0.png

步骤 8:

为 BD 创建顶层文件,运行综合与实现,然后生成器件镜像。

步骤 9:

导出硬件设计以获取 XSA 文件。

Vitis 步骤

步骤 1:

在 Vitis 中创建新的应用工程,然后切换至“Create a new platform from hardware”(基于硬件创建新平台)选项卡。
单击“+”,选择从 Vivado 导出的 XSA 文件。

22fe1d7c-5f5b-11ed-8abf-dac502259ad0.png

步骤 2:

提供工程名称,并选择处理器。

2339d31c-5f5b-11ed-8abf-dac502259ad0.png

步骤 3:

选择 Hello World 模板,然后单击“Finish”(完成)。

2368edfa-5f5b-11ed-8abf-dac502259ad0.png

代码修改

创建完应用工程后,在 main.c 中修改代码对 AXI BRAM进行读写。
Xil_Out64 函数用于将数据写入 64 位地址,而Xil_In32 函数则用于地址中读取 32 位数据。
示例:

写入数据 API

Xil_Out64(bram_address_write,write_data);

读取数据 API

read_data=Xil_In32(bram_address_read);

代码快照:

23bb48fc-5f5b-11ed-8abf-dac502259ad0.png

运行设计
连接到VCK190 评估板,并设置启动模式为 JTAG 启动模式,然后运行应用。
控制台输出示例:

2506e680-5f5b-11ed-8abf-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NoC
    NoC
    +关注

    关注

    0

    文章

    38

    浏览量

    11734
  • AXI
    AXI
    +关注

    关注

    1

    文章

    127

    浏览量

    16625
  • Versal
    +关注

    关注

    1

    文章

    158

    浏览量

    7658

原文标题:开发者分享|在 Versal 中通过 NoC 从 PS-APU 对 AXI BRAM 执行基本读写操作

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM实现PS与PL交互

    有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的
    的头像 发表于 02-22 13:51 8184次阅读
    【FPGA ZYNQ Ultrascale+ MPSOC教程】33.<b class='flag-5'>BRAM</b>实现<b class='flag-5'>PS</b>与PL交互

    使用AXI-Full接口的IP进行DDR的读写测试

    状态。然后使用PL部分消抖处理后的按键进行启动AXI总线工作,控制数据写入。通过AXI互联模块连接到AXI_HP0端口,由PS端口进行数据的
    的头像 发表于 07-18 09:53 5224次阅读
    使用<b class='flag-5'>AXI</b>-Full接口的IP进行DDR的<b class='flag-5'>读写</b>测试

    AMD Versal AI Edge自适应计算加速平台之PL通过NoC读写DDR4实验(4)

    Versal的DDR4是通过NoC访问,因此需要添加NoC IP进行配置。
    的头像 发表于 03-22 17:18 2269次阅读
    AMD <b class='flag-5'>Versal</b> AI Edge自适应计算加速平台之PL<b class='flag-5'>通过</b><b class='flag-5'>NoC</b><b class='flag-5'>读写</b>DDR4实验(4)

    怎么使用AXI CDMAOCM/DDR写入BRAM

    提交一个事务,并将我提交的缓冲区的数据写入块存储器生成器创建的BRAM。据我所知,我上面描述的设置应该允许这样做。我的地址编辑器
    发表于 04-19 07:50

    请问如何通过MicroBlaze访问BRAM

    嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通过Microblaze读取存储BRAM(coe文件)的数据进行计算。我是微博阅读部分的新手。有人
    发表于 05-20 08:38

    【正点原子FPGA连载】第十四章基于BRAMPS和PL的数据交互领航者 ZYNQ 之嵌入式开发指南

    数据的交互。PL通过输出时钟、地址、读写控制等信号来对BRAM进行读写
    发表于 09-04 11:08

    利用NoC资源解决FPGA内部数据交换的瓶颈

    2D NoC 遍布整个器件上,一共有 80 个接入点,所以 8 个读写模块可以由工具放置器件的任何地方,而不影响设计的性能。图 5 使用 2D
    发表于 09-07 15:25

    如何利用NoC资源去支撑FPGA的创新设计

    NoC实现了AXI总线连接器和跨时钟域的模块,这就节省了大量的资源;另外,因为2D NoC遍布整个器件上,一共有80个接入点,所以8个读写
    发表于 10-20 09:54

    ZYNQ的ARM和FPGA数据交互——AXI交互最重要的细节

    PL和PS之间的数据传输: 主要实现以下的功能:PS端把数据写入RAM,然后PL端通过AXI总线(这里使用
    发表于 11-03 10:51

    MicroBlaze大内部存储器(AXI BRAM)设计

    MicroBlaze可以使用AXI BRAM存放数据和指令。有些客户软件很大,需要把AXI BRAM的空间做到最大。AXI
    的头像 发表于 08-02 10:09 3187次阅读
    MicroBlaze大内部存储器(<b class='flag-5'>AXI</b> <b class='flag-5'>BRAM</b>)设计

    如何通过NoC Versal应用处理单元访问AXI BRAM

    Versal 架构将“Scalar Engine”(标量引擎)、“Adaptable Engine”(自适应引擎)和“Intelligent Engine”(智能引擎)这三种不同类型的引擎与丰富的连接和通信功能以及片上网络 (NoC) 有机结合,从而支持实现覆盖整个器件的
    的头像 发表于 11-11 09:09 654次阅读

    如何通过NoCVersal应用处理单元(APU)访问AXI BRAM

    Versal 架构将“Scalar Engine”(标量引擎)、“Adaptable Engine”(自适应引擎)和“Intelligent Engine”(智能引擎)这三种不同类型的引擎与丰富的连接和通信功能以及片上网络 (NoC) 有机结合,从而支持实现覆盖整个器件的
    的头像 发表于 11-11 09:10 706次阅读

    FPGA系列之“Zynq MPSoC PS-PL AXI Interfaces”

    S_AXI_ACP_FPD接口实现了PS 和PL 之间的低延迟连接,通过这个128位的接口,PL端可以直接访问APU的L1和L2 cache,以及DDR内存区域。故PL侧可以直接
    的头像 发表于 02-01 15:36 2533次阅读

    如何通过NoCVersal™应用处理单元(APU)访问AXI BRAM呢?

    Versal 架构将“Scalar Engine”(标量引擎)、“Adaptable Engine”(自适应引擎)和“Intelligent Engine”(智能引擎)这三种不同类型的引擎与丰富的连接和通信功能以及片上网络 (NoC) 有机结合,从而支持实现覆盖整个器件的
    的头像 发表于 03-13 10:23 827次阅读

    Versal CPM AXI Bridge模式的地址转换

    Versal 系列的 DMA axi bridge 模式可以 PL 的 QDMA IP 或者 CPM(The integrated block for PCIe Rev. 4.0
    的头像 发表于 05-10 09:47 1638次阅读
    <b class='flag-5'>Versal</b> CPM <b class='flag-5'>AXI</b> Bridge模式的地址转换