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

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

3天内不再提示

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

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-02-22 13:51 次阅读

原创声明:

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

适用于板卡型号:

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

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

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

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。

以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller的寄存器,不通过它读写数据。

o4YBAGAvUfmAajZJAAAkH4r01ro042.jpg

FPGA工程师工作内容

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

1. 硬件环境搭建

以“ps_hello”为基础,另存为一份工程,并配置打开ZYNQ的中断

1)首先添加AXI BRAM Controller模块,用于PS端控制BRAM,双击打开配置,连接AXI总线,可用于读写BRAM模块,AXI模式设置为AXI4,数据宽度设置为32位,memory depth不在这里设置,需要在Address Editor里设置。BRAM端口数量设置为1个,用于连接双口RAM的PORTA。不使能ECC功能。

pIYBAGAvUfqAc-bjAACDoygKorQ864.jpg

由于AXI4总线为字节询址,BRAM数据宽度设置也是32位,同样都是32位数据宽度,因此在映射到BRAM地址时,需要按4字节询址,即去掉最后两位,下图为BRAM控制器与BRAM的映射关系。

o4YBAGAvUfqAFaAtAACrR9U3Rvw733.jpg

2)添加BRAM模块,BRAM设置如下,有两种模式选择,standalon模式,此模式可以自由配置RAM的数据宽度和深度。BRAM Controller模式,此模式下地址线和数据端口默认为32位,本实验因为用到了BRAM控制器,因此选择BRAM Controller模式。Memory类型选择双口RAM,一端连BRAM控制器,一端连PL RAM控制器。

pIYBAGAvUfuAXyysAABh6C1Jcpc436.jpg

3) 添加自定义的PL RAM控制器pl_ram_ctrl,功能很简单,start信号有效后开始读取BRAM的数据,可通过ILA逻辑分析仪观察读取的数据,PL RAM控制器读BRAM结束后,开始向BRAM写数据,写完数据使能intr信号,即中断信号,CPU即可读取BRAM的数据。将PL控制器信号与BRAM的PORTB连接。自定义IP在ip_repo文件夹中。

o4YBAGAvUfuAW0sQAAAYEYyFdfI853.jpg

如果想添加自定义IP到IP库中,点击IP Catalog,在Vivado Repository右键点击Add Repository

pIYBAGAvUfyADZJ3AACHKCtMixo678.jpg

找到自定义IP所在文件夹,点击Select

o4YBAGAvUfyAOvxiAAB8aNf7_Nk835.jpg

跳出窗口,选择IP,点击OK

pIYBAGAvUf2AOPYeAAA1zyTx8B8591.jpg

即可看到,出现了刚添加的IP

o4YBAGAvUf2AMjITAAAO1zmfzxs593.jpg

4)连接AXI BRAM Controller的BRAM_PORTA到BRAM的PORTA,连接pl_bram_ctrl的BRAM_PORT到BRAM的PORTB。连接pl_bram_ctrl模块的中断信号intr到ZYNQ的中断口。并点击自动连接

pIYBAGAvUf6ABowYAABLUVC85Ps101.jpg

5)在Address Editor里选择BRAM询址大小,如设置4K空间,即可询址BRAM空间为1K深度。

o4YBAGAvUf-ABaU4AABBrQnjmQ4136.jpg

Block Design添加逻辑分析仪方法

1)再介绍一种添加逻辑分析仪的方法,选中BRAM_PORT总线和intr中断,右键选择Debug

pIYBAGAvUgCALxSHAACMafquSm0280.jpg

2)可以看到总线上多了小昆虫,点击Run Connection Automation,自动连接

o4YBAGAvUgCAPjMAAACvsPHOjcA857.jpg

自动添加了一个ILA模块,并且有一个总线接口,一个信号接口

pIYBAGAvUgCAFyZ3AABw7dTf6Qc800.jpg

3)保存设计,之后点击Generate Bitsream生成bit文件,并导出Hardware信息

o4YBAGAvUgGAJjwyAAAIFLrrPXg231.jpg

软件工程师工作内容

以下为软件工程师负责内容。

2. Vitis程序开发

1)程序设计流程为:输入起始地址和长度CPU通过BRAM控制器写入BRAM数据通知PL控制器读取BRAM数据PL内部读完后向相同位置写入数据,初始数据由CPU告知写完后使能write_end信号,触发GPIO中断中断读取BRAM数据,打印显示

2)进入Vitis后,在Vitis下新建项目,已经准备好程序。程序也比较简单,首先中断设置

pIYBAGAvUgGAMOjXAAAJDuPuxKs640.jpg

3)While语句中需要输入起始地址和长度,之后调用bram_write函数

o4YBAGAvUgKAa9lQAAAVXwq5Ezg057.jpg

4)在bram_read_write();函数里先通过BRAM控制器写入数据,数据初值为TEST_START_VAL,之后配置PL RAM控制器参数,有长度,起始地址,初始数据,以及开始信号。并在函数中判断测试长度是否超出BRAM控制器地址范围,如果超出,会报错,需要重新输入地址和长度。

pIYBAGAvUgKAT3TeAAAuzVMVHuM497.jpg

5)中断服务程序中,BRAM控制器读取BRAM的数据,并打印

o4YBAGAvUgOAByFiAAAcv37JcQw761.jpg

3. 实验现象

1)打开串口

pIYBAGAvUgOAEqgIAAAVhB8lrck797.jpg

2)通过Run Configurations下载程序

o4YBAGAvUgSAP0VeAAC2MFPOhIU525.jpg

3)打开Vivado的Hardware Manager(与PL端联合调试),设置将intr中断信号作为触发信号,选择上升沿触发,点击开始按钮,可以看到hw_ila_1变成了Waiting for trigger状态

pIYBAGAvUgSAZSN2AAChcfYWC28792.jpg

4)在串口软件中,输入起始地址,由于BRAM询址为1K,那么可以设置为0~1023,长度设置为1~1024,注意起始地址+长度不要超过1024,因为超出了询址空间。

o4YBAGAvUgWAMvR4AAAXjy79t0I009.jpg

5)输入的数据为十进制数,输入结束按回车

pIYBAGAvUgWAZkydAAAhOBKPIVs712.jpg

6)打开ILA逻辑分析仪,可以看到已经触发,首先是PL控制器从BRAM读数据,之后是写数据,可以看到红色为PL读出的BRAM数据,正是CPU写入的数据,从12开始,共10个数据,PL写入的数据为黄色部分从1开始,共10个数据,正与上图CPU读BRAM的数据相符。

o4YBAGAvUgaAYPWcAAB8R35c8fc125.jpg

同样也能看到中断信号的状态

pIYBAGAvUgaAWXsnAAB6goLIlSM691.jpg

7)如果超出范围,打印错误信息,需要重新输入有效信息

o4YBAGAvUgeAGRG3AAAmIyTtfGs915.jpg

4. 本章小结

以上就是PS与PL通过BRAM实现低带宽数据交互的实验,两者通过GP口进行数据互连,可以实现小批量的数据交互。

知识点为逻辑分析仪的使用,中断的使用,自定义IP等。

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

    关注

    1602

    文章

    21302

    浏览量

    593107
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10434

    浏览量

    206521
  • Zynq
    +关注

    关注

    9

    文章

    598

    浏览量

    46609
  • MPSoC
    +关注

    关注

    0

    文章

    194

    浏览量

    24109
  • BRAM
    +关注

    关注

    0

    文章

    39

    浏览量

    10885
收藏 人收藏

    评论

    相关推荐

    如何利用ZYNQ MPSoC玩DOOM?

    赛灵思和 DornerWorks 的系统软件团队在赛灵思的 Zynq® Ultrascale+MPSoC 上启动 Xen Project 管理程序时,我们发现可通过运行当年叱诧一时的流行电子游戏
    发表于 10-09 06:21

    请问Zynq Ultrascale + MPSOC本身是否存在问题?

    你好我们正在考虑在我们的新设计中使用Zynq Ultrascale + MPSOC。我们想在我们的电路板设计中加入HDMI接口。 Zynq Ultr
    发表于 10-14 09:17

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

      如何调试Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    发表于 01-07 16:02

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    发表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    发表于 02-02 07:53

    闲话Zynq UltraScale+ MPSoC(连载5)

    作者:Hello,Panda Part3 I/O资源 和Zynq-7000相比较,Zynq UltraScale+ 增强了PS端的IO性能;PL
    发表于 02-08 08:29 515次阅读
    闲话<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(连载5)

    Zynq UltraScale+ MPSoC的发售消息

    Zynq®UltraScale+MPSoC,现已开始发售。视频向您重点介绍了Xilinx UltraScale +产品组合的第一位成员
    的头像 发表于 11-27 06:47 3301次阅读

    米尔科技Zynq UltraScale+ MPSoC技术参考手册介绍

    Zynq UltraScale+ MPSoC是Xilinx推出的第二代多处理SoC系统,在第一代Zynq-7000的基础上做了全面升级,在单芯片上融合了功能强大的处理器系统(
    的头像 发表于 11-18 11:03 2612次阅读
    米尔科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技术参考手册介绍

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款专用 DDR 控制器,只支持在 Zynq UltraScale+
    发表于 02-23 06:00 15次下载
    如何调试 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米尔电子zynq ultrascale+ mpsoc底板外设资源清单分享

    米尔电子推出的国内首款zynq ultrascale+ mpsoc平台核心板(及开发板):MYC-CZU3EG吸引了人工智能、工业控制、嵌入式视觉、ADAS、算法加速、云计算、有线/无线通信
    发表于 01-07 15:20 3次下载
    米尔电子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外设资源清单分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片设计

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片设计,应用于工厂自动化、机器视觉、工业质检等工业领域
    发表于 11-02 14:35 1169次阅读

    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>的隔离设计示例

    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验证数据手册

    电子发烧友网站提供《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>验证数据手册