找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

17

主题

48

帖子

-8915

积分

未知游客(0)

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

EDA365欢迎您!

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

x
本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 1 `. `0 A7 x2 s9 r0 p1 |2 c
8 @; G1 o8 D* F
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
! {/ \& l2 ?. {3 y" o
, o1 y! \3 M! _; f6 w5 }( B . i! `* G% `  T( k5 R- j. L8 w
FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。; z$ C' E# n# n. h6 Q  D

' x: {: q; r* y0 i' i上图中只画出了PERST#信号的拓扑结构
2 f' ^$ c. l' Q) l* Y6 k1 T( R! J8 ]# \4 E

! z* y, S& B" a正常的PCIe设备启动过程如下图: @: m' `) K9 F: `: j' N
  
. y. {2 B" j% J2 D1 P. t2 L
; u0 v0 L/ c) Z9 T7 f! |预期的正常情况是:( d- N$ W$ O2 b

7 ?& F+ V  V8 W8 n- ?         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。* [% H% k0 M; I, ^% M7 p8 ]
         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。  i  `# N/ d7 R- `2 h$ r( k
         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
: z8 k( e. g% ~( [8 p% f3 z
, U- J. h0 e/ S( A& ?
# C9 t* f: o; \7 e2 D! _. g但是现在的情况是:$ |8 }, y" z# B3 K

5 V3 b' p0 }) |% r         1. 如果设备卡不加电,则主机能够正常启动。, e" P  F/ F2 ]# A! D1 R+ b
         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。
4 y1 d4 _& B" T: K3 w0 B: ]. M" }
" D  [$ Z! ]# U1 L' L8 I4 J
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。! p! p) n9 `7 N
- c2 T6 ?" e. G* M6 {- B
我做了如下分析:) u$ [% L  c# e. A) x
! D: C: h& _8 S1 q
         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
6 {- m, _1 ?! B         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
* l, Y- S; P/ [6 n3 V3 Q, S2 Y: N) k6 f( e2 j
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
# h5 Q9 J1 d9 Z& q  l0 i- }+ s& ^9 f5 z3 g' P# J
图中的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是否有短路的,电源和地。; @. _6 b7 N' b, N8 k
: c1 |; T# w# o. `) Y! _- P) g
或者是你看看你设计的V6子卡的pcie连接器的3.3V/12V的电源情况,通常是主板给子卡供电,但是你设计的子卡的3.3V/12V的pin上可能有电,是来自你子卡自身的电源模块,理解吗?0 P: `8 b) H' G  M  x* q
7 b4 v+ a* R% E! g6 s; x: S
这样3.3V/12V相当于2个源,主板的电源进入保护状态了。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
3#
 楼主| 发表于 2010-8-15 10:33 | 只看该作者
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的 ...
5 n- ~5 t  w# t  d) G$ Tliqiangln 发表于 2010-8-15 00:46

: p- Z, t- c8 P; k7 H  \* d' H  _0 X1 ?1 U) ^
1 S4 D8 {3 G4 ^
    PCIe连接器并不传送电源,同时PCIe转接卡和FPGA子卡都采用外部电源供电。
$ s9 x" S- q0 T2 Y4 _+ Z
. W4 W/ C0 {- A% Q3 V  a" V    PCIe插槽上的3.3V/12V电源在接到PCIe转接卡的金手指时就做了开路,因此应该不存在3.3V/12V有两个源的情况。$ l+ `* F+ Y! X$ C! c# A2 s

! b+ ^/ M$ j4 V/ [5 L; l3 e- v这是PERST的拓扑结构图,再补一下4 |, G4 H1 Y6 n$ c" [  g6 ~

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
4#
 楼主| 发表于 2010-8-15 11:49 | 只看该作者
回复 2# liqiangln & z4 D, T- n& w, p1 }0 {

: _. v4 {2 W; j4 O- |; ^  a' r  T0 S/ b
    我怀疑是FPGA子卡的存在干扰了PERST#的正常时序," Y( e! ~& M& Z. ]
' y1 E: y. ~6 J# _# E$ q
    现在把子卡上4.7K的上拉电阻去掉后,问题还是存在。

20

主题

445

帖子

1316

积分

四级会员(40)

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

积分
1316
5#
发表于 2010-8-15 16:37 | 只看该作者
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。
; }' }9 b+ x, V( Z. T9 {1 ^比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。
# K& d% J7 ~6 D/ W' h+ ~* [" E$ N9 t- i7 c/ D
比如说你FPGA(设备卡)的3.3V和主机的3.3V是什么关系,因为你把设备卡链接上去的时候,这个3.3V就传递到主机卡上了,如果这个3.3V先于主机3.3V电源上电,那么可能造成主机的3.3V电源模块没启动。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
6#
 楼主| 发表于 2010-8-15 16:38 | 只看该作者
又做了一个实验:
8 ?7 c' t) f' O  Q; V- S  g. A; H! A; y
    把4.7K电阻焊上,把PCIe转接卡上的0R电阻换成开关。
! @, X: a  w. W0 _" F( [$ [/ f" s4 K, O/ \5 f; M
发现:" _: `% F. s) W: M

  L, V" j, ~" @1 n8 ^8 E) y+ b   若开关断开,则FPGA侧PERST#为高电平;
/ d+ i& B5 U* w/ v* Q+ g+ C5 E   若把开关合上,则PERST#被拉低,FPGA侧PERST#为低电平;! X+ k, E, ~- x! C' ^# w
   若此时再把开关断开,则理论上PERST#应该被拉高,但实际中FPGA侧PERST#为低电平,3.3V-2.5V电平转换器的3.3V一端的PERST#电压为1.57V,2.5V一端为0.2V。. H- ]# F- f4 F' z/ w9 @8 R
0 G/ v9 v  p+ ^
推断:6 o4 p' U1 E8 L2 Q9 T9 i: }
6 N& D: {) [5 Y: I7 f
    可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
7#
 楼主| 发表于 2010-8-15 16:40 | 只看该作者
本帖最后由 cuizehan 于 2010-8-15 16:42 编辑 ' U2 |; F* b7 l2 F6 ]" s
, V* i0 y, u* B+ h8 h' w
回复 5# liqiangln
# u4 s4 S7 O; s0 U. F$ N( u, v/ ^! |2 |$ `' R  ]3 A9 G$ H! _% F" A
' q% b0 I: ?" F
    主机的3.3V电源和设备卡的3.3V电源是隔离的,分别由不同的电源模块产生,且中间没有通路。) F+ q; S5 W: ^) d" Q
    参考地是一样的。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
8#
 楼主| 发表于 2010-8-15 17:12 | 只看该作者
回复 6# cuizehan
. f; [, f' A/ }8 p+ Q4 z6 n) Z1 A

4 u; A4 {" {+ u5 H" ]; S: N( ?    换了470R上拉电阻后,通过开关手工复位,主机可以正常启动,并且也检测到PCIe设备了。
' b. O3 C# p% a
$ y8 a- N8 Z; q8 r- o    虽然可以了,但是需要手工操作。下面把开关换回0R电阻再试一试。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
9#
 楼主| 发表于 2010-8-16 08:57 | 只看该作者
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。
0 B5 k5 \) s" J7 m+ u& D% e1 w9 R
$ z  V9 ^8 S. g$ ~+ i6 Z, n但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。
/ I* @* ]' K& y+ n
7 p4 |) E- j$ Z$ v, _: S6 f通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0." \7 S9 b' U& c6 L% @- c5 W; m
; t  a0 j. s# a* `
还不知道是什么原因造成了这个现象。

20

主题

445

帖子

1316

积分

四级会员(40)

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

积分
1316
10#
发表于 2010-8-16 10:44 | 只看该作者
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。3 A, B$ S( y- t- ]  ]1 ?6 ?, s& M
; ?' Z& k6 ~  V$ }
PCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?
0 E( c0 r  V2 T
+ ?# I' J( L$ Q: z, i& a如果你的地址空间没有分配,还是不能工作。

17

主题

48

帖子

-8915

积分

未知游客(0)

积分
-8915
11#
 楼主| 发表于 2010-8-17 15:41 | 只看该作者
回复 10# liqiangln
, ]3 q0 r6 O- P( E% x0 L+ n6 V1 J* [! K1 [) R. P

1 r6 E& r. V0 x$ w" R! R8 ?: R5 q    把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。
" s$ j; O- g: G6 @7 @3 q* A! D& Q$ C3 C- k6 f1 E5 M
    在位检测信号,
, U, p8 Y- O: s$ W8 Y: Y5 G          按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。
) l9 Y' }  e0 D: s" d4 h$ m7 s          实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。
1 y' V! a  \5 r9 B# `* i5 }          之前一个做这方面的工程师给讲过,说一般的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 14:27 , Processed in 0.065457 second(s), 36 queries , Gzip On.

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

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

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