|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 9 A1 k) ?" r3 L' ]" W3 n( w
8 @7 ^0 \( N3 ?( Y, N. F+ o( ?% D$ r. ]
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 " N3 g* q+ n+ y
) V$ w1 U. s: {' c( K( z
7 q' Q! y$ `" Z" M
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
* n% C" R5 Q! v2 x# q6 |* ~9 G
! k& m! k+ V* B+ Y" ^" h! a上图中只画出了PERST#信号的拓扑结构。
, E( F* w* V0 ]! }2 _, Q% O
7 Z7 u4 @+ ?9 T( d# h& G& W9 x& G7 U6 H+ l
正常的PCIe设备启动过程如下图
5 y+ p4 f. X1 n* B, Z 7 ^ _) J. x3 ?4 y7 _
( |' y! K% W5 L: U1 l
预期的正常情况是:6 A( j8 U' X! x6 M+ f
; c: A1 A( [% t% F' V" I; L- @) C
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。- B9 B0 p2 i& \& D
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。0 f6 d- R" F2 D9 }) t
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
; k3 T6 u' W4 c' d) h4 z4 v
( N) I3 v9 L+ ~
5 D" g: J1 L- e: V但是现在的情况是:
$ O1 V+ d; \. w7 n" }% c& Q
: P% R" b( }7 G2 q7 _( V6 | 1. 如果设备卡不加电,则主机能够正常启动。
$ _7 K" V3 N% t) ]7 U/ y 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
$ q/ y8 M: |. v4 S4 D2 s( h
) i5 z' s8 E9 V1 e! \% L' L4 M0 M5 w4 j
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。" j& v' e$ V# K2 l4 v$ Y* K
, W( P. o5 z5 m7 e6 c/ r
我做了如下分析:
: s/ [, k1 [( D* ~
0 w4 ^& ^9 @& ~/ H F, R 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。) L) H* `! }3 r0 B7 A
2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
1 u" a0 e5 z {3 |/ t. A- {4 g9 ~ W" Y9 B; A
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
, ^# D/ N( L3 f& \7 S% X
# K+ q$ H# _& \* w图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|