高分辨率视频图像处理中 SDRAM 控制器的设计

出处:电子爱好者博客 发布于:2013-07-26 16:01:03

  摘要:本文介绍了一种基于FPGA的用于高分辨率视频图像处理的SDRAM控制器的设计方法。通过设置SDRAM的工作状态,使其工作在猝发模式。在视频时序信号控制下,用多行连续的SDRAM存储空间,存取视频数据。并在数据接口部分增加FIFO,缓存一行视频,在像素时钟控制下,实现视频数据实时的存储和读取。通过改变相关参数,能对所有VESA分辨率视频流进行操作。具有通用性强、系统复杂度低、可靠性高、可扩展等特点。在某型号的机载大屏显示器系统中,用该SDRAM控制器实现了图像的翻转等功能,也验证了该控制器的实用性。

  0 引言

  随着人们对视频图像的清晰度和细节显示要求的不断提高,高分辨率、高bit位的视频标准相继被推出。

  造成了数据处理速度和数据处理量极大的增加,也给数据缓存的容量和控制提出较高的要求。在常用的存储器中,SDRAM具有大容量和高速度的特点,并且价格也比较便宜,在视频图像处理中被广泛的用于图像缓存。在基于FPGA的高分辨率视频图像处理系统中,不可避免地会涉及到用FPGA 实现SDRAM 控制器的方法。但由于SDRAM 的操作方式较复杂,常见的控制器支持的视频分辨率普遍都不高。在高分辨率的视频图像已经普及的今天,支持高分辨率的SDRAM 控制器的设计也已经被越来越多的视频图像处理人士关注。本文介绍的这种控制器,采用的是Micron 公司的MT48LC4M32B2TG(1M×32×4 banks)SDR SDRAM,在Altera 的Stratix Ⅱ系列FPGA EP2S60F1020I4 上进行的开发。

  在此平台上采用VHDL语言开发了SDRAM的控制器。

  该控制器实现了分辨率为1 600×1 200@60 Hz 的视频流的缓存和图像翻转的功能。

  1 SDRAM基本操作

  SDRAM 主要包括初始化、读/写操作、刷新、激活、预充电等操作。以MICRON公司的MT48LC4M32B2TG型号SDRAM为例分别介绍。

  1.1 初始化SDRAM 在上电后必须执行初始化操作,主要流程为:首先在电源电压和时钟稳定后,经过100 μs 的延时,执行空操作;然后进行预充电操作,使所有BANK 都进入空闲状态;再然后执行两个自动刷新命令;执行完自动刷新后进入模式设置状态,通过地址总线A[11:0]发送数据来设置模式寄存器。模式寄存器设置定义如图1所示。

  

  1.2 读/写操作

  首先激活具体的BANK和行;然后发出读或写命令,和所要访问的起始列。在读命令发出后,要等待CAS延迟时间,有效数据才会出现在数据总线上。在写命令发出后,有效数据立即出现在数据总线上。读写命令可分为单个模式和猝发模式,猝发模式根据猝发长度分为1,2,4,8和全页模式。猝发操作可用猝发终止命令(BURST TERMINATE)结束。

  1.3 刷新

  由于SDRAM的内部电路特点,必须执行刷新命令,以防止数据丢失。要求64 ms内至少刷新4 096次。

  1.4 激活

  在读/写命令之前都要发出激活命令,激活特定BANK中的某一行。激活后此行一直处于有效状态,直到接收到预充电命令。

  1.5 预充电

  预充电命令用于关闭特定BANK 中的某一行,或者所有BANK.

  各种操作命令对应的SDRAM 管脚电平状态如表1所示。

  

  2 SDRAM控制器的设计

  在视频图像处理中SDRAM 主要用作数据缓存,也就是FPGA 对SDRAM 操作频繁的为读命令、写命令,在这两个命令中间插着激活、预充电、猝发终止、刷新等命令。对于高分辨率的视频流,分辨率都在1 280×1 024以上,也就是每行的点像素都要大于1 280 个,数据量非常的庞大。

  为了降低SDRAM的操作时钟的频率和提高视频处理的实时性,采用猝发的模式对SDRAM 进行操作。对于SDRAM MT48LC4M32B2TG地址为A[7:0],猝发操作的长度为256.也就是说为了存储和读出一行的视频数据要对SDRAM的多行进行操作。如1 280×1 024分辨率,需要5 行SDRAM 空间( 256×5=1 280)。

  对于不能被256 整除的列数如1 600,就要采用控制猝发长度的方式,为了控制方便采用8 行SDRAM 空间存储一行视频数据(200×8=1 600)。标准的VESA分辨率都可以用此方式存储。在SDRAM 控制器中设置了SDRAM 的猝发长度的选择功能,只要修改需要的猝发长度即可,不要重新设计代码。

  为了保证SDRAM的刷新要求,在每一行的SDRAM操作完成后就进行刷新操作,此操作经由输入的视频行同步信号(HSY)的触发,如果外部视频信号突然无输入,为了保证存储的数据不丢失,进入自刷新模式。一当控制器检测到HSY无变化就会启用自刷新模式,周期对SDRAM刷新。

  SDRAM控制器主状态机如图2 所示。

  

  在主状态机完成初始化状态,进入等待状态后,等待读/写命令和视频数据输入信号。如果无视频输入,状态机始终在等待状态,并周期性的对SDRAM 进行刷新,直到有视频和读/写命令输入。这部分的状态图如图3所示。

  

  由于猝发的长度为256,在每两行操作之间都要进行激活、读/写命令、猝发终止、刷新等操作。由于读/写数据都使用的是像素时钟的频率,这样总个FPGA系统只有一个时钟域,能保证整个系统完全按照同步系统来设计,能提高整个系统的可靠性。这样会带来一个问题,要想仅仅在视频的有效时间,即DEN高电平部分完成一行视频数据的读/写工作,这是不能满足要求的。为了解决这个问题,需要借用行同步、前廊和后廊的时间,但是DEN无效后不传输视频数据的,为了解决这个矛盾在SDRAM 控制器和数据流输入/输出接口之间要分别设计两个FIFO,深度大于一行的视频数据,采用乒乓操作保证视频流的流畅。

  3 SDRAM控制器应用实例

  在某型号的机载大屏显示器系统中,视频图像处理系统中使用该SDRAM 控制器进行了调试,实现FPGA对SDRAM 的控制,完成相应的视频处理算法和实现了图像的翻转功能。此部分系统简要框图如图4所示。

  该系统输入的为多路DVI信号,输入视频分辨率均为1 280×1 024,DVI 信号经过DVI 解码后输入FPGA.

  为了完成FPGA 内部的视频处理算法和图像翻转的功能,在FPGA 外部挂了两组SDRAM,实现了乒乓操作,保证了系统的处理速度。处理后的视频经过LVDS 信号转化,输出到液晶屏上显示。

  

  对于左右翻转在FPGA 内部采用双口RAM 进行操作能够轻易实现。而图像的上下翻转,由于涉及到一帧数据的处理,需要经过外部缓存SDRAM 实现。在采用上述SDRAM 控制器的基础上,控制SDRAM 的读方式就能实现,在将视频数据写入SDRAM的时候,写地址从行按顺序写入。读的过程相反,要从行开始读。

  由于SDRAM 的一行容量不能装下整行的视频信息,所以读的行地址要求每次从读过的行的地址减去存一行视频需要的SDRAM的物理行数,在一行视频数据没有读完前要从当前行不断的自增。如1 280×1 024 的视频数据,共需要5 120(5×1 024)SDRAM 行存一帧数据。要上下翻转输出图像,首先要输出视频数据的第1 024行,也就是要从SDRAM的5 115行开始按顺序读出,读完第5 120行后,SDRAM地址转到5 110行读视频流的第1 023行,如此类推,直到读完整帧的视频数据。该视频处理系统与显示效果如图5所示。

  

  4 结论

  该设计针对高分辨率视频图像处理的SDR SDRAM控制器的设计,采用统一像素时钟进行系统操作,降低系统的复杂度,提高系统的可靠性;通过写修改相关参数,能够适应所有VESA分辨率的视频处理,通用性强;具有自刷新功能,在无外部信号输入情况下能够自动刷新,保证存储数据不会丢失;能够通过增加外部模块,控制读写地址,实现图像翻转功能。此控制器在Al-tera 的StratixⅡ系列FPGA EP2S60F1020I4 平台上,成功实现各种视频处理功能,验证了此控制器的实用性。

关键词:高分辨率视频图像处理中 SDRAM 控制器的设计视频图像SDRAM控制器

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

全志代理H6板卡安卓7.0系统视频图像采集显示存储网口WIFI低功耗
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!