|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 , [% `' j' {; ^5 V; c
S( B" N( G/ M2 m3 G& C
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图6 d* x9 A; t% x# d: H
/ a j4 S% w& ]5 j% c0 c) s6 ~6 gFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。: C1 A9 _1 T+ Z$ I. X9 Z
, i! \( j; I9 ~6 j# \4 J7 t7 O上图中只画出了PERST#信号的拓扑结构。
, F) @1 c2 b, _ J: O7 }5 j
* I- P0 ]; m: C* j# p6 N. Y8 H
+ X1 \' [! S. n e6 |正常的PCIe设备启动过程如下图
& p0 s, U* e+ z
, i r! D% R; A) s/ T0 S! l5 Q% w9 a+ L j) ~2 \
预期的正常情况是:
: @1 s1 e: J, |0 O9 S' ]( D% F% h9 `4 X+ ~0 ?& B8 k* ~5 _8 C- j
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
0 A5 p8 f. n- H, b 2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。2 F5 _/ n4 Y+ Q; Y5 J s
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。- y' @2 n) m' I" `7 f2 _( K2 ?
2 N* |0 h+ o8 t4 G% v4 }% X* Z
5 L! w# Z5 [- ` `: A( N& f
但是现在的情况是:
, O: e1 o7 d( e8 k1 G7 d* _1 @7 D6 [- C$ l3 O a# }$ ]3 V' v
1. 如果设备卡不加电,则主机能够正常启动。& j$ l3 R4 z/ m% Z6 W( T
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。5 j+ o7 Y0 N k( M9 j
( T+ [; p" j% y3 S: E8 k; ~ Y3 ]
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
+ t' J; D1 h6 Z
' U. V, G8 J$ W( i我做了如下分析:
: ^; ~1 ~3 y0 z# T# J( |8 d1 l0 }2 M% U% [
1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。7 d0 _0 G) x% l: e# ~# ?
2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
! K( }" K5 o* Z# y, P) d9 z8 R V& Y: ^7 y: \# |% e
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。. W1 _- q& ?' D5 o6 _8 P
2 [) R1 j! ~" O4 }2 o图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|