APP下载

高速图像采集系统中的SDRAM缓存模块设计*

2016-04-20程光伟陈玲玲

计算机与数字工程 2016年3期

程光伟 陈玲玲

(西安工业大学电子信息工程学院 西安 710021)



高速图像采集系统中的SDRAM缓存模块设计*

程光伟陈玲玲

(西安工业大学电子信息工程学院西安710021)

摘要在数字视频图像采集及其实时显示系统中,由于前端传感器采集速度过快,一般与后端显示系统时钟不匹配,大量的数据需要先进行缓存再输入给后端的显示模块。针对以上问题,在研究SDRAM原理和时序的基础上,采用verilog语言,成功实现基于FPGA的SDRAM控制器设计,同时利用FIFO缓存数据很好地解决了前端数据采集和后端视频显示异步时钟域的数据交换问题,实现了SDRAM缓存数据的功能。论文详细介绍各模块的原理和实现方法,实验仿真及结果表明,设计实现的SDRAM双端口控制器,具有电路简单、工作可靠等优点,封装后可以应用在别的视频图像采集系统的项目中,可缩短开发周期。

关键词FPGA技术; SDRAM控制器; FIFO缓存; 异步时钟; 跨时钟域传输

SDRAM Cache Design of High-speed Image Acquisition System

CHENG GuangweiCHEN Lingling

(Electronic Information Engineering Institute, Xi’an Technological University, Xi’an710021)

AbstractIn the digital video image acquisition and real-time display system, since the front sensor collects too fast, usually with back-end display system clock does not match the amount of data you need to re-enter the cache to the backend of the display module. To solve these problems, on the basic research of principles and timing of SDRAM, using verilog language, the successful implementation of FPGA-based controller design of SDRAM, while taking advantage of a good solution to data FIFO buffer data acquisition front-end and back-end video display asynchronous clock domains data exchange problem, the function of SDRAM cache data is realized. Details are presented below principles and implementation methods, simulation and experimental results show that each module, SDRAM dual-port controller design implemented with a simple circuit, reliable work, etc., can be applied in the project after the package other video image acquisition system, the development cycle can be shorten.

Key WordsFPGA technology, control of SDRAM, FIFO buffer, asynchronous clock, transfer cross clock domain

Class NumberTP332

1引言

在数字视频图像采集及其显示系统中,前端的传感器一般为高速传感器,采集数据速度很快,为了同步实现传感器采集的视频图像与VGA的显示,需要将传感器捕获后的数据交给VGA进行实时显示[1]。传感器采集的数据经捕获、解码后输出给VGA,但由于VGA的驱动时钟往往与像素时钟不同步,无法实现实时显示。这时,就要处理不同时钟域的数据交互问题,由于要处理的数据量非常大,对实时性要求比较高,且采集图像的速度和后期处理数据的速度不匹配,所以采用SDRAM作为缓存器,实现跨时钟域的数据交互问题。

FPGA具有运行速度快、可重复编程、集成度高等优点,是进行原始设计最理想的载体。为此,以实时图像采集显示系统中数据缓存为应用背景,提出一种基于FPGA的SDRAM控制器设计,同时利用FIFO很好地解决前端数据采集和后端视频显示异步时钟域数据的交换问题,实现了SDRAM缓存数据的功能。

2SDRAM缓存模块设计

2.1总体框图设计

在高速数据通信系统中,数据输入模块与数据输出模块之间主要有数据缓存(写FIFO,读FIFO)模块和SDRAM控制器组成。尽管SDRAM在同一时间只能进行读操作或写操作,但分别有两个异步FIFO作为缓存,所以采用SDRAM存储器实现了跨时钟域数据的交互。SDRAM缓存模块总体框图如图1所示。

图1 缓存模块总体框图

各模块之间通过锁相环PLL解决时钟同步问题[2]。以下分别介绍SDRAM控制器的实现和双端口读写操作的实现。

2.2SDRAM控制器的实现

2.2.1SDRAM简介

SDRAM采用Hynix公司的HY57V283220T-6型号,它支持166MHz、133MHz、125MHz三种时钟频率。采用了86引脚的TSOP封装,工作电压为3.3V。采用同步接口的方式,所有的信号都是在时钟的上升沿触发。具有32位的数据总线和12位的地址总线,其中地址总线是时分复用的,存储架构为(1M×4)×32bit。

与各种SDRAM一样,这种SDRAM具有以下几个特点: 1) 采取行列地址复用原则,SDRAM的地址线在不同的命令下提供不同的地址,行列地址复用13根地址线[3]。 2) 需要定时刷新。 3) 在进行读写时,需先激活行。换页读写时要预充电关闭的行,然后再激活新的行进行读写。 4) SDRAM正常工作之前配置模式寄存器。SDRAM具有较多的控制命令,具体命令如表1所示。

表1 配置命令表

SDRAM在每次开机进入正常工作状态之前,需要进行芯片的初始化,依次为:200μs输入稳定期,所有L-BANK的预充电,八个刷新周期和模式寄存器设置(MRS),其关键在于模式寄存器的设置,用于设定SDRAM的操作模式,CAS潜伏期,突发方式和突发长度。当SDRAM进入MRS时,地址线上即为MRS操作码,具体参数设置如表2所示。在视频系统中数据的读出和写入往往是连续的,因此若要使SDRAM的带宽最大化,应当使SDRAM工作在全页模式下。

表2模式寄存器操作参数表

2.2.2SDRAM控制器方案

SDRAM控制器针对SDRAM的指令操作特点,为SDRAM提供同步命令接口和时序逻辑控制[4],图2为SDRAM控制器的接口原理图。

图2 SDRAM控制器接口原理图

接口信号介绍:

1) 与主机接口信号:CLK:系统时钟信号;RESET:系统复位信号;CMD[2∶0]:译码指令;CMDACK:指令应答信号,通知主机命令已被SDRAM执行;ADDR:地址线,根据具体情况确定位数,这里采用22位,A21、A20代表Bank地址;A19~A8代表行地址;A7~A0代表列地址;DATAIN/DATAOU:输入、输出数据总线;DM:数据掩码;

2) 与SDRAM接口信号:SADDR:12位地址线,在读、写操作时,地址线分时复用为行地址和列地址;BA:Bank地址;CS:片选信号;CKE:时钟使能信号;RAS、CAS、WE:命令控制信号;DQM:SDRAM数据掩码;DQ:双向数据线;

SDRAM控制器时序控制模块由命令接口、控制接口和数据位宽控制共三部分组成[5]。

1) 命令接口模块对输入进去的cmd等命令进行解析,输出相应的指令给控制模块,此外在命令接口模块还包含对SDRAM模式寄存器的设置,可以设置SDRAM的突发读写长度和预充电周期等[6]。

2) 控制接口模块则直接通过相关命令实现SDRAM的操作时序。该模块在上电初期,首先进行SDRAM的初始化,初始化完成后才开始正常的读/写操作。这里取SDRAM(HY57V283220T-6)每隔15μs刷新一次,其依据为其存储体中电容的数据有效保存期上限为64ms,刷新命令一次对一行有效,而其每页有4096行,因此刷新速度应快于64ms/4096=15.6μs,这里取15μs。工作状态包括:空闲状态(W_IDLE)、自刷新状态(W_AR)、行选通状(W_ACTIVE)、行选通周期状态(W_TRCD)、读数据状态(W_READ)、读潜伏期状态(W_CL)、N个数据读出期状态(W_RD)、读后预充电状态(W_RWAIT)、写数据状态(W_RITE)、N个数据写入期状态(W_WD)、写回状态(W_TDAL),状态机如图3[7]。

图3 SDRAM控制器状态机

3) 数据位宽控制模块主要是在write和read命令期间处理数据的路径操作。模块数据线用来传输从SDRAM读出数据和向SDRAM写入的数据。数据位宽控制模块还可以接收主机输入的数据掩码,进而控制SDRAM I/O缓冲的低字节和高字节。

2.3双端口读写操作的实现

要想实现SDRAM的缓存和解决前端数据采集和后端视频显示异步时钟域数据的交换问题,还要在SDRAM控制器前后加入一个写入端口和读取端口。这里的双端口包括写的WR_FIFO和一个读取的RD_FIFO,两个FIFO可以通过QUARTUS 2中IP核例化得到。写端口WR_FIFO的输入数据是图像传感器的数据,而其输出数据是写入到SDRAM中的,其输入时钟频率由图像传感器的数据传输率决定,输出时钟频率采用125MHz[8]。读端口RD_FIFO的输入数据来自SDRAM,输入时钟频率为125MHz,而且其输出数据送往VGA显示器,输出频率有显示模式决定。接收的图像数据存入WR_FIFO中[9],端口仲裁器会将其写入到SDRAM中,并在适当的时候将图像数据送往RD_FIFO,这样VGA显示所需的数据就可以从RD_FIFO中读取了。双端口的FIFO读/写控制主要包括:

1) 当有外部数据写入请求时,写入数据到WR_FIFO缓存;

2) 当有外部数据读取请求时,输出RD_FIFO中缓存的数据[10];

3) 当WR_FIFO中的数据大于256个时,请求SDRAM写入,等到响应时开始突发写入一页数据;

4) 当RD_FIFO中的数据小于256个时,请求SDRAM读取,等到响应时开始开始突发读取一页数据。

图4给出WR_FIFO的操作时序流程图,RD_FIFO的时序流程与WR_FIFO的流程相似。

图4 WR_FIFO操作时序

尽管SDRAM在同一时间只能进行读操作或写操作,但分别有两个异步FIFO作为缓存,所以采用SDRAM存储器实现了跨时钟域数据的交互。

3设计实现及时序特性

笔者在Quartus11.0环境下进行设计输入,用Modelsim工具进行仿真验证。图5是Modelsim工具对SDRAM控制器的功能仿真结果,图中显示了SDRAM数据读写时序,SDRAM芯片各控制信号的状态。其中clk是时钟信号,rst_n是复位信号,低电平有效,bank_switch_falg是bank之间切换的标记信号,frame_write_done是读信号,frame_read_done是写信号。图中显示了SDRAM数据读写时序,SDRAM芯片各控制信号的状态。该控制器应用于图像采集和显示系统中,完全能够满足实时数据存储和处理的要求。

图5 SDRAM控制器的功能仿真结果

4结语

实现了基于FPGA的高速数据采集系统中的SDRAM缓存模块,采用verilog语言,在ALTERA公司的FPGA(EP2C35F672C6)芯片上成功实现SDRAM控制器,同时利用FIFO很好地解决前端数据采集和后端视频显示异步时钟域数据的交换问题,实现了SDRAM缓存数据的功能。对于SDRAM的数据读/写操作而言,只需要进行简单的FIFO操作,就能实现海量数据的读写,解决了高速采集实时显示系统中数据缓存的问题。利用FPGA实现SDRAM双端口控制器,不仅可以根据实际需求灵活进行配置,降低专用集成电路的设计风险,而且具有电路简单、工作可靠等优点。该技术同样可以作为IP核应用于不同的数据缓存与传输系统中,有助于大大缩短产品的开发周期。

参 考 文 献

[1] 项力领,刘智,杨阳,等.单片SDRAM的数据读写乒乓操作设计[J].长春理工大学学报(自然科学版),2013,36(5):140-143.

XIANG Liling, LIU Zhi, YANG Yang, et al. Monolithic SDRAM data read and write operations pong design[J]. Changchun University of Technology(Natural Science),2013,36(5):140-143.

[2] 李文昌,李平,杨志明.FPGA芯片内数字时钟管理器的设计与实现[J].半导体技术,2011,(11):848-852

LI Wenchang, LI Ping, YANG Zhiming. Design and Implementation of FPGA chip digital clock management[J]. Semiconductor Technology,2011,(11):848-852.

[3] 段雷.基于DSP+FPGA的图像处理电路板硬件设计[D].成都:西南交通大学,2014.

DUAN Lei. DSP and FPGA-based image processing circuit board hardware design[D]. Chengdu: Southwest Jiaotong University,2014.

[4] 曹新莉,蒋飞,朱晔.基于CPLD与SDRAM的视频信号采集系统设计[J].电力自动化设备,2007,27(9):100-103.

CAO Xinli, JIANG Fei, ZHU Ye. Video Signal Acquisition System Based on CPLD and SDRAM[J]. Electric Power Automation Equipment,2007,27(9):100-103.

[5] 贾伟琦.基于可编程逻辑器件的SDRAM控制器的设计[J].硅谷,2013,(7):24-25.

JIA Weiqi. Design of SDRAM Controller Based on programmable logic device[J]. Silicon Valley,2013,(7):24-25.

[6] 刘延飞,杨铁阡,李琪,等.多总线地面测试设备中双SDRAM控制器的设计[J].电讯技术,2011,51(4):31-34.

LIU Yanfei, YANG Tieqian, LI Qi, et al. Design of dual SDRAM Controller in multi-bus ground test equipment[J]. Telecommunication Engineering,2011,51(4):31-34.

[7] 侯宏录,张文芳.基于FPGA的SDRAM控制器设计方案[J].兵工自动化,2012,31(2):57-60.

HOU Honglu, ZHANG Wenfang. SDRAM controller design based on FPGA[J]. Ordnance Industry Automation,2012,31(2):57-60.

[8] 康磊,雒明世.基于FPGA的双端口SDRAM控制器的实现[J].电气自动化,2013,35(4):97-99.

KANG Lei, LUO Mingshi. Achieve SDRAM controller based on FPGA dual-port[J]. Electric Automation,2013,35(4):97-99.

[9] 戈志伟.面向CIS图像处理SoC的算法、架构及复杂多媒体SoC中通信网络研究[D].天津:天津大学,2011.

GE Zhiwei. CIS image-oriented research SoC network algorithms, architecture, and complex multimedia SoC communication process[D]. Tianjin: Tianjin University,2011.

[10] 陈少明.IPQAM中的包缓存器设计与实现[D].武汉:华中科技大学,2011.

CHEN Shaoming. Packet buffer Design and Implementation in IPQAM[D]. Wuhan: Huazhong University of Science and Technology,2011.

中图分类号TP332

DOI:10.3969/j.issn.1672-9722.2016.03.034

作者简介:程光伟,男,副教授,研究方向:通信与电子信息。陈玲玲,女,硕士研究生,研究方向:FPGA控制信号采集。

收稿日期:2015年9月10日,修回日期:2015年10月24日