系统上电后,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机,使图像的采集存储真正达到了实时性和嵌入式的要求。本系统可以应用在军事射击评价、工业产品质量检测、医疗和生物等领域。