李秀圣
(潍坊学院,山东 潍坊 261061)
随着科技进步,人们对实际应用中的图像处理系统在成本、体积、性能上的要求不断提高[1-3]。专业DSP(数字信号处理器)的出现,能够解决采用计算机进行图像处理带来的成本高和体积大的问题,但是一些高速数字信号处理操作具有算法复杂、数据量巨大的特点,从性能上讲,单DSP难以满足应用的要求。ASIC(专用集成电路)设计成本高、灵活性低,且会受到ASIC厂商的限制。在这种背景下,大规模现场可编程逻辑阵列(FPGA)的出现解决了上述困难,为电路的灵活性设计提供了方便[4-5]。
从系统开发成本、性能、开发难易程度等多方面综合考虑,基于FPGA和DSP的系统具有灵活性高、实用性强、可靠性高的优点。在此类系统中,FPGA和DSP之间数据的通信方式和速度,将直接影响着整个图像处理系统的效率。为提高处理效率,本文试图借助于一片低功耗FPGA、一片DSP和一片双口RAM,设计出一种功耗低、设计灵活、能够实现复杂处理算法且高效、稳定的图像处理系统。
整个系统主要由CMOS图像传感器、FPGA、双口RAM、DSP、视频D/A和若干存储器组成。根据FPGA和DSP自身特点及各自功能,将整个系统划分为图像采集模块、数据帧存模块、实时显示模块、高速缓冲模块、图像压缩模块和图像存储模块。系统总体结构如图1所示。
图1 系统硬件结构图
首先,在图像采集模块通过控制COM S图像传感器,使图像数据以25帧/秒的速率向FPGA输送;然后,通过FPGA的控制将图像数据缓存在片外SDRAM中,之后由实时显示模块控制ADV 7123实现图像的实时显示。若通过外部控制选择压缩模式,则原始图像数据将由帧存模块移至高速缓冲模块中,DSP通过EM IF接口外扩存储器的方式实现对双口RAM中图像数据的高效读取;最后,由DSP对图像数据进行JPEG压缩,并通过高速缓冲模块将数据传至FPGA的存储控制模块中实现数据存储。
2.1 图像采集模块
本系统采用的CMOS图像传感器为M T9M 011,此传感器主要有Active Pixel Senso r、Anolog Processor、控制寄存器、时序控制、模数转换等模块组成。通过以上几个模块的共同作用,在对传感器进行正确的配置之后,就可以输出10位的图像数据和一些同步信号。在本系统中采用I2C实现传感器配置,FPGA管脚通过模拟I2C时序,完成对CMOS传感器的初始化配置,其中要配置的寄存器如表1所示。
表1 M T9M 01寄存器设置
2.2 高速缓冲模块
本模块利用单片双口RAM实现FPGA和DSP之间数据的高速传输,并通过在其内部建立乒乓传输机制,达到实时数据传输的要求,其工作方式如图2所示。
图2 高速缓冲模块示意图
图3 DSP电路设计结构图
系统所用的双口RAM为低功耗双端口静态RAM(CY7C025),存储容量为8K×16bit,最高存储速度可达15ns,并能实现异步读写操作。CY7C025两侧端口中除了都含有普通静态RAM具有的地址、数据和控制引脚外,还各包含三个特殊的引脚,即(中断引脚)(旗语引脚)(忙信号引脚),整个芯片还有一个M引脚,主要用于存储器扩展时使用。
由图2可知,在CY7C025内部根据存储空间大小,将其等分为两部分,在进行数据高速缓冲的过程中,通过对两块存储空间采用乒乓机制管理,达到双向的数据缓冲。
2.3 DSP外部存储器接口电路设计
本系统选用超低功耗DSP(TM S320VC5502)实现图像处理算法,并采用外部存储器接口(EM IF)实现外部存储器扩展,具体扩展方式如图3所示。
TM S320VC5502的EM IF可以访问的存储空间大小为16MB,该系统通过配置把空间平分为四部分, EM IF的片选信号线分别对应这四个空间的选通控制。另外EM IF的组成还包括数据线D [31:0]、地址线A[21:2]、字节使能线BE[3:0]及各类存储器的读/写控制信号线等。
在系统设计中,对 空间分配0x010000-0x012FFF的地址空间用来外扩双口RAM(CY7C025),对空间分配0x400000-0x47FFFF的地址空间用来外扩FLASH(SST39V F400A),对空间分配0x800000-0xBFFFFF的空间用来外扩SDRAM(H Y57V 643220DT-7)。在图3所示的DSP电路设计中,双口RAM主要负责FPGA与DSP间的数据通信;FLASH主要用来固化系统程序,并且上电时配置从该存储器完成自举;SDRAM作为DSP的内存,主要用来存放压缩前后的图像数据并为某些常变量分配空间。
FPGA方面的软件设计主要是实现各功能模块的程序编写,如摄像头I2 C配置模块、SDRAM控制器、图像预处理器、VGA控制器、SD卡控制器、高速缓冲器等;DSP方面的设计主要包括两部分,一部分是外部存储器驱动的编写,另一部分是在DSP内部实现高效的图像压缩算法。FPGA程序设计采用Verilog硬件描述语言来开发,软件开发环境为Quartus||;DSP程序开发采用C语言,某些算法功能模块采用DSP汇编语言来完成,软件开发环境为CCS2.2[6-7]。系统软件设计流程见图4。
图4 系统软件流程图
系统上电,FPGA电路完成初始化动作后,就开始进行图像的采集及实时显示,并等待外界提供图像压缩命令;DSP完成自举后,等待FPGA提供外部中断信号的到来,一旦外界提供了压缩命令,则FPGA开启通向DSP的数据通道,开始对原始数据进行缓冲,数据以一定量(4K×16bit)被存储在双口RAM之后,FPGA会向DSP实时发送一个中断信号;DSP一旦收到来自FPGA方向的中断信号,则立即开始开启DMA通道并从双口RAM中搬运数据到SDRAM中,同时进行下一步的JPEG压缩动作,等待一副图片压缩完成之后,DSP则会向FPGA提供一个压缩完成信号。如果FPGA收到了来自DSP的压缩完毕信号后,借助于双口RAM,压缩完的数据则以类似的传输方式从DSP端被搬移到FPGA端,并以文件形式存储在SD卡当中。如果编码信号仍然有效,则会遵循同样的规则开始下一帧图像的传输与压缩;如果编码信号无效,则FPGA会通知DSP而结束编码。
为了对该高速处理系统进行性能测试,在FPGA的采集模块设置采集图像分辨率为640×480,同时在DSP内实现了JPEG图像压缩算法。通过对JPEG算法中某些模块(如DCT、Zigzag等)进行优化或采用汇编描述进行实测,在视频 YUV下选择采样率为4:2:2时,压缩一帧分辨率为640×480的图像,所用的时间在23m s左右,压缩比在10:1-20:1左右,且SNR值基本上保证在40db以上。综合DSP完成JPEG压缩算法、图像采集、传输和JPEG文件存储所用的时间,大约在31m s左右,因此系统整体能保证对采集来的图像进行实时处理。
本文提出的利用单片双口RAM做通信媒质来完成FPGA与DSP之间数据高速通讯的结构,为如何更好的实现嵌入式图像处理系统提供了一个较好的解决方案。同时,FPGA和DSP协同作业的结构,既提高了系统的处理效率,又给系统的总体设计带来了很大的灵活性。本系统不仅能够满足对静态图像的JPEG压缩处理,同样也适合其他的图像处理或视频压缩算法的实现。
[1]赵保军,史彩成,毕莉,等.基于FPGA和DSP实现的实时图像压缩[J].电子学报,2003,31(9):1317-1319.
[2]马秀娟,考丽,赵国良.基于 FPGA和DSP的高速数据采集实时处理系统的设计[J].电子器件,2007,30(3):1009-1013.
[3]李刚,付宇卓,王世明.一种基于FPGA和DSP得视频处理系统[J].计算机仿真,2005,22(10):254-256.
[4]Amara Amara,Frederic Amiel,Thomas Ea.FPGA vs.ASIC for low power app lication[J].M icroelectronics Journal,2006, 37(8):669-677.
[5]Bouridane A,Crookes D,Donachy P,et al.A high level FPGA-based abstractmachine fo r image p rocessing[J].Journal of Systems A rchitecture,1999,45(10):809-824.
[6]李立,金华标,陈智君,等.基于FPGA和DSP的高分辨率图像采集系统[J].图像采集与处理,2007,23(1):117-122.
[7]Au K M,Law N F,Siu W C.Unifiled feature analysis in JPEG and JPEG2000-comp ressed domains[J].Pattern Recognition,2007,40(7):2049-2062.