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

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

3天内不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第三十二章PL读写PS端DDR数据

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-01-30 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

实验Vivado工程目录为“pl_read_write_ps_ddr/vivado”。

实验vitis工程目录为“pl_read_write_ps_ddr /vitis”。

PL和PS的高效交互是zynq soc开发的重中之重,我们常常需要将PL端的大量数据实时送到PS端处理,或者将PS端处理结果实时送到PL端处理,常规我们会想到使用DMA的方式来进行,但是各种协议非常麻烦,灵活性也比较差,本节课程讲解如何直接通过AXI总线来读写PS端ddr的数据,这里面涉及到AXI4协议,vivado的FPGA调试等。

FPGA工程师工作内容

以下为FPGA工程师负责内容。

1. ZYNQ的HP端口使用

zynq 7000 SOC的HP口是 High-Performance Ports的缩写,如下图所示,一共有4个HP口,HP口是AXI Slave设备,我们可以通过这4个HP接口实现高带宽的数据交互。

o4YBAGATcaWAdU89AADTRL9yEVY039.jpg

2. 硬件环境搭建

1)基于“ps_hello”工程,在vivado的界面中HP的配置如下图(HP0~HP3),这里面有使能控制,数据位宽选择,可选择32bit、64bit或128bit的位宽。我们的实验启用HP0配置为64bit位宽,使用的时钟是150Mhz,HP的带宽是150Mhz * 64bit,对于视频处理,ADC数据采集等应用都有足够的带宽。不需要AXI HPM0 LPD,取消选择。

pIYBAGATcaaAIWwCAACEUNUComI617.jpgo4YBAGATcaeAftWLAACTOPEJjkw138.jpg

2)添加复位模块,用于复位

pIYBAGATcaeACtwFAAAMa5aID7s324.jpg

3)在空白处右键选择”Creat Port”

o4YBAGATcaiADGcOAACycXclAVM677.jpg

配置如图

pIYBAGATcamANPD_AABRolmf8pU901.jpg

4)连接时钟和复位

o4YBAGATcamARPztAACSwTcnSSM552.jpg

5)选中引脚,点击Make External,将信号导出

pIYBAGATcaqAVy4_AABhjcTFcXE475.jpg

并修改引脚名称如下图

o4YBAGATcaqATdeVAACh3VKnOwk096.jpg

并选择总线同步时钟为axi_hp_clk

o4YBAGATcauAbx4VAAAqww-lRxc027.jpg

6)点开Address Editor,如果发现地址没有分配,点击自动分配地址按钮

pIYBAGATcauAMDYgAABGgGSHsMo207.jpg

分配后的结果,可以看到访问DDR, QSPI, OCM的地址空间

o4YBAGATcayAQuvRAABHgYKFNNI523.jpg

保存设计,重新Generate Ouput Product

7)添加hdl文件

pIYBAGATca2ASZyrAAClmar42WU623.jpgo4YBAGATca2APpH6AABcVgRFQzc850.jpg

点击Finish

o4YBAGATca6Af-QUAABvcx_r-dk246.jpg

HDL层级关系更新结果

pIYBAGATca6AckzEAABLkXu1e9k000.jpg

3. PL端AXI Master

AXI4相对复杂,但SOC开发者必须掌握,对于zynq的开发者,笔者建议能够在一些已有的模板代码基础上修改。AXI协议的具体内容可参考Xilinx UG761 AXI Reference Guide。在这里我们简单了解一下。

AXI4所采用的是一种READY,VALID握手通信机制,即主从模块进行数据通信前,先根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B,这是一种典型的握手机制。

o4YBAGATca6AM7C-AAAqCyn4dnU541.jpg

AXI总线分为五个通道:

  • 读地址通道,包含ARVALID, ARADDR, ARREADY信号;

  • 写地址通道,包含AWVALID,AWADDR, AWREADY信号;

  • 读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;

  • 写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;

  • 写应答通道,包含BVALID, BRESP, BREADY信号;

  • 系统通道,包含:ACLK,ARESETN信号;

其中ACLK为axi总线时钟,ARESETN是axi总线复位信号,低电平有效;读写数据与读写地址类信号宽度都为32bit;READY与VALID是对应的通道握手信号;WSTRB信号为1的bit对应WDATA有效数据字节,WSTRB宽度是32bit/8=4bit;BRESP与RRESP分别为写回应信号,读回应信号,宽度都为2bit,‘h0代表成功,其他为错误。

读操作顺序为主与从进行读地址通道握手并传输地址内容,然后在读数据通道握手并传输所读内容以及读取操作的回应,时钟上升沿有效。如图所示:

pIYBAGATcbCAADCHAAAvHtYayq0137.jpg

写操作顺序为主与从进行写地址通道握手并传输地址内容,然后在写数据通道握手并传输所读内容,最后再写回应通道握手,并传输写回应数据,时钟上升沿有效。如图所示:

o4YBAGATcbCAfDoBAAAayFn2M5E204.jpg

在我们不擅长写FPGA的一些代码时我们往往要借鉴别人的代码或者使用IP core。在这里笔者从github上找到一个AXI master的代码,地址是github.com/aquaxis/IPCO。这个工程是一个自己写的VDMA,里面包含了大量可参考的代码。笔者这里主要使用了aq_axi_master.v这个代码用于AXI master读写操作。借鉴别人代码有时会节省很多时间,但如果不能理解的去借鉴,出现问题了很难解决。具体可以参考aq_axi_master.v代码,有部分修改。

4. ddr读写数据的检验

有了AXI Master读写接口以后比较编写了一个简单的验证模块,这个验证模块是用来验证ddr ip的,通过写入数据,然后读取出来比较。这里要注意的是PS端DDR的起始地址和大小,还有地址的单位是byte还是word,AXI总线的地址单位是byte,测试模块的地址单位是word(这里的word不一定是4byte)。文件名mem_test.v。

5. Vivado软件的调试技巧

AXI读写验证模块只有一个error信号用于指示错误,如果有数据错误我们希望能更精确的信息,alteraquartus II软件中有signal tap工具,xilinx 的ISE中有chipscope工具,这些都是嵌入式逻辑分析仪,对我们调试有很大帮助,在vivado软件中调试更加方便。在插入调试信号时有些信息可能会被优化掉,或者信号名称改变了就不容易识别,这个时候我们可以在程序代码里加入*mark_debug="true"*这样的属性,如下图的信号:

pIYBAGATcbGAJgMWAAB5d3Yle80216.jpg

具体的添加方法在”PL的“Hello World”LED实验”中已经讲过,可参考。

并在XDC文件里绑定error信号到PL端LED灯上。

6. Vitis工程开发

以hello world为模板新建vitis工程如下

o4YBAGATcbKAXtE8AAAsYynxu74923.jpg

通过vitis下载程序后,系统会复位并且下载FPGA的bit文件。然后回到vivado界面点击Program and Debug栏自动连接目标如下图所示:

pIYBAGATcbKAF5OsAAAuwNsYeuQ366.jpg

自动连接硬件后可发现JTAG连上的设备,其中有一个hw_ila_1的设备,这个设备就是我们debug设备,选中后可点击上方黄色三角按钮捕捉波形。如果有些信号没有显示完整,可点击波形旁边的“+”按钮添加。

pIYBAGATcbOAM5LTAAC42pq7cGU959.jpg

点击捕获波形以后如下图所示,如果error一直为低,并且读写状态有变化,说明读写DDR数据正常,用户在这里可以自己查看其它的信号来观察写入DDR的数据和从DDR读出的数据。

o4YBAGATcbSAC5DJAACp1L1nsgY285.jpg

7. 本章小结

zynq系统相对于单个FPGA或单个ARM要复杂很大,对开发者的基础知识要求较高,本章内容涉及到AXI协议、zynq的互联资源、vivado的和Vitis的调试技巧。这些都仅仅是基础知识,笔者在这里也仅仅是抛砖引玉,大家还是要多多练习,在不断练习中掌握技巧.

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

    关注

    1664

    文章

    22502

    浏览量

    639239
  • DDR
    DDR
    +关注

    关注

    11

    文章

    761

    浏览量

    69563
  • dma
    dma
    +关注

    关注

    3

    文章

    582

    浏览量

    106272
  • Zynq
    +关注

    关注

    10

    文章

    633

    浏览量

    49573
  • MPSoC
    +关注

    关注

    0

    文章

    203

    浏览量

    25230
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA ZYNQPSPL交互的HP接口详解

    该工程实现了PL通过HP接口(8个字节)下使用AXI协议往DDR中写数据PS读取处理。
    的头像 发表于 04-21 09:13 512次阅读
    <b class='flag-5'>FPGA</b> <b class='flag-5'>ZYNQ</b>中<b class='flag-5'>PS</b>与<b class='flag-5'>PL</b>交互的HP接口详解

    AMD Zynq UltraScale+ RFSoC评估套件调试检查表

    本篇文章包含一份调试检查表,它是对 AMD Zynq UltraScale+ RFSoC 评估套件(ZCU208、ZCU216、ZCU111 和 ZCU670)上评估板相关问题进行故障排除的重要资源。
    的头像 发表于 04-15 14:08 177次阅读
    AMD <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> RFSoC评估套件调试检查表

    ZYNQ核心板原理图讲解

    ZYNQ系列的FPGA设计方法大同小异,都是PL+PS架构,只需要理清楚有多少个BANK,哪些BANK支持多少V供电和功耗,上电时序,那些BANK是PS
    的头像 发表于 04-09 15:45 5060次阅读
    <b class='flag-5'>ZYNQ</b>核心板原理图讲解

    FPGA硬件设计之ZYNQ外围DDR介绍

    由于ZYNQ-PS的BANK502基本就是为DDR设计的,所以原理图设计非常简单:几乎就是PIN TO PIN连接。
    的头像 发表于 03-25 15:30 352次阅读
    <b class='flag-5'>FPGA</b>硬件设计之<b class='flag-5'>ZYNQ</b>外围<b class='flag-5'>DDR</b>介绍

    zynqmp PSDDR配置说明

    详细讲解zynqmp psDDR相关时序参数配置过程。
    发表于 03-24 14:56 0次下载

    AMD 推出第二代 Kintex UltraScale+FPGA,助力智能高性能系统

    第二代AMD Kintex UltraScale+ FPGA 系列 , 对于依赖中FPGA 为性能关键型系统提供支持的设计人员而言,可谓一项重大进步。 这一全新系列构建在业经验证的
    的头像 发表于 02-04 16:11 6.2w次阅读
    AMD 推出第二代 Kintex <b class='flag-5'>UltraScale+</b> 中<b class='flag-5'>端</b><b class='flag-5'>FPGA</b>,助力智能高性能系统

    如何在Zynq UltraScale+ MPSoC平台上通过JTAG启动嵌入式Linux镜像

    流程教程)。本文则进一步讲解如何在 Zynq UltraScale+ MPSoC 平台上通过 JTAG 逐步启动 Linux,并提供了完整的过程与关键命令。只要按步骤操作,即使是复杂的 Linux 镜像也能成功通过 JTAG 启
    的头像 发表于 01-13 11:45 5005次阅读

    如何在ZYNQ本地部署DeepSeek模型

    一个将最小号 DeepSeek 模型部署到 AMD Zynq UltraScale+ MPSoC 处理系统的项目。
    的头像 发表于 12-19 15:43 7822次阅读
    如何在<b class='flag-5'>ZYNQ</b>本地部署DeepSeek模型

    AMD UltraScale架构:高性能FPGA与SoC的技术剖析

    AMD UltraScale架构:高性能FPGA与SoC的技术剖析 在当今的电子设计领域,高性能FPGAMPSoC/RFSoC的需求日益增长。AMD的
    的头像 发表于 12-15 14:35 736次阅读

    基于AXI DMA IP核的DDR数据存储与PS读取

    添加Zynq Processing System IP核,配置DDR控制器和时钟。7000系列的Zynq可以参考正点原子DMA回环测试设置。
    的头像 发表于 11-24 09:25 3564次阅读
    基于AXI DMA IP核的<b class='flag-5'>DDR</b><b class='flag-5'>数据</b>存储与<b class='flag-5'>PS</b><b class='flag-5'>端</b>读取

    使用AXI4接口IP核进行DDR读写测试

    本章的实验任务是在 PL 自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS DDR3 进行
    的头像 发表于 11-24 09:19 3921次阅读
    使用AXI4接口IP核进行<b class='flag-5'>DDR</b><b class='flag-5'>读写</b>测试

    Zynq MPSoC PS侧PCIe高速DMA互连解决方案

    在涉及Xilinx Zynq UltraScale+ MPSoC的项目中,实现设备间高速、低延迟的数据传输往往是核心需求之一。PCIe(尤其PS
    的头像 发表于 10-22 13:53 4108次阅读
    双<b class='flag-5'>Zynq</b> <b class='flag-5'>MPSoC</b> <b class='flag-5'>PS</b>侧PCIe高速DMA互连解决方案

    AMD Spartan UltraScale+ FPGA的优势和亮点

    AMD Spartan UltraScale+ FPGA 集小型封装、先进的 I/O 功能与低功耗等优势于一体。该系列 FPGA 配备高速 16.3 Gb/s 收发器、内置的外部内存控制器以及
    的头像 发表于 10-17 10:16 963次阅读
    AMD Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b>的优势和亮点

    ZYNQ PSPL数据交互方式

    ZYNQ SoC 的 PS (Processing System) 和 PL (Programmable Logic) 之间的数据交互是系统设计的核心。
    的头像 发表于 10-15 10:33 1340次阅读
    <b class='flag-5'>ZYNQ</b> <b class='flag-5'>PS</b>与<b class='flag-5'>PL</b><b class='flag-5'>数据</b>交互方式

    璞致电子 UltraScale+ RFSoC 架构下的软件无线电旗舰开发平台

    璞致电子 PZ-ZU49DR-KFB 开发板基于 Xilinx ZYNQ UltraScale+ RFSoC XCZU49DR 主控制器,以 "ARM+FPGA 异构架构" 为
    的头像 发表于 08-06 10:08 1398次阅读
    璞致电子 <b class='flag-5'>UltraScale+</b> RFSoC 架构下的软件无线电旗舰开发平台