>
首页 » 业界动态 » 高速图像存储系统中SDRAM控制器的实现

高速图像存储系统中SDRAM控制器的实现

作者:王 骞,丁铁夫   时间:2007-01-17 16:20  来源:

摘 要: SDRAM 作为大容量存储器在高速图像处理中具有很大的应用价值。但由于SDRAM 的结构和SRAM 不同,其控制比较复杂。文章详细介绍了SDRAM 存储器的结构、接口信号和操作方法,以及SDRAM 控制器的设计方法。结合实际系统,设计给出了使用FPGA 实现SDRAM 控制器的硬件接口, Altera 公司的主流FPGA 芯片EP1C6Q240C8,通过增加流水级数和将输出触发器布置在IO 单元中,该控制器可达到185 MHz 的频率。

关键词: FPGA ; SDRAM; SDRAM 控制器

 引  言

在高速图像采集和存储系统中需要海量数据的暂时存储,即大的中间缓存,使用SDRAM 作为数据缓存是一种非常有效的方法。SDRAM 作数据缓存不仅具有大容量和高速度的特点,而且在价格和功耗方面也占有很大的优势。由于SDRAM 的基本存储单元是基于三极管和电容的,这与普通的基于触发器的SRAM 的存储结构有较大差异,因此其控制机制比较复杂。虽然目前的微处理器或许多DSP 都具有和SDRAM 的直接接口,但是这种接口的效率并不高,并不适合作为高速图像存储系统的应用。鉴于以上情况,本文介绍了在高速图像采集和存储系统中采用了SDRAM 作为主要数据缓冲存储器,并设计了基于FPGA SDRAM 控制器的方法,综合及仿真结果表明, Altera 公司的主流芯片Cyclone( EP1C6Q240C8) ,SDRAM 控制器的最高频率可达到185 MHz

 

SDRAM 简介

SDRAM的生产厂商很多,但生产的SDRAM内部结构大同小异。它的同步接口、完全流水线的内部结构以及对猝发传输的支持使其拥有很高的数据速率, 目前SDRAM 的最高频率可达到200 MHz ,其单片容量也可以达到128 Mbit 以上。SDRAM 内部以BAN K 为组织,由行、列地址共同寻址,这在很大程度上减少了地址位,提高了器件的实用性,但也使寻址变得更加复杂。由于为了提高SDRAM 的存储容量,采用硅片电容来存储信息,但随着时间的推移,必须给电容重新充电才能保持电容里的数据信息,这就是所谓的“刷新”,它的存在也给SDRAM 带来了应用上的难度。SDRAM 内部的操作是由命令来控制的,这些操作包括:模式寄存器设置、预充电、激活、读/ 写、自动刷新、自我刷新、猝发停止、空操作以及命令禁止操作。SDRAM 的控制命令是片选信号( nCS) 、行地址选通( nRAS) 、列地址选通(nCAS) 、写使能( nWE) 4 个信号的组合,具体情况见表1

 

SDRAM 控制器设计

在实际系统中使用SAMSUN G 公司生产的SDRAM ,型号为K4S643232H-TC/ L60 ,存储容量为64 Mbit ,数据宽度为32 ,最小时钟周期为6 ns。该SDRAM 内部由4 BAN K 组成,每个BAN K2 048 行和256 列。FPGA 则采用了Altera 公司的主流芯片Cyclone (EP1C6Q240C8) ,

FPGA 内部有等效于10 万门以上的逻辑资源,5 980 个逻辑单元,20 M4 K (256 ×18 bit ) ,可用来生成片上存储器, RAMROM、双口RAM 以及FIFO ; 内部集成了两个模拟锁相环,可用于对输入的时钟进行倍频和移相,最大可用IO 185 个。

SDRAM 的操作过程大致如下: 上电之后,SDRAM 进入初始化阶段,在锁相环锁定后需延迟至少200μs ,以得到稳定的电压和时钟,在发起一个对所有BAN K预充电的命令之后,进行8 次刷新操作,然后装入模式寄存器。至此初始化操作完毕,可以进行猝发读、写操作。读、写数据时,先由激活命令、BAN K 和行地址选中需要访问的数据所在的具体BAN K 块和行,然后通过读/ 写命令选中数据所在行的列地址,就能达到读/ 写具体存储单元的目的。在数据写入存储单元后,要想保持住数据不丢失,必须在64 ms 内刷新4 096,也就是说,每隔15. 625 μs 要刷新一次,也可集中进行刷新。虽然SDRAM 支持数据猝发传输方式,但最多一次只能传输完一行的数据,称为全页猝发传输(在我们的系统中实际就是256 个字) ,这是因为当存储数据所在的行不同时,需要用预充电命令释放当前行并由ACT 命令重新激活所需行,因此无法通过一次读/ 写命令完成所有存储单元的读/ 写。

在本系统中, SDRAM 的接口设计是极其关键的,可根据SDRAM 内部操作状态之间的联系,通过状态机来实现接口设计。首先,根据系统实际需要确定SDRAM 的操作方法:

1) SDRAM 的写地址采用递增模式,连续变化;读地址采用分段模式, 将一行的数据分段读出。

2) 因为系统读和写的地址生成方式不同,故不考虑整页读写,也不考虑随机存取模式,只采用猝发长度为8 的猝发方式流水读/ 写。

3) 其他主要的时间参数如表2 所示。

  SDRAM 控制器主要由输入FIFO、输出FIFOFIFO 接口、锁相环模块、初始化模块、刷新模块、主状态机、数据路径模块几个主要部分组成,如图1 所示。

  因为系统向SDRAM 控制器的数据写入和读出要求数据的连续性且速度比较低,66 MHz左右,SDRAM 控制器向SDRAM 的数据写入和读出并无数据连续性方面的要求且速度较高,166 MHz 左右,因此二者属于不同的时钟域,需要用FIFO 作为输入和输出的缓存。输入FIFO 和输出FIFO 的数据宽度为32 ,深度为64 FIFO 接口的作用则是将FIFO 的状态转变成主状态机的读、写信号。若操作为向SDRAM 写入数据,当输入FIFO 的写满信号为‘1’时,输入FIFO 通过FIFO 接口向主状态机发出写请求,并由主状态机控制向SDRAM 64 个字( 64 ×32 bit ) , 然后进入空操作状态。若操作为从SDRAM 读出数据,当输出FIFO 的读空信号为‘1’时,输出FIFO 通过FIFO 接口向主状态机发出读请求,由主状态机控制向SDRAM 64 个字,之后进入空操作状态。

SDRAM 控制器中,片上锁相环的作用是将输入时钟倍频为所需要的时钟,并根据电路板布局进行移相,使得在时钟的上升沿准确地对命令进行采样。初始化模块则负责在锁相环锁定之后产生规定的延迟时间, 然后发出一个所有BAN K预充电命令、8 个刷新命令和一个模式寄存器装载命令,使SDRAM 有确定的状态进行读写操作。刷新模块的作用是每隔最多15. 625 μs发出刷新请求信号,数据路径则负责在适当的时刻将输入的数据写到SDRAM 中或由SDRAM读出数据送到数据输出口。主状态机是SDRAM控制器的核心控制模块,其作用主要有两方面,其一是根据不同的条件进行同步状态转移,在适当的时刻发出适当的命令,其二是协调各模块之间的时序关系,对各模块发出的操作请求进行仲裁。主状态机的状态转移图如图2 所示。

上电之后状态机自动进入空闲状态,若初始化完毕且接到刷新请求,状态机进入自动刷新状态,刷新结束后返回空闲状态。若在初始化完毕后接到读、写请求且无刷新请求,状态机进入行激活状态。当行激活到列激活延迟结束且接到

读请求,状态机进入读状态,并在读状态结束后返回空闲状态。当行激活到列激活延迟结束且接到写请求,状态机进入写状态,在写状态结束后返回空闲状态。空闲状态中,先对激活行预充电以释放激活行,然后进入空操作状态。图3 为初始化阶段的时序仿真结果。

结  语

介绍了SDRAM 的具体信号关系,说明了各种操作命令和状态转移之间的联系,给出了在高速图像存储系统中SDRAM 控制器的具体硬件接口设计。目前该系统实验已经完成,占用Cyclone 芯片EP1C6Q240C8 443 个逻辑单元,FPGA 总逻辑资源的7 % ,占用2 M4 K块和2个片上模拟锁相环,最高频率可达到185 MHz。应该指出,因为需要尽可能高的速度而片上逻辑资源足够,所以在关键路径上增加了流水级数以提高性能,这使得逻辑资源的占用有所增多。

高速、海量存储器是存储器的发展方向,从现在通用的SDRAM、专用的SGRAM (同步图像RAM ,其基本原理与SDRAM 相同) ,到将来的DDR SDRAM ( 双数据速率存储器) QDRSDRAM(四数据速率存储器) ,容量越来越大,速度也越来越快,FPGA 作为DRAM 控制器,具有最大的灵活性,也能在最大限度上发挥DRAM高速度的优势, 对其进行研究具有重要的意义。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点