微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > sdram问题讨论

sdram问题讨论

时间:10-02 整理:3721RD 点击:
在做SDRAM的时候遇到一些问题,请大家不吝赐教
多谢
问题如下:
根据SDRAM的协议,60ms就要进行一次的刷新,有4096行时,15us左右发送一次一行auto_refresh请求,
但是假如此时auto_refresh命令来后,sdram正在进行读写操作,那么该怎么办?是auto_refresh请求命令延时,还是
此时停止读写,等auto_refresh后再重新发送读写命令。
当正在读写数据时,此时来了刷新命令,这个时候是停止读写去进行刷新命令,还是等读写完数据后再进行刷洗命令;
我看到很多状态机好像是读写完成后在进行刷新命令的,这样的话要刷新的这行数据会不会得不到及时刷新而丢失,还是对这此行进行操作就本身进行了充电保证了数据不会丢失?  求指点下 谢谢

1.在85°以下,SDRAM要每64ms把整个阵列都刷新一次
2.SDRAM每次只能刷新一个row,如果阵列中8192个row,那每隔64ms/8192=7.8us就需要刷新一行
3.如果到达了刷新时间,会打断当前正在进行的读写操作。这是sdram controller应该考虑的事情。
当刷新结束之后,还要继续读写。

SDRAM每隔64ms刷新一次,是逐行刷新的,一次一行,每隔64ms/行数就需刷新一行。到达刷新时间需停止正在进行的任何操作,进行刷新。刷新完毕后继续进行相应读写操作。

留一定的余量,做好仲裁机制



    我看了很多sdram控制器写法都是一旦读写时,刷新命令来了也不能打断读写,而是执行读写完后才进行刷新
不太明白为什么是这样设计,难道别人设计错了?

同问,不太懂



    你看的你DDR controller的设计?还是IP封装好的,你调用IP的代码?


自己设计的,没有调用IP的代码



    刷新的事情是IP做的,用户不必关心

sdram的刷新可以推后不?如果不行,就要提前处理,在刷新时间快到,如果你这次的发起的操作会超过刷新时间,是否可以直接先刷新,避免被打断,又要重新打开。

一般刷新时间参数都有一些余量,可以等当前的操作执行完成后再刷新,为了保险也可以将刷新时间定的稍微短一点点,比如提前0.5ms,这样对性能几乎没有影响。

可以设置一个优先级,a,b ,c =~a&b,,来控制先后顺序哦,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top