基于USB的高清彩色CCD图像采集系统
FIFOADR[1:0]引脚用来选择EP2、EP4、EP6和EP8中的一个FIFO与数据总线FD连接。FULL和EMPTY引脚分别是FIFO的满状态和空状态标志,通过配置CY7C68013A内部的相关寄存器可使得当FIFO满状态或者空状态的时候向外部控制器发送相应的标志。SLWR引脚是写FIFO控制信号,当SLWR被激活时,数据总线FD上的数据在每个时钟信号IFCLK上升沿到来时被写入FIFO。
INT1和PAUSE信号是为了协调高清图像数据正常发送而引入的额外信号。系统中CCD图像传感器输出的模拟信号经AD9824采样后输出14 bit数字信号,但数据中不包含图像帧头信息。为使主机应用程序能够准确和完整地分离出图像数据,本系统设计方法是在EZ-USB FX2LP的INT1中断服务程序中为每一帧图像加入特定的帧头。在EZ-USB在往FIFO里面写入帧头的过程中,不允许CPLD继续让AD向FIFO传送数据,从而引入了PAUSE信号通知CPLD暂停传送数据的操作。
本系统采用的模拟转换器AD9824是一款14bits的高效CCD信号处理器,而FD[15:0]是16位的数据总线,在设计过程中,我们将高位数据线接地,低14位数据线接AD9824数据并行输出数据。
2 系统软件实现
2.1 AD相关双采样
相关双采样(CDS)通过对每一个CCD像素点输出信号采样两次来消除低频噪声的影响,它是根据CCD输出信号和噪声信号的特点而设计。图4为相关双采样时序图,图中详细的指出了相关采样的时序要求。CCD每个像元的输出周期都以复位脉冲信号开始T1,先清除前一个像素的电荷,以等待下一像素电荷的到来。此时的输出信号被嵌入复位电平,并产生复位噪声;在图中T2期间,由于复位MOSFET漏电流的影响,复位电平有微小下降,这种现象称为复位失调电压。此时的输出信号为复位电平与复位噪声、复位失调电压的叠加;在T3期间,CCD电荷进行水平转移,此时混入移位时钟干扰;T4期间的输出为复位噪声、复位失调电压和有用光敏输出信号的叠加。所以相关双采样的原理就是在T2和T4时刻对同一像素点的输出信号进行采样,然后将两次采样值相减就基本消除了复位噪声的干扰,得到信号电平的实际有效幅值。本系统选用的模数转换器AD9824内部具有相关双采样电路,系统实现过程中就是EPM3128产生如图4所示的SHP、SHP、DATACLK采样信号,即可完成相关双采样逻辑,很大程度降低了图像数据中包含的噪声信号。
2.2 USB固件程序设计
在USB接口设计中,USB固件编程是整个设计任务的核心。USB固件程序用于完成USB设备的识别、重列举、设备请求、USB协议处理、外部硬件的功能、负责与USB主机之间的数据通信等。固件的设计就是使在USB总线上的传输能获得最大的有效的数据传输速度。
设备上电之后,就会按照如下的步骤执行固件:
1)初始化架构全局变量;
2)调用TD_Init()初始化FX2LP芯片,调用用户自定义的初始化函数,返回后USB设置为未配置状态,并打开中断;
3)在紧接着的1秒内,重新枚举USB设备,直到收到SETUP封包;
4)检查设备请求,有请求则执行相应的功能,有的需要跳转到相应函数;
5)检查总线挂起事件,没有挂起事件则执行9);
6)调用TD_Suspend(),返回失败代码则执行9);
7)挂起处理器;
8)检查重新开始事件,事件发生则调用TD_Resume(),否则执行7);
9)调用TD_Poll,函数返回到4)并执行。
固件框架流程如图5所示。
由于AD9824传送过来的每一帧图像都是连续的,也就是不包含帧头信息。本系统采取的做法是在一帧数据到来的时候,CPLD控制器会给CY7C68013A一个中断信号。中断服务程序所要做的工作就是清空FIFO里面的数据,并往FIFO里面写入512个字节的帧头(0xFF)数据。这样做的目的是保证上位机能够正确的识别每一帧数据。中断服务程序流程图如图6所示。
2.3 上位机程序设计
本系统的上层应用程序使用VC++6.0软件进行编程,采用多线程、双缓冲区等技术实现动态图像的实时显示。
在图像采集系统中,主要有3个功能模块:图像数据采集模块、图像数据处理模块、图像显示模块。如果采用单线程方法,则工作过程为:先进行数据采集,采集完成后对数据进行处理,最后将处理后的数据进行显示。由于这3个功能模块不能同时进行,会造成了CPU的利用率低,限制传输帧速率的提高,导致系统的整体效率大大降低。
为了提高运行效率,本应用程序设计时采用多线程并行处理的方法,将数据采集、数据处理与图像显示分别放在3个线程里进行。从图7中可以很明显看出单线程与多线程的区别。
在图像数据采集模块中,一种数据采集方法是串行处理,如图8所示。
这种结构易于实现,但存在着明显的不足;效率低下,不适合实时性要求高的场合。
为了进一步提高图像采集的实时性,在应用程序开发时设计了双缓冲区交替采集处理的工作方式,如图9。周期T时应用程序采集数据到缓冲区1,同时处理缓冲区2中的数据;周期T+1时应用程序采集数据到缓冲区2,同时处理缓冲区1中的数据。如此反复交替,可以显著提高数据采集效率。
- 采用CompactDAQ平台提高USB数据采集应用的性能(01-17)
- 基于FPGA的USB2.0虚拟逻辑分析仪的设计与实现(01-18)
- 高速串行数据链路的自动化一致性测试(04-15)
- 基于LABVIEW的USB接口多路高速数据采集系统的设计(11-24)
- 基于AVR USB接口的温度测量系统下位机设计(03-01)
- 理解下一代数据采集技术(05-12)