TA的每日心情 | 开心 2025-11-21 15:15 |
|---|
签到天数: 28 天 [LV.4]偶尔看看III
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
总体情况:我们用FPGA挂了2通道的DDR4,读写出错,具体情况如下:$ _* i @5 i: I7 j: _4 q
B+ X; e. @3 C, N6 t7 u1、使用的是Xilinx的KU040,引出来了2个通道的DDR4,每个通道位宽是32位,每个通道由2颗x16的DDR4颗粒组成,fly-by拓扑,设计的运行频率是2133;
* z) _& R; _8 T# r2、bank47、48组成CH0,bank67、68组成CH1,PCB图中,右边的两个颗粒是CH0,左边的两个颗粒是CH1;' v$ i- j3 v" U$ L: W
3、现在出现的问题是读写出错,往DDR颗粒中写满数据,再读出来,与写入的进行对比,发现错误;
# {4 z: J# i& Z% k3 v* }' t( B X4、测试的情况是,测了3块板子,3块板子的CH0都出错,有1块板子的CH1出错,2块没有错(这些测试结果,每个CH都是基于32位位宽进行测试);$ e" `4 p7 l- {. n
5、重点来了,我们在逻辑程序里,把每个通道高16位的颗粒的DQ/DQS/DM信号禁掉,因为是fly-by,ADDR/CMD/CTRL禁不了,这种情况下,测试所有的板子、通道都没问题;% b# [1 g2 J, z$ U* b
6、我们反过来把低16位的颗粒数据信号禁掉,只保留高16位的颗粒,测试有错,错误的现象、错误个数的数量级跟之前32位都测的时候基本一致;
3 {) C0 Z8 D: C4 C' ?$ W1 j( Z# i9 H3 W4 W) Q2 r
综上,帮忙分析一下可能的原因?谢谢了!4 `: q; A4 H% y. d h, x
( M3 |* o4 d3 \6 O7 A
1、我们曾经很怀疑逻辑程序的问题,但是说不通的是,CH1没错啊,而且我们试了用极为简单的语句去调用IP核,也会出错,而且用16位程序没出错;
) N, }4 x, w& u. x2、我按照FPGA的资料,仔细检查了硬件设计,也没发现什么错误;7 ^% f1 m" o7 l4 M, c4 [
]9 L2 W" i" R- w0 R
& K& k4 w4 _3 g7 u5 r& k
; I! c/ x2 N, l, ^1 g
5 R, z7 _# v5 V: c j: v
; P( n; ^+ S( ]5 b5 Z/ `
6 P: q; G5 y( O! V* F# p
! x+ }5 t+ J1 r
- M+ e5 U" @2 }' L
; B( u+ B0 u( R, }5 T
. [; t; y, l! l$ v6 u
+ E. d, o; m- k* x3 R9 q# \' N* j; s
6 V) d, e( K. m' j0 z) Z
; U# P! J7 G$ t! w |
|