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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 cuizehan 于 2010-8-15 11:23 编辑 , u; ^/ G4 j" |2 k
) X7 _5 K) Z3 O
我用的xilinx v6-lx130t-ff783-2的FPGA,来实现一个PCIe设备,整个系统的结构如下图9 P: G( I. I1 r9 o) I" N

( l4 j5 k# y+ D3 i1 B- ~* LFPGA所在的板卡通过一根Cable连到PCIe转接卡,再通过金手指插到主机的PCIe插槽。  }. S' A2 B& y5 c0 b& G+ @

& R  a0 |8 o3 S: K, P& j/ w上图中只画出了PERST#信号的拓扑结构+ _! p7 f$ [" ^: j. @) _( f  R/ B
' [) f) T% I9 o2 s7 I0 w" E
* V# i/ [+ ]0 I( u3 a; B$ `
正常的PCIe设备启动过程如下图! W9 ?0 |5 F, X, f' b
  
( X: ^6 s# v/ ^$ B( t' E) i6 a3 Z  w" \
预期的正常情况是:  [, }# g# u4 `3 B) m
6 {7 l0 W+ w* ^5 z" A1 T; M. ~
         1. 设备卡先加电,因此电源一直处于稳定状态,初始时PERST#被上拉到高电平。; r/ v$ c5 F6 L, s1 s
         2. 启动主机,在主机POST过程中,PERST#被拉低一段时间,使所有的PCIe设备复位。
  f1 [- b9 N( c8 f         3. 经过一段时间之后,大于tPVPERL,设备完成复位,准备好传输数据,主机撤去PERST#,设备开始工作。
5 Q9 [8 h' n: R% c+ T0 K/ |. P. y3 c6 m: u- [  u% z! V

" b0 f2 w& q2 U( {但是现在的情况是:9 q% e/ d& {$ k* ~, B
. a: _  }- H6 t( j
         1. 如果设备卡不加电,则主机能够正常启动。; H4 b5 \  }# D5 M
         2. 如果设备卡加电,则主机不能启动,显示器没信号,cpu、显卡风扇转速都很低,没有出现滴滴响声。" e1 B( t" E9 N8 U" l8 ]

; c  Y  i- I2 M  p, U1 `
; T2 T7 ~1 ?8 p7 C( k( g+ g. l/ d4 U: j, v我通过chipscope抓取了PERST#信号,发现设备卡加电时该信号时高时低,持续时间都不会超过1ms。
1 a" M! S( ?' |' C' Q) w9 X: l2 u0 n8 ~: X+ {
我做了如下分析:* {  P8 V" s" Q+ L7 @
( ?' e% \) P5 q% h$ N& W6 p
         1. 通过万用表测量,发现主机上所有的PCI、PCIe插槽的PERST#引脚都是相连的。+ u1 ^- p+ Q! Y% u5 j
         2. 因此正是PERST#信号的时高时低,使得主机的所有PCIe设备都不能正常工作,包括显卡,因此显示器会没信号,进而不能启动。
& ^! W! d) X( F  m! _& y
; \; d0 _$ K* A7 |- ~* q  h但是我不知道是什么原因造成了PERST#信号的时高时低,从系统的拓扑结构来看,当主机撤去PERST#的低电平时,PERST#应该被上拉到高电平才对。, W! |4 O8 M* T' m" R

) x  G8 W% e9 [+ W图中的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 5 H. i  D6 ^# m( M
9 {2 F# K- F% g: h

8 Q9 B3 C7 v) p4 U- ]# Y: |) {    昨天发现是由于4.7K电阻的上拉能力不够,不能是perst复位为高电平,换成了470R的就可以了。
/ p+ N! b8 G' Q5 e. F) A1 r' P6 z* q5 q) b% f, k4 |
但现在仍有问题,我把0R电阻换成了开关,
+ r5 _! p2 P: F# Z7 G5 `$ M/ g      如果设备卡先上电,此时把开关合上,由于主机还没有上电,此时perst被拉低,相当于对pcie硬核进行复位,把开关断开,设备卡上的perst被拉高,同时与主机隔离。这样就相当于手工复位。此时如果启动主机,一切ok,通过PCItree查看配置空间,发现BAR也分配了相应的值。, s, d" [: Z- ]; E0 d  K2 T6 x& d
      如果设备卡先上电,开关一直合上,然后开启主机,主机POST过程中会发一个perst的低脉冲复位所连的所有PCI设备,包括我的设备卡。这样主机也能启动,并且通过chipscope查看链路状态也一切正常。可是通过PCItree查看配置空间时,发现BAR为0,并没有分配物理地址。- Q7 C# g% I) P

2 E1 ^1 m( D$ F" s; `) H一直想不通是怎么回事?
8 L3 F% K2 U  L) g, V* ?; ?- Q有谁对BAR的分配过程比较熟悉的吗?

该用户从未签到

4#
发表于 2010-12-7 14:42 | 只看该作者
正好  我也要做这个。- Z* G7 d) H# F* T2 ~
我用的是V5的。怎么联系楼主啊,需要向你学习。要不加我379805328  多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-5 09:00 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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