微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于图像传感器的CPLD视觉系统设计与研究

基于图像传感器的CPLD视觉系统设计与研究

时间:02-20 来源:互联网 点击:

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将与硬件时序相关的程序封装,与外界的接口仅为标志状态线以及数据采集总线,极大地方便了系统的升级而无需改动图像采集部分的硬件和软件。甚至更换为其他型号功能更为强大的微处理器,只要按照上述标志状态线的约定来操作,系统仍然可以正常工作,增强了系统的兼容性和可移植性。

  3 系统软件

  系统软件主要由ARM微处理器和CPLD两部分程序构成。ARM部分的代码使用C语言在ADSl.2环境下开发,而CPLD部分则使用Verilog硬件语言在QuartusII下开发。

  3.1 CPLD部分程序设计

  CPLD的程序主要分为2部分:组合逻辑和时序逻辑。组合逻辑主要完成总线仲裁,程序并不依赖CPLD的全局时钟;时序逻辑完成对信号的检测,根据SRAM的操作时序将图像数据写入。

  在总线仲裁部分,需要注意的是:对CPLD而言,不同的时刻同一总线的数据流人方向是不同的。因而在Verilog中,需要声明总线为双向端口。具体的总线仲裁程序如下:

  对双向端口的总线操作总结如下:

  ①需要控制信号指明端口在某一时刻的方向;

  ②输出高阻即代表该双向端口是输入状态,此时可以作为普通的输入端口来使用。

时序逻辑部分主要完成对图像传感器时序信号的识别。如图2所示,CPLD需要首先检测VSYNc的下降沿,接着检测HREF信号的上升沿,然后在PCLK信号的上升沿将图像数据读入。

  在Verilog语言中,对上升沿的检测是通过always语句来实现的。例如检测时钟信号cam_pclk的上升沿:always@(posedge cam_pclk)。但从上面的分析中可以看出,需要检测的信号沿有3个,可以都用always来检测,但在Verilog的语法中always语句是不可以嵌套的。为了解决这个问题,本系统中采用了如下方式:整个模块只有一个时序逻辑的always块,其他的信号沿检测用与al—ways等价的方式实现。例如对于cam_vsyn信号,设置2个临时信号vsyn_0和vsyn_1,在每个时钟信号的上升沿,进行如下赋值:

  这样,当每个时钟沿到来时都会更新vsyn_0和vsyn_1的值。当vsyn_O的值为O且vsyn_1的值为1时,认为是上升沿到来,同理也可以检测下降沿。需要注意的是:这种方式下,时钟信号的周期要远远小于被检测信号的高电平和低电平的持续时间。如果信号脉冲过窄,在整个脉冲期间vsyn_O和vsyn_l的值都没有更新,就会丢失边沿的检测。

  数据写入SRAM的过程是用Mealy状态机来实现的,程序具有通用性。若使用其他型号的SRAM,只需要根据器件的读写时序在相应的状态中修改高低电平。状态机使程序的结构清晰,调试方便。

  3.2 ARM部分程序设计

  目前,基于PC机的视觉处理算法有很多,但在基于微处理器的嵌入式视觉系统中,系统在硬件资源和处理速度上都无法与PC机相比。特别是在有实时性要求的情况下,需要编写适合嵌入式系统特点的快速有效的算法。下面编写的算法都是根据这个思想来编写的。

  颜色跟踪:颜色跟踪的任务可以分解为颜色标定和颜色分割两个步骤。颜色标定的任务是通过一个已知的颜色,找出其在颜色空间内与之对应的一个封闭区域。颜色分割则是通过比较器判断图像中像素点在颜色空间中是否落在标定的空间内,若在已标定的空间内,则认为其颜色与已标定的颜色一样,这样就可以根据标定的封闭区域识别出图像中具有与标定颜色相同的物体。为了满足不同情况下应用的需求,颜色跟踪设置了2种模式。

  (1)帧处理模式

该模式需要用户输入要跟踪的R、G、B三个颜色边界,构成一个RGB跟踪的颜色空间。然后处理器从图像的左上角开始,顺序逐行逐点的检查每一个像素。如果被检查的像素正好落入用户定义的颜色范围,就将这个像素标记为跟踪的;同时,需要记录被跟踪点中的最高点、最低点、最左点和最右点

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top