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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
EETOP诚邀模拟IC相关培训讲师 创芯人才网--重磅上线啦!
查看: 4253|回复: 4

[求助] FPGA实现PCIe设备时的一个问题【图已补上】

[复制链接]
发表于 2010-8-14 23:25:46 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 cuizehan 于 2010-8-15 11:16 编辑

我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
qiuzhu.bmp
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。

上图中只画出了PERST#信号的拓扑结构


正常的PCIe设备启动过程如下图
   power up.bmp

预期的正常情况是:

         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。


但是现在的情况是:

         1. 如果设备卡不加电,则主机能够正常启动。
         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。


我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。

我做了如下分析:

         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。

但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。

图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。
 楼主| 发表于 2010-8-15 11:47:05 | 显示全部楼层
把FPGA卡上的4.7K上拉电阻去掉后,问题还是存在。
发表于 2010-8-16 11:37:19 | 显示全部楼层
关注中,比较感兴趣。
 楼主| 发表于 2010-8-17 15:28:45 | 显示全部楼层
昨天发现是由于4.7K电阻的上拉能力不够,不能是perst复位为高电平,换成了470R的就可以了。

但现在仍有问题,我把0R电阻换成了开关,
      如果设备卡先上电,此时把开关合上,由于主机还没有上电,此时perst被拉低,相当于对pcie硬核进行复位,把开关断开,设备卡上的perst被拉高,同时与主机隔离。这样就相当于手工复位。此时如果启动主机,一切ok,通过PCItree查看配置空间,发现BAR也分配了相应的值。
      如果设备卡先上电,开关一直合上,然后开启主机,主机POST过程中会发一个perst的低脉冲复位所连的所有PCI设备,包括我的设备卡。这样主机也能启动,并且通过chipscope查看链路状态也一切正常。可是通过PCItree查看配置空间时,发现BAR为0,并没有分配物理地址。

一直想不通是怎么回事?
有谁对BAR的分配过程比较熟悉的吗?
发表于 2010-9-11 09:56:27 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 21:34 , Processed in 0.024063 second(s), 9 queries , Gzip On, Redis On.

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