|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 % u9 a& G; W) D+ L; F! ]
% N4 s F6 [8 v; G7 Z$ q9 w
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图0 R) @ ^: y4 K% j& h: D
1 P# j) x9 a n6 ^& u% A
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
% p/ T8 r( Z4 ^( O! K% }, {8 T2 V- b- i M# @9 U5 Q% b0 g
上图中只画出了PERST#信号的拓扑结构。+ x1 O; t& O( f- K% q$ t/ n, _
0 ^. n: q: O7 g# d; V: I
! U$ S. l2 F5 Z正常的PCIe设备启动过程如下图
7 C& n' Z1 L/ Y3 x
4 M6 Y! E: U4 ]6 t7 z+ t% X
2 }2 F. r. w7 ^
预期的正常情况是:" _9 Z, X% t8 Q7 @
$ B3 m @# x! l( i. O W 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。) l% c: l0 j0 ^2 g$ X8 q5 L" L
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。% p; q2 f, Y2 Q
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。/ ?# l' E# D; {1 Y" g
# }1 |/ f& p4 g0 t6 H, k! k
" A/ l6 v4 G! F9 s! |1 \; a% H$ N但是现在的情况是:/ h: w" g2 G) _; @6 u
7 J8 R" k5 V) K& T- J& ` 1. 如果设备卡不加电,则主机能够正常启动。% d) u7 C2 V7 d2 ]. t% R
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
2 P3 p6 J- Q C$ }' }: \0 X: U+ a- [1 C
* Y/ w. }0 O) U& t0 u5 i3 b我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
/ \% l1 \& M) s8 J4 A6 L. z
. R O* @2 \: ]/ l+ `. Y1 l我做了如下分析:
- t5 F0 G2 N3 S
/ v1 n1 v* _. A 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
2 p& z; d6 y& b B 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。; U5 r: b; c6 Q, K
9 R. K/ d/ k9 k+ q$ \0 l' @6 f
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。+ ]! y. d+ `, {
& ^+ x0 [* f/ j
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|