找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 3696|回复: 3
打印 上一主题 下一主题

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

[复制链接]

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
跳转到指定楼层
1#
发表于 2010-8-14 23:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑
) a# p+ c; \- S8 F; V/ }. m, R+ ?/ [' P& s) |6 s. q
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图0 f7 G" W- u, K- Z
2 H: L) Q' V' Z0 w0 N
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
' b$ a' u: _) E7 t3 n# k- O4 E; y! h1 L4 G  d9 W% X0 c5 W
上图中只画出了PERST#信号的拓扑结构. W6 f: q- Z' L# \

+ G$ O5 k' [- @7 ~. v( ]; s: ?' l; a4 P5 ?$ ^6 P2 o( Q& C
正常的PCIe设备启动过程如下图5 V# D: H" _1 A2 i- i$ }
   6 ?7 x' e3 I1 w1 ]
; j- m3 @4 L6 ?& P
预期的正常情况是:
+ x' r( M1 h; f7 z
- V0 p; k4 g9 ]4 @0 O0 W         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。% `: s: m8 q& n: R) x( c
         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
- Q* X2 O! o: l# s4 F3 D: |         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
/ h0 w. J& K# o1 t4 |
; A1 D& R6 |: ]) {- J9 S7 Q) A: K. _. u- r2 v
但是现在的情况是:/ u, @# R; Y# y; Q; ~

) I7 }" ]3 Z/ @3 {! u* C1 U7 O         1. 如果设备卡不加电,则主机能够正常启动。
! T/ O6 i( [2 W1 j- u         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
) k' c6 t# l* R3 p" [
, M" @  g7 J0 l; V3 P- [+ ]3 y- ?# ?3 l4 M/ q% C7 C  f& h
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
# a; P) J% B7 }3 @2 F6 d4 ~) u! d8 f9 A' _  ~
我做了如下分析:; v& ]# C- ?6 r
" L7 j# X+ y+ w& Q/ M3 [0 J4 u% Y4 h
         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
9 v0 v% f7 [# [( X9 J         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
$ Q  v+ {6 Q& n5 J. C( O; J
: X7 \7 L  o( W! ?( R但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
$ X) U% z' k' D7 u; ?& K. c1 I/ @, r# s
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
2#
 楼主| 发表于 2010-8-15 11:50 | 只看该作者
把FPGA卡上的4.7K上拉电阻去掉后,问题还是存在

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
3#
 楼主| 发表于 2010-8-17 15:43 | 只看该作者
回复 1# cuizehan
7 T( P( ?- k$ X  y" m8 X6 ~  E, n
) m+ ^# n0 R) ~! n9 C( S3 Z: b
0 @) R' E6 f+ M" ]4 K    昨天发现是由于4.7K电阻的上拉能力不够,不能是perst复位为高电平,换成了470R的就可以了。% L) G8 b5 ~. t
3 E. r2 t- ~% j7 |
但现在仍有问题,我把0R电阻换成了开关,
3 ]  X9 ]" k! E+ D3 ^. n      如果设备卡先上电,此时把开关合上,由于主机还没有上电,此时perst被拉低,相当于对pcie硬核进行复位,把开关断开,设备卡上的perst被拉高,同时与主机隔离。这样就相当于手工复位。此时如果启动主机,一切ok,通过PCItree查看配置空间,发现BAR也分配了相应的值。
) U+ S+ \5 |  i4 |2 ~" ~2 e      如果设备卡先上电,开关一直合上,然后开启主机,主机POST过程中会发一个perst的低脉冲复位所连的所有PCI设备,包括我的设备卡。这样主机也能启动,并且通过chipscope查看链路状态也一切正常。可是通过PCItree查看配置空间时,发现BAR为0,并没有分配物理地址。6 c( F0 g( E  t3 E2 s; ~8 c

" ]% b: t. V2 y一直想不通是怎么回事?: `( T4 v- g0 i- S% ~/ ^- E
有谁对BAR的分配过程比较熟悉的吗?

0

主题

69

帖子

-8930

积分

未知游客(0)

积分
-8930
4#
发表于 2010-12-7 14:42 | 只看该作者
正好  我也要做这个。
+ p' f9 ~% E' R; y& O$ M) C我用的是V5的。怎么联系楼主啊,需要向你学习。要不加我379805328  多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-4-4 10:00 , Processed in 0.058515 second(s), 35 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表