|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑
; C# |5 H2 s$ w0 H0 o7 F4 t% L# J2 ?- [& g% Q
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
$ U$ S& j1 f. Z
3 X+ S2 m! h& s+ e( n: l5 u
! j4 Z9 s) h% H' ~! ZFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。0 {+ g/ Y i" }$ U6 b$ w' ]
+ c# N$ O5 e3 z( P9 `
上图中只画出了PERST#信号的拓扑结构。
; W# }# U, T, A( w/ u4 [3 }. n7 Y$ e: V4 _& B6 d5 x) [) v
. w4 m \9 Q7 `
正常的PCIe设备启动过程如下图4 ]' ^! t$ C+ N) h/ L h
( y6 Q5 _* k' a( A$ p. c/ D- u4 J
8 V* x0 `7 m6 q7 i3 H1 o& ~预期的正常情况是:
$ n( W, t5 r) B t8 r" L% O3 K1 G/ Y: {
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。6 \* r5 F' c( b: l; S6 O9 I
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
6 K8 W# Z5 G6 P0 p& w 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。- i0 Z5 V. t3 V% R# W8 l3 U
2 B: Z- I# ?" b# B/ H, A
* z/ K4 J3 Z6 c, B1 @但是现在的情况是:
{( _/ T6 r' X: N9 z% l) T
! @' t' Y; ~4 T3 y9 c7 I, A" e: ` 1. 如果设备卡不加电,则主机能够正常启动。8 V1 Z4 X+ V3 T- f! o6 }' ?9 I% Y
2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
. c* U5 i/ M! T( @8 m: A ]/ v1 k
2 I4 L7 O, u" r' e, b
6 v0 c2 B( }: u我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。/ ]# T6 s% i, A" p. j
; _3 D9 N( \. v
我做了如下分析:
* ?( r+ t7 y1 z7 N; z, D0 ~( V. e' S% U. y0 G1 K$ O
1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。2 M* [0 d# C+ D$ I
2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。1 g2 V: s: o# v" L, X
5 z2 B" v: J6 \( e" X. ~1 c
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。2 c" ^1 A4 ?% { H4 O" y
) W6 |+ d$ p' A
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|