基于ARM和FPGA的嵌入式高速图像采集存储系统
现代化生产和科学研究对 图像采集 系统要求日益提高。传统图像采集系统大都是基于PC机上,而在一些特殊的场合,尤其是在实时性要求较高时,普通的PC机显然无法满足应用要求。文中设计了一种基于 ARM 和 FPGA 的 嵌入式 的图像采集存储系统,可以很好地解决实时的嵌入式图像采集和存储问题。它主要包括图像采集模块、图像处理模块以及图像存储模块等。
1 系统结构及工作原理
本系统的结构模型,如图1所示。图像采集模块负责采集原始图像,并将原始图像数据送给FPGA,采用了可编程视频输入处理器SAA7113H。原始图像数据送到FPGA后,FPGA将原始图像数据暂存于两个SRAM中,系统采用了EPlK30TCl44—3和IS6LV25616AL。一帧图像采集完成后,ARM将图像数据通过FPGA取出,进行必要的处理,并形成图片文件存到 CF卡 中,本系统选用了Philips公司的LPC2214。
图像采集芯片将原始图像数据传到FPGA,FPGA将图像原始数据暂存于SRAMl中,当一帧图像存储完后,下一帧图像数据存于SRAM2中。同时,将SRAMl中的数据送给ARM,ARM在对原始图像进行必要的处理后,将图像数据以图片文件的方式存储在CF卡中。这样就实现了嵌入式高速图像采集和存储功能,用户可以很方便地将CF卡上的图片上传到PC机中进行进一步的分析和处理。
2 系统硬件设计
2.1 图像采集模块
用可编程视频输入处理器SAA7113H进行视频信号处理。SAA7113H内部集成了强大图像色度、亮度处理功能以及多种输出模式;有32个工作寄存器,在系统复位时,必须通过I2C总线对其进行初始化。本系统使用灰度图像,没有使用色度信号,所以数据线为8位。SAA7113H与FPGA的接口,如图2所示。
2.2 FPGA模块
FPGA主要作用是把图像采集芯片传过来的图像原始数据,采取乒乓操作的方式,暂存于两片SRAM中。当FPGA开始接收第一帧图像时,把该帧图像根据FPGA内部生成的地址存储在SRAMl中,一帧图像接收完毕后,向ARM传送。同时,把下一帧图像暂存于SRAM2中,然后传给ARM,依次循环。这样就可以实现图像的高速采集。本系统选用了Alter公司的EPlK30TCl44—3,它采用EECMOS技术,144引脚TQFP封装,容量为10万门,具有高密度、低成本、低功耗的特点。FPGA的内部结构包括时钟驱动模块、SAA7113H控制模块、SRAM控制模块、ARM数据交换模块等。SAA7113H控制模块主要负责对视频采集芯片SAA7113H的初始化和启停等功能控制;SRAM控制模块则主要进行读写地址生成、“乒乓”读写控制等;ARM数据交换模块负责向ARM申请中断和数据传输。这些模块在设计中利用VHDL语言,在QUARTus II环境下进行编程和调试,具体实现方法参见文献。本系统中,主要针对640×480的灰度图像的采集和存储,所以选用了IS6lIN25616AL,它是一种高速度、低功耗的256 kB×16的CMOS静态随即存储器,能够满足系统的实际要求。SRAM控制模块的内部结构框图,如图3所示。
2.3 ARM模块
ARM模块的主要作用是,从SRAM中取出图像原始数据,然后进行必要的处理,再存储在大容量的CF卡上,方便用户在PC机上对图像进行必要的处理操作。FPGA接收完一帧图像后,向ARM发出中断请求,ARM收到请求后,通过FP—GA将SRAM中的数据读入。一帧数据发送完毕后,FPGA发出发送完毕信号,ARM对接收到的数据进行必要的处理后,将数据存储在大容量的CF卡上。本系统选用了LPC2214,它是基于ARM7TDSI体系的嵌入式微处理器,内部具有16 kB的静态随机存储器和256 kB的Flash程序存储器,可实现高达60 MHz的工作频率。ARM与FPGA及CF卡的接口电路分别,如图4,图5所示。
3 系统的工作原理及实现
3.1 FPGA图像采集及暂存的实现
系统上电后,FPGA首先通过I2C总线对视频采集模块(SAA7113H)进行初始化,以确定其工作模式。初始化结束后,等待图像采集命令。当接收到FPGA发出的图像采集命令时,视频采集模块开始工作,FPGA依靠像素时钟和行场同步信号采集灰度图像。由于SAA7113H输出的灰度图像是8位的,而外部的SRAM是16位的,因此在FPGA中必须对采集到的灰度图像进行处理,将两个字节的数据组合,一起输出到外部SRAM中。一帧图像采集结束后,SAA7113H停止图像采集,等待下一次的采集命令。
3.2 FPGA与ARM的数据交换
为了实现图像数据的实时采集与处理,应使图像数据的采集与外部图像数据的读取同时进行。因此本系统采用双SRAM缓存结构。这样,在同一时刻,一片可用于存储图像数据,另一片可用于外部ARM对图像数据的读取。两块SRAM存储区乒乓式切换。当图像数据写满SRAMl时,FPGA向ARM发送一个中断信号,然后,AlRM响应中断并读取SRAMl中的图像数据,同时将其写入到CF卡中,图像数据将写入SRAM2,当图像数据写满SRAM2时,FPGA也向ARM发送一个中断信号。ARM响应中断并读取SRAM2中的图像数据,同时将其写入到CF卡中。之后,图像传感器的数据将再次写入SRAMl。
3.3 图像数据在CF卡上的存储
CF卡内部控制器设计完全模拟硬盘,使用标准的ATA/IDE接口界面,可通过IDE接口与电脑连接,而且早已实现无驱动设计,使用非常方便。在本系统中,图像数据通过ARM存入CF卡,因此必须实现ARM对CF卡的配置、读写控制等操作。ARM对CF卡驱动的接口函数由硬件接口函数和用户使用函数组成,硬件接口函数是与系统硬件相关的函数集。主要包括硬件复位函数、ATA寄存器操作函数和ATA设备探测函数;用户使用函数包括ATA设备驱动初始化函数、查找ATA接口设备函数、读扇区函数、写扇区函数、获取设备信息、使设备立即进入待机状态和使设备立即进入空闲状态。由于篇幅所限,这里不再一一介绍,读者可以根据CF卡的具体参数编写相应的函数。
4 结束语
文中介绍了用ARM和FPGA实现的一个嵌入式实时图像采集存储系统的设计方案,本系统的工作温度为O~60℃,可以实现每秒20~30帧的视频流灰度图像采集和存储,能够满足嵌入式实时图像采集存储的应用要求,系统的持续工作时间取决于CF卡的存储容量。在本系统中,图像的采集存储脱离了PC机,使图像的采集存储真正达到了实时性和嵌入式的要求。本系统可以应用在军事射击评价、工业产品质量检测、医疗和生物等领域。
|