| 不知道你找到原因没呢? |
|
回复 10# liqiangln : J# r/ ~' c {2 v0 O# e 把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。2 I) V, X, {$ a; z, e) T 在位检测信号, 按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。 实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。- Z) w9 K5 [+ G, Y( a7 a o4 [ 之前一个做这方面的工程师给讲过,说一般的PC机是没实现这个功能的,直接给所有的插槽提供给电源和时钟,所以这两个信号可以不用管。 |
|
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。 - |2 j# m# y& V PCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?& I0 r. S. M9 P0 u3 d " l. \2 g6 V, Z) ^. K 如果你的地址空间没有分配,还是不能工作。 |
|
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。 , X% I& @3 P3 Q1 {+ l; _) F 但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。, ^) p: R9 ~) G/ S' V b' X 通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0. , l8 V( o5 y+ D# R! z 还不知道是什么原因造成了这个现象。 |
|
又做了一个实验:" 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/ ` 发现: 9 I5 p4 v* q& @, c 若开关断开,则FPGA侧PERST#为高电平; 若把开关合上,则PERST#被拉低,FPGA侧PERST#为低电平; 若此时再把开关断开,则理论上PERST#应该被拉高,但实际中FPGA侧PERST#为低电平,3.3V-2.5V电平转换器的3.3V一端的PERST#电压为1.57V,2.5V一端为0.2V。 推断:: {, I, C" j( j, g9 i$ f' l - W5 u( C. i9 \, N: O 可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。 |
|
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。 比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。( 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电源模块没启动。 |
|
图形我看不到,不过PERST#时高时低,看情况是主机的电源在进行保护,导致PERST#上拉电源在复位,你看看你的Pcie卡的pin map是否有短路的,电源和地。 或者是你看看你设计的V6子卡的pcie连接器的3.3V/12V的电源情况,通常是主板给子卡供电,但是你设计的子卡的3.3V/12V的pin上可能有电,是来自你子卡自身的电源模块,理解吗? 这样3.3V/12V相当于2个源,主板的电源进入保护状态了。 |
/1
关于我们|手机版|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