|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 % w0 p0 i4 L% u: e; i, e: k1 w
4 o1 j) _* m/ v9 I" `2 O* \我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
8 v( d0 A$ d4 ^; l8 p
$ F. f* P: m& _
5 L# ^: Z, k& _
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。; c- F i' Y# n; {
, }* ?' M1 o* v! H9 K上图中只画出了PERST#信号的拓扑结构。
. T D& ]6 J) ~( Q; m: F3 O, `, s. H5 }% B5 Z# w# M5 l
( d) E' R+ y0 R% X
正常的PCIe设备启动过程如下图( o& a2 S6 \7 ?; I
c# c2 C2 K2 v" A5 p# ^& s
! x9 J3 A2 q1 t& E
预期的正常情况是:5 @! _+ P7 P0 L7 V2 L9 v
% ^( z1 r8 }3 l+ z+ v9 s) l% }
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。9 v4 t. M; m/ c! I0 f
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
% t: w* a, V. C C8 F$ Q 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。9 N0 ]( {6 `6 N; H. a# K6 g: j0 f8 R
" F6 ]3 g. {2 F- r0 h
8 w! r# C, I0 ]# Y但是现在的情况是:
$ |8 o1 c+ A# D# y9 M) Z3 d/ u: ]0 m* C- f* ^
1. 如果设备卡不加电,则主机能够正常启动。
& u8 P3 j! e( r% m 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
6 d) s1 ?+ P( Y$ n2 T' r" R: p7 {: r# v, g+ j6 P
+ y: e$ c' M* ^1 f9 F
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。4 ]0 k; W r% }
3 g M* v# c3 U: O; q我做了如下分析:! t9 X. q' c" L' x% l D$ B
" O r7 L* J% c, \, M8 g/ ] 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
. Q) K; g F5 p |1 {6 K 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。* }1 x6 Y1 Z; ~+ x7 n0 n
! H7 l4 x1 i) `/ X L4 G$ v7 |
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。! }; D9 x0 Q3 Z5 _9 b j3 Q
/ y# _5 L- m" p$ q6 N. q: B% D
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|