[X]关闭

MK7325,mig核同时读写当写地址超过0x1000_0000axi4总线就挂了

文档创建者:jeasonwill
浏览次数:6746
最后更新:2019-07-09
 
bd文件的原理图架构如图1所示。
无论是我自定义的axi读写ip还是axi_data_mover进行同时读写操作。mig核的地址空间为0x0000_0000-0x7fff_ffff,只要写地址超过0x1000_0000,axi4总线就挂了,使用AXI Protocol Checker对axi_interconnect的slave端进行探测,发现如下图2,3的错误。
写地址不超过0x1000_0000或者只进行写操作,axi4都能正确工作。
鉴于MK7325是2GB内存,8banks,感觉是同时读写时不能跨bank。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

发表评论已发布 8

uisrc

发表于 2019-7-2 21:25:31 | 显示全部楼层

        XILINX FPGA地址空间的分配,如果是纯MIG的传统方式,0x1000_0000的地址空间,对应的是64bit宽度的数据,那么内存空间大小就是0x1000_0000*64bit=2GB 所以你看但是,对于AXI4总线的方式,应该以1BYTE 为地址单位,后面我测试下
      这个回答我修改过了,下面有我测试的结论!
越努力越幸运!加油!

jeasonwill

发表于 2019-7-2 23:39:13 来自手机 | 显示全部楼层

admin 发表于 2019-7-2 21:25
因为你没有理解XILINX FPGA地址空间的分配,那么我下面就给你分析下       关键还是理解地址,比如 ...

觉得你说的是对的,可还是有点不理解,还是有几个问题
1. 我的axi 总线位宽是512的
2. axi 总线的地址不是以byte 为单位的吗?
3. 总线的地址范围是0x0000-0000到0x7fff-ffff ,我地址0x1000-0000怎么会超过范围呢?
4. 如果一次axi 写,起始地址是0x0,axi 地址位宽是512,突发长度16,那如果希望数据连续存储,下一个地址应该是多少呢?我觉得应该是0x400,十进制的1024

uisrc

发表于 2019-7-3 00:00:43 来自手机 | 显示全部楼层

jeasonwill 发表于 2019-7-2 15:39
觉得你说的是对的,可还是有点不理解,还是有几个问题
1. 我的axi 总线位宽是512的
2. axi 总线的地址 ...

今天拿了一个MK7325开发板用我自定义的AXI总线读写,FDMA0X7FFF_0000大小地址空间进行测试,没有发现卡死的情况,数据也正常,说明AXI4总线,地址计算确实以1BYTE为单位,和纯FPGA MIG以外挂的DDR数据位宽为单位不一样。所以基本认定你的程序有问题,你可以用我们提供的FDMA测试例子测下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

jeasonwill

发表于 2019-7-3 13:23:10 | 显示全部楼层

admin 发表于 2019-7-3 00:00
今天拿了一个MK7325开发板用我自定义的AXI总线读写,FDMA0X7FFF_0000大小地址空间进行测试,没有发现卡死 ...

请问,你是读写同时进行测试的吗?读写空间范围都是0X7FFF_0000吗?

uisrc

发表于 2019-7-3 13:25:08 | 显示全部楼层

我是先写后读,对DDR全部空间测试
越努力越幸运!加油!

jeasonwill

发表于 2019-7-3 13:36:35 | 显示全部楼层

admin 发表于 2019-7-3 13:25
我是先写后读,对DDR全部空间测试

我是在读写同时进行,用ddr实现乒乓算法,一个bank写一个bank读的时候出现的这个问题。后来我在测试的时候直接读bank0(0x0000_0000-0x0fff_ffff),写bank1(0x1000_0000-0x1fff_ffff),两者同时进行,也会挂掉。

uisrc

发表于 2019-7-3 19:11:34 来自手机 | 显示全部楼层

你试下把axis interconnected in  fifo设置到最大试试

uisrc

发表于 2019-7-9 22:48:11 来自手机 | 显示全部楼层

把ddr速度降低到1333试试,我刚刚试过
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则