0 引 言
SDRAM作为大容量、高速度、低价格、低功耗的存储器件,在嵌入式实时图像处理系统中具有很高的应用价值,但其控制机制复杂,因此需要设计控制器,以简化系统对SDRAM的访问。虽然目前许多微处理器及DSP都提供了与SDRAM的直接接口,但这种通用控制器的执行效率很低,难以满足实时系统对速度的要求。鉴于此,介绍一种基于FPGA设计而实现高效SDRAM控制器的方案。结合实际系统,该方案将SDRAM配置为全页突发模式,并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。分析表明,全页突发操作模式能够很好地发挥SDRAM高速读写的性能;同时,设计成乒乓操作结构的异步FIFO,在保证数据连续性的同时,更能降低低速前端对高速SDRAM访问的影响。
1 SDRAM简介
1.1 SDRAM的特点
相对于其他存储器件,SDRAM具备以下特性。
(1)上电后必须通过一个初始化进程配置模式寄存器的值,以决定SDRAM的工作模式;
(2)基于三极管和电容的存储结构SDRAM决定了必须对其定时执行刷新操作,以免数据丢失;
(3)访问SDRAM时,先由Active命令激活要读写的Bank及行并锁存行址,然后在Read/Write命令有效时锁存列址。当访问当前Bank的其他行时,须先使用Pre-charge命令关闭当前行;
(4)SDRAM的内部操作由命令控制,CS_N,RAS_N,CAS_N和WE_N在时钟上升沿的状态决定了具体的操作,Bank及行列地址线在部分操作中作为辅助参数输入。
1.2 全页(Full-page)模式突发操作
进行大量数据读写时,全页突发模式是充分利用SDRAM性能,提高读写速度的良好选择。
激活Bank的某一行后即可对该行进行读写操作。
写入数据在发出写命令的当前时钟周期即可有效,因此写操作可以在单周期内完成;而读出数据将在发出读命令之后CL(CAS Latency)时钟周期才能输出到总线,即随机读取单个数据至少需要1+CL时钟周期。可见,随机读操作会大大降低系统效率。若采用全页突发方式,对于列宽度为n的SDRAM存储器,整页输出所需的总周期数为2n+CL,平均单个数据输出所需周期为(2n+CL)/2n△1,由此读操作延迟对系统效率的影响可降至最低。
2 SDRAM控制器设计
实际的实时红外热成像系统采用了ISSI公司生产的型号为IS42S16160B的SDRAM作为数据缓存,其存储单元组织结构为4 Bank×8 192行×512列×16位。
SDRAM控制器主要由时钟锁相环模块、初始化模块、刷新计数模块、数据通路模块、输入/输出FIFO模块、FIFO接口模块和主控制器模块组成,如图1所示。
在该SDRAM控制器中,片上时钟锁相环模块的作用是将输入时钟倍频为所需要的时钟,并根据电路板布局进行移相,以保证在时钟上升沿准确采样命令及数据。初始化模块负责产生规定了时间、顺序和个数的控制命令对SDRAM进行配置,并在进程结束后发出ini_end信号,以启动主控制器。刷新控制模块的作用是每隔最长7.812 5μs发出刷新请求信号ref_req,并接收主控制器发出的ref_ack信号重置刷新计数器。数据通路模块用于控制数据的有效输入/输出。
由于系统对控制器中读写操作的数据连续性要求很高,且读写速度比较低,而控制器对SDRAM中读写操作的数据连续性并无要求,且读写速度很高,因此需要使用异步FIFO作为输入/输出缓存。输入/输出FIFO的数据宽度为16 b,深度可视系统需要而定,但应大于一次读写的数据长度LENGTH。另外,为配合SDRAM的全页突发模式,并充分发挥SDRAM高速读写的特点,FIFO采用了乒乓操作的流水线结构。现以输入FIFO为例,当某个输入FIFO写满LENGTH数据时,主控制器从该输入FIFO读出数据写入SDRAM,同时系统向另一个输入FIFO写入数据。
FIFO接口模块的主要信号如图2所示。其作用是将FIFO的状态信号转换为主控制器的读写请求信号,并控制切换输入/输出的两个FIFO。以向SDRAM写入数据为例,若某个输入FIFO的写人数据个数标志信号in_wr_used与LENGTH相等,则向主控制器发出写SDRAM请求,并将该输入FIFO中的LENGTH数据一次写入SDRAM,同时控制系统向另一个输入FIFO写入数据。
SDRAM支持多种工作模式,将其全部包含在主控制器状态机中会大大增加设计难度,并降低运行速度。考虑到一些模式在实时图像处理系统中并不需要,所以对SDRAM主控制器韵状态进行了简化,如图3所示。
对该主控制器有以下两点需要说明:
(1)器件仅在上电后进行一次初始化配置,进入正常工作状态后就不再改变工作模式。初始化时序仿真结果,如图4所示。
(2)当SDRAM工作在全页突发模式时,读写操作所访问的地址将在页内循环,直至收到Burst-Termi-nate命令或Pre-charge命令。由于在Burst-Termi-nate命令后还需发出Pre-charge命令,才能保证芯片正常工作,因此设计采用了Pre-charge命令终止页模式。为保证LENGTH数据中正确读出或写入SDRAM,发出Pre-charge命令时必须满足一定的时序要求。对于读操作,Pre-charge应在最后一个有效输出数据之前CL-l时钟发出;对于写操作,Pre-charge应在最后一个有效输入数据之后tDPL时间发出。图5和图6给出SDRAM控制器的读写操作时序仿真结果,其中,OUT_VALID及IN_VALID信号分别表明输出及输入数据有效。
3 结 语
针对实时图像处理系统的特点,定制SDRAM控制器。在Altera公司的主流芯片Cyclone II(EP2C70F896C6)上成功地使用了Verilog HDL编程语言,其占用355个逻辑单元(不到FPGA总逻辑资源的1%);4个M4K块和1个PLL锁相环。在320×240的实时红外热成像系统中,该SDRAM控制器的工作状态良好,并可通过改变LENGTH参数而方便地用于任意分辨率的实时图像处理系统中,可移植性强。