SDRAM控制器设计(数字控制器的两种设计方法)

FPGA之SDRAM控制器设计(二):刷新这次要来解决上次留下来的刷新问题,在100us后首先要经过两次刷新才进行模式寄存器设置。这颗SDRAM芯片需要每隔64ms对8192行(列地址10-位,行地址13位)的每一个存储电容进行一次刷新,因为不刷新电充会泄露电流导致存储信息丢失。那每一行的刷新时间为64/8192≈7810ns,注意刷新是以行为单位,器芯片内部有一个计数器,这个计数器不是时钟直接驱动的,而是AUTOPRECHARGE驱动,每发一次atuoprecharge命令这个计数器加1,我们是

大家好,又见面了,我是你们的朋友全栈君。

FPGA之SDRAM控制器设计(二):刷新

这次要来解决上次留下来的刷新问题,在100us后首先要经过两次刷新才进行模式寄存器设置。这颗SDRAM芯片需要每隔64ms对8192行(列地址10-位,行地址13位)的每一个存储电容进行一次刷新,因为不刷新电充会泄露电流导致存储信息丢失。那每一行的刷新时间为64/8192 ≈ 7810ns,注意刷新是以行为单位,器芯片内部有一个计数器,这个计数器不是时钟直接驱动的,而是AUTO PRECHARGE驱动,每发一次atuoprecharge命令这个计数器加1,我们是看不到的也无法对其直接置数,这个计数器一上电就进行初始化这是我们不需要关心的,我们要做的是在7810ns进行一次刷新操作就行了。所做的读和写就是在两次刷新间隔内进行的,这个会在下一节讲到。

SDRAM控制器设计(数字控制器的两种设计方法)

刷新模块的设计思路是:刷新的命令状态机和一个刷新标志产生的计数器,在此基础上要加上一个主控状态机,也就是控制何时上电刷新读写的一个模块。

刷新状态转移图:

SDRAM控制器设计(数字控制器的两种设计方法)

刷新状态机设计

`include	"head.v"
module ref_fsm(
		ref_done,ref_en,clk,ref_bus,soft_rst_n
);//刷新状态机
		input			clk;
		input			ref_en;
		input			soft_rst_n;
		output	reg		ref_done;
		output	[19:0]	ref_bus;
		
		reg		[12:0]	ref_a;
		reg		[1:0]	ref_ba;
		reg		[3:0]	ref_cmd;
		reg				ref_cke;
		
		assign	ref_bus = {ref_cmd,ref_a,ref_ba,ref_cke};
		
		reg		[14:0]	cnt;
		reg		[1:0]	state;
		localparam	s0 = 2'b00;
		localparam	s1 = 2'b01;
		localparam	s2 = 2'b10;
		
		
	always @(posedge clk)
		begin
			if(soft_rst_n == 1'b0)
				begin
					ref_done <= 1'b0;
					ref_ba <= 'd0;
					ref_cmd <= `NOP;
					ref_cke <= 1'b0;
					cnt <= 'd0;
					state <= s0;
				end
			else
				case(state)
					s0 : if(ref_en == 1'b0)
							begin
								ref_done <= 1'b0;
								state <= s0;
								
							end
						 else
						 	begin
						 		ref_cmd <= `PRE;
						 		ref_a[10] <= 1'b1;
						 		ref_done <= 1'b0;
						 		state <= s1;
						 		ref_cke <= 1'b1;//add
						 	end
					s1 : if(cnt < `tRP - 1)
							begin
								cnt	<= cnt + 1'b1;
								ref_cmd <= `NOP;
								state <= s1;
							end
						 else
						 	begin
						 		cnt	 <= 'd0;
						 		ref_cmd <= `REF;
						 		state <= s2;
						 	end
					s2 : if(cnt	< `tRFC - 1)
							begin
								cnt <= cnt + 1'b1;
								ref_cmd <= `NOP;
								state <= s2;	
							end
						 else
						 	begin
						 		cnt	<= 'd0;
						 		ref_done <= 1'b1;
						 		state <= s0;
						 	end
				endcase
		end
endmodule

定时模块设计

`include	"head.v"

module ref_time(
	clk,soft_rst_n,rt_en,rt_flag
);//刷新定时器
	input		clk;
	input		rt_en;
	input		soft_rst_n;
	output	reg	rt_flag;
	
	reg		[9:0]	cnt;

always @(posedge clk)begin
	if(soft_rst_n == 1'b0)
		begin
			cnt <= 'd0;
			rt_flag <= 1'b0;
		end
	else if(rt_en == 1'b1 )
			if(cnt < 780)
			begin
				cnt <= cnt + 1'b1;
				rt_flag <= 1'b0;
			end
			else begin
				cnt	 <= 'd0;
				rt_flag <= 1'b1;	
			end
		
end
endmodule

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129213.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 如何用photoshop做24色环_【PS教你快速绘制超漂亮的色环】 24色环图绘制

    如何用photoshop做24色环_【PS教你快速绘制超漂亮的色环】 24色环图绘制这个圆环中的格子是36*11,顺时针方向是36个,横向是11个,当然包括中间的白色。白色也算一个格子。最终效果:按照上面的长宽比数据,我新建了一个画布,尺寸放大20倍,也就是720*220。新建一层,填充PS自带的彩虹渐变。对照原图的外黑里白的效果,添加一个黑白渐变,混合模式使用”强光”。马赛克,这是很关键的一步。之前我说了我把长宽比放大20倍,所以这里马赛克的大小也设为20像素。这一步也很重要,…

    2022年10月23日
  • fbx转3dtiles

    fbx转3dtilesfbx转3dtiles

    2022年10月27日
  • 无偏估计(Unbiased Estimator)「建议收藏」

    无偏估计(Unbiased Estimator)「建议收藏」无偏估计是参数的样本估计量的期望值等于参数的真实值。一个简单的例子(https://www.zhihu.com/question/22983179/answer/23470969):比如我要对某个

  • c语言 switch错误用法,C语言switch语句的详细用法[通俗易懂]

    c语言 switch错误用法,C语言switch语句的详细用法[通俗易懂]C语言还为多分支选择提供了另一个switch语句,其一般形式为:开关(表达式){案例常量表达式1:语句1;案例常量表达式2:语句2;…条件常量表达式n:语句n;默认值:语句n+1;}语义是:计算表达式的值.将其与后续常量表达式的值一一比较.当表达式的值等于常量表达式的值时,将执行后续语句,然后不进行判断,并且在个案之后的所有后续语句将继续.如果在所有情况下表达式的值都与常量…

  • 我的数据分析师转型之路,从零到字节跳动数据分析师

    我的数据分析师转型之路,从零到字节跳动数据分析师从一个什么都不懂的小白,到现在字节跳动的数据分析师,我用了大概1年的时间,在这里想给大家分享一下我的转行经历,希望能有一些帮助。出于隐私考虑,我就全部打码了。。。先说一下个人背景,本科是工科相关,非计算机非统计学,硕士是金融相关,基本也算是和数据分析没什么关系,毕业之前有过迷茫,因为自己其实也不知道到底适不适合金融行业,而且上学的时候没有认真搞过什么银行、券商的实习,基本毕业就是凉凉的节奏。所…

  • 性能和稳定性测试报告模板下载_产品稳定性报告怎样写

    性能和稳定性测试报告模板下载_产品稳定性报告怎样写目的:描述此次测试的目的:(以下目的请做参考)验证改进的性能效果,需要和以前的测试结果进行比对。新的业务上线,验证新系统能够满足系统的上线指标。验证系统稳定性验证系统的架构是否存在瓶颈测试环境:提供网络拓扑图可以使用visio来花图,描述清楚几个要点:几台测试服务器,每台都有什么服务,前台web服务、memcache、数据库?几台服务器的连接关系服务器软件信息说明: 服务器IP地址 服务器角色 数据库说明

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号