SDRAM小项目——刷新模块

本文档详细介绍了SDRAM控制器在初始化后如何实施刷新模块,以确保数据的稳定性。刷新间隔设定为15us,当控制器从idle状态进入仲裁状态并在仲裁状态下处理刷新请求。在仲裁状态接收到刷新请求后,控制器进入刷新状态,执行刷新操作,并在结束后返回仲裁状态。文中还提到了刷新条件、输出信息以及根据文档编写的代码细节,包括预充命令、自动刷新命令和地址线的操作。
摘要由CSDN通过智能技术生成

记录了SDRAM控制器进行初始化配置后的刷新模块。

SDRAM要进行不停地刷新保证数据的存在,因为SDRAM类似于电容,每次放电结束后数据都会丢失,所以要进行不断地刷新,刷新间隔为15us。

控制器状态从开始的idle状态到仲裁状态,在仲裁状态下进行刷新,读,写状态的跳转。

在仲裁状态下接收到刷新请求,发送刷新使能,状态转到刷新状态,当刷新结束后发送刷新结束标志,状态跳转到仲裁状态。

文档信息:

首先进行precharge命令,trp时间后进行auto refresh命令(20ns,1个周期),文档中要进行两次刷新才能进行act命令,但是实际上只用一次就行了。

在何种情况下进行刷新:

1.每个15us以后自动进行刷新

刷新状态会输出哪些信息:

1.输出刷新请求,仲裁阶段接收到刷新请求,仲裁同意刷新才可以刷新。

2.输出刷新结束,状态跳转回到仲裁

3.刷新命令command(cs,cas,ras,we)

4.addr(a0-a11),文档中显示A0-A9,A11,A12不关心。

根据文档编写代码:

输出:

ref_req:只有在每个15us拉高(每隔15us刷新一次)

flag_ref_end:刷新结束,当命令寄存器发送aref命令结束后拉高

cmd_reg:发送命令(precharge—cmd_cnt计数1和auto refcmd_cnt计数2)

ref_addr:A0-A11

内部变量:

falg_ref:在刷新阶段为高电平

ref_cnt_15us:计数15us,初始化结束后自动开始计数

cmd_cnt:首先是precharge,一个周期后aref,在刷新阶段内部开始计数(flag_ref为高)

module sdram_aref(
		input			sclk,
		input			srst,
		//commmunicate with arbit
		input			ref_en,
		output wire 		ref_req,
		output wire		flag_ref_end,
		//others
		input						flag_init_end,
		output	reg		[3:0]		cmd_reg,
		output	wire	[11:0]		ref_addr
);

//==========================================================
//=======	define parameter and internal signal
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值