基于图像传感器的CPLD视觉系统设计
时间:04-27
来源:互联网
点击:
目前,关于视觉系统的研究已经成为热点,也有开发出的系统可供参考。但这些系统大多是基于PC机的,由于算法和硬件结构的复杂性而使其在小型嵌入式系统中的应用受到了,限制。上述系统将图像数据采集后,视觉处理算法是在PC机上实现的。随着嵌入式微处理器技术的进步,32位ARM处理器系统拥有很高的运算速度和很强的信号处理能力,可以作为视觉系统的处理器,代替PC机来实现简单的视觉处理算法。下面介绍一种基于ARM和CPLD的嵌入式视觉系统,希望能分享嵌入式视觉开发过程中的一些经验。
1 系统方案与原理
在嵌入式视觉的设计中,目前主流的有以下2种方案:
方案1 图像传感器+微处理器(ARM或DSP)+SRAM
方案2图像传感器+CPLD/FPGA+微处理器+SRAM
方案1系统结构紧凑,功耗低。在图像采集时,图像传感器输出的同步时序信号的识别需要借助ARM的中断,而中断处理时,微处理器需要完成程序跳转、保存上下文等工作,降低了图像采集的速度,适合对采集速度要求不高、功耗低的场合。
方案2借助CPLD来识别图像传感器的同步时序信号,不必经过微处理器的中断,因而系统的采集速度提高,但CPLD的介入会使系统的功耗提高。
为了综合以上2种方案的优势,在硬件上采用“ARM+CPLD+图像传感器+SRAM”。该方案充分利用了CPLD的可编程性,通过软件编程来兼有方案1 的优势,具体体现在以下方面:
①功耗的高低可以控制。对于功耗有严格要求的场合,通过CPLD的可编程性将时序部分的接口与ARM的中断端口相连,仅仅是组合逻辑的总线相连,可以降低 CPLD的功耗从而达到方案1的效果;对于采集速度要求高而功耗要求不高的情况,可以充分发挥CPLD的优势,利用组合与时序逻辑来实现图像传感器输出同步信号的识别,并将图像数据写入SRAM中。
②器件的选择可以多样。在硬件设计上,所有总线均与CPLD相连;在软件设计上,不同的模块单独按功能封装。这样以CPLD为中心,系统的其他器件均可更换而无需对CPLD部分程序进行改动,有利于系统的功能升级。作为本系统的一种应用,开发了视觉跟踪的程序,可以在目标和背景颜色对比强烈的情况下对物体进行跟踪。通过对CMOS摄像头采集来的数据进行实时处理,根据物体的颜色计算出被追踪物体的质心坐标。下面分别描述系统各部分的功能。
2 系统硬件
2.1 硬件组成及连接
系统的硬件主要有4部分:CMOS图像传感器OV6620、可编程器件CPLD、 512 KB的SRAM和32位微处理器LPC2214。
OV6620是美国OmniVision公司生产的CMOS图像传感器,以其高性能、低功耗适合应用在嵌入式图像采集系统中,本系统图像数据的输入都是通过OV6620采集进来的;可编程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件编程语言在QuartusII下编写程序;作为系统的数据缓冲,SRAM选用的是IS61LV5128,其随机访问的特性为图像处理程序提供了便利;而LPC2214在PLL(锁相环)的支持下最高可以运行在60 MHz的频率下,为图像的快速处理提供了硬件支持。
0V6620集成在一个板卡上,有独立的17 MHz晶振。输出3个图像同步的时序信号:像素时钟PCLK、帧同步VSYNC和行同步HREF。同时,还可以通过8位或16位的数据总线输出RGB或 YCrCb格式的图像数据。
在硬件设计上,有2个问题需要解决:
①图像采集的严格时序同步;
②双CPU共享SRAM的总线仲裁。
解决第一个问题的关键在于如何实时、准确地读取OV6620的时序输出信号,据此将图像数据写入SRAM中。这里采用的解决方案是用CPLD来实现时序信号的识别以及图像数据的写入。CPLD在硬件上可以识别信号的边沿,速度更快,通过Verilog语言编写Mealy状态机来实现图像数据的SRAM写入,更加稳定。
对于双CPU共享SRAM,可以通过合理的连接方式来解决。考虑到CPLD的可编程性,将OV6620的数据总线,LPC2214的地址、数据总线以及 SRAM的总线都连接到CPLD上。通过编程来控制总线之间的连接,只要在软件上保证总线的互斥性,即在同一时刻有且仅有一个控制器(CPLD或者 LPC2214)来操作SRAM的总线,就可以有效地避免总线冲突。这样,硬件上的仲裁就可以通过软件来保证,该过程可以通过在CPLD中编写多路数据选择器来实现。
各器件之间的连接关系如图1所示。
由图1可见,微处理器的总线接在CPLD上,在对功耗有严格要求的场合中,只需要在CPLD中,将OV6620的同步时序信号所对应的引脚与 LPC2214连接在CPLD上的中断引脚相连,系统就可以转换成方案1的形式。对CPLD而言,引脚相连的仅仅是组合逻辑,降低了功耗。方案1的具体工作过程可见参考文献。而对于采集速度要求较高的场合,CPLD部分的程序源代码见本刊网站www.mesnet.com.cn——编者注。下面重点介绍这种情况下的应用。
2.2 工作过程
系统上电后,首先由LPC2214通过I2C总线配置摄像头的工作状态,需要配置的主要有输出图像的数据格式、速率、是否白平衡,以及自动增益是否打开。配置完成后,LPC2214发出图像采集的信号给CPLD,此时CPlD操作SRAM的总线,并通过对OV6620输出时序的检测将图像数据写入 SRAM。当然,写入SRAM需要严格符合SRAM的操作时序。一帧图像采集完成后,CPLD置位标志位来通知LPC2214,如果LPC2214处于空闲状态,则通知CPLD将总线使用权切换至LPC2214,由LPC2214读取SRAM中的数据并进行图像处理。同时,发送信号给CPLD进行数据采集,图像的采集和处理将并行执行,提高了系统的工作效率。当再次采集完一帧数据后,重复上述过程。
2.3 硬件方案的特点
LPC2214负责图像处理,CPLD负责图像数据的采集,很好地实现了功能上的封装。可以看到,CPLD将与硬件时序相关的程序封装,与外界的接口仅为标志状态线以及数据采集总线,极大地方便了系统的升级而无需改动图像采集部分的硬件和软件。甚至更换为其他型号功能更为强大的微处理器,只要按照上述标志状态线的约定来操作,系统仍然可以正常工作,增强了系统的兼容性和可移植性。
1 系统方案与原理
在嵌入式视觉的设计中,目前主流的有以下2种方案:
方案1 图像传感器+微处理器(ARM或DSP)+SRAM
方案2图像传感器+CPLD/FPGA+微处理器+SRAM
方案1系统结构紧凑,功耗低。在图像采集时,图像传感器输出的同步时序信号的识别需要借助ARM的中断,而中断处理时,微处理器需要完成程序跳转、保存上下文等工作,降低了图像采集的速度,适合对采集速度要求不高、功耗低的场合。
方案2借助CPLD来识别图像传感器的同步时序信号,不必经过微处理器的中断,因而系统的采集速度提高,但CPLD的介入会使系统的功耗提高。
为了综合以上2种方案的优势,在硬件上采用“ARM+CPLD+图像传感器+SRAM”。该方案充分利用了CPLD的可编程性,通过软件编程来兼有方案1 的优势,具体体现在以下方面:
①功耗的高低可以控制。对于功耗有严格要求的场合,通过CPLD的可编程性将时序部分的接口与ARM的中断端口相连,仅仅是组合逻辑的总线相连,可以降低 CPLD的功耗从而达到方案1的效果;对于采集速度要求高而功耗要求不高的情况,可以充分发挥CPLD的优势,利用组合与时序逻辑来实现图像传感器输出同步信号的识别,并将图像数据写入SRAM中。
②器件的选择可以多样。在硬件设计上,所有总线均与CPLD相连;在软件设计上,不同的模块单独按功能封装。这样以CPLD为中心,系统的其他器件均可更换而无需对CPLD部分程序进行改动,有利于系统的功能升级。作为本系统的一种应用,开发了视觉跟踪的程序,可以在目标和背景颜色对比强烈的情况下对物体进行跟踪。通过对CMOS摄像头采集来的数据进行实时处理,根据物体的颜色计算出被追踪物体的质心坐标。下面分别描述系统各部分的功能。
2 系统硬件
2.1 硬件组成及连接
系统的硬件主要有4部分:CMOS图像传感器OV6620、可编程器件CPLD、 512 KB的SRAM和32位微处理器LPC2214。
OV6620是美国OmniVision公司生产的CMOS图像传感器,以其高性能、低功耗适合应用在嵌入式图像采集系统中,本系统图像数据的输入都是通过OV6620采集进来的;可编程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件编程语言在QuartusII下编写程序;作为系统的数据缓冲,SRAM选用的是IS61LV5128,其随机访问的特性为图像处理程序提供了便利;而LPC2214在PLL(锁相环)的支持下最高可以运行在60 MHz的频率下,为图像的快速处理提供了硬件支持。
0V6620集成在一个板卡上,有独立的17 MHz晶振。输出3个图像同步的时序信号:像素时钟PCLK、帧同步VSYNC和行同步HREF。同时,还可以通过8位或16位的数据总线输出RGB或 YCrCb格式的图像数据。
在硬件设计上,有2个问题需要解决:
①图像采集的严格时序同步;
②双CPU共享SRAM的总线仲裁。
解决第一个问题的关键在于如何实时、准确地读取OV6620的时序输出信号,据此将图像数据写入SRAM中。这里采用的解决方案是用CPLD来实现时序信号的识别以及图像数据的写入。CPLD在硬件上可以识别信号的边沿,速度更快,通过Verilog语言编写Mealy状态机来实现图像数据的SRAM写入,更加稳定。
对于双CPU共享SRAM,可以通过合理的连接方式来解决。考虑到CPLD的可编程性,将OV6620的数据总线,LPC2214的地址、数据总线以及 SRAM的总线都连接到CPLD上。通过编程来控制总线之间的连接,只要在软件上保证总线的互斥性,即在同一时刻有且仅有一个控制器(CPLD或者 LPC2214)来操作SRAM的总线,就可以有效地避免总线冲突。这样,硬件上的仲裁就可以通过软件来保证,该过程可以通过在CPLD中编写多路数据选择器来实现。
各器件之间的连接关系如图1所示。
由图1可见,微处理器的总线接在CPLD上,在对功耗有严格要求的场合中,只需要在CPLD中,将OV6620的同步时序信号所对应的引脚与 LPC2214连接在CPLD上的中断引脚相连,系统就可以转换成方案1的形式。对CPLD而言,引脚相连的仅仅是组合逻辑,降低了功耗。方案1的具体工作过程可见参考文献。而对于采集速度要求较高的场合,CPLD部分的程序源代码见本刊网站www.mesnet.com.cn——编者注。下面重点介绍这种情况下的应用。
2.2 工作过程
系统上电后,首先由LPC2214通过I2C总线配置摄像头的工作状态,需要配置的主要有输出图像的数据格式、速率、是否白平衡,以及自动增益是否打开。配置完成后,LPC2214发出图像采集的信号给CPLD,此时CPlD操作SRAM的总线,并通过对OV6620输出时序的检测将图像数据写入 SRAM。当然,写入SRAM需要严格符合SRAM的操作时序。一帧图像采集完成后,CPLD置位标志位来通知LPC2214,如果LPC2214处于空闲状态,则通知CPLD将总线使用权切换至LPC2214,由LPC2214读取SRAM中的数据并进行图像处理。同时,发送信号给CPLD进行数据采集,图像的采集和处理将并行执行,提高了系统的工作效率。当再次采集完一帧数据后,重复上述过程。
2.3 硬件方案的特点
LPC2214负责图像处理,CPLD负责图像数据的采集,很好地实现了功能上的封装。可以看到,CPLD将与硬件时序相关的程序封装,与外界的接口仅为标志状态线以及数据采集总线,极大地方便了系统的升级而无需改动图像采集部分的硬件和软件。甚至更换为其他型号功能更为强大的微处理器,只要按照上述标志状态线的约定来操作,系统仍然可以正常工作,增强了系统的兼容性和可移植性。
嵌入式 ARM CPLD 传感器 DSP FPGA 总线 CMOS Altera Verilog Quartus C语言 比较器 机器人 单片机 相关文章:
- CAN总线技术在工业码垛机器人控制系统中的应用研究(06-27)
- 基于LabVIEW构建智能的移动机器人及无人驾驶车(10-27)
- 基于混沌电路设计阵列触觉传感器的采集系统(03-01)
- 复杂路线下机器人的三点三轮寻迹系统(01-17)
- NI LabVIEW设计简单机器人(03-09)
- 机器人技术基础系列:规划与导航(03-09)