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

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分布式系统下的纠删码技术(一) — Erasure Code (EC)

    分布式系统下的纠删码技术(一) — Erasure Code (EC) 近几个月主要参与一个分布式存储系统的纠删码部分(用于数据容错),纠删码在学术界出现比较早,现在ceph,微软的存储系统,Hadoop3.0等都用了EC。文章会分为多篇,主要将ErasureCode,LRC, 以及相关的数学基础,作为学习总结。 一、纠删码简介      分布式系统需要在硬件失效等故障发生后仍然能继续提供服务。就数据而言,HDFS采用每份数据3副本的方式,保…

    2025年7月2日
    3
  • 投影矩阵 视图模型矩阵「建议收藏」

    投影矩阵 视图模型矩阵「建议收藏」
        OpenGL在设置场景时,要用到两个矩阵:投影矩阵和模型视图矩阵通过glMatrixMode来指定下面的矩阵操作是针对哪一个矩阵进行的。
        gluLookatup,glTranslate,glRotate,glScale,glOrtho,gluPerspective等函数只根据其参数计算出一个矩阵M,然后与当前的栈顶元素T相乘;但这些函数本身不能自动找到应该对应的矩阵堆栈,你可以将它们放在任何矩阵堆栈操作中,比如可以将gluLookatup放在glMat

    2022年5月14日
    35
  • 遇到“word在试图打开文件时遇到错误”怎么办?

    遇到“word在试图打开文件时遇到错误”怎么办?1.打开文件遇到的错误提示“word在试图打开文件时遇到错误”2.关闭这个提示窗口,打开左上角的文件按钮。3.点击最下面的选项按钮,进入选项对话框,4.点击左侧的信任中心,然后选择右侧的信任中心设置。5.进入信任中心点击左侧的受保护试图选项卡,默认是三个选项都被选中。6.取消勾选第一个选项“为来自internet的文件启用受保护的试图”,点击确认后退出,然后重新打开文件,看看是不是有效果…

    2022年6月11日
    43
  • python注入_Python——dll注入

    python注入_Python——dll注入dll攻击原理分析什么是dll动态链接库,是在微软Windows操作系统中实现共享函数库概念的一种方式。这些库函数的扩展名是”.dll”、”.ocx”(包含ActiveX控制的库)或者”.drv”(旧式的系统驱动程序)。为何有dll由于进程的地址空间是独立的(保护模式),当多个进程共享相同的库时,每个库都在硬盘和进程彼此的内存存放一份的话,对于早期的计算机来说,无疑是一种极大的浪费,于是win…

    2022年5月17日
    32
  • 《哈佛幸福课》笔记

    《哈佛幸福课》笔记前言:幸福感是衡量人生的唯一标准,是所有目标的最终目标积极心理学第一课什么是积极心理学  与缺乏实质内容的心理自助行动不同,积极心理学从学术界而来,有着严谨的学术内容,并且兼顾应用到生活的方方面面,在象牙塔和大众之间构成一座桥梁。  学会安静反省,享受安静的理念,从小白鼠的实验中可知,有时候安静下来思考和重放过去的行为和知识,会学到更多。重现可能形成一种学习记忆机制。…

    2022年7月18日
    19
  • tracker服务器地址(每日更新)_hypixel服务器地址

    tracker服务器地址(每日更新)_hypixel服务器地址https://dns.icoa.cn/tracker/udp://tracker.tiny-vps.com:6969/announcehttps://1337.abcvg.info/announcehttps://tracker.fastdownload.xyz:443/announcehttps://opentracker.xyz:443/announceh…

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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