随着技术的进步,嵌入式系统的功能越来越强。现在基于高端32位ARM处理器的系统已经具备很强的信号处理能力,可以实时处理图像数据,实现网络可视电话、人眼虹膜识别和指纹识别等功能,但成本较高。在低端的嵌入式系统中,由于处理器的处理能力有限,图像数据的数据量又比较大,实现实时图像数据的处理比较困难,但通过采取一定的措施可以实现低成本的图像采集和处理系统。图像采集可以采用模拟摄像头、CCD图像传感器或CMOS数字图像传感器。CMOS数字图像传感器由于其高性价比和直接输出数字图像数据而得到最为广泛的应用。MT9V011就是一个这样的CMOS数字图像传感器。本文介绍MT9V011 CMOS数字图像传感器在一个低端ARM7处理器系统中的应用。
1 图像采集系统的应用现状
实时图像采集系统已经广泛应用于手机、PDA、实时监控系统等高端嵌入式系统中。在这类系统中,处理器具有以下特点:具有较高的处理速度可以实时处理采集回来的大量图像数据;具有较大的内存可以存放若干帧完整的图像数据;具有丰富的外设接口可以比较容易的扩展大容量的存储设备如CF卡、SD存储卡等来备份一些图像数据。然而在一些测控领域也需要采集图像,以使管理人员能够直观的监控被测对象。由于被测量的变化比较缓慢不需要实时采集图像,每隔一段时间传回监控中心一幅图像就能满足要求。在这类系统中,处理器主要是面向控制领域,它们的特点是内存比较小,处理速度比较慢,外设接口也不多。因此在这类低端嵌入式系统中增加图像采集功能要面临处理器处理能力有限和硬件资源受限制的问题。
2 CMOS图像传感器MT9V011介绍
以创新的CMOS活跃象素技术,美光的超低功耗MT9V011图像感应器融合了上乘的VGA分辨率和标准电荷耦合器件(CCD)所不具备的很多优越功能。它能以高达30fps的帧频输出高质量的逐行扫描图像,而电池寿命却比CCD竞争产品大幅度延长,因此成为手机、掌上电脑和PC机USB摄像头的理想选择。
MT9V011多种精密的相机功能(包括窗口化、行镜像变换、左右和上下图像翻转、电子旋转快门(ERS)、列镜像变换)已被直接集成到芯片上,从而减少了CCD通常需要的额外组件,最大程度地缩小了产品尺寸和主板空间。其变量功能(也直接包括在芯片内)如可编程增益、帧频和曝光控制等可以在默认模式操作,也可以由最终用户通过一个简单的两线I2C接口进行编程。
图1 CMOS摄像头芯片MT9V011工作时序
MT9V011默认输出的是一幅640ⅹ480象素的图像。MT9V011芯片的工作时序如图1所示。LINE_VALID是行有效信号,PIXCLK是象素时钟信号,DOUT9-DOUT0是10位的图像数据,FRAME_VALID是帧有效信号。其中LINE_VALID有效期间共有640个PIXCLK时钟周期,FRAME_VALID有效期间共有480个LINE_VALID有效信号。默认情况下图像数据从第一行第一列开始在PIXCLK信号的上升沿顺序输出。
MT9V011输出的图像格式是RGB Bayer类型,如图2所示。每一个点只有一种颜色,箭头所指的是第0行第0列。假设P0-0(9:0)至P0-639(9:0)是第0行的所有象素点的颜色数据,P1-0(9:0)至P1-639(9:0)是第1行所有点的颜色数据,则P0-0(9:0)代表绿色的颜色值,P0-1(9:0)代表红色的颜色值,P0-2(9:0)代表绿色的颜色值,P1-0(9:0)代表的是蓝色的颜色值,P1-1(9:0)代表的是绿色的颜色值,P1-2(9:0)代表的是蓝色的颜色值等等。点P0-0、P0-1、P1-0、P1-1组合在一起便具备了R、G、B三色,可以合成一个真彩色的点在PC机屏幕上显示。
图2 MT9V011输出的数字图像格式
3 系统设计方案
图3 嵌入式图像采集系统框图
本图像采集系统基于菲利普的低端ARM7嵌入式微处理器
LPC2104,CMOS摄像头芯片采用美光科技公司的MT9V011。由于MT9V011的图像输出速率最大可达30帧每秒,而LPC2104处理器的I/O口读写速度远远不够,循环将它的某一个I/O口置为高然后立即置低,输出的方波的频率也不超过4MHz。图像数据的数据量相对于资源有限的嵌入式系统来说太大了,MT9V011默认情况下输出的一幅图像的数据量大小为300K字节,而LPC2104处理器的内存大小仅为16K字节,而且没有开放存储器扩展总线,在处理器外部扩展存储器很不方便。其它的低端的面向控制的处理器如AVR单片机、MCS51单片机等都存在这样的问题,但是由于它们具有较高的性价比、开发调试比较方便和能够比较快速的组建应用系统,因此它们在许多领域都还有广泛的应用。针对此类处理器的一些资源和性能限制,我们可以采取一些辅助措施来解决。由于可编程逻辑器件(PLD)具有较快的速度和在线编程等诸多优点,十分适合与此类低端处理器相结合来解决一些纯处理器系统无法解决的问题。随着可编程逻辑器件技术的发展和相关技术的进步,此类系统得到了越来越广泛的应用。本文就是采用这种方案来解决单一处理器无法完成图像采集的问题。具体方案是由一片可编程逻辑器件来与MT9V011接口,控制图像数据缓存到一片SRAM中,然后通知处理器读取数据。这样就同时解决了处理器I/O速度慢和内存不够大两个问题,能够组建系统完成图像采集功能。图像采集系统框图如图3所示。系统由四大部分组成:CMOS摄像头电路、摄像缓存控制逻辑电路、SRAM存储器和32位嵌入式系统总线接口。系统摄像缓存控制逻辑电路由CPLD(可编程逻辑器件)EPM7128S实现。
4 CPLD控制逻辑设计
图4 CPLD控制逻辑流程图
因为系统主处理器LPC2104的I/O速度和内存的限制,无法完成采集一帧图像并存储的功能。这只能借助于在系统中扩展一片CPLD来协作完成系统功能。由CPLD片内的控制逻辑电路完成读取图像数据并缓存到SRAM中的功能。因为系统不是实时图像采集与处理,可以降低CMOS数字图像传感器输出图像的速率。这可以通过改变它的输入时钟来实现。系统中CPLD的时钟采用40MHz,经过10分频以后的时钟做为CMOS图像传感器的时钟。这样降低了图像输出的速率,减轻了处理器进行图像数据处理的负担,使处理器有空闲时间进行其它控制操作。由于CPLD要读取CMOS图像传感器输出的图像数据并缓存到SRAM中,因此CPLD的片内逻辑主要是根据图像传感器输出图像数据的时序和SRAM的读写时序来编写。CPLD片内的控制逻辑电路主要由一个用电子硬件描述语言verilog编写的状态机实现。另外还有一些附加的门电路、多路选择器和加法器,它们和状态机共同组成了系统的摄像头缓存控制逻辑电路。CPLD控制逻辑流程图如图4所示。
5 功能验证
为了验证系统实现了图像采集的功能,需要对CPLD缓存下来的数据进行处理并显示出图像。由于PC机具有丰富的软硬件资源,因此我们利用PC机来显示图像,验证图像采集功能的正确性。具体方法是:系统主处理器LPC2104读取SRAM中的图像数据并通过串口传送给PC机,在PC机上编写软件接收数据并做简单的处理就可以在PC机屏幕上显示出图像,从而能够验证系统的功能。
通过在一个低端的嵌入式处理器系统中添加CMOS数字图像传感器,并编写硬件描述语言程序、嵌入式处理器程序,实现了采集图像的功能。
本文作者创新点:利用CPLD在一个低端嵌入式系统中实现了图像采集功能。
参考文献:
[1] (英)弗伯著,田泽等译.ARM SoC体系结构.北京航空航天大学出版社,2002
[2] 杜春雷.ARM体系结构与编程.清华大学出版社,2003
[3] 李现勇.Visual C++ 串口通信技术与工程实践.人民邮电出版社,2002
[4] 李侃,廖启征.基于S3C2410平台与嵌入式Linux的图像采集应用.微计算机信息,2006,3-2:125-127
1 图像采集系统的应用现状
实时图像采集系统已经广泛应用于手机、PDA、实时监控系统等高端嵌入式系统中。在这类系统中,处理器具有以下特点:具有较高的处理速度可以实时处理采集回来的大量图像数据;具有较大的内存可以存放若干帧完整的图像数据;具有丰富的外设接口可以比较容易的扩展大容量的存储设备如CF卡、SD存储卡等来备份一些图像数据。然而在一些测控领域也需要采集图像,以使管理人员能够直观的监控被测对象。由于被测量的变化比较缓慢不需要实时采集图像,每隔一段时间传回监控中心一幅图像就能满足要求。在这类系统中,处理器主要是面向控制领域,它们的特点是内存比较小,处理速度比较慢,外设接口也不多。因此在这类低端嵌入式系统中增加图像采集功能要面临处理器处理能力有限和硬件资源受限制的问题。
2 CMOS图像传感器MT9V011介绍
以创新的CMOS活跃象素技术,美光的超低功耗MT9V011图像感应器融合了上乘的VGA分辨率和标准电荷耦合器件(CCD)所不具备的很多优越功能。它能以高达30fps的帧频输出高质量的逐行扫描图像,而电池寿命却比CCD竞争产品大幅度延长,因此成为手机、掌上电脑和PC机USB摄像头的理想选择。
MT9V011多种精密的相机功能(包括窗口化、行镜像变换、左右和上下图像翻转、电子旋转快门(ERS)、列镜像变换)已被直接集成到芯片上,从而减少了CCD通常需要的额外组件,最大程度地缩小了产品尺寸和主板空间。其变量功能(也直接包括在芯片内)如可编程增益、帧频和曝光控制等可以在默认模式操作,也可以由最终用户通过一个简单的两线I2C接口进行编程。
图1 CMOS摄像头芯片MT9V011工作时序
MT9V011默认输出的是一幅640ⅹ480象素的图像。MT9V011芯片的工作时序如图1所示。LINE_VALID是行有效信号,PIXCLK是象素时钟信号,DOUT9-DOUT0是10位的图像数据,FRAME_VALID是帧有效信号。其中LINE_VALID有效期间共有640个PIXCLK时钟周期,FRAME_VALID有效期间共有480个LINE_VALID有效信号。默认情况下图像数据从第一行第一列开始在PIXCLK信号的上升沿顺序输出。
MT9V011输出的图像格式是RGB Bayer类型,如图2所示。每一个点只有一种颜色,箭头所指的是第0行第0列。假设P0-0(9:0)至P0-639(9:0)是第0行的所有象素点的颜色数据,P1-0(9:0)至P1-639(9:0)是第1行所有点的颜色数据,则P0-0(9:0)代表绿色的颜色值,P0-1(9:0)代表红色的颜色值,P0-2(9:0)代表绿色的颜色值,P1-0(9:0)代表的是蓝色的颜色值,P1-1(9:0)代表的是绿色的颜色值,P1-2(9:0)代表的是蓝色的颜色值等等。点P0-0、P0-1、P1-0、P1-1组合在一起便具备了R、G、B三色,可以合成一个真彩色的点在PC机屏幕上显示。
图2 MT9V011输出的数字图像格式
3 系统设计方案
图3 嵌入式图像采集系统框图
本图像采集系统基于菲利普的低端ARM7嵌入式微处理器
LPC2104,CMOS摄像头芯片采用美光科技公司的MT9V011。由于MT9V011的图像输出速率最大可达30帧每秒,而LPC2104处理器的I/O口读写速度远远不够,循环将它的某一个I/O口置为高然后立即置低,输出的方波的频率也不超过4MHz。图像数据的数据量相对于资源有限的嵌入式系统来说太大了,MT9V011默认情况下输出的一幅图像的数据量大小为300K字节,而LPC2104处理器的内存大小仅为16K字节,而且没有开放存储器扩展总线,在处理器外部扩展存储器很不方便。其它的低端的面向控制的处理器如AVR单片机、MCS51单片机等都存在这样的问题,但是由于它们具有较高的性价比、开发调试比较方便和能够比较快速的组建应用系统,因此它们在许多领域都还有广泛的应用。针对此类处理器的一些资源和性能限制,我们可以采取一些辅助措施来解决。由于可编程逻辑器件(PLD)具有较快的速度和在线编程等诸多优点,十分适合与此类低端处理器相结合来解决一些纯处理器系统无法解决的问题。随着可编程逻辑器件技术的发展和相关技术的进步,此类系统得到了越来越广泛的应用。本文就是采用这种方案来解决单一处理器无法完成图像采集的问题。具体方案是由一片可编程逻辑器件来与MT9V011接口,控制图像数据缓存到一片SRAM中,然后通知处理器读取数据。这样就同时解决了处理器I/O速度慢和内存不够大两个问题,能够组建系统完成图像采集功能。图像采集系统框图如图3所示。系统由四大部分组成:CMOS摄像头电路、摄像缓存控制逻辑电路、SRAM存储器和32位嵌入式系统总线接口。系统摄像缓存控制逻辑电路由CPLD(可编程逻辑器件)EPM7128S实现。
4 CPLD控制逻辑设计
图4 CPLD控制逻辑流程图
因为系统主处理器LPC2104的I/O速度和内存的限制,无法完成采集一帧图像并存储的功能。这只能借助于在系统中扩展一片CPLD来协作完成系统功能。由CPLD片内的控制逻辑电路完成读取图像数据并缓存到SRAM中的功能。因为系统不是实时图像采集与处理,可以降低CMOS数字图像传感器输出图像的速率。这可以通过改变它的输入时钟来实现。系统中CPLD的时钟采用40MHz,经过10分频以后的时钟做为CMOS图像传感器的时钟。这样降低了图像输出的速率,减轻了处理器进行图像数据处理的负担,使处理器有空闲时间进行其它控制操作。由于CPLD要读取CMOS图像传感器输出的图像数据并缓存到SRAM中,因此CPLD的片内逻辑主要是根据图像传感器输出图像数据的时序和SRAM的读写时序来编写。CPLD片内的控制逻辑电路主要由一个用电子硬件描述语言verilog编写的状态机实现。另外还有一些附加的门电路、多路选择器和加法器,它们和状态机共同组成了系统的摄像头缓存控制逻辑电路。CPLD控制逻辑流程图如图4所示。
5 功能验证
为了验证系统实现了图像采集的功能,需要对CPLD缓存下来的数据进行处理并显示出图像。由于PC机具有丰富的软硬件资源,因此我们利用PC机来显示图像,验证图像采集功能的正确性。具体方法是:系统主处理器LPC2104读取SRAM中的图像数据并通过串口传送给PC机,在PC机上编写软件接收数据并做简单的处理就可以在PC机屏幕上显示出图像,从而能够验证系统的功能。
通过在一个低端的嵌入式处理器系统中添加CMOS数字图像传感器,并编写硬件描述语言程序、嵌入式处理器程序,实现了采集图像的功能。
本文作者创新点:利用CPLD在一个低端嵌入式系统中实现了图像采集功能。
参考文献:
[1] (英)弗伯著,田泽等译.ARM SoC体系结构.北京航空航天大学出版社,2002
[2] 杜春雷.ARM体系结构与编程.清华大学出版社,2003
[3] 李现勇.Visual C++ 串口通信技术与工程实践.人民邮电出版社,2002
[4] 李侃,廖启征.基于S3C2410平台与嵌入式Linux的图像采集应用.微计算机信息,2006,3-2:125-127
评论
查看更多