|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑
% t7 s6 w) m, A r! i# _# R2 e4 `' @6 o$ R( B v- k; K8 ?& d
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
4 |5 f" h: a% ]% f( r$ _3 s& E2 Q; y# q3 b5 t) z) L1 h F4 d; V
0 N) t( J+ E8 \$ x' e3 F& F
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。8 |7 v5 T" [% p
+ V1 j( A u/ W& B
上图中只画出了PERST#信号的拓扑结构。
/ e5 I5 K& H: S7 ~& k% b1 _
. O" y( k) p- t6 u
8 W" n9 b/ y; |! t7 t0 {+ y正常的PCIe设备启动过程如下图, q" E6 f( F* K" u
( G" W9 i Q; s4 K+ L4 {
5 M1 l1 Z1 p! d& F! _3 j& M$ Z预期的正常情况是:
/ b6 x+ ]+ f! }- t2 L
$ ~) j5 h: o6 ? 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。$ V) N6 [* V. b, M& @0 S
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
5 E9 T* P6 X/ h& } 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
9 x. J! ~% D+ t( j( D$ t. M5 U" Q6 M' Z" f' V! J' U$ |3 l1 \
: u& Q8 |1 I# \& S但是现在的情况是:
0 g+ y3 S4 \; K2 k
7 O, E3 ^+ |& g1 w8 k% p 1. 如果设备卡不加电,则主机能够正常启动。
7 @3 g. K% Q+ V) ?: d- J 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
5 i$ A9 Y( R( _4 M2 k" a, q: t0 Q6 Q+ g2 q6 r1 V
7 a9 S) O! \7 R/ W/ c我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
$ ]% v: H" l0 U! L. D/ y9 s3 M! O) N1 s3 u# h0 {' ?
我做了如下分析:) @ t, F3 Z" R2 Y2 @" a, s
! I# a! a7 [! p0 ~ 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
3 P9 E8 O- X4 r z4 I 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。' ?9 t+ c9 X G# n9 A, ?! W+ B" C3 Y
2 N4 z7 D1 q1 a D8 t
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
% e1 ?; r1 w% K0 e
; k' n5 a. m/ M3 j6 _! X图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|