打印

基于图像处理系统中SDRAM控制器的FPGA实现

 关闭 [复制链接]
1760|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-10-11 21:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于图像处理系统中SDRAM控制器的FPGA实现摘要:简要介绍了SDRAM工作原理并认真研究了Altera提供的SDRAM控制器,根据实际系统使用需要加以修改简化,设计了对修改后控制器进行操作的状态机。采用全页突发读写模式,每次读/写后自动刷新,省掉了传统设计中的刷新计数控制逻辑。整个设计采用VHDL实现,已在实际系统中成功使用。
1、引言
在实时视频图像处理系统中,由于要对视频图像进行实时处理,而视频数据流的数据量大,实时性要求高,所以需要高速大容量的存储器作为图像数据的缓存。SDRAM(Synchronous Dynamic RAM,同步动态随机存取存储器)相比于SRAM(Static RAM,静态随机存取存储器)等存储器具有容量大、速度快、体积小、价格低等优点,因此成为图像处理系统中常用的数据存储器。但SDRAM的控制逻辑比较复杂,对时序要求也十分严格,所以需要设计专门的SDRAM控制器以完成和SDRAM芯片的接口。本文在对Altera提供的SDRAM控制器IP核适当修改的基础上实现了对图1的图像处理系统中SDRAM的有效控制。


在以上系统中,Camera Link接口的相机送出的高速 LVDS视频信号经 Channel Link接收芯片 DS90CR288接收转化为 TTL电平后送给FPGA,再由通过 FPGA实现的 SDRAM控制器将有效像素数据写入SDRAM。另外,通过 SDRAM将有效像素数据读入 FPGA并实现对图像的处理算法后送视频编码芯片 ADV7123进行 D/A转换,显示。
2、SDRAM的工作特性
本系统中用到的是Hynix公司的HY57V283220-7型号的SDRAM芯片,其容量为128Mbit( 4 Banks x 1M x 32Bit),下面将以它为例简要介绍SDRAM的主要工作特性。
2.1主要管脚信号
SDRAM芯片的主要管脚信号有控制信号,地址信号,数据信号,且以上信号的输入或输出均与工作时钟同步。
控制信号主要有:片选信号(/CS),时钟使能信号(CKE),输入输出使能信号(DQM0~DQM3),读写控制命令字(/CAS、/RAS、/WE)。通过/CAS、/RAS、/WE的各种逻辑组合,可产生各种控制命令(见表1)。
地址信号有:页地址选择信号(BA0、BA1),行、列地址选择信号(A0~A12)。通过分时复用决定地址是行地址还是列地址。在读写操作中,在地址线上依次给出页地址、行地址、列地址,最终确定存储单元地址。
数据信号(DQ0~DQ31),双向数据信号,且有效与否受输入输出使能信号(DQM0~DQM3)控制。
2.2 主要操作命令
要正确地对SDRAM进行操作,需要输入多种命令:包括模式寄存器设置、预充电、行激活、列读写、自动刷新、突发终止、空操作等命令。具体见下表。


注:H表示高电平1,L表示低电平0,X表示电平为任意。
2.3 模式寄存器的设置
不同于其他的存储器,在SDRAM芯片内部还有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数,每次上电后都要先对这个控制逻辑核心进行初始化。初始化过程中关键的阶段就是模式寄存器的设置。通过模式寄存器设置命令对模式寄存器进行编程,这组信息将会一直保存在模式寄存器中,直到他再次被编程或器件掉电为止;他规定了SDRAM的操作模式包括:突发长度(Burst Length)、突发类型(Burst Type)、CAS潜伏期(CAS Latency)、运行模式(Operate Mode)及写突发模式(Write Burst)。具体格式如表2所示。



具体设置值及其意义请参见有关资料和所使用SDRAM的芯片资料,这里不再详述。

使用特权

回复

相关帖子

沙发
星星之火红|  楼主 | 2012-10-11 21:55 | 只看该作者
3.SDRAM控制器的实现
3.1 Altera发布的SDRAM控制器简介
Altera公司提供了对SDRAM进行控制的控制器,简化了对SDRAM的控制。此设计的框图如图2所示。


从图2中可以看出,SDRAM控制器由4个模块组成:SDRAM控制器模块,控制接口模块,命令模块和数据通道模块。SDRAM控制器模块是顶层模块,例化3个低等级模块,将其连成一个整体。控制接口模块从外部接收命令和相关的存储地址,同时对命令解码后传送给命令模块,命令模块从控制接口模块接收命令和地址,生成合适的命令给SDRAM器件,数据通路模块处理读写命令时的数据传输操作。可以看出,通过使用Altera的控制器,屏蔽了大部分复杂的时序,大大简化了对SDRAM的控制。详细的介绍请参看Altera发布的有关文档。
该控制器属通用控制器,功能全面,支持突发长度为1,2,4,8的突发读写模式且读写后控制器内部自动预充电,内部自动刷新;也支持全页突发读写模式但是读写后不自动预充电,不支持内部自动刷新,需要通过CMD[2:0]发送预充电命令和刷新命令。由于在本文所涉及的系统中,SDRAM用于图像的缓存,希望每次读写能够针对一行进行,所以采用全页突发模式,根据需要简化了控制器的逻辑,节约了资源。
3.2 本系统对SDRAM控制的具体实现
要想实现对SDRAM的高速读写仅仅有控制器是不够的。控制器的功能是简化接口,它并不直接提供对SDRAM进行读写的功能。要真正实现对SDRAM的读写,关键的技术在于如何设计合理高效的状态机。下文将对本文所设计的状态机做详细介绍。
本文的设计包括四个状态机。一个主状态机,一个初始化状态机,一个读状态机,一个写状态机。1)系统上电复位后首先进入初始化状态机:先后发出的命令有 nop1->precharge->precharge_nop->refresh1->refresh1_nop->refreh2->refresh2_nop-> load_mode->load_mode_nop->load_reg2->load_reg2_nop->load_reg1->load_reg1_nop->nop2(注:以上带有nop的命令均指nop命令,下同),初始化完成后该状态机的状态就一直停留在nop2,它是一个独立的状态机,不需要特别的控制信号。2)主状态机用来控制读写状态机的转换(如图3)。其中read和write各代表一个状态机。写状态机的工作过程如下:


首先在FPGA里开一个容量大小为一行的FIFO,当FIFO为读空的时候相机输出的每行有效像素数据进入FIFO,当该行数据全部进入FIFO且相机进入消隐后,开始执行读状态机,读空FIFO里的数据存入SDRAM里指定的位置,且读空后发送一个突发停止命令,发送一个预充电命令,最后发送一个刷新命令以保持SDRAM的数据。需要注意的是,这里的precharge1经控制器解码后给SDRAM的是突发停止命令,precharge2解码后得到的才是预充电命令。该状态机先后发出的命令有nop1->write->write_nop->precharge1->precharge1_nop->precharge2->precharge2_nop->refresh->refresh_nop->nop2。读状态机与写状态机的操作类似,这里不再赘述。

使用特权

回复
板凳
星星之火红|  楼主 | 2012-10-11 21:56 | 只看该作者
4.结论
本设计针对系统的具体使用需要对Altera提供的SDR SDRAM控制器进行简化修改,采用全页突发读写模式,每次读写完后进行自动刷新,因此不需要设计专门的刷新计数器来控制刷新命令,进一步简化了设计,速度上能够达到实际应用要求。在StratixII系列FPGA EP2S15F672C5上已经成功得以实现,经SDRAM的缓存能够正确显示从相机出来的图像,完成了上述图像处理板的关键设计,为整个项目的顺利完成创造了一定的经济效益。 本文创新点:采用全页突发读写模式,加快了读写速度;状态转移简单可行,不需要专门的刷新控制逻辑。

使用特权

回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1782

帖子

22

粉丝