新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于VIM的嵌入式存储控制器的研究与实现

基于VIM的嵌入式存储控制器的研究与实现

作者:时间:2014-11-14来源:电子产品世界收藏

  3.1.1 主控制模块

本文引用地址:http://www.eepw.com.cn/article/265390.htm

  主控制模块实现对DRAM各种功能的控制,由初始化状态机子模块、命令状态机子模块和计数器子模块构成。

  初始化状态机子模块 在计时子模块的时序控制下,产生DRAM初始化过程中所需的各种状态,通过状态转换控制DRAM模块的初始化,并将其状态信号iState同时传送到命令状态机子模块、信号产生模块、计时器子模块和数据通路中。

  命令状态机子模块 在计时子模块的时序控制下,产生DRAM读写周期和刷新周期过程中所需的各种状态,控制对DRAM模块的读写访问及刷新操作,并将其状态信号cState传送到数据通路模块、计时器子模块和信号产生模块中。

  计时器子模块 根据DRAM模块的时序标准,对DRAM模块内部操作进行时序控制,主要通过控制初始化状态机和命令状态机中的状态转化时序,达到控制DRAM内部操作时序的目的。

  3.1.2 刷新模块

  产生对DRAM模块的刷新请求操作:通过内部的计数器控制,每隔一定的时钟周期(具体时钟周期数按照DRAM模块参数而定)向命令状态机发送刷新请求,直到命令状态机回复刷新请求应答。

  3.1.3 信号产生模块

  信号产生模块将初始化状态机发送的状态iState、命令状态发送的状态cState转换成DRAM所对应的内部命令信号,主要包括sdr_CKE(时钟使能信号)、sdr_CSn(片选信号)、sdr_RASn(行选信号)、sdr_CASn(列选信号)、sdr_WEn(读写信号)。同时在规定的时序下,将地址总线上传输过来的地址信号转换成DRAM内部所对应的Bank地址和行列地址。

  3.1.4 数据通路

  数据通路模块主要功能是在计时器子模块的时序控制下,根据命令状态信号,在相应状态时将数据总线上的数据写入DRAM存储体;以及将DRAM数据线sdr_DQ上的数据输出到系统总线上,同时在数据输出的过程中将数据有效信号sys_D_Valid置1。

  3.2 DRAM初始化

  通常在DRAM正常工作,能够执行存储访问前,需要对DRAM进行初始化。主控制模块中的初始化状态机子模块实现对DRAM的初始化操作。如图3所示。

  

 

  图3为初始化状态机状态转换图,初始化过程如下:系统复位时,DRAM空操作,初始化状态机处于i_NOP状态,系统复位完成且电源和时钟处于稳定状态时,DRAM初始化序列开始执行,经1次充电、2次刷新和载入工作模式操作,最后进入就绪状态,初始化序列完成。

  初始化状态机中的载入模式状态启动DRAM内部载人工作模式命令,将地址总线上的数据加载到DRAM的模式寄存器中,配置用户所需要的工作模式。模式寄存器的内容定义了猝发长度、猝发类型及CAS延迟等,只要DRAM模块处于空操作状态,模式寄存器可以载入不同的值,继而改变DRAM的工作模式。

  另外,由于DRAM的延迟周期根据实际DRAM速度级别的不同而不同,在延迟状态中等待的时钟周期数与时钟周期tCK相关,当时钟周期tCK大于延迟时间时(这里延迟时间指:充电周期、刷新周期和载入延迟),实际上就不需要等待,在初始化过程中,充电、刷新和载入工作模式到最后就绪状态之间的转换为图3中虚线表示的转换过程。

  3.3 读写周期

  图4为-1嵌入式存储控制器命令状态机状态转换图,通过状态转换控制对DRAM的读、写访问和刷新操作。

  

 

  系统复位时,DRAM空操作,命令状态机处于空闲状态,DRAM初始化完成后,命令状态机对总线地址选通信号sys_ADSn(低电平有效,表示总线请求)和刷新请求信号sys_REF_REQ进行检测,如果有刷新请求,那么命令状态机模块控制DRAM进入刷新周期,否则,若总线地址选通信号sys_ADSn有效,命令状态机转入激活状态,则DRAM进入读写周期。

  命令状态机从激活状态无条件转入激活延迟状态,在激活延迟状态对系统控制总线上的读写命令信号进行检测,若信号为高电平(表示读访问)则命令状态机转入读操作状态,继而进行对DRAM读取数据操作;否则状态机转人写操作状态,执行写访问。

  对DRAM一个完整的读访问周期需要经过的状态转换过程为空闲-激活-激活延迟-读操作-CAS延迟-数据输出,最后回到空闲状态。而对DRAM一个完整的写访问周期则需要经过空闲-激活-激活延迟-写操作-数据写入-写恢复-空闲的状态转换过程。

  在所实现的-1嵌入式存储控制器中,将DRAM地址位A[10]恒置高电平,设置为自动充电模式,所以对DRAM的充电隐藏在DRAM读写命令操作中。命令状态机转换过程中所涉及到的延迟等待时间,由DRAM模块速度和延迟参数确定。从c_ACTIVE到c_WRITE或c_READ状态之间的虚线表示,在激活延迟小于1个时钟周期的情况下,DRAM从激活状态直接转换到读/写操作状态,延迟实际上隐藏在状态转换的时钟周期中。

  3.4 刷新周期

  DRAM存储器需要进行定时刷新,刷新周期描述如下:

  (1)刷新模块每经过1个刷新请求周期,向控制模块发出刷新请求信号sys_REF_REQ;

  (2)存储控制器的控制模块发出应答信号sys_REFACK对请求信号进行确认;

  (3)应答信号在整个刷新阶段有效,sys_REF_REQ信号发出后必须得到sys_REF_ACK的确认,否则一直保持为高;

  (4)在sys_REF_ACK有效期间,不能允许进行读写访问,直到刷新周期完毕,在刷新期间系统接口所有命令将被忽略;

  (5)接收刷新请求后,命令状态机经过c_AR刷新状态-c_tRFC刷新等待状态-c_idle空闲状态的转换过程完成对DRAM的刷新控制。并等待接收系统访存指令,完成下一轮的读/写周期。

  3.5 时序控制

  时序控制是存储控制器实现中的关键部件,在-1嵌入式存储控制器中用1个计时器子模块来实现对存控内状态机的时序控制。计时器子模块中包括1个时钟周期数锁存器ClkCNT和1个计时复位信号Reset_ClkCNT,具体时序控制描述如下:

  (1)锁存器ClkCNT按时钟周期递增,每时钟周期ClkCNT的值加1,直到Reset_ClkCNT复位信号置1,ClkCNT清0;

  (2)状态机转换到某个需要延迟操作的状态时,Reset ClkCNT复位信号置1,此时CIkCNT清0;

  (3)状态机进入延迟等待状态,同时将Reset_ClkCNT复位信号置0,计时器从0开始计数,ClkCNT按时钟周期递增1;

  (4)ClkCNT值到达指定延迟时间,相关状态机子模块控制状态发生转换,同时将Reset_ClkCNT置1,ClkCNT清0,进入下一个状态的时序控制。

  4 功能模拟及综合验证

  4.1 存储控制器功能模拟

  在modelsim 5.7中对VIM-1嵌入式存储器进行了功能模拟,下面分别给出读写访问功能模拟结果。图5为存储控制器写周期时序波形图。该时序波形图反映了存储控制器将数据总线上的数据00000009H(H表示16进制)写入DRAM的过程。从图5中可以看到存储控制器在状态机cstate处于0110状态时240 ns,将数据送到输出数据线sdr_odq上,数据值为00000009H;完成数据的写入后,状态机转到写恢复状态0111(260 ns),经过两个周期后在280 ns回到空闲状态0000,写周期完成。

  图6为存储控制器读周期时序波形图。同写周期时序波形图一样,图中正确反映了命令状态机在检测到控制总线上读命令后的状态转换过程,状态转换之间的延迟周期,每种状态所对应的DRAM命令信号,系统地址和数据总线上的值,DRAM地址线和数据线上的值。通过一系列的状态转换,在状态机cstate转换到1010数据输出状态(350 ns)时,存储控制器将前面存入DRAM存储单元中的数据00000009H,读取出来并传送到系统数据总线sys_odata上。

  4.2 FPGA综合验证

  在QuartusⅡ环境中采用Altera的Stratix FPGA系列中的EPlS80对VIM-1嵌入式存储控制器进行了综合,下面是存储控制器综合结果。

  

 

  

 

  5 结语

  在PIM中嵌入向量处理逻辑的VIM系统结构,能充分发挥PIM高带宽、低延迟、低功耗的特点,可以有效解决存储性能瓶颈问题。基于VIM的嵌入式存储控制器是VIM系统的方存控制部件,是影响系统性能的发挥的关键,本文实现的VIM-1嵌入式存储控制器支持多种读写模式,具有严格的时序控制,每个存储控制器对应单独的存储模块,和VIM的存储交叉开关接口,使得多个方存部件可以同时访问多个存储体,具有较强的研究和应用价值。

存储器相关文章:存储器原理



上一页 1 2 下一页

关键词: VIM SRAM RISC

评论


相关推荐

技术专区

关闭