|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 2 O' o7 g% G0 `
' C$ |3 s' u+ R _7 F# i2 d我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
/ b4 b3 H& U, i& D* Y# w) i
/ a- C4 Z* g8 C1 EFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
. A6 Y- g3 ?$ i; z0 ?8 ^- H
5 \, U1 D5 m* m$ U; @# z# [1 j上图中只画出了PERST#信号的拓扑结构。5 }0 E, j$ c& Q5 `# N% t
: E) s' H% }8 F* Y
- a4 ^4 U0 K$ P+ J0 @
正常的PCIe设备启动过程如下图
7 z r$ Q( ^3 Z4 P" o3 G
2 v, O2 X- c7 d; Y9 Z
5 p9 n+ N/ E$ `- ~% z预期的正常情况是:8 z- S0 O7 g9 ]* P3 ?7 B
L2 y( Y* I# D
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。( _' C) D; G i5 j
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。, y2 c; y/ Y) s5 H4 B4 p- K
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。$ q( V) y+ g( u/ u- w
4 p/ m) d3 J T$ J$ w0 v
+ H. s2 U% p* L: ^; ^5 m* V: d7 C但是现在的情况是:
0 W4 a( V) H% p( n: |: A& }0 Q1 i% B l2 {7 u1 p
1. 如果设备卡不加电,则主机能够正常启动。
+ L9 d% } b& v 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。% q$ P, c3 p. ?
& e9 r3 K; h' A( f3 D3 `6 A% n
; p+ K" u3 }# E- \: B
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
) ]: t0 O4 W3 D
, \ R) |2 P+ s, V B1 ]8 ~: y我做了如下分析:
7 P8 G5 z8 s, U0 x6 Z3 S" |* k4 c2 D. A! |: _
1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。* O; g) e" o( ~; p+ q+ l# J
2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。* n- J B; M8 i3 L, ^$ h& v
2 G; R. s. [! [/ O K; b* V
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。+ |9 t9 ^5 D% V* h
1 s/ r" D" C. V+ \( Y9 [图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|