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

    关注

    1602

    文章

    21320

    浏览量

    593173
  • DDR
    DDR
    +关注

    关注

    9

    文章

    677

    浏览量

    64240
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99018
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46620
  • MPSoC
    +关注

    关注

    0

    文章

    194

    浏览量

    24111
收藏 人收藏

    评论

    相关推荐

    AMD推出全新Spartan UltraScale+ FPGA系列

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

    采用Zynq UltraScale+ MPSoC满足汽车ESD和SEED要求

    电子发烧友网站提供《采用Zynq UltraScale+ MPSoC满足汽车ESD和SEED要求.pdf》资料免费下载
    发表于 09-18 09:44 1次下载
    采用<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>满足汽车ESD和SEED要求

    Zynq UltraScale+ MPSoC中的隔离方法应用笔记

    电子发烧友网站提供《Zynq UltraScale+ MPSoC中的隔离方法应用笔记.pdf》资料免费下载
    发表于 09-15 14:49 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔离方法应用笔记

    Zynq UltraScale+ MPSoC生产勘误表

    电子发烧友网站提供《Zynq UltraScale+ MPSoC生产勘误表.pdf》资料免费下载
    发表于 09-15 10:35 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>生产勘误表

    Zynq UltraScale+ MPSoC数据手册:DC和AC开关特性

    电子发烧友网站提供《Zynq UltraScale+ MPSoC数据手册:DC和AC开关特性.pdf》资料免费下载
    发表于 09-15 10:27 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b><b class='flag-5'>数据</b>手册:DC和AC开关特性

    Zynq UltraScale+ MPSoC软件开发人员指南

    电子发烧友网站提供《Zynq UltraScale+ MPSoC软件开发人员指南.pdf》资料免费下载
    发表于 09-15 10:16 8次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>软件开发人员指南

    Zynq UltraScale+ MPSoC验证数据手册

    电子发烧友网站提供《Zynq UltraScale+ MPSoC验证数据手册.pdf》资料免费下载
    发表于 09-15 10:13 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>验证<b class='flag-5'>数据</b>手册

    Zynq UltraScale+ MPSoC:FIPS 140-3入门白皮书

    电子发烧友网站提供《Zynq UltraScale+ MPSoC:FIPS 140-3入门白皮书.pdf》资料免费下载
    发表于 09-14 14:24 1次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>:FIPS 140-3入门白皮书

    Zynq UltraScale+ MPSoC上的单芯片FIPS 140-3

    电子发烧友网站提供《Zynq UltraScale+ MPSoC上的单芯片FIPS 140-3.pdf》资料免费下载
    发表于 09-14 10:26 3次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>上的单芯片FIPS 140-3

    Zynq UltraScale+ MPSoC:软件开发者指南

    电子发烧友网站提供《Zynq UltraScale+ MPSoC:软件开发者指南.pdf》资料免费下载
    发表于 09-14 10:03 10次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>:软件开发者指南

    Zynq UltraScale+ MPSoC中的隔离方法

    电子发烧友网站提供《Zynq UltraScale+ MPSoC中的隔离方法.pdf》资料免费下载
    发表于 09-13 17:11 1次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔离方法

    Zynq UltraScale+ MPSoC的隔离设计示例

    电子发烧友网站提供《Zynq UltraScale+ MPSoC的隔离设计示例.pdf》资料免费下载
    发表于 09-13 11:28 2次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔离设计示例

    适用于Xilinx Zynq UltraScale+ MPSoC应用的电源参考设计

    电子发烧友网站提供《适用于Xilinx Zynq UltraScale+ MPSoC应用的电源参考设计.pdf》资料免费下载
    发表于 09-13 09:55 1次下载
    适用于Xilinx <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>应用的电源参考设计

    Zynq UltraScale+ Use Case 2.3 原理图s

    Zynq UltraScale+ Use Case 2.3 原理图s
    发表于 07-10 18:37 1次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> Use Case 2.3 原理图s

    Zynq UltraScale+ Use Case 1.3 原理图s

    Zynq UltraScale+ Use Case 1.3 原理图s
    发表于 07-10 18:36 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> Use Case 1.3 原理图s