|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑
' G P5 l1 Z4 g4 h# Q3 s
' ?* B' M- I3 `# f) r# z8 f我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 7 J1 O: h. k: Q
3 M9 F% w; r" ^
4 e. m* |# u3 ]3 {9 }1 gFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
0 W( H( E0 c1 _$ o. J- }4 ]5 l( ?; P6 u8 c9 W+ @( N) q8 C! `
上图中只画出了PERST#信号的拓扑结构。
( B0 T. c8 u, {
* W5 \% R8 K7 ?+ X# m# N1 i# P' g3 T7 |: W+ S+ E( C
正常的PCIe设备启动过程如下图- a$ ^' M- d6 G
* y0 ^0 A. p% K* \% ]) ]3 \
! I" j2 ^# M% i* M% e- E6 w# o
预期的正常情况是:, C2 O& b/ H+ B! k, f7 O
/ v% g/ s1 Z/ t- v& o+ P5 N
1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。$ U) c7 j/ C9 V2 _$ E: x
2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
3 L% K. E- e+ A# p/ W! J, h 3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。& |, G& G5 N9 ~, [( ]. {$ M
- r' B: M6 Z8 s+ r
8 j' q+ |. D0 q( x" L- u
但是现在的情况是:
; ^, f& r; K+ d+ O) H" d0 N, q6 h# |1 L' ]. p
1. 如果设备卡不加电,则主机能够正常启动。
2 H9 w1 [8 n1 f9 i# _- ? 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。3 R* }: A, D) K$ {$ o0 ?
- V7 O3 J; ?5 @( R, K% x
8 c8 g/ V: K- l9 N
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。" g5 H/ w, O' M5 I, j8 c* y
2 u$ M2 Q7 p2 I: ~
我做了如下分析:
6 f: t2 c- J7 D$ R& a/ i
, f/ q0 C5 J" z1 V1 h 1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
# i5 R" J" u, g+ ]2 @6 K 2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
& u, a* _9 X+ v0 g/ _; ^; {$ }" i5 [" o8 x, m8 R& r& t
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
* z2 U& g# _9 F3 N1 E/ q
9 o! K p1 X6 v' I图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|