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
    +关注

    关注

    1625

    文章

    21650

    浏览量

    601497
  • DDR
    DDR
    +关注

    关注

    11

    文章

    708

    浏览量

    65205
  • dma
    dma
    +关注

    关注

    3

    文章

    558

    浏览量

    100389
  • Zynq
    +关注

    关注

    9

    文章

    607

    浏览量

    47115
  • MPSoC
    +关注

    关注

    0

    文章

    197

    浏览量

    24236
收藏 人收藏

    评论

    相关推荐

    《DNK210使用指南 -CanMV版 V1.0》第三十二章 音频FFT实验

    第三十二章 音频FFT实验 本章将介绍CanMV下FFT的应用,通过将时域采集到的音频数据通过FFT为频域。通过本章的学习,读者将学习到CanMV下控制FFT加速器进行FFT的使用。本章分为如下几个
    发表于 11-04 14:18

    在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

    4K UHD音视频广播领域的优势 1.高性能与低功耗的结合:Zynq UltraScale+ MPSoC采用了16nm FinFET工艺,集成了多核处理器和可编程逻辑,能够在提高性能的同时降低功耗,这对
    发表于 11-01 16:56

    12G-SDI高清视频开发案例,让4K视频采集更便捷!基于Xilinx MPSoC高性能平台

    本帖最后由 Tronlong创龙科技 于 2024-10-29 10:35 编辑 本文主要介绍基于Xilinx UltraScale+ MPSoC XCZU7EV的12G-SDI高清视频开发
    发表于 10-29 10:09

    在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

    在本设计中,我们使用Zynq UltraScale+ MPSoC平台(具体型号为MYIR XCZU4EV),通过FPGA实现对SDI视频的H265压缩,并通过SGMII接口推送到万兆
    发表于 10-14 17:42

    使用TPS65086x PMIC为Xilinx Zynq UltraScale MPSoC供电

    电子发烧友网站提供《使用TPS65086x PMIC为Xilinx Zynq UltraScale MPSoC供电.pdf》资料免费下载
    发表于 09-21 11:11 0次下载
    使用TPS65086x PMIC为Xilinx <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b> <b class='flag-5'>MPSoC</b>供电

    开发板的PL有4片的DDR,怎么管理数据的传输

    各位大佬好, 我现在想在自己的开发板上面跑通正点原子的一个例程,这个例程是关于DDR读写,将1024个数写入DDR,然后读出来进行对比,如果没有错误就点亮LED。 开发板的PL
    发表于 09-10 19:17

    一个更适合工程师和研究僧的FPGA提升课程

    Suite 1 设计 FPGA; 嵌入式设计课程 02 ● 设计 Zynq UltraScale+ RFSoC; ● 面向软件开发者的Zynq
    发表于 06-05 10:09

    有关PL利用AXI总线控制PSDDR进行读写(从机wready信号一直不拉高)

    一直拉高的。这与写数据通道好像有点区别。 我不清楚PS DDR到底发生了什么,但是和MIG核就是有点不一样,通过仿真MIG核可以发现,PL
    发表于 05-31 12:04

    中高端FPGA如何选择

    为了使数据传输更加高效,Achronix FPGA上的Memory资源也是非常给力,不管是片上Ram还是DDR接口,都比Virtex Ultrascale+有很大优势。
    发表于 04-24 15:09

    AMD推出全新Spartan UltraScale+ FPGA系列

    AMD 已经拥有 Zynq UltraScale+ 和 Artix UltraScale+ 系列,而 Spartan UltraScale+ FPG
    发表于 03-18 10:40 343次阅读
    AMD推出全新Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b>系列

    FPGAPL固化流程

    电子发烧友网站提供《FPGAPL固化流程.pdf》资料免费下载
    发表于 03-07 14:48 8次下载

    AMD推出全新Spartan UltraScale+ FPGA系列

    AMD日前正式推出了全新的Spartan UltraScale+ FPGA系列,该系列作为AMD广泛的成本优化型FPGA和自适应SoC产品组合的最新成员,专为边缘各种I/O密集型应用
    的头像 发表于 03-06 11:09 769次阅读

    FPGA上为FPGA设计PCB的步骤详解

    FPGA(ZynqUltraScale+MPSoC) 上的 Ubuntu 22.04 桌面映像上安装了各种 EE 设计应用程序(包括 KiCad),并用它设计 PCB。
    的头像 发表于 02-26 09:04 1910次阅读
    在<b class='flag-5'>FPGA</b>上为<b class='flag-5'>FPGA</b>设计PCB的步骤详解

    针对UltraScale/UltraScale+芯片DFX应考虑的因素有哪些(2)

    UltraScale/UltraScale+芯片开始支持BUFG_*、PLL和MMCM出现在动态区,在7系列FPGA中这些时钟资源只能在静态区。
    的头像 发表于 12-21 09:12 918次阅读
    针对<b class='flag-5'>UltraScale</b>/<b class='flag-5'>UltraScale+</b>芯片DFX应考虑的因素有哪些(2)

    针对UltraScale/UltraScale+芯片DFX应考虑的因素有哪些(1)

    对于UltraScale/UltraScale+芯片,几乎FPGA内部所有组件都是可以部分可重配置的
    的头像 发表于 12-14 16:16 639次阅读
    针对<b class='flag-5'>UltraScale</b>/<b class='flag-5'>UltraScale+</b>芯片DFX应考虑的因素有哪些(1)