基于FPGA的CCD数据采集系统- 平凡一生的日志- 网易博客

基于FPGA的CCD数据采集系统

2010-02-10 10:02:48 阅读25 评论0 字号:

      

 

 引言

CCD(Charge Coupled Device)作为一种光电转换图像传感器,可以把图像信息直接转换成电信号,实现非电量的电测。同时它还具有体积小、重量轻、噪声低、自扫描、工作速度快、测量精度高等诸多优点,因此广泛应用在精密测量、非接触无损检测、文件扫描与航空遥感等领域。由文献[1]可知:在应用CCD图像传感器进行电子学系统设计时,首先必须要解决两个问题:

(1)CCD驱动电路的设计。CCD芯片的转换效率、信噪比等光电转换特性只有在合适的时序驱动下,才能达到器件工艺设计所规定的{zj0}值,输出稳定可靠的视频信号。因此,产生严格的CCD芯片驱动时序,是成功设计CCD相机的先决条件。

(2)视频信号处理电路的设计。它将CCD输出的视频信号进行放大、抑制干扰、去噪声以及数模转换后,输出数字图像信号。

在本课题中,就是利用FPGA的强大功能,将CCD驱动电路及视频处理电路集成在一块FPGA的芯片上,实现了CCD图像传感器的小型化、智能化与集成化。系统结构如图1所示。实践证明:该系统体积小,抗干扰性强,易于与实现自动控制系统接口,在各种高灵敏、高精度的实时在线检测系统中有着广阔的应用前景。可用在航天、空间遥感、工农业、天文、通讯等军、民用等方面。

 

 

 

 

 

图 1 系统原理框图

1 CCD驱动时序要求及FPGA实现

1.1 TCD1206SUP驱动时序要求[2]


TCD1206SUP是具有2160个有效像元的线阵CCD,其驱动时序要求见图2。在图2中,SH是转移脉冲,脉冲宽度标准值为1000ns,其周期为光信号积分时间。从图2可知,OS输出周期至少为2236个像元的输出周期; 和 是双相驱动时钟,时钟频率标准值为0.5MHz;RS是复位脉冲,标准值为1MHz;OS是信号输出。

图2 TCD1206SUP驱动时序波形

1.2驱动电路的实现[3]

通常时钟脉冲可取自以下途径:单片机XTAL端、ALE端、独立脉冲源。其中取自XTAL端时,经分频电路得到的脉冲频率受限制;取自ALE端的脉冲在单片机访问外部存储器的时候丢失,精度受影响;而取自独立脉冲源的脉冲因其独立性而精度较高,且所产生的脉冲频率可自由选择,稳定性好,因此本驱动电路选用独立脉冲源。由晶体振荡器构成的时钟发生电路,输出频率为4MHz的时钟脉冲,经四分频器得到频率为1MHz的时钟脉冲,再经脉宽调制器合成占空比为1∶3的复位脉冲 ,时钟脉冲 为0.5MHz,由脉冲信号八分频得到, 由 反相产生。

 

 

 

 

 

图3 脉冲发生框图



1.2.1 分频器的实现

该设计需要对4MHz的时钟脉冲分别进行四分频和八分频,在FPGA的设计中,分频器可采用图形输入设计,运用触发器或计数器来实现不同制式的分频;也可运用VHDL代码输入通过不同的算法来实现设计。

1.2.2 脉宽调制器的实现

脉宽调制器主要是实现脉冲信号的占空比,由图2可以得CCD的复位脉冲RS的频率为1MHZ,占空比为1:3。实现1:3调制方法很多,可以采用VHDL有限状态机(FSM) 进行设计,设定S0、S1、S2三种不同的状态,有效脉到达时,状态机由S0依次转换到S2。在S2状态时,状态机输出为高电平(1),其他状态输出低电平(0),从面实现占空比1:3调制。在本系统的设计中,采用QuartusⅡ的图形输入设计方式。运用两输入信号相异或来实现。

1.2.3 脉冲信号发生器、反相器的实现

脉冲信号发生器由晶体振荡器构成,输出频率为4MHz的时钟脉冲,作为FPGA的外部时钟,而反相器则可以用一非门电路就可以实现。由于篇幅问题,在此不作祥细交待。

把上述各部分所生的symbol用QuartusⅡ提供的Graphic Editor编辑连接起来,进行整体模块仿真,其结果如图4所示。从仿真的结果看,达到了设计要求。

 

图4 CCD驱动时序仿真图

2 AD574与FPGA接口电路及程序设计

AD574是美国模拟数字公司(Analog)推出的单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且     表1 AD574逻辑控制真值表

具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换器,其逻辑控制真值表如表1所示。[4]

由表1可得,采用状态机可实现模数转换过程,可将AD574的转换过程分为五个不同的工作状态:St0:对AD574初始化;St1: 启动12位转换;St2:等待转换;St3:12并行输出有效;St4:锁存数据。通过VHDL语言编程,可实现各状态间转换。部分代码如下:其时序仿真结果如图5所示。


………………………………….

process (current_state,STATUS)

begin

case current_state is

when st0 => next_state <= st1;

when st1 => next_state <= st2;

when st2 => if(STATUS='1')then next_state <= st2;

else  next_state <= st3;

end if;

when st3=> next_state <= st4;

when st4 => next_state <= st0;

when  others => next_state <= st1;

end case;

end process ;    

……………………………………


 

 

 

 

 

图 5 AD574状态机的仿真

3 系统测试

  本系统主要包括数据采集、数据处理和数据存储等三大模块。系统上电后,FPGA核首先产生CCD驱动时序,使CCD完成数据采集。在CCD的复位脉冲RS的触发下,数据处理模块开始工作,这样可以现实数据采集与处理的同步,即每一次采样周期结束后,模/数转换模块都能及时的对所采集的信号进行数据处理。其软件流程图如图6所示。在QuartusⅡ环境中,运用文本设计方式(VHDL语言)和图形设计方式(Graphic Editor)完成整个系统的设计,编译仿真后,经过EPCS方式下载到FLAH配置芯片中。经调试即可。

 

 

 

 

 

 

 

 

 

 

 图 6 系统软件流程图

4 结束语基于FPG A的CCD数据采集系统,将CCD驱动电路,A/D转换控制电路集成在一块FPGA的芯片上,与传统的基于MCU和汇编语言、C语言编程的数据采集系统相比,具有性能稳定可靠、实时性强、电路简单、体积小、功耗低等优点

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--相关文章 2010.04.29="" by="" yangfan--=""> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【基于FPGA的CCD数据采集系统- 平凡一生的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——