SDRAM控制器的设备与VHDL实现
时间:09-03
来源:互联网
点击:
|
由以上介绍可以得出,SDRAM的读、写操作均由一系列命令组成,因此读、写操作是有时钟损耗的,工作时钟速率不等于SDRAM能达到的读、写速率。但是由于SDRAM有突发读、写模式,也就是说可以读出和写入一串地址连续的数据,从而提高了效率。当突发长度为整页时,读、写速度达到最快。随机读、写速度的计算公式为:
furite/read=工作时钟频率(HzHzHhdkkdk ss dkkdkdkd,,,m,mddddd)×数据宽度(bytes)×突发读写长度/操作所需的时钟数
为了提高存储密度,SDRAM采用硅片电容存储信息。电容总会有漏电流流过,所以为了不使信息丢失,必须定期地给电容刷新充电。外部控制逻辑必须按要求定期向内存条发出刷新命令,保证在规定的时间内对每一个单元都进行刷新。
3 初始化操作
SDRAM在上电以后必须对其进行初始化操作,具体操作如下:
(1)系统在上电后要等待100~200μs。在待时间到了以后至少执行一条空操作或者指令禁止操作。
(2)对所有芯片执行PRECHARGE命令,完成预充电。
(3)向每组内存芯片发出两条AUTO REFRESH命令,使SDRAM芯片内部的刷新计数器可以进入正常运行状态。
(4)执行LOAD MODE REGISTER命令,完成对SDRAM工作模式的设定。
完成以上步骤后,SDRAM进入正常工作状态,等待控制器对其进行读、写和刷新等操作。
4 SDRAM控制器设计
4.1 功能说明
在以SDRAM作为缓存的系统中,使用可编程器件对其进行控制具有很强的灵活性。为了使设计具有模块化和可重复使用的优点,设计了一个简化的SDRAM接口电路。这样就屏蔽掉了SDRAM操作的复杂性,而其它逻辑模块可通过接口电路对SDRAM进行访问。此外,由于整个SDRAM控制器用VHDL语言编写,只要对其进行简单的修改就可以满足不同的需求,具有很强的灵活性。
参照图2,SDRAM控制器完成的主要功能是对CMD[2:0]的命令字和ADDR端的地址进行解析,产生相应的SDRAM的控制时序。
|
CLK为输入的工作时钟端口。
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是SDRAM控制器的状态转移图。状态图中的各个状态内均包含一系列的子状态转移(对SDRAM内存条发出连续命令),每个子状态完成一个功能操作。初始化操作包括前面介绍的内存条初始化全过程,工作寄存器的默认值在VHDL程序中指定。以后可以通过LOAD_MODE命令改变内存条的工作模式。初始化结束后,内存条进入Idel状态,刷新计数器开始工作,控制器开始响应外部逻辑的操作请求。
刷新计数器操作是一个独立的进程(process)。刷新计数器的初值由内存芯片要求、内存条个数和控制器工作频率共同决定。例如,在本次设计中,所采用的MT48LC32M8A2内存芯片要求在64ms内夏至少刷新8196次。而MIT16LSDT6464A型内存条共有两组内存芯片,也就是要求在64ms内要发出8196×2条自刷新(AUTO REFRESH)指令。系统工作时钟为46.66MHz,因此控制单条MIT16LSDT6464A时,刷新计数器初值至多为(64ms/8196/2)×6、、46.66MHz,即182。开始工作后,每当刷新计数器值减为0,便依次向内存芯片组发出刷新命令,保证SDRAM中的数据不丢失。刷新请求是内存请求;读和写操作是外部请求。在Idel状态中有请求仲裁逻辑,当内部和外部请求同时出现时,优先保证内部请求,状态转移至刷新操作。当刷新操作结束时,重新返回Idel状态,开始响应外部请求。响应外部请求后,应答信号CMDBAK出现正脉冲。它通知外部逻辑,请求已经被响应,可以撤销请求。在刷新操作状态中,也有许数器计数,其大小等于控制器管理的内存芯片信号。记录并判断此次刷新操作所对应的内存芯片的组号,产生相应的片选信号。
LTE CPLD FPGA 总线 电容 电流 电路 VHDL DAC Quartus 仿真 相关文章:
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 验证FPGA设计:模拟,仿真,还是碰运气?(08-04)
- 学习FPGA绝佳网站推荐!!!(05-23)
- 智能命令行设计及其在 SOPC 系统中的应用(08-14)
- 我的FPGA学习历程(05-23)
- 在FPGA中实现源同步LVDS接收正确字对齐(05-01)