|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑
" A3 ^& i: B" f+ t9 Q
0 i, f% q. V2 C) l; z5 Z2 A$ \3 ?+ ]我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 ' `% c+ ]/ L, t
1 ^& ^: G7 [0 M. a9 `& E2 W
, ~" z( S1 W! h+ Z9 i6 NFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
1 B2 j: D" }( q* L( k
1 Y( W6 i: R1 h3 `上图中只画出了PERST#信号的拓扑结构。
' z- X8 `$ T1 x9 ]) a! c9 l* \ _5 q. Y
; l: O8 C4 K9 v" A k# Q5 [正常的PCIe设备启动过程如下图
, p$ M- A; n4 N9 L) b2 |$ Z$ N" M
2 f: o3 m6 h$ }
?7 S5 d' h+ {; T" o* |0 s预期的正常情况是:, N6 i8 T+ h4 u* v3 o
( A. ?* o" x M 1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
% U& b% @& T- F 2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。/ x: H, P7 I3 h+ `1 J$ o
3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
8 J$ |2 d6 d4 Z x: z( W: {/ q
; A) `1 u; R! _+ E( _% }2 B
/ ~# g, x* q$ b但是现在的情况是:# ]( v1 L S/ h5 g2 D. O% B' T
& L9 p! ^8 {' D b. h 1. 如果设备卡不加电,则主机能够正常启动。
1 W! x+ K. Z% _* b+ { 2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
( l- L! e; w! i: X% b2 m/ K4 I
- F7 R k9 h7 x: i. N& c
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。' S# n7 g/ t- v) r6 @* J0 ~
$ ^! ~& @1 ?6 j4 _' |5 ]8 i我做了如下分析:8 B7 k: X" l: b" W$ Z* J
% H& z1 `2 Z" J4 W7 a
1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。; T3 z/ i) t& g+ L* f3 c8 {
2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。" k4 l' E& p) n1 }9 w+ U) L9 T% @+ B
* P1 q* P' f/ N7 H, _但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
4 o) P" e' W7 n1 \1 d+ x
2 D! n6 Q: E: R9 R图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。 |
|