zcu102_5_AXI_BRAM实现PL与PS数据互联

本文配套原码工程已上传至https://download.csdn.net/download/botao_li/10910943

AXI BRAM Controller

PS模块通过axi_bram模块,可以使用AXI接口读写PL内的Block RAM,实现PS与PL之间的数据互联

axi_bram需要与Block Memory Generator模块共同使用,axi_bram将PS的AXI操作转化为bram的控制接口时序

Block Design

建立Vivado工程,并且添加Zynq模块,AXI BRAM Controller模块,Block Memory Generator模块,Utility Vector Logic模块和ILA模块

其中logic用于将低电平复位信号转为高电平接入bram,ila用于在PL中查看bram的接口操作

zynq模块在保持默认的情况下添加uart0,并且指定MIO 18 19,用于与PC串口连接
在这里插入图片描述

axi_bram的设置如下图所示
在这里插入图片描述

注意:Memory Depth不可设置,因为深度设置是完全由PS的地址分配决定的,默认显示为1024,在Address Editor中修改并且Generate Output Products才可以更新至axi_bram模块内的Memory Depth

经过修改的Address Editor为
在这里插入图片描述

32KB地址空间,由于数据总线为32bit即4B,于是axi_bram的深度为32*1024/4=8192

Block Memory Generator在使用BRAM Controller模式也是同样的方式决定深度

打开bram模块,并设置为双口控制,A口与axi_bram连接,B口与PL内的自定义测试模块连接

设置如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在Sources窗口添加自定义的Verilog模块test,写入如下代码用于与PS配合测试

/*
PS通过0地址控制PL读写BRAM
PS要求PL写操作前将MAX_ADDR地址写为0,然后用MAX_ADDR地址值判断是否写结束
*/
module test(
    input clk,
    input rst,
    output we,
    output [31:0] addr,
    output [31:0] din,
    input [31:0] dout
    );
	
	parameter MAX_ADDR = 32'd32764;
	
	reg we = 1'b0;
	reg [31:0] addr = 32'd0;
	ass
  • 10
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值