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

求教,FPGA引出来的DDR4读写错误,帮忙分析一下!

[复制链接]
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    跳转到指定楼层
    1#
    发表于 2019-3-26 15:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    总体情况:我们用FPGA挂了2通道的DDR4,读写出错,具体情况如下:( Z5 \: p7 j' Q  d% W0 p/ r

    + K) g. f) K- H# F& M0 k& t0 W1、使用的是Xilinx的KU040,引出来了2个通道的DDR4,每个通道位宽是32位,每个通道由2颗x16的DDR4颗粒组成,fly-by拓扑,设计的运行频率是2133;
    , V: @  m- [8 O- K" G& i2、bank47、48组成CH0,bank67、68组成CH1,PCB图中,右边的两个颗粒是CH0,左边的两个颗粒是CH1;2 Z1 C0 v9 g2 t- Q/ `- E) \$ C& f
    3、现在出现的问题是读写出错,往DDR颗粒中写满数据,再读出来,与写入的进行对比,发现错误;: w8 j7 S( z! ?+ x" v
    4、测试的情况是,测了3块板子,3块板子的CH0都出错,有1块板子的CH1出错,2块没有错(这些测试结果,每个CH都是基于32位位宽进行测试);# [# {( }$ c; o1 F
    5、重点来了,我们在逻辑程序里,把每个通道高16位的颗粒的DQ/DQS/DM信号禁掉,因为是fly-by,ADDR/CMD/CTRL禁不了,这种情况下,测试所有的板子、通道都没问题;$ V) z8 S+ O$ c2 i9 R' E$ \
    6、我们反过来把低16位的颗粒数据信号禁掉,只保留高16位的颗粒,测试有错,错误的现象、错误个数的数量级跟之前32位都测的时候基本一致;  h6 N$ D( S: S! U1 H2 W

    * V/ H( B3 D( a9 }: L综上,帮忙分析一下可能的原因?谢谢了!! `( g) Z1 s% t, a4 m* X

    . D! ]0 `+ q- E+ E8 t, |# I1 p) V1、我们曾经很怀疑逻辑程序的问题,但是说不通的是,CH1没错啊,而且我们试了用极为简单的语句去调用IP核,也会出错,而且用16位程序没出错;( [0 T9 S" g6 o- D1 l' B/ \
    2、我按照FPGA的资料,仔细检查了硬件设计,也没发现什么错误;
    . t4 E4 ?& S; |3 f3 M) ~% ~ 3 k+ r/ w/ H8 ^. g! r1 E

    + }3 G4 f3 i1 t6 L# E, D" M$ g# u6 ~$ F

    ( m8 e) h0 f2 {7 s/ N& E& z" l6 o+ ~" E! S8 z9 S9 D% W

    7 b4 p& K; \& K3 g+ n5 [
      v5 u2 N+ O/ }. n8 `0 X / I& L3 g/ b+ L) o% v% y. z  v# B

    7 M/ j8 d- w( G) Z1 q6 l# y" C, z
    % ]' V  i( Q8 A2 }0 b$ y% E! S" O1 x" q4 K9 t5 I: |
    5 I# G; d4 p3 g! u

    " Q) M+ Z" ^. ^) t! K. d
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    来自 22#
     楼主| 发表于 2019-3-29 18:10 | 只看该作者
    xbin 发表于 2019-3-29 17:09& @+ N. V1 s3 {  @+ w6 v& I1 |( H. [
    尴尬了,第三点,看来还是硬件的问题呀。这锅你要背了。
    4 g9 f$ \8 s7 t1 |$ v7 t; W
    是啊,早就基本上指向硬件了,但是就是找不到硬件的问题点。
    " u$ E1 j6 h; B. N; u# f) I: w  C6 J& C
    最新消息:4 R: `6 d, Z: s" R. a
    1、请看以下图一官方推荐的拓扑,地址/命令/控制线在外部有端接电阻上拉到0.6V-VTT,今天在其中一块板子上试了一种办法,就是把地址/命令/控制信号的外部端接电阻从39.2欧换成了49.9欧,然后这块板子没出问题了!!!!
    ; y( j& u; M: a4 K2、图二是官方对于图一拓扑上各个走线区域的走线要求;+ j8 O3 I, I+ J2 T7 e
    3、我想不通:9 G$ C! s* Q/ j- i9 Q3 Z' R
    3.1)、官方推荐的端接电阻是39.2,我就是按这个阻值做的,这个端接电阻怎么至于影响这么大,从来没见过DDR需要换这个端接电阻的;
    ; o3 s; r2 o) W. z3 f3.2)、唯一比较合理地解释是,我主走线(控36欧姆)的区域,占总长的比例太小了,因为这个板子上,DDR颗粒距离主控芯片实在太近,除了两头BGA的fanout区域,能够正常控阻抗的区域实在太短了,现在从FPGA到第一个颗粒的长度,总长也就1700mil左右,两个颗粒之间的距离大概450mil,能控36欧姆的走线长度,有的信号上只有两三百mil,难道是这个原因,所以50欧姆的端接更匹配?' A+ O6 z: |) R: S7 [$ D; [
    ' @, i; |$ K3 U; Q% C* K
    / ^: Z: X( u3 B1 ]; c$ l
    - z% q& X1 H" g

    点评

    您好 我的板卡也遇到了一样的问题,终端匹配换成50欧后无错误的最高速率有提升,但是跑不到最高速,请问您找到问题原因了吗?  详情 回复 发表于 2020-10-20 18:23
    https://forums.xilinx.com/t5/Memory-Interfaces/Fly-by-ddr3-termination-value/td-p/809007 官方有个提问,说RTT影响DDR3使用频率。  详情 回复 发表于 2019-3-29 19:10
    参考设计用5个DDR,你这个用2个而已,是不是也和这个有差异。有没有高速示波器,可以看看Addr在RTT的信号怎么样,说不定之前过冲下冲严重导致异常?  详情 回复 发表于 2019-3-29 18:56
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2019-3-29 10:52 | 只看该作者
    本帖最后由 gavinhuang 于 2019-3-29 11:02 编辑 4 F8 A, U' d7 _: F, R4 f* U( P
    xbin 发表于 2019-3-28 13:24; W( z8 k# @- y3 d, f3 a5 w/ w
    降到1600有改善,不是说明和信号完整性有关吗?FPGA和DDR芯片底下电源正常吗
    , P, _! _* L( B  Q  U
    1、本来FPGA内部就能自动调整DQ、DQ是的读写时序,能够调整的幅度多达75ps,再看下面的第一张图,从2133降到,1600,时序的裕量又多了78ps,这两个裕量加起来,至少150ps;( v4 {* G" ?! F$ P  o

    ; _; x+ Y( b7 f5 ^/ s# }2、看下面的第二张图,地址控制线这些信号,从2133降到1600的情况下,时间裕量多了124ps;6 y0 E7 ^& |0 |# |. m. U
    ' d' l2 `& q0 z  h( j
    我以前做过3年多的SI,后来转行做硬件,现在原理图、PCB都是自己画的,虽然SI方面的知识也很有限,但是我画PCB的时候已经尽量按照我的SI方面的知识去画了,我自认为一般需要关注的点我都注意到了,我实在不相信我画的这个板子连1600都跑不了,而且用的这颗FPGA,IP核配置的时候,最低也只能配到1600了。5 y5 F  C; q/ K5 W
    还有,禁掉高位颗粒,只留低位颗粒的情况下,跑2133完全没问题。
    9 a. o2 Y% m1 s; J6 s" h" W$ q+ F4 k* v# M- ^

    # u% r: K5 }, I; Y1 H4 ~  T
    : e7 C$ k( S( X% O- p1 S+ l: M, {  T& G8 ?& F0 e
    & L, p% X6 l, ^& N

    点评

    1. 原理设计这块,官方有参考设计吗,有没有不一致的? 2. 芯片底下电源正常吗 3. 有没有官方的demo板,让FPGA跑跑看,有没有bug?  详情 回复 发表于 2019-3-29 16:41
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    推荐
     楼主| 发表于 2019-3-27 21:35 | 只看该作者
    gabbana0529 发表于 2019-3-27 11:13+ K  D5 j1 v9 |; w
    看layout高速线换参考层有没有补电容或是打via孔. 等线长检查. 用频谱看2.5G附近有无干扰. 确认公板有无一 ...
    ! q% @3 u! w% f9 J5 q
    谢谢回答。) ~9 }2 H* K" m# e8 M
    没有换参考层,数据和地址都参考的是GND;
    3 a  \3 ?( Q1 k0 T等长检查了没问题;' E$ V/ j- _( o# z& T8 F
    2.5G的频谱暂时没办法看;
    . f% ^0 h/ e& ?% o! z我们这个PCB跟xilinx的开发板差异大,不太具有对比性,不过原理方面确实是参考了开发板,开发板肯定没问题啊;
    . W( M( o+ e) F' F从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很充足了,不应该再出错了才对,所以我倾向于不是信号完整性方面的问题。
    ) H% B# W  V2 \5 \/ K( I/ R1 a: A: k4 I$ o. k" z& S- b$ h, E
  • TA的每日心情
    奋斗
    2021-3-10 15:58
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2#
    发表于 2019-3-26 18:53 | 只看该作者
    能否降频使用,降频低16位有没有出错

    点评

    谢谢回答。从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很充足了,不应该再出错了才对,所以我倾向于不是信号完整性方面的问题。  详情 回复 发表于 2019-3-27 21:16

    该用户从未签到

    4#
    发表于 2019-3-27 11:13 | 只看该作者
    看layout高速线换参考层有没有补电容或是打via孔. 等线长检查. 用频谱看2.5G附近有无干扰. 确认公板有无一样问题. 改bootstrap降外频测试.

    点评

    谢谢回答。 没有换参考层,数据和地址都参考的是GND; 等长检查了没问题; 2.5G的频谱暂时没办法看; 我们这个PCB跟xilinx的开发板差异大,不太具有对比性,不过原理方面确实是参考了开发板,开发板肯定没问题啊  详情 回复 发表于 2019-3-27 21:35

    该用户从未签到

    5#
    发表于 2019-3-27 11:30 | 只看该作者
    还是降频看看能稳定不,不能稳定的话基本也不太可能是layout的问题。

    点评

    谢谢回答。 从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很充足了,不应该再出错了才对,所以我倾向于不是信号完整性方面的问题。  详情 回复 发表于 2019-3-27 21:36

    该用户从未签到

    6#
    发表于 2019-3-27 13:47 | 只看该作者
    楼主有做过FPGA的DRAM Training吗?
    ; [$ H0 m+ Q; @; p* f! u! `6 x

    点评

    谢谢回答。 我不知道您说的FPGA DRAM Training是啥意思?我们应该没做过,您能更加详细地说一下吗,谢谢了。  详情 回复 发表于 2019-3-27 21:38
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    7#
     楼主| 发表于 2019-3-27 21:16 | 只看该作者
    本帖最后由 gavinhuang 于 2019-3-27 21:26 编辑 1 H; ~/ [# H; H( m( X% ^& G7 Y% g
    xbin 发表于 2019-3-26 18:53, q2 N. ^# A8 [' J5 X" o
    能否降频使用,降频低16位有没有出错

    ' i6 @. A7 r5 n谢谢回答。, l; S% B' {3 k! q& I) I8 `7 r
    从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很充足了,不应该再出错了才对,所以我倾向于不是信号完整性方面的问题。  Y  U. u- V# A6 y6 U/ d4 S. G
    3 ?! Z# z, @* _& l, F
    9 O. h" B1 _, l  A' Q& d
    如题目所说,禁掉高16位颗粒,只留低16位的颗粒的时候,完全没错,运行频率是2133都没错;  z& H/ I! J% R( u
    然而反过来,禁掉低16位颗粒,只留高16位颗粒的时候,依然有错,错误数量跟32位运行的时候是同一个数量级的。. W7 U! B. O: ^/ [& x3 z  Y* L' @# d

    点评

    降到1600有改善,不是说明和信号完整性有关吗?FPGA和DDR芯片底下电源正常吗  详情 回复 发表于 2019-3-28 13:24
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    9#
     楼主| 发表于 2019-3-27 21:36 | 只看该作者
    bluskly 发表于 2019-3-27 11:30
    % y8 r8 H  V/ u7 Y! @. L$ i还是降频看看能稳定不,不能稳定的话基本也不太可能是layout的问题。
    / t, S1 |' c3 |& I0 ~5 \" M
    谢谢回答。
    - O, _0 X7 `4 K3 c6 k; M从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很充足了,不应该再出错了才对,所以我倾向于不是信号完整性方面的问题。' `9 t  D5 m6 u2 L; H; n$ I' S) M
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    10#
     楼主| 发表于 2019-3-27 21:38 | 只看该作者
    Frank9523 发表于 2019-3-27 13:47  J; F- `6 l! W/ ]+ y- ]
    楼主有做过FPGA的DRAM Training吗?
    * {9 b, ~+ Q) G- D- x- e
    谢谢回答。
    ) u3 r+ d4 t! x2 f+ m我不知道您说的FPGA DRAM Training是啥意思?我们应该没做过,您能更加详细地说一下吗,谢谢了。, y% Y/ _2 C9 L/ J7 S! Y, Q7 q

    点评

    就是根据你布板的走线长度,计算出板间延时参数。xilinx可以进行training algorithms。之前在zynq平台遇到过类似的问题,就通过修改板间延时参数解决的。你可以看下下面这个链接。https://www.xilinx.com/support/an  详情 回复 发表于 2019-3-28 08:54

    该用户从未签到

    11#
    发表于 2019-3-28 08:54 | 只看该作者
    gavinhuang 发表于 2019-3-27 21:38! n# V. i: t$ f0 q3 U
    谢谢回答。7 Q" o6 g! ^# i# ~
    我不知道您说的FPGA DRAM Training是啥意思?我们应该没做过,您能更加详细地说一下吗,谢谢 ...

    + Y1 _/ S' T4 S+ v6 {9 {4 H) p就是根据你布板的走线长度,计算出板间延时参数。xilinx可以进行training algorithms。之前在zynq平台遇到过类似的问题,就通过修改板间延时参数解决的。你可以看下下面这个链接。https://www.xilinx.com/support/answers/46778.html
    . z* I' ~% d2 e3 ^
    0 s% M2 }1 w: ?4 F

    : u; c6 C! x1 T3 w0 m4 H
      U" m. l7 u+ k7 a" V
    $ d5 R* P& X7 v0 i6 y

    点评

    谢谢。我们布板的时候已经考虑封装的延时进行等长了,等长方面应该没问题。你发的那个链接,我看了一下,只针对于Zynq系列的器件,我们用的KU系列,没有这个东西。  详情 回复 发表于 2019-3-28 09:59
  • TA的每日心情
    慵懒
    2022-4-7 15:32
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    12#
     楼主| 发表于 2019-3-28 09:59 | 只看该作者
    Frank9523 发表于 2019-3-28 08:54; H' W9 V0 q4 X+ d% S2 H
    就是根据你布板的走线长度,计算出板间延时参数。xilinx可以进行training algorithms。之前在zynq平台遇 ...
    # T- q* T8 g8 T2 ?( P! b# }1 x
    谢谢。我们布板的时候已经考虑封装的延时进行等长了,等长方面应该没问题。你发的那个链接,我看了一下,只针对于Zynq系列的器件,我们用的KU系列,没有这个东西。
    * Q3 R* \, A3 p. S
  • TA的每日心情
    奋斗
    2021-3-10 15:58
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    13#
    发表于 2019-3-28 13:24 | 只看该作者
    gavinhuang 发表于 2019-3-27 21:16
    $ L  h$ s# W1 r$ f* v/ A谢谢回答。
    / Q9 r$ W; h) S5 h, [8 @1 j6 c从2133降频至1600有改善,但是还是有错,我觉得降到1600了,时序、信号质量方面的余量应该很 ...

    & R$ y. n4 j3 f9 O" \6 W降到1600有改善,不是说明和信号完整性有关吗?FPGA和DDR芯片底下电源正常吗
    7 w: c4 P- z  o3 r+ M

    点评

    1、本来FPGA内部就能自动调整DQ、DQ是的读写时序,能够调整的幅度多达75ps,再看下面的第一张图,从2133降到,1600,时序的裕量又多了78ps,这两个裕量加起来,至少150ps; 2、看下面的第二张图,地址控制线这些  详情 回复 发表于 2019-3-29 10:52

    该用户从未签到

    14#
    发表于 2019-3-28 17:32 | 只看该作者
    低位没问题,高位没问题,是不是因为fly-by要不同颗粒DQ要对齐?FPGA不知道是怎么玩的,CPU类的是自动校准,计算到每个颗粒的延时然后自己设置好寄存器。你问下FPGA的看看。

    点评

    谢谢回答。 你说的不同颗粒DQ对齐是什么意思呢?现在我们低位颗粒上的数据是DQ0-15,高位颗粒是DQ16-31,不知道你说的是不是这个意思。 我一直在怀疑是不是FPGA的哪些设置没打开,但是让FPGA逻辑工程师确认了,  详情 回复 发表于 2019-3-29 11:11
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-9-4 02:55 , Processed in 0.156250 second(s), 31 queries , Gzip On.

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

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

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