|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑
) g6 a, j& R h, Y: Q# f, z/ @/ J8 p9 O8 Y9 j; g
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图) x$ G( l$ z5 z4 j
( L, s% n+ L: I# s$ e/ ]
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
% r& I/ R$ i u7 I1 Y2 A0 u4 ^1 J, R9 t W" R, N8 ~
上图中只画出了PERST#信号的拓扑结构。
2 R* r. L, o S) ^
9 c; D& Z6 ]$ P: t$ L! y6 K# v9 W! Y e9 W9 B
正常的PCIe设备启动过程如下图
1 l; M$ x( l" v% S7 |
3 F: c& c7 `" P8 T, n' ^! \4 x) v5 b! _. V/ i: p) ]1 |
预期的正常情况是:
$ L( _9 R& i* }( m
' ~5 L2 {! _. A9 x 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
% P V {( n) B H+ j* m- l 2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。" v/ }7 C6 W$ T: F, s' T/ p( E1 ^
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。0 l) ]6 m1 E) Z
; b/ p( {6 M( N' J9 f6 B+ G3 d: o
1 e5 v5 ^$ |. j
但是现在的情况是:# l! R( {* D# ^/ P# J! x2 n5 Q8 |
" a! l$ Q$ s8 e! D. t
1. 如果设备卡不加电,则主机能够正常启动。7 [* K, P6 d- n' ~. u U; A
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。8 m+ y1 w' Z ^1 Q8 ~
) C9 t- [ U* Y( H
$ ~$ k5 t* ?# y4 B0 b; r% S* T
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
4 @7 T3 i4 Z/ F
4 f) G( U7 D. |/ o2 C我做了如下分析:
# C% W4 N5 X- R7 r$ z
# c) m. e+ B( b+ s7 W% Y 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
. P8 |# Y8 a+ o. Z u* {8 c 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。# V8 z x& d* X
& G( {6 z$ p5 _& a; ~
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。6 j: B2 `# v/ I% J" c3 b6 s. `5 k
' J/ i! ?& j, n: A: y, z图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|