找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 4246|回复: 11
打印 上一主题 下一主题

FPGA实现PCIe设备时的一个问题【图已补上】

[复制链接]

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
跳转到指定楼层
1#
发表于 2010-8-14 23:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑
& D" c) y3 ^  Y) e
* `% p9 h  I; B" p+ e& g1 t/ I我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 ' \" [5 R7 V; t# ^

# W! w0 d9 c& Y2 {7 g5 g 2 q* x) v" R2 h/ Z3 A6 m- ]% p
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。& x0 R+ A& z( `& h# F9 w

5 q; v: L) A6 W) }7 f上图中只画出了PERST#信号的拓扑结构( H  [+ g; T1 d3 E4 c
  o, d5 K4 T; e7 ^( p: s
! w" j3 s& @2 A6 c8 R
正常的PCIe设备启动过程如下图
, a7 @" O4 p. R5 p5 `$ U5 a9 l% s1 b$ o  
6 L3 d" o0 W5 A. F  a" A ' m+ ?2 X4 `/ R" R4 ~5 l
预期的正常情况是:
  B1 _2 n7 z* `0 E) Y8 }' P' f7 i! h1 R6 I7 F' U/ }
         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。
% c# F0 X  p. R( z         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
( b8 r' o- o: H; B         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
0 U. Q5 L# D  u2 ~; `. k- Y0 x+ I2 x5 n" ^$ l8 A* [3 J: B
& ?4 n6 y. q9 }7 G; z% a
但是现在的情况是:! ^' @5 r  d! N

6 G5 x/ ]. `  q- b& f' |4 e6 `5 a2 H         1. 如果设备卡不加电,则主机能够正常启动。
% l8 m( Y6 r( p0 w5 @         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。) t9 y8 m% L, n( N$ W/ j) y1 \5 Q
: a- \( C9 z( [/ K5 F2 N

1 d0 z9 l& v; U: ?我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
) @, |3 K4 S" a+ ]
# m# a% k9 n: h我做了如下分析:3 ^( t% U1 [- h* I2 r" h4 L" }' H

+ o% |3 O% n4 K2 O1 {/ e         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。/ R3 I# j* d1 Z5 K4 Y
         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。# U" ?+ g$ a' M2 P  u' {

8 K$ {0 w3 a  Y: {但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
& E: K2 Y9 n& n  P& h, c6 G5 d. U. r5 n
图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

20

主题

445

帖子

1316

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1316
2#
发表于 2010-8-15 00:46 | 只看该作者
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的Pcie卡的pin map是否有短路的,电源和地。
! h. S  @% N* S* ?8 G9 V
9 E' a+ b/ g0 e2 e或者是你看看你设计的V6子卡的pcie连接器的3.3V/12V的电源情况,通常是主板给子卡供电,但是你设计的子卡的3.3V/12V的pin上可能有电,是来自你子卡自身的电源模块,理解吗?( S- G3 A" ^9 s0 E. Y' p% }+ x
# q/ U" E7 m1 T1 D( m8 Z# z5 e
这样3.3V/12V相当于2个源,主板的电源进入保护状态了。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
3#
 楼主| 发表于 2010-8-15 10:33 | 只看该作者
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的 ...
  ^  n9 c- o  w* P& d5 wliqiangln 发表于 2010-8-15 00:46

0 n. g& w! `# T" b
8 x1 V* k( I' t# L1 K
9 I8 D# r& q2 D    PCIe连接器并不传送电源,同时PCIe转接卡和FPGA子卡都采用外部电源供电。
$ |# g  M. q& K' K  J, w* c2 |4 @1 N* |8 x6 D
    PCIe插槽上的3.3V/12V电源在接到PCIe转接卡的金手指时就做了开路,因此应该不存在3.3V/12V有两个源的情况。3 O- p% S0 V% f( Z$ a

6 i/ u% d, ?4 H5 T0 R这是PERST的拓扑结构图,再补一下' [! j6 q6 n1 r; N1 I

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
4#
 楼主| 发表于 2010-8-15 11:49 | 只看该作者
回复 2# liqiangln - f( z% n# D+ P/ H

  ^7 k- k$ L& K# o; V5 ?# e
6 @! q4 ]1 u" f2 v8 x0 X    我怀疑是FPGA子卡的存在干扰了PERST#的正常时序,2 U# Q7 g1 R4 _. o* ^
* {; k7 [5 K& h) i
    现在把子卡上4.7K的上拉电阻去掉后,问题还是存在。

20

主题

445

帖子

1316

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1316
5#
发表于 2010-8-15 16:37 | 只看该作者
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。$ [. \8 G0 z9 d0 A" a$ e
比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。
* Y/ G/ {  g+ D* o& q7 r5 `2 O( b0 \1 t$ S
比如说你FPGA(设备卡)的3.3V和主机的3.3V是什么关系,因为你把设备卡链接上去的时候,这个3.3V就传递到主机卡上了,如果这个3.3V先于主机3.3V电源上电,那么可能造成主机的3.3V电源模块没启动。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
6#
 楼主| 发表于 2010-8-15 16:38 | 只看该作者
又做了一个实验:
1 [: y0 R7 j8 G2 n, o! n( ?
- @( |) F# d* e. a% `8 t    把4.7K电阻焊上,把PCIe转接卡上的0R电阻换成开关。* z( Q4 T1 R/ f  F3 I) V" c. E
" L" D; u& g; b% k( m
发现:
4 w, r: `9 L: U9 l: E9 x- V! _& K0 ^. Z' S3 E
   若开关断开,则FPGA侧PERST#为高电平;; o+ T# f0 v1 W( K' @4 X- N$ m& `
   若把开关合上,则PERST#被拉低,FPGA侧PERST#为低电平;/ n' W8 v4 Q+ B: i; Z8 N) K1 Z
   若此时再把开关断开,则理论上PERST#应该被拉高,但实际中FPGA侧PERST#为低电平,3.3V-2.5V电平转换器的3.3V一端的PERST#电压为1.57V,2.5V一端为0.2V。
& h) F  T; j. V( M- C/ f4 x7 j0 ]" [/ y5 B! Q8 r& U! Z! `
推断:
6 \1 s, H- f7 s3 `- _3 K0 C3 s7 |5 [2 |' V! q- h' z8 D
    可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
7#
 楼主| 发表于 2010-8-15 16:40 | 只看该作者
本帖最后由 cuizehan 于 2010-8-15 16:42 编辑
( k7 G! j' z1 T3 H/ G  w! M4 d7 z% X0 q; e  S& p
回复 5# liqiangln
1 H7 v4 L7 A$ O% ]
1 E) k2 _/ {) W! e
9 ^( m4 y( G& Q/ Y+ @# i9 p    主机的3.3V电源和设备卡的3.3V电源是隔离的,分别由不同的电源模块产生,且中间没有通路。  z1 A2 l# a5 {) T" _9 S0 n4 J( q
    参考地是一样的。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
8#
 楼主| 发表于 2010-8-15 17:12 | 只看该作者
回复 6# cuizehan
7 D& d4 H7 O. U$ ~  i+ M7 r* V! N7 V" i: U6 n( K
# M9 @# k+ n8 @5 O9 M
    换了470R上拉电阻后,通过开关手工复位,主机可以正常启动,并且也检测到PCIe设备了。+ S- W' e& [1 p9 U) ], z$ F

1 d" J4 V$ }- Y6 P8 Q    虽然可以了,但是需要手工操作。下面把开关换回0R电阻再试一试。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
9#
 楼主| 发表于 2010-8-16 08:57 | 只看该作者
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。7 W3 Q3 t( A5 o4 `

7 U! i& E+ D' `但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。
9 B& ~: e  S" p. Y# ]4 a" s: \; v8 M+ z  X8 P
通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0.
$ T& B& s! d% G* C6 y! o+ G$ h( h
还不知道是什么原因造成了这个现象。

20

主题

445

帖子

1316

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1316
10#
发表于 2010-8-16 10:44 | 只看该作者
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。
7 M# h5 H: ]* m
( a% s) m( q" v6 ^! r) r  {( LPCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?
* ~" A  _, |3 T- P6 b/ r: J- X9 Q' F- N1 d, ^& h
如果你的地址空间没有分配,还是不能工作。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
11#
 楼主| 发表于 2010-8-17 15:41 | 只看该作者
回复 10# liqiangln : q2 G6 m. b/ `( ?
2 i) _( E" ~. Q

5 o" F  O* z. v( n  o    把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。
5 U( `; A5 p2 G4 F( _( S; K, k
1 ?- a# Q! G; n+ i1 t    在位检测信号,% v2 x+ y8 t8 u& h, y! Y5 U
          按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。* U2 X1 D( d! o4 a
          实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。6 B# X- |; z8 `/ U9 a! I
          之前一个做这方面的工程师给讲过,说一般的PC机是没实现这个功能的,直接给所有的插槽提供给电源和时钟,所以这两个信号可以不用管。

20

主题

445

帖子

1316

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1316
12#
发表于 2010-8-18 09:06 | 只看该作者
不知道你找到原因没呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-22 23:44 , Processed in 0.065949 second(s), 35 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表