|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 5 [2 b# v0 D1 K% e! e4 [0 u4 Q' W
) Z# [* y% @, s( s. ?2 m2 V我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
5 }7 f$ D. q8 |8 k) E
2 M% ^# Y, `8 w3 R9 }- _$ _FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
, T( |# e* _& c5 t8 v
8 X4 i7 s! V' W8 t, W- t) _. f3 {上图中只画出了PERST#信号的拓扑结构。9 A$ u5 L) _4 {1 y/ K- Z* V4 k) \
! w+ I$ _4 R& g$ I2 g- [
0 [& i3 z2 \* C% z8 X正常的PCIe设备启动过程如下图
$ h0 b$ N+ S3 Y7 ^" L6 {) G
8 Z" E B @) s* m) Y2 `( w
+ q0 s0 m6 Z1 C* x* j预期的正常情况是:+ [, ~0 m. Q' n$ Q0 R1 w$ N: G N4 _
4 Y' c7 N) K0 Z) U" e- H 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。8 ^' V3 t" M' ]" l: G- x; n
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
9 H9 s M: z, M% y9 C% z! S2 U 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
/ E) F2 l6 e6 ], w2 h6 s
- w: {6 N7 G0 {# N/ @5 l2 G e- {) x: D
但是现在的情况是:' B4 g9 ~, Y& Z' h) ` Y9 Y
2 p7 m- N7 r5 d! { X9 K6 R: P4 c 1. 如果设备卡不加电,则主机能够正常启动。2 s5 M z' |, N
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。 I% a: a: t2 _' T! G( V7 P4 V$ @" E# W% Y
, Z2 ^1 M: t7 l3 u' |$ j8 ~
: t$ p- B4 P+ P" O! Z# U$ y
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
; u6 p: M7 S. N/ O7 ^2 B% d2 g# G3 Y' W: z; e( `- j
我做了如下分析:
' Q( ` A" q3 ^- I3 k9 x9 V5 }7 x1 A7 J
1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
5 c' A; G; H. b! i 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。! i$ A" x$ _! M1 B" Q
$ Y7 g/ y3 V* z
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
! x# ?" @% n% I/ H4 n
8 X9 ?1 Z7 d0 ?! ?图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|