找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

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

查看数: 4245 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2010-8-14 23:35

正文摘要:

本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 " a8 ^, s7 R& Q; C# n$ c & O1 W- g9 X. b我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图 3 O0 u/ P7 M+ [9 O$ H( F2 d) X $ ...

回复

liqiangln 发表于 2010-8-18 09:06
不知道你找到原因没呢?
cuizehan 发表于 2010-8-17 15:41
回复 10# liqiangln
' D8 `* G% u4 j% v& X4 U9 C& e* x  P+ V. u8 d
+ ~8 J. ^; O' E
    把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。
: ^" k: F* Q* M2 N6 N
' \6 W- M' Z: n; I% h; H; ?    在位检测信号," k, n8 t% K- V! g
          按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。
1 }& W  O+ I% m          实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。$ d; m; U( r; C9 m7 |  I: o
          之前一个做这方面的工程师给讲过,说一般的PC机是没实现这个功能的,直接给所有的插槽提供给电源和时钟,所以这两个信号可以不用管。
liqiangln 发表于 2010-8-16 10:44
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。$ T3 o3 r# T( U6 Y5 L6 y) Z

  u2 v7 {# C' m0 \+ o/ ZPCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?7 y5 L6 M4 W4 [1 U. a5 j, i$ \
8 M) W* b# O" ]( l# ~. M! m1 S
如果你的地址空间没有分配,还是不能工作。
cuizehan 发表于 2010-8-16 08:57
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。
' j4 U9 h  R# p
( d# E0 L, h2 D9 R1 X- E但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。, S& A: ^8 e- [+ K) R
1 m& a3 U# {8 V
通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0.
$ G$ N7 y/ Q7 s0 L8 t# ?: J0 l
$ V6 E0 W- G( ?" P还不知道是什么原因造成了这个现象。
cuizehan 发表于 2010-8-15 17:12
回复 6# cuizehan
1 L* a8 }4 \& M1 v2 Y6 w. T8 e
1 M$ M9 F4 f0 B; R2 p. y! t3 L+ F  I7 c, n; D3 y
    换了470R上拉电阻后,通过开关手工复位,主机可以正常启动,并且也检测到PCIe设备了。
; t2 a; X7 U+ c2 V( Q9 Y. H1 j. [1 B+ n: t' B6 C6 x9 f
    虽然可以了,但是需要手工操作。下面把开关换回0R电阻再试一试。
cuizehan 发表于 2010-8-15 16:40
本帖最后由 cuizehan 于 2010-8-15 16:42 编辑
% M, _+ D4 u+ |2 G& A/ e7 z  q
回复 5# liqiangln * k  p9 R6 f) J0 [' X

: B# R& D: i: {: g% S9 |# c/ K8 o: p, H+ @; j
    主机的3.3V电源和设备卡的3.3V电源是隔离的,分别由不同的电源模块产生,且中间没有通路。
+ j" _- A. Z* a  i/ i8 f    参考地是一样的。
cuizehan 发表于 2010-8-15 16:38
又做了一个实验:2 `* i' c0 {  `: P) ]9 M( Y

4 l7 J$ O. T6 p. u    把4.7K电阻焊上,把PCIe转接卡上的0R电阻换成开关。9 `# e/ |# q; B! y

3 K  N- m' X! b, [5 y5 f& p) p发现:+ x0 `/ @. [) N2 b  s

* ~1 _0 c! {% J& r9 @   若开关断开,则FPGA侧PERST#为高电平;' l4 s# P% E( M3 I! A
   若把开关合上,则PERST#被拉低,FPGA侧PERST#为低电平;* ~/ t: p' b+ T, [
   若此时再把开关断开,则理论上PERST#应该被拉高,但实际中FPGA侧PERST#为低电平,3.3V-2.5V电平转换器的3.3V一端的PERST#电压为1.57V,2.5V一端为0.2V。8 i: Z7 a3 H% E; M! z# a& ^* f1 P
7 G* S' o( t8 r/ i$ W, I% x
推断:
. ^; z- G. u( N' \, W' r
5 I+ T- ?6 F  u9 y# G0 ?, V4 ^* w. O    可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。
liqiangln 发表于 2010-8-15 16:37
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。" i( C( ~' c4 E1 O$ W
比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。
0 Y( `; {. c- Y, u/ h) h! {; u% s+ J. v
比如说你FPGA(设备卡)的3.3V和主机的3.3V是什么关系,因为你把设备卡链接上去的时候,这个3.3V就传递到主机卡上了,如果这个3.3V先于主机3.3V电源上电,那么可能造成主机的3.3V电源模块没启动。
cuizehan 发表于 2010-8-15 11:49
回复 2# liqiangln ! v2 U' D: y$ u$ U- o$ D' ~& L: Y
/ Q. a+ e6 w$ N1 a2 M( N
) l0 S$ D, h. _' e; e; G& k; i
    我怀疑是FPGA子卡的存在干扰了PERST#的正常时序,
1 l! K2 S: }1 f3 x/ B$ t/ J8 f8 v
    现在把子卡上4.7K的上拉电阻去掉后,问题还是存在。
liqiangln 发表于 2010-8-15 00:46
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的Pcie卡的pin map是否有短路的,电源和地。
+ {, m, m' q6 B
4 o6 I# E6 A* P4 v9 a或者是你看看你设计的V6子卡的pcie连接器的3.3V/12V的电源情况,通常是主板给子卡供电,但是你设计的子卡的3.3V/12V的pin上可能有电,是来自你子卡自身的电源模块,理解吗?+ \9 ^/ `+ s8 L% |& ]- l

7 @  q" ]9 E" Y, w: |7 v8 U( r4 T这样3.3V/12V相当于2个源,主板的电源进入保护状态了。
关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-22 23:17 , Processed in 0.062738 second(s), 37 queries , Gzip On.

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

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

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