在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12399|回复: 22

[资料] xapp1052

[复制链接]
发表于 2017-10-30 15:54:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
xilinx官网PCIe1052例子。Bus Master Performance Demonstration 。

xapp1052.zip

10.94 MB, 下载次数: 511 , 下载积分: 资产 -4 信元, 下载支出 4 信元

发表于 2017-11-15 15:57:51 | 显示全部楼层
楼主辛苦了
发表于 2017-11-22 18:49:24 | 显示全部楼层
谢谢分享
发表于 2017-12-13 15:44:29 | 显示全部楼层
本帖最后由 文锋若风 于 2017-12-20 09:13 编辑

为了后人走pcie弯路,我说明一下1052的不足之处和注意点

1).1052用的是INTx中断,MEM模块偏移48h设置中断寄存器,可是驱动并没有对中断寄存器进行配置,缺少一个清理中断的过程,所以执行第一次DMA操作后会一直收到中断;
2).接口转换问题,1052是基于V5,V6,K7开发的,我应用在A7和Z7上存在着localink接口转AXIS接口,参考了前人的接口转化模块,但是trn_rrem_n在接口转换模块和RX模块定义不一样所以导致在执行DMA读时size=1DW没问题,>=2DW时报"FAIL";
3).数据存储问题,1052并没有对数据进行存储,只是在RX模块将拿到的32bit数据一次一次的与MEM传来的pattern寄存器期望数据进行比较产生data_error信号,项目应用过程中需要例化双口RAM进行数据存储,后续牵扯到的是时钟延迟问题,比如DMA写吧,发一个带32bit数据的写DMA TLP包要2个时钟,而从RAM中取一个32bit数据至少要3个时钟;
4).读完成包次序打乱情况,这是1052的固有BUG吧,前边在看博客和一篇论文说明了这个问题,我在vivado中debug抓信号发现TAG字段可以看出其乱序问题,实际测试TLP count=16时不存在这种乱序,后边测试了17,18都存在这种问题,如count=18时,后面几个包才会存在乱序,具体乱序情况如下:01-02-***-0e-11-0f-10-12
**********Noted by LIUWF 2017-12-18 12:20:46**********
修正1)点,1052用的还不是纯正的INTx中断,因为pcie核输出的assert_inta/b/c/d和deassert_inta/b/c/d并没有接入到用户模块
增加 4)点,这个乱序问题跟RCB(Read Completion Boundary)值有关系,可参考xilinx ug054:“pcie_7x_v3_3_pg054-7series-pcie”。。。具体乱序重排还没做,后续补充
补充 5)点,1052的驱动源文件中的.inf文件把“VEN_10EE&DEV_0007”修改为“VEN_10EE&DEV_7024”,不然打开上位机会报错,因为当时在pcie核中配置的设备ID是7024
**********Noted by LIUWF 2017-12-19 11:24:56**********
修正 4)点,ug054指明RCB默认是64B,昨晚上板中发现配置“1DW*16TLP”不会出现乱序,而配置“2DW*16TLP”会出现乱序,说明原先的想法“TLPcount<=16不会乱序”是错误的,超过64B就会乱序,而不是超过16TLP乱序**********Noted by LIUWF 2017-12-20 09:13:14**********
修正 4)点,昨晚上板又推翻了昨天的想法,在配置“3DW*16TLP” "32DW*16TLP" "32DW*32TLP"都未乱序,但是“32DW*64TLP”出现乱序,“32DW*128TLP”未乱序,另外,tag字段只用了低5位,每次计数从tag_01h到tag_1fh(31个TLP包)再往后就是调tag_00h到tag_1fh。。。Payload size越小越容易出现乱序
发表于 2017-12-13 23:16:37 | 显示全部楼层
回复 4# 文锋若风


   赞一个
发表于 2018-7-15 09:39:04 | 显示全部楼层
谢谢分享
发表于 2018-8-30 17:06:45 | 显示全部楼层
回复 4# 文锋若风


    楼主,你好,我想请教一下,在xapp1052中,当一笔Dma操作完成,发送中断(inta)时,当中断处理完后,在硬件设计中可以看到有清中断的过程,但为什么还会一直接收到中断,是由于驱动这边没有清中断吗?针对您提出的第一个问题,可以再说的具体点吗?谢谢
发表于 2018-9-1 13:50:20 | 显示全部楼层
回复 7# jikaibo

你硬件侧看到的应该是置中断时序吧,硬件少发了清中断时序,所以驱动会一直读中断状态寄存器
发表于 2018-9-1 17:58:49 | 显示全部楼层
感谢分享,可以到官网下载!
发表于 2018-9-23 00:01:05 | 显示全部楼层
thanks good thanks
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 21:53 , Processed in 0.022071 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表