不知道你找到原因没呢? |
回复 10# liqiangln 4 U9 C& e* x P+ V. u8 d + ~8 J. ^; O' E 把3.3V-2.5V模块跨过,这个我还没想好怎么弄,主要是焊接上不好实现。 在位检测信号," k, n8 t% K- V! g 按照PCIe CEM规范上将,应该是讲两个PRSNT#短接,这样主机才能发现设备,提供电源和时钟。 实际实现中并没有直接短接,而是用了一个跳线,发现不管有没有短接都没什么影响。$ d; m; U( r; C9 m7 | I: o 之前一个做这方面的工程师给讲过,说一般的PC机是没实现这个功能的,直接给所有的插槽提供给电源和时钟,所以这两个信号可以不用管。 |
你也可以把3.3Vto2.5V的模块,跨过,用分压电阻来实现,看看是否有改善。$ T3 o3 r# T( U6 Y5 L6 y) Z PCIe金手指上出来RST以外,还有在位检测线号我记得也是默认上拉的,你看看是如何处理的?7 y5 L6 M4 W4 [1 U. a5 j, i$ \ 8 M) W* b# O" ]( l# ~. M! m1 S 如果你的地址空间没有分配,还是不能工作。 |
通过开关手工复位,和0R电阻,主机都可以正常启动,并且通过PCItree都检测到了该设备。 但是,用0R电阻(由主机来实现复位时),PCI配置空间里的BAR寄存器是0,没有分配空间。, S& A: ^8 e- [+ K) R 1 m& a3 U# {8 V 通过手工开合开关(手工复位),PCI配置空间的BAR寄存器非0. 还不知道是什么原因造成了这个现象。 |
又做了一个实验:2 `* i' c0 { `: P) ]9 M( Y 把4.7K电阻焊上,把PCIe转接卡上的0R电阻换成开关。9 `# e/ |# q; B! y 发现:+ x0 `/ @. [) N2 b s 若开关断开,则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 推断: 可能是电平转换器的输入阻抗不够大,导致上拉能力不够,换一个470R的上拉电阻试一下。 |
其实在电路中说的信号完整性,电源完整性,干扰,仅仅是针对性能谈的,对于基本功能实现没那么大的危害,不要神化了,还是要从基本的方式解决问题。" i( C( ~' c4 E1 O$ W 比如说你的外部电源和你的主机是否是共地,是否有同样的参考点。 / h) h! {; u% s+ J. v 比如说你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上可能有电,是来自你子卡自身的电源模块,理解吗?+ \9 ^/ `+ s8 L% |& ]- l 这样3.3V/12V相当于2个源,主板的电源进入保护状态了。 |
关于我们|手机版|EDA365 ( 粤ICP备18020198号 )
GMT+8, 2025-2-22 23:17 , Processed in 0.062738 second(s), 37 queries , Gzip On.
地址:深圳市南山区科技生态园2栋A座805 电话:19926409050