在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6083|回复: 17

[求助] ddr2 刷新问题

[复制链接]
发表于 2015-8-11 18:37:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
请教大神们,这方面有过经验的给予提示我用的是xilinx调用ddr2 IP core ,里面已经设置
.selfrefresh_enter              (1'b0), //如果给1,进入刷新模式是不能读写数据的,我没有退出,如果之后再给0,应该是可以继续进行读写的。
         .selfrefresh_mode               (c1_selfrefresh_mode)
他这种默认设置是没有进入自刷新模式。
查看ug388手册描述如下
selfrefresh_enter
Input
This input is rising-edge sensitive. When asserted,
the MCB requests the memory device to enter self-
refresh mode. The signal must remain asserted until
the selfrefresh_mode signal goes active.

通过上述资料可以确定,自动生成的IP core没有配置刷新设置。
我测试代码能够实现读写数据一致,读写长度为128byte,在配置读写命令的时候,加上刷新与不加没发现数据有什么变化。
整体下来,我没有做刷新设置处理,可是数据还是正确的。
我想了解一下刷新要在什么情况下起作用,什么时候必须配置刷新?
发表于 2015-8-12 13:27:25 | 显示全部楼层
1.self-refresh一般是ddr在low-power的情况下用的,以此来保持dram里面的data。
2.dram一般而言的refresh是auto-refresh,就是普通的refresh cmd,这个是在normal状态下保持dram的data的,有别于self-refresh。
3.另外你测试refresh能不能保持data的时候,你的方法有点问题,因为你先写如dram一个data,对应的dram的某一个row就被active了,如果你还停留在这个address,那么这个被active的row是不需要刷新也可以保持data的。
4.建议你先写addr1,然后再写addr2(和addr1跨度比较大),然后再读addr1,看看你之前写入到addr1的data还能不能保持。
 楼主| 发表于 2015-8-12 15:57:06 | 显示全部楼层
回复 2# gjb649666926


   您好:我将写入数据的地址递增幅度加大,
assign wr_bank_address[1:0] = wr_address[24:23] ;
assign wr_ras_address[12:0] = wr_address[22:10] ;
assign wr_cas_address[9:0]  = wr_address[9:0] ;

每次加14‘b10_0000_0100_0000


上图是我用chipscope抓出来的,放大之后对比,数据还是正确的,
我现在设置是,先写入数据,写进去好多数据之后开始发送读命令,一直读之前被写的一个地址,发现读出来的数据不对。
我在每次发送读写命令的时候都带着刷新命令了
c3_p2_cmd_instr = 3’b011 ;
c3_p3_cmd_instr = 3'b010 ;
我对于刷新不了解,如果不是上述那样给命令的话,我再继续看手册,希望您能给予肯定的答复。
 楼主| 发表于 2015-8-12 15:58:17 | 显示全部楼层
ddr2_chipscope.png 回复 3# z894811350
发表于 2015-8-12 16:09:24 | 显示全部楼层
你现在想确定的问题是不刷新为什么读写还正确?
1.首先,正常模式下的refresh不是你说的那个self-refresh,和这个一点关系都没有,这个self-refresh一般设定为0,就是不进入self-refresh。
2.看一下你在generate ddr ip的时候有没有refresh相关的设定,比如说refresh 周期是多少,时候disable refresh cmd,也许xilinx的ddr ip的control不能够disable refresh cmd。
3.如果不disable refresh cmd的话,xilinx的ddrc会根据设定的refresh时间,周期性的发出refresh cmd,所以无论你怎样读写data,都能够保持。
 楼主| 发表于 2015-8-12 17:43:23 | 显示全部楼层
回复 5# gjb649666926


   对,我就是想知道我不给刷新命令为什么还能够读出正确的数据,   我重新进入ip core里面查看,只有一个高温是否进入自刷新模式,我在生成的txt文件里面找到了我的配置。
   High Temparature Self Refresh Rate : Disable

   查看手册,发现在生成的ddr2顶层配置如下
   localparam C1_MEM_TRAS             = 40000;      
   localparam C1_MEM_TRCD             = 15000;      
   localparam C1_MEM_TREFI            = 7800000;      
   localparam C1_MEM_TRFC             = 105000;      
   localparam C1_MEM_TRP              = 15000;      
   localparam C1_MEM_TWR              = 15000;      
   localparam C1_MEM_TRTP             = 7500;      
   localparam C1_MEM_TWTR             = 7500;


   localparam C1_MEM_DDR3_AUTO_SR     = "ENABLED";
   Possible values: “ENABLED“, “MANUAL“(这个配置只适合DDR3,是不是只能在ddr3的情况才可以用户去配置刷新命令,ddr2只能受ip core 自动刷新呢?)
   在其他的地方没有发现Self Refresh是解释自刷新的时序。
   对于refresh 是在告诉数据流的时候产生该命令,read with refresh 是在跨行的情况去操作,
   我现在是跨多行,不刷新,去读取之前的数据都能读出来,也都是正确的。
   我之前了解一点sdram,那个好像是每次操作完都要刷新一次,可是现在发现刷新命令就没起作用,也没看到有配置进入自刷新模式。
   您看我应该怎么去验证这个东西还是再仔细看手册呢?我打算建一个ddr3看看能否更改那个自刷新配置。
 楼主| 发表于 2015-8-12 18:33:27 | 显示全部楼层
回复 5# gjb649666926

对,我就是想知道我没有设置刷新,为什么还能正确的读出来数据。

根据您的提示,我重新看一下ddr2 ip core ,发现只有在高温的时候可以配置是否进入self refresh
生成的txt里面有   High Temparature Self Refresh Rate : Disable
查看手册,有几个参数配置,看了一下ddr2 生成的顶层,参数配置如下:
   localparam C1_MEM_TRAS             = 40000;      
   localparam C1_MEM_TRCD             = 15000;      
   localparam C1_MEM_TREFI            = 7800000;      
   localparam C1_MEM_TRFC             = 105000;      
   localparam C1_MEM_TRP              = 15000;      
   localparam C1_MEM_TWR              = 15000;      
   localparam C1_MEM_TRTP             = 7500;      
   localparam C1_MEM_TWTR             = 7500;
还发现一个地方
   localparam C1_MEM_DDR3_AUTO_SR     = "ENABLED";  (手册上说这个配置只适合ddr3,Possible values: “ENABLED“, “MANUAL“ ,我想是不是只有ddr3可以配置为设计者能够去定义刷新,ddr2不可以配置,只能自动刷新)
   其余的地方提到self refresh 是说时序的。
   refresh介绍是高速数据流的时候发送该命令,read with refresh 跨行的时候配置,
   我现在是跨好多行,不配置刷新命令,但是还能读出正确数据。
   您看我现在再仔细看手册还是应该怎么去验证?我打算新建一个ddr3 ip core ,看看能否可配置。
 楼主| 发表于 2015-8-12 18:34:03 | 显示全部楼层
回复 5# gjb649666926

对,我就是想知道我没有设置刷新,为什么还能正确的读出来数据。

根据您的提示,我重新看一下ddr2 ip core ,发现只有在高温的时候可以配置是否进入self refresh
生成的txt里面有   High Temparature Self Refresh Rate : Disable
查看手册,有几个参数配置,看了一下ddr2 生成的顶层,参数配置如下:
   localparam C1_MEM_TRAS             = 40000;      
   localparam C1_MEM_TRCD             = 15000;      
   localparam C1_MEM_TREFI            = 7800000;      
   localparam C1_MEM_TRFC             = 105000;      
   localparam C1_MEM_TRP              = 15000;      
   localparam C1_MEM_TWR              = 15000;      
   localparam C1_MEM_TRTP             = 7500;      
   localparam C1_MEM_TWTR             = 7500;
还发现一个地方
   localparam C1_MEM_DDR3_AUTO_SR     = "ENABLED";  (手册上说这个配置只适合ddr3,Possible values: “ENABLED“, “MANUAL“ ,我想是不是只有ddr3可以配置为设计者能够去定义刷新,ddr2不可以配置,只能自动刷新)
   其余的地方提到self refresh 是说时序的。
   refresh介绍是高速数据流的时候发送该命令,read with refresh 跨行的时候配置,
   我现在是跨好多行,不配置刷新命令,但是还能读出正确数据。
   您看我现在再仔细看手册还是应该怎么去验证?我打算新建一个ddr3 ip core ,看看能否可配置。
 楼主| 发表于 2015-8-12 18:34:41 | 显示全部楼层
回复 5# gjb649666926

对,我就是想知道我没有设置刷新,为什么还能正确的读出来数据。

根据您的提示,我重新看一下ddr2 ip core ,发现只有在高温的时候可以配置是否进入self refresh
生成的txt里面有   High Temparature Self Refresh Rate : Disable
查看手册,有几个参数配置,看了一下ddr2 生成的顶层,参数配置如下:
   localparam C1_MEM_TRAS             = 40000;      
   localparam C1_MEM_TRCD             = 15000;      
   localparam C1_MEM_TREFI            = 7800000;      
   localparam C1_MEM_TRFC             = 105000;      
   localparam C1_MEM_TRP              = 15000;      
   localparam C1_MEM_TWR              = 15000;      
   localparam C1_MEM_TRTP             = 7500;      
   localparam C1_MEM_TWTR             = 7500;
还发现一个地方
   localparam C1_MEM_DDR3_AUTO_SR     = "ENABLED";  (手册上说这个配置只适合ddr3,Possible values: “ENABLED“, “MANUAL“ ,我想是不是只有ddr3可以配置为设计者能够去定义刷新,ddr2不可以配置,只能自动刷新)
   其余的地方提到self refresh 是说时序的。
   refresh介绍是高速数据流的时候发送该命令,read with refresh 跨行的时候配置,
   我现在是跨好多行,不配置刷新命令,但是还能读出正确数据。
   您看我现在再仔细看手册还是应该怎么去验证?我打算新建一个ddr3 ip core ,看看能否可配置。
 楼主| 发表于 2015-8-12 18:51:36 | 显示全部楼层
ddr3_refresh.png ddr2_refresh.png 回复 5# gjb649666926
这两个是我发现在生成ddr2和ddr3的配置区别
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 08:52 , Processed in 0.022108 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表