SDRAM控制器设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:jimchenstong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了SDRAM的结构、时序和有关概念。在该基础上,基于自顶向下设计思想,把控制器模块划分为两个部分:内部命令产生、命令输出。基于verilog实现这两部分模块电路,并完成顶层实体。测试表明,该控制器是有效的。
  关键词:Verilog;SDRAM;控制器
  中图分类号:TN911 文献标识码:A 文章编号:1009-3044(2017)32-0236-03
  VGA CONTROLER in Verilog
  HUI Wei-jun
  (Yancheng Institute of Technology, Yancheng 224051, China)
  Abstract: The structure, timing and related concepts of SDRAM are introduced in this paper. After that, Based on the top-down design idea, the controller module is divided into two parts: the internal command generation、command output. The two module circuits as well as top layer entity are realized Based on verilog, The test shows that the controller is worked.
  Key words: Verilog; SDRAM; controller
  SDRAM即同步动态随机存取存储器,其容量大,存储速度快。在设计一种视频图像系统时,需要存储的数据量大,采用SDRAM作为存储器件。为此,需要设计SDRAM控制器。
  1 SDRAM结构及引脚
  本系统采用hynix的SDRAM器件,型号为HY57V641620。
  SDRAM为阵列结构,如同一张二维表格,如图1所示。通过行列地址,存储单元可以随机访问。存储器行数为 2^12 = 4096,列数为 2^8 = 512,段数为 2 ^ 2 = 4。 其容量为 4096*512*4 = 8Mbit。
  其主要引脚名称及功能如下:
  CKE:时钟使能;CS_N: 片选;
  WE_N:写使能,低电平为写,高电平为读;
  RAS_N: 行选通;CAS_N: 列选通;
  BA[1:0] : 段选择;
  A[11:0] : 行、列复用地址。行地址12位,列地址取低8位。
  D[15:0] 双向数据端口。
  2 SDRAM时序
  SDRAM的操作时序分为三部分:初始化、写、读。控制器设计就是基于这三部分时序完成的。初始化完成之后,才可以实现对存储器的读写操作。
  初始化时序分为4个部分,如图2所示。
  1) 200us的输入延时。用于稳定电路各部分的状态。
  2) 所有段预充电。预充电是指关闭现有行,激活另一行。A10置位,对所有L_BANK预充电,A10位,对固定L_BANK预充电。
  3) 8个刷新周期。SDRAM的数据保存在电容中。SDRAM的特征就是要定时刷新,给电容充电,来保证数据不丢失。电容中数据的有效保存期时间为64ms,器件存储单元共有4096行,每行刷新时间为64ms/4096 = 15.625us。
  4) 模式寄存器设置。通过对地址总线的赋值来进行模式配置,用来控制器件的读写方式。
  读写模式等具体内容见附录[1]。
  本系统配置寄存器值为:000_011_0_111,即设置潜伏长度为2个时钟,页模式突发读写,顺序传输方式。
  3 器件读写
  模式寄存器配置完成之后,器件就可以正常读写了。
  由于行列地址复用,不能同时传送行列地址。读写时序如图4所示,读数据的时候,先发送行地址,使行有效。经过时间Trcd以后,再发送列地址和读写有效信号。Trcd称为行有效时间。由于列地址只有8位,所以[A11..A8]可以赋值为4’b0000或4’b0100。当A10取值1时,器件自动预充电。
  在发送列地址读数据的时候,控制信号CKE、CS_N、WE_N要同时有效。读命令有效后,数据要经过放大,才可以输出,这段时间称为Tcl。Tcl一般为2~3个周期。
  写数据的时候,行列地址时序和读数据相同。写数据没有潜伏时间,但是數据写入器件还是需要时间,称为写回延时Twr。在Twr时间内,不可以预充电。
  4 控制器编程实现
  4.1 内部命令产生模块
  该模块产生产生初始化及刷新、读写等命令。基于初始化时序,在200us稳定期过户,依次生成预充电、8个刷新周期、模式寄存器设置命令。
  parameter INIT_PER = 16’d25000;
  reg [15:0] init_timer;
  if(init_timer < (INIT_PER 201))
  init_timer <= init_timer 16’d1;
  初始化常量取值25000,时钟125Mhz,
  if (init_timer < INIT_PER)
  INIT_REQ <=1;
  else if(init_timer == (INIT_PER 20)) PRECHARGE <=1;
  else if( (init_timer == (INIT_PER 40)) ||   ……
  (init_timer == (INIT_PER 180)) )
  REFRESH <= 1;
  定义init_timer为16位。定义INIT_PER大小为25000。满足输入稳定期:
  1/125 us * 25000 = 200us 。
  然后是20个时钟的预充电,及8个刷新周期,寄存器配置。
  parameter REF_PER = 16’d1953;
  reg [15:0] timer;
  if (REF_ACK == 1)
  begin timer <= REF_PER;
  REF_REQ <= 0; end
  else if (INIT_REQ == 1)
  begin
  timer <= REF_PER 16’d200;
  REF_REQ <=0; end
  else timer <= timer - 1’b1;
  if(timer == 0) REF_REQ <= 1;
  定义常量 REF_PER大小为1953。满足每行刷新时间间隔:
  1/125us * 1953 = 15us
  即过15us之后,刷新行,总刷新周期为64ms。如果INIT_REQ有效,需要多加200个时钟,等待初始化完成之后,再生成刷新请求。
  4.2 命令执行模块
  该模块把读、写、预充电、刷新等命令翻译成正确的控制命令,连接到SDRAM的控制引脚:CKE、CS_N、RAS_N 、WE_N等,使SDRAM执行的正确的动作。
  定义内部命令变量和向量:
  reg do_reada,do_writea,do_refresh;
  reg do_precharge,do_load_mode,do_initial;
  reg command_done,do_rw, rw_flag;
  reg [7:0] command_delay;
  reg [1:0] rw_shift;
  其中,command_delay及command_d用于内部延时。
  模块的功能描述内容主要分为三个部分,如图5所示。
  4.3 内部命令产生
  部分核心程序如下:
  if( INIT_REQ == 1 ) do_initial <= 1;
  else
  begin
  if ((PRECHARGE == 1)
其他文献
早产儿呼吸暂停是造成早产儿颅脑损伤和死亡的主要原因。我院自1995.1-2000.8月采用盐酸钠洛酮治疗本病取得良好效果,报道如下。
本文针对视频序列文字的检测与提取技术做了详尽的分析和讨论,内容包括:文字事件的检测、帧图像中文字区域的检测与定位。首先进行文字事件检测,然后进行边缘检测,加强了检测到的文字的边缘;对边缘进行尺寸限制过滤掉了不符合文字尺寸的边缘;进一步,提出像素密度δ的概念,并指出文字区域的像素密度δ应在某一阈值范围之内(δmin<δ<δmax)。通过像素密度δ滤去了非文字区域,应用投影法最终确定视频字幕所在区域。
电子战的发生是人类技术文明进展在战争中的反映,是人类在电磁频谱应用上的一个特殊创举。人类最早系统地对电磁频谱进行认识与利用须从1861-1862年间马克斯威尔(Maxwell)从理
新课程标准指出:“从学生已有的生活经验出发,让学生亲身经历将实际问题抽象成数学模型并进行解释与应用的过程,进而使学生获得对数学理解的同时,在思维能力、情感态度与价值观等
<正>~~
为了不改动传统制动系统而使电动汽车具有良好的制动能量回收能力,文章提出基于路面识别的并联式制动能量回收策略。通过对电动汽车驱动时的特性分析,提出典型路面的识别方法,设
将FACIT4070穿孔机作为输入穿孔设备,即将计算机中的数控代码由穿孔机输出供机床使用。
本文首先介绍了Microsoft.NET的基本概念,以及Microsoft.NET的体系结构.然后重点讨论了Microsoft.NET Framework的体系结构,并详细分析Common Language Runtime(CLR)以及.NET
健康教育是整体护理中的重要内容。我院自1998年开展整体护理以来,对105例普外病人发放自行设计的健康教育卡效果满意,本文将介绍健康教育卡的制作、内容及发放健康教育卡的体
从1997~2000年底我院共收治6例因张口困难患者在麻醉诱导期发生急性上呼吸道梗阻。使过度通气受阻。我们急采用14号套管静脉穿刺针作环甲膜穿刺,行过度通气供氧现报告如下。