|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 6 Q1 M# k5 x5 ^7 o' k% v1 h1 O. X) T
' y% t- w ?! I" A1 h
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图1 ?! U4 \$ }# H! f, b- ?5 K
3 b' P' k+ c& g# N9 Y, Q: dFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
; M* q* j8 p2 d( H: i4 w; d- I0 x& J0 J! z! A# a( Z: I
上图中只画出了PERST#信号的拓扑结构。; G& O/ M& Y3 ^& n
8 T+ X5 B; K; L; U
6 b/ o% S$ n8 Y1 I正常的PCIe设备启动过程如下图$ X6 o/ \; F& a2 A
5 P( ?- y/ y( d$ c
( s# I$ x7 y( `: t/ A c( p, s
预期的正常情况是:+ a) G* ]- o" k. x% R& Z# V
O9 l/ B( P# d9 S! ^, t1 _6 [ 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
# g* s+ P0 _. B5 P6 D. s0 e* k 2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
& d$ `9 Y9 w, z, Z 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。, t8 x: @8 s$ }4 \% C# T
+ |& f5 }& X& N( Q
) w+ f. j! Z' B; [& Z0 l但是现在的情况是:
+ h7 n3 A' f; K6 n" Q O$ c" R' ^$ y8 q8 c% u) e' U
1. 如果设备卡不加电,则主机能够正常启动。
8 U7 o# e" t, V! Q! S5 |# j; a6 Y 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
6 P* |' L' ?9 a9 s9 L- Q' d) n! [# R; F
. A4 |7 x1 X: M/ ?) m3 r% l
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。4 p: A" a' V7 X7 y
8 W( ? A% @ p3 e! d+ Y* B我做了如下分析:
/ U: o7 M, A( |$ ^. N* U3 v
9 y% {- n( @# t+ {8 J, H8 A' V 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
: P4 S9 Z3 U2 u" b 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
7 G; {7 m. o# t0 N0 A" s7 V: O# I- [" u. f$ j- T) w/ Z$ V
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
9 e* j- J, p I& k2 B1 V m' f( J8 ^1 c) f3 M: ]# b* n
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|