找回密码
 注册
关于网站域名变更的通知

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

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

正文摘要:

本帖最后由 cuizehan 于 2010-8-15 11:22 编辑 ! G! Z8 i( E" g) a 6 B0 h/ }2 n  ~) B( F我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图   v; ~3 f' K& ...

回复

liqiangln 发表于 2010-8-18 09:06
不知道你找到原因没呢?
cuizehan 发表于 2010-8-17 15:41
回复 10# liqiangln
1 U6 A& X& n6 V) ?; g0 N* [
% ?" C% f: t8 n: J# r/ ~' c  {2 v0 O# e
    把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。2 I) V, X, {$ a; z, e) T

, h  {- F) c2 u1 }- f8 ^    在位检测信号,
9 ?% m1 V2 n  b  D3 U: `9 [- }          按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。
8 u: Q+ O8 J) t          实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。- Z) w9 K5 [+ G, Y( a7 a  o4 [
          之前一个做这方面的工程师给讲过,说一般的PC机是没实现这个功能的,直接给所有的插槽提供给电源和时钟,所以这两个信号可以不用管。
liqiangln 发表于 2010-8-16 10:44
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。
& @0 M; v3 h! i" F9 s- |2 j# m# y& V
PCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?& I0 r. S. M9 P0 u3 d
" l. \2 g6 V, Z) ^. K
如果你的地址空间没有分配,还是不能工作。
cuizehan 发表于 2010-8-16 08:57
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。
: t, W+ ?' R: G. y/ c, i, X% I& @3 P3 Q1 {+ l; _) F
但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。, ^) p: R9 ~) G/ S' V  b' X

  I$ I5 C( E% B7 x/ ^: h通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0.
/ y" y  x: T1 j+ v3 D, l8 V( o5 y+ D# R! z
还不知道是什么原因造成了这个现象。
cuizehan 发表于 2010-8-15 17:12
回复 6# cuizehan
  ^5 m9 p0 g2 Y3 i. c* s2 q
0 M( {6 A* L/ d, B: h7 N; l- j9 q7 v7 l* m
    换了470R上拉电阻后,通过开关手工复位,主机可以正常启动,并且也检测到PCIe设备了。' \. o. O. }( @8 n& R

0 d9 a- j  W+ P* A& l& T4 u1 L2 [4 {    虽然可以了,但是需要手工操作。下面把开关换回0R电阻再试一试。
cuizehan 发表于 2010-8-15 16:40
本帖最后由 cuizehan 于 2010-8-15 16:42 编辑 ; ^; {6 ^  b! ?( y' u7 q
( V+ q" e- [! U+ D; i3 U( V
回复 5# liqiangln
7 g8 H! O6 @/ o9 i; Y+ e) L' N/ @6 O* y+ U
- O1 {* m2 `- x+ T
    主机的3.3V电源和设备卡的3.3V电源是隔离的,分别由不同的电源模块产生,且中间没有通路。4 h8 o- m1 d+ |: u9 [
    参考地是一样的。
cuizehan 发表于 2010-8-15 16:38
又做了一个实验:" J0 u5 R+ W& U! }0 F4 S
6 v) I4 n7 r' a# {: A0 X
    把4.7K电阻焊上,把PCIe转接卡上的0R电阻换成开关。  M7 `- [, a7 c: q2 c% v! Y- S, _2 a
: k. P1 W+ \' i- a# N, H( S* P/ `
发现:
3 {+ l8 d+ y$ H9 I5 p4 v* q& @, c
   若开关断开,则FPGA侧PERST#为高电平;
2 h+ k1 J  z  V8 G6 U0 `2 f. e   若把开关合上,则PERST#被拉低,FPGA侧PERST#为低电平;
: j4 h' H* J- J1 q8 |/ x. i   若此时再把开关断开,则理论上PERST#应该被拉高,但实际中FPGA侧PERST#为低电平,3.3V-2.5V电平转换器的3.3V一端的PERST#电压为1.57V,2.5V一端为0.2V。
2 e5 X3 }/ U$ K& x
- i! O/ G: v$ W$ B) f% n推断:: {, I, C" j( j, g9 i$ f' l
- W5 u( C. i9 \, N: O
    可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。
liqiangln 发表于 2010-8-15 16:37
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。
" t/ o0 `( `1 \2 G2 O9 q, B比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。( s& r7 {) s$ |* ~8 H, P) h8 L2 [
6 L3 s1 C$ Z- _" L4 t
比如说你FPGA(设备卡)的3.3V和主机的3.3V是什么关系,因为你把设备卡链接上去的时候,这个3.3V就传递到主机卡上了,如果这个3.3V先于主机3.3V电源上电,那么可能造成主机的3.3V电源模块没启动。
cuizehan 发表于 2010-8-15 11:49
回复 2# liqiangln ! \/ U  V. Y: d7 b4 n' @7 `
! @5 o  w1 u% o8 X
: a7 l3 I" W4 Q% i& @
    我怀疑是FPGA子卡的存在干扰了PERST#的正常时序,, f9 I' D* F1 ?# H3 Q  T
# X5 {9 n; {* @1 @+ y
    现在把子卡上4.7K的上拉电阻去掉后,问题还是存在。
liqiangln 发表于 2010-8-15 00:46
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的Pcie卡的pin map是否有短路的,电源和地。
4 ~2 e/ K7 Y  M
4 ~$ h6 b( m8 H0 ]或者是你看看你设计的V6子卡的pcie连接器的3.3V/12V的电源情况,通常是主板给子卡供电,但是你设计的子卡的3.3V/12V的pin上可能有电,是来自你子卡自身的电源模块,理解吗?
/ {/ k1 x& V3 q/ _. i
/ j6 }. |' F9 d! `- Q这样3.3V/12V相当于2个源,主板的电源进入保护状态了。
关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 21:49 , Processed in 0.171875 second(s), 29 queries , Gzip On.

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

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

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