TA的每日心情 | 慵懒 2022-4-7 15:32 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
总体情况:我们用FPGA挂了2通道的DDR4,读写出错,具体情况如下:
7 l' `8 g+ \1 s" d: M
- e u+ q# g7 i2 P$ j- U1、使用的是Xilinx的KU040,引出来了2个通道的DDR4,每个通道位宽是32位,每个通道由2颗x16的DDR4颗粒组成,fly-by拓扑,设计的运行频率是2133;
) k0 Y0 j; j9 W! n( q" v2、bank47、48组成CH0,bank67、68组成CH1,PCB图中,右边的两个颗粒是CH0,左边的两个颗粒是CH1;; \% W3 S" T" R. o
3、现在出现的问题是读写出错,往DDR颗粒中写满数据,再读出来,与写入的进行对比,发现错误;
4 s- a* v6 R- } F9 r4、测试的情况是,测了3块板子,3块板子的CH0都出错,有1块板子的CH1出错,2块没有错(这些测试结果,每个CH都是基于32位位宽进行测试);' c3 P0 I1 u) Q& `
5、重点来了,我们在逻辑程序里,把每个通道高16位的颗粒的DQ/DQS/DM信号禁掉,因为是fly-by,ADDR/CMD/CTRL禁不了,这种情况下,测试所有的板子、通道都没问题;
* l3 E7 k3 e( s Y* x2 I6、我们反过来把低16位的颗粒数据信号禁掉,只保留高16位的颗粒,测试有错,错误的现象、错误个数的数量级跟之前32位都测的时候基本一致;! y& A* U, r8 T( b0 k4 V' L
2 f8 D$ T8 E4 v+ m$ m* \综上,帮忙分析一下可能的原因?谢谢了!4 O6 \# N. m) [+ n, w7 {
; L# v; h$ x* N% y! z4 ?1、我们曾经很怀疑逻辑程序的问题,但是说不通的是,CH1没错啊,而且我们试了用极为简单的语句去调用IP核,也会出错,而且用16位程序没出错;
7 l' |5 Y$ ?0 \1 j# a2、我按照FPGA的资料,仔细检查了硬件设计,也没发现什么错误;4 ~7 H/ h" I9 l1 A, U
5 I9 D- R* ], d' {/ g
" ^0 Q8 n, p7 u0 M$ M
) I, _$ T5 y0 v' n
# u w) |" c* W2 x/ n
6 Q; ]" w$ F) f3 X
% P& ]$ ] @* A* z, D
' M% U, k+ S- ^
5 |' N0 X& {/ _' b: s
5 K5 D/ W) E9 U- J! {, K, w3 S
4 B' e$ t& \% w/ L$ l
& w& |" L3 n1 A
' Y9 ]) P8 j. g8 b4 u! x# _% P0 P# w q
|
|