|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 4 X! _5 G* x4 ]' m
4 w( r9 h7 K' s+ R$ d' k
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 5 @+ b7 Z5 H2 c( G4 |: r; K: n1 A
0 e7 I# P& l6 ?
' r7 W. |5 P7 r( f, T2 x* H
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
! y; Q/ H7 ]! R
, R; j5 c E+ d上图中只画出了PERST#信号的拓扑结构。! f( r4 I3 |* n ~) d1 } J: y
! {7 H K# [ g7 a/ c/ o2 j
z. H+ W" x: Z5 ^! n正常的PCIe设备启动过程如下图
' S5 F5 J9 k ?+ k& K 0 o( Z, M- _* z8 [& f+ c6 s0 ]
2 {7 m v2 n) i5 Z( _预期的正常情况是: K" _! X5 y/ y0 u& ~& x3 J
9 b* V8 s T0 t. m; r1 `: M' q+ M4 o
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。, k% \# u- ?, c' K! b* R: N
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
3 q& w4 w8 X7 B 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。5 a- [! p7 ?3 J! ?
4 x# u+ n, A. s3 E* |5 I* P2 M1 T
但是现在的情况是:
" K0 A/ K% R6 h) g$ H+ F/ O7 R7 q
. f, i- m1 ^& @8 j7 M0 Y) N 1. 如果设备卡不加电,则主机能够正常启动。. v" m! F* x w; o! m9 u$ B
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
7 {& U( A$ y* v" q0 l* K5 N+ K
$ ~/ Y* L; N. f7 U, C
% F' `" l+ y7 M2 @5 I* F; H4 W( T我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
- _+ G6 |% z; _) D* _ U, M' S; i( w9 \) z M
我做了如下分析:
7 U; F- [0 q, u
* q- R: \$ l+ I7 R) I4 G. ? 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
% I4 R; v6 r/ ?5 i 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。) m4 ~$ N6 P/ M" T- |, Y
6 k8 t1 I( T# B+ [% S' j6 Y1 y+ c
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。6 i0 ^: Y! x) V2 a- Y
W; {7 U: ?5 k4 X0 z+ ~% T图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|