关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于VHDL的SDRAM控制器的实现

基于VHDL的SDRAM控制器的实现

作者: 时间:2012-10-29 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/159725.htm

  ADDR为输入地址端口。将其解析为对应的片选、页以及行、列地址。以一条MIT16LSDT6464A内存条为例,其大小为512Mbyte(2 29 byte)。数据位宽为64bit(8byte),则地址线ADDR应为26根。可以这样映射地址:ADDR[25]对应内存芯片组号;ADDR[24:23]对应页号;ADDR[22:10]对应行号;ADDR[9:0]对应列号。

DATAIN为写入数据端口,64bit位宽。

  DATAOUT为读出数据端口,64bit位宽。

  RD_OE为读出数据使能端口,当其为1时,表示从下一个时钟起,数据将依次出现在DATAOUT口上。

  WR_OE为写入数据使能端口,当其为1时,写入数据应该依次出现在DATAIN口上。

  CMD[2:0]为命令输入端口,分别表示读、写内存等待操作。其中,CMD=“000”表示无操作,内存条交给管理,定其完成刷新工作;REFRESH命令由外部逻辑指定特刷新的内存芯片信号,组号由ADDR的低位给出;LOAD_MODE命令执行内存条工作寄存器初始化工作,初始化值由DATAIN的低13位决定,内存芯片组号同样由ADDR的低位给出;同理,ADDR的低位也决定了预充电操作所对应的内存芯片组号。

  CMDACK为命令应答端口,表示命令已经被执行,使外部逻辑可以向发出下一个动作。

4.2 状态机

  图3是控制器的状态转移图。状态图中的各个状态内均包含一系列的子状态转移(对内存条发出连续命令),每个子状态完成一个功能操作。初始化操作包括前面介绍的内存条初始化全过程,工作寄存器的默认值在程序中指定。以后可以通过LOAD_MODE命令改变内存条的工作模式。初始化结束后,内存条进入Idel状态,刷新计数器开始工作,控制器开始响应外部逻辑的操作请求。

图3是SDRAM控制器的状态转移图

  刷新计数器操作是一个独立的进程(process)。刷新计数器的初值由内存芯片要求、内存条个数和控制器工作频率共同决定。例如,在本次设计中,所采用的MT48LC32M8A2内存芯片要求在64ms内夏至少刷新8196次。而MIT16LSDT6464A型内存条共有两组内存芯片,也就是要求在64ms内要发出8196×2条自刷新(AUTO REFRESH)指令。系统工作时钟为46.66MHz,因此控制单条MIT16LSDT6464A时,刷新计数器初值至多为(64ms/8196/2)×6、、46.66MHz,即182.开始工作后,每当刷新计数器值减为0,便依次向内存芯片组发出刷新命令,保证中的数据不丢失。刷新请求是内存请求;读和写操作是外部请求。在Idel状态中有请求仲裁逻辑,当内部和外部请求同时出现时,优先保证内部请求,状态转移至刷新操作。当刷新操作结束时,重新返回Idel状态,开始响应外部请求。响应外部请求后,应答信号CMDBAK出现正脉冲。它通知外部逻辑,请求已经被响应,可以撤销请求。在刷新操作状态中,也有许数器计数,其大小等于控制器管理的内存芯片信号。记录并判断此次刷新操作所对应的内存芯片的组号,产生相应的片选信号。

  响应读、写请求后,状态从Idel转移到读、写状态。同时读、写地址和写入的数据锁存至控制器。控制器由读写地址解析出CS信号、页地址、行地址、列地址。向内存条发出一系列命令(ACTIVE,READ/WRITE with AUTO PRECHARGE),完成读写操作,为了简化,此控制器向SDRAM发出的都是带有AUTO PRECHARGE的读、写指令,然后由SDRAM内部逻辑自动在读、写过程末期发出PRECHARGE指令(在发READ/WRITE指令时,地址线A10赋值1,打开AUTO PRECHARGE功能)。图4和图5分别是利用该控制器完成读、写操作的时序图。读操作的CAS延迟为两个时钟。

控制器完成读操作的时序图

控制器完成写操作的时序图

  该SDRAM控制器在中频数据海量存储系统中已得到应用。数据接收逻辑将接收到的中频采样数据整理后(拼接成64bit),通过SDRAM控制器存入SDRAM阵列。存满后,数据输出逻辑将中频数据通过SDRAM控制器从内存条中取出,传输至上位机。其代码在ATERA公司的FPGA--EP1C6Q240中通过了Quartus II的仿真、综合和布局、布线。占用499个logic cellk,消耗了8%的逻辑资源。留有丰富的资源可提供给其它逻辑单元使用。

  上面介绍了SDRAM的基本工作原理和一种简单的通用SDRAM控制器的。SDRAM的控制机制比较复杂,具有多种突发读、写方式和工作模式(详细内容请参考SDRAM的数据手册)。但是,可以根据应用,其中的一个子集(基本读、写、刷新操作)来满足实际系统的需要。用SDRAM实现大容量的高速数据缓存具有明显的优势,使用可编程器件实现SDRAM控制器则使之具有更高的灵活性,其应用前景广阔。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭