找回密码
 注册
关于网站域名变更的通知
查看: 4451|回复: 3
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 5 [2 b# v0 D1 K% e! e4 [0 u4 Q' W

) Z# [* y% @, s( s. ?2 m2 V我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图
5 }7 f$ D. q8 |8 k) E
2 M% ^# Y, `8 w3 R9 }- _$ _FPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。
, T( |# e* _& c5 t8 v
8 X4 i7 s! V' W8 t, W- t) _. f3 {上图中只画出了PERST#信号的拓扑结构9 A$ u5 L) _4 {1 y/ K- Z* V4 k) \

! w+ I$ _4 R& g$ I2 g- [
0 [& i3 z2 \* C% z8 X正常的PCIe设备启动过程如下图
$ h0 b$ N+ S3 Y7 ^" L6 {) G  
8 Z" E  B  @) s* m) Y2 `( w
+ q0 s0 m6 Z1 C* x* j预期的正常情况是:+ [, ~0 m. Q' n$ Q0 R1 w$ N: G  N4 _

4 Y' c7 N) K0 Z) U" e- H         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。8 ^' V3 t" M' ]" l: G- x; n
         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
9 H9 s  M: z, M% y9 C% z! S2 U         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
/ E) F2 l6 e6 ], w2 h6 s
- w: {6 N7 G0 {# N/ @5 l2 G  e- {) x: D
但是现在的情况是:' B4 g9 ~, Y& Z' h) `  Y9 Y

2 p7 m- N7 r5 d! {  X9 K6 R: P4 c         1. 如果设备卡不加电,则主机能够正常启动。2 s5 M  z' |, N
         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。  I% a: a: t2 _' T! G( V7 P4 V$ @" E# W% Y
, Z2 ^1 M: t7 l3 u' |$ j8 ~
: t$ p- B4 P+ P" O! Z# U$ y
我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
; u6 p: M7 S. N/ O7 ^2 B% d2 g# G3 Y' W: z; e( `- j
我做了如下分析:
' Q( `  A" q3 ^- I3 k9 x9 V5 }7 x1 A7 J
         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。
5 c' A; G; H. b! i         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。! i$ A" x$ _! M1 B" Q
$ Y7 g/ y3 V* z
但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。
! x# ?" @% n% I/ H4 n
8 X9 ?1 Z7 d0 ?! ?图中的3.3V - 2.5V电平转换器用的TXB0108芯片,参考的是xilinx ml605的原理图,因为v6的pcie核PERST#要求是2.5V电平的。

该用户从未签到

2#
 楼主| 发表于 2010-8-15 11:50 | 只看该作者
把FPGA卡上的4.7K上拉电阻去掉后,问题还是存在

该用户从未签到

3#
 楼主| 发表于 2010-8-17 15:43 | 只看该作者
回复 1# cuizehan : ^' A6 z8 x2 H# J& x
. `) g5 Z3 H4 w) n
. P5 Z+ N5 J  \! {  z0 ?5 _
    昨天发现是由于4.7K电阻的上拉能力不够,不能是perst复位为高电平,换成了470R的就可以了。% u2 f2 v# a8 c0 P

+ f4 u& c0 t% ]3 h6 v# N但现在仍有问题,我把0R电阻换成了开关,
$ f, t, }( A8 }2 C      如果设备卡先上电,此时把开关合上,由于主机还没有上电,此时perst被拉低,相当于对pcie硬核进行复位,把开关断开,设备卡上的perst被拉高,同时与主机隔离。这样就相当于手工复位。此时如果启动主机,一切ok,通过PCItree查看配置空间,发现BAR也分配了相应的值。0 _; p; e: g: l. e; o
      如果设备卡先上电,开关一直合上,然后开启主机,主机POST过程中会发一个perst的低脉冲复位所连的所有PCI设备,包括我的设备卡。这样主机也能启动,并且通过chipscope查看链路状态也一切正常。可是通过PCItree查看配置空间时,发现BAR为0,并没有分配物理地址。1 E5 p9 w9 r+ M" |+ R- O  X. e3 M& G
( K6 i& S  G$ |+ @: E( T5 U
一直想不通是怎么回事?
2 |$ s) S% x; h4 p0 v4 T9 r7 H+ }$ g有谁对BAR的分配过程比较熟悉的吗?

该用户从未签到

4#
发表于 2010-12-7 14:42 | 只看该作者
正好  我也要做这个。+ F2 x5 Z* I/ w- q! i1 i9 ~
我用的是V5的。怎么联系楼主啊,需要向你学习。要不加我379805328  多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-21 01:47 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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