当前位置:   article > 正文

基于ZCU104的PS和PL数据交互例程(四):vivado中制作Block Design_zcu104例程

zcu104例程

基于ZCU104的PS和PL数据交互例程(四):vivado中制作Block Design

基于ZCU104的PS和PL数据交互例程(一):简介
基于ZCU104的PS和PL数据交互例程(二):vivado中封装现有工程成IP
基于ZCU104的PS和PL数据交互例程(三):vivado中创建IP
基于ZCU104的PS和PL数据交互例程(四):vivado中制作Block Design
基于ZCU104的PS和PL数据交互例程(五):Petalinux流程
基于ZCU104的PS和PL数据交互例程(六):上板流程
基于ZCU104的PS和PL数据交互例程(七):驱动编写与测试

1.设计架构

本次工程的架构设计思路如下

  1. PS与PL交互数据总共分为两类,第一类是控制信号,第二类是数据信号。这里第一类控制信号走AXI4-LITE,第二类数据信息走CDMA
  2. 整体数据流程
    1. PS端开始任务后,首先通过CDMA把初始数据送到BRAM_INIT
    2. 初始数据传输完成后,PS端通过AXI4-LITE给控制器发送初始数据加载完成信号
    3. 拿到PS给的初始数据完成信号后,控制器发送Start_DUT信号给DUT
    4. DUT通过BRAM_INIT_Port读取BRAM_INIT中的数据(这里按照自己DUT的逻辑读取即可)
    5. DUT读取完数据后,开始计算
    6. DUT计算完成后,把结果数据通过BRAM_RES_Port写到BRAM-RES
    7. DUT发送DUT_Finish信号给控制器
    8. 控制器通过AXI4-LITE发送PL处理结束信号
    9. PS端拿到PL处理结束信号后,通过CDMA把结果数据从BRAM_RES中读走
    10. 完成一次交互逻辑,后续重复操作

架构图

2.vivado中BD设计

参考block design的设计流程,这里给出完成的工程

封装IP的详细流程见另外两篇博客
基于ZCU104的PS和PL数据交互例程(二):vivado中封装现有工程成IP
基于ZCU104的PS和PL数据交互例程(三):vivado中创建IP

新建工程之后,选择zcu104板卡

点击Settings把准备好的IP路径加入进来

image-20231021173808914

点击新建block design

image-20231021173644326

配置PS的IP

然后加入PS端的IP

image-20231021173926506

点击Run Block Automation,会自动配置PS端

image-20231021173953805

然后双击PS端,进行特殊配置

DDR配置,根据ZCU104的User Guide,这里选择后缀为083E的型号

image-20231021174327088

PS与PL端口配置,master接口1个,slave接口1个

image-20231021174433422

默认PS给PL的时钟是100M,中断引脚打开,所以我们不再修改,完成配置

添加BRAM的IP

image-20231021174725502

配置成真双口,这里要注意BRAM的数据位宽和地址,这里数据位宽是32bit,跟DUT里面一致,就不再修改。依次加入BRAM_INIT和BRAM_RES

image-20231021175105849

添加bram controller

image-20231021175220918

这里给BRAM_RES和BRAM_INIT每个都配置一个bram controller,所以bram controller配置成一个接口就行

image-20231021175325365

目前添加的IP情况如下

image-20231021175503334

添加CDMA

image-20231021175545189

配置如下

image-20231021175558267

后面连接的时候,使用的AXI SmartConnect,这样数据传输更快。

添加自己的IP

添加自己的IP,controller和dut,不需要配置

image-20231021175642797

image-20231021175703336

自动连接IP

点击block design的左上角的Run Connect Automation

按照下图配置

image-20231021180230207

配置BRAM_INT_ctrl

image-20231021180356931

image-20231021180539389

配置BRAM_RES_ctrl

image-20231021180606531

image-20231021180619375

controller和ps的保持默认就行

配置dut的BRAM端口,选择对应的就行

最后点击OK

image-20231021185428565

手动连接

连接clk_PL,start_DUT,DUT_finish,rst_n这些信号

(这里的cdma的中断引脚cdma_introut应该要跟ps的pl_ps_irq连接的,一开始忘记连接了,这里一定要连接上)

image-20231021185610233
在这里插入图片描述

将rst_KEY_PL引出来,通过按键复位。右键rst_KEY_PL,选择Make External

image-20231021185738000

最后点击验证

image-20231021185841802

image-20231021185905904

验证通过后查看地址分配情况,后面Linux下映射虚拟地址到物理地址有用

image-20231021190037488

3.打包BD

在sources页面,右键bd,选择Generate Output Products

image-20231021190130614

image-20231021190216649

完成后,创建顶层文件,如下图选择

image-20231021190408445

image-20231021190446022

4.添加约束文件

set_property PACKAGE_PIN B3 [get_ports rst_KEY_PL_0]
set_property IOSTANDARD LVCMOS33 [get_ports rst_KEY_PL_0]
  • 1
  • 2

5.生成比特流

image-20231021190523449

image-20231021213625309

6.导出硬件文件(XSA)

image-20231021213708746

image-20231021213735057

image-20231021213833037

最后成功得到.XSA文件,包含了硬件的信息,后面Petalinux会用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/830479
推荐阅读
相关标签
  

闽ICP备14008679号