APP下载

一种基于FPGA的AD9945驱动设计

2011-07-25洪冰心郑力新

网络安全与数据管理 2011年18期
关键词:低电平寄存器电平

洪冰心,郑力新

(华侨大学 信息科学与工程学院,福建 厦门361021)

随着计算机和通信技术的发展,机器视觉的应用更加广泛,而FPGA因具有高性能、高灵活性、低开发成本、低成本的结构化ASIC移植等优点,在机器视觉中发挥着越来越重要的作用。AD9945是一款12 bit的高速CCD信号处理芯片,最高频率可达到40 MHz,非常适用于处理高速CCD信号。

1 AD9945芯片简介[1]

AD9945是一款高速CCD模拟信号处理芯片,最高频率可处理40 MHz的面阵CCD模拟信号。其信号链主要由相关双采样(CDS)、数控可变增益放大器(VGA)、黑色电平钳位、12位A/D转换器组成。

1.1 AD9945内部寄存器

AD9945有4个内部寄存器,分别为工作寄存器、控制寄存器、暗电平钳制水平寄存器、VGA增益寄存器。4个寄存器可通过3线串行数字接口(SCK、SDATA、SL)进行编程。通过编程可改变增益、黑电平校正、输入时钟极性及掉电模式等。各个内部寄存器详细设置见其芯片手册[1]。

对单个寄存器的赋值应满足其芯片时序图,并且注意4个寄存器应被连续写入,第一个寄存器的地址(最低的地址)被写入后,跟着写入一个测试位(置 0)和 4个12 bit的数据(不足 12 bit的补 0),其中地址位将跟着每一个12 bit的数据而自动增加。每一位SDATA的数据在SCK的上升沿被写入。在所有的寄存器的值写入期间,SL保持低电平,并且系统在SL上升沿后对寄存器的值进行更新。

1.2 AD9945工作流程

对于来自CCD的输入信号,AD9945通过一个由0.1 μF的外部耦合隔直电容以及内置的高精度直流电平恢复电路,使CCD信号的直流分量保持在1.5 V左右,从而与3 V单电源输入的 AD9945相匹配。接着AD9945对CCD信号进行相关双采样处理,即对CCD信号采样两次以提取视频信息,这有效地防止了低频噪音。相关双采样发生在SHP(复位电平)和SHD(像元信号电平)的上升沿,这两个时钟信号是完成采样、发挥CCD性能的关键。然后AD9945可以通过10 bit的串行数字接口编程设置对CCD信号的增益进行调整,增益范围从6 dB~40 dB。其增益调整的公式为:VGA增益(dB)=(VGA代码值×0.035 dB)+5.3 dB。为了清除CCD信号链中残留的偏置并跟踪暗电平低频的变化,AD9945还设置了一个光学暗电平钳制反馈环。通过内部寄存器设置暗电平的参考值,并与ADC输出的实际暗电平的值进行比较。产生的误差信号经过数字滤波,通过一个D/A转换器反馈到ADC的输入。暗电平钳制脉冲CLPOB应处于有效的CCD光学暗电平期间。最后CCD信号通过一个12 bit的AD转换器输出,并且输出时延迟10像素时钟。

2 AD9945驱动设计

2.1 AD9945时序分析[1-2]

AD9945要正常工作必须由时序发生器提供各种脉冲信号,以保证其内部寄存器能够正确赋值,双相关采样信号SHP和SHD时序应满足CCD信号要求以及CLPOB脉冲应处于有效的CCD光学暗电平期间。AD9945时序脉冲信号是一组周期性、关系较复杂的脉冲信号,它直接影响了对CCD信号的处理性能。本文设计的AD9945的时序包括三个部分:(1)3线串行数字接口(SCK、SDATA、SL),保证内部寄存器被正确赋值;(2)相关双采样信号SHP、SHD,确保采样的准确性;(3)光学暗电平钳制,减少钳制噪声。

预设当CCD数据频率为40 MHz时,各个驱动信号的相位关系如表1所示。通过观察各驱动信号的相位表和时序图[1]可以得到:如果设t=T/8(T是驱动信号的周期),则 SHP、SHD、DATACLK 的脉冲宽度分别为 2 t、2 t、4 t,并且 SHP、SHD之间相位差为 2 t。由于 DATACLK上升沿必须处于SHD的上升沿与下一个SHP的下降沿之间,因此设DATACLK上升沿到SHP下降沿的相位为t。所以如果基准时钟信号的周期为t,根据上述分析的结果可以得到各个驱动信号。

需要注意的是,表1中的各个驱动信号的相位关系是在CCD信号频率为40 MHz时的,如果CCD信号频率发生变化,各个驱动信号的频率也应该跟着变化。

表1 驱动信号相位关系

2.2 AD9945驱动的程序设计[3]

主控芯片选用现场可编程门阵列。FPGA可以通过QuartusII软件编程对其硬件结构和工作方式进行重构,从而使得硬件设计如同软件设计方便快捷。本设计主要使用VHDL语言来编写驱动程序。

AD9945最高工作频率可以达到40 MHz,但是为了配合前端CCD提供的图像数据信号(CCD信号为10 MHz),把 AD9945的工作频率设定为10 MHz(即 SHP、SHD、DATACLK频率=10 MHz),这样与前端CCD信号达到同步。通过观察SHP、SHD、DATACLK之间的相位关系以及上文的时序分析,发现需要一个80 MHz的基准时钟(1/t=8/T),然后对基准时钟进行 8分频,得到 10 MHz的信号。然而FPGA的基准时钟信号是由一块50 MHz的有源晶振产生,要想得到需要的80 MHz的信号,就必须进行小数分频处理。选择利用FPGA内部的锁相环PLL完成8/5的小数分频[3-4]。

2.2.1 AD9945内部寄存器程序设计

在AD9945对CCD信号进行采集之前,需要对其内部寄存器进行设置,使其工作在需要的状态下。此步骤需要对3线串行数字接口(SCK、SDATA、SL)进行编程。

首先定义一个串行数据类型SPI=RAM_ARRAY,并赋初值,即是预计要向各个寄存器写入的值,总共52位(3位地址位+1位测试位+每个寄存器12位×4个寄存器=52位)。通过SPI对串行数据接口SDATA进行赋值,实现对内部寄存器的设置。

然后编写程序产生串行数据输入时钟SCK,因为SCK是频率为10 MHz,占空比为1:1的方波,所以对80 MHz的基准时钟进行8进制计数div8=(0,1,2,3,4,5,6,7),当div8=0、1、2、3时,SCK为低电平。最后需要产生内部寄存器载入脉冲SL。定义一个52位的计数器 CNT52,对SCK的脉冲计数52次(用于串行数据的写入)。计数期间SL置 0,结束后置1,并且在此期间当每一个 SCK上升沿到来时通过SPI对SDATA进行串行写入(共52次)。

2.2.2 AD9945采样时钟的程序设计

通过对内部寄存器进行赋值,规定了AD9945的工作方式后,就可以编写程序设计AD9945的采样时钟SHP、SHD、DATACLK。其中 DATACLK是数据像素同步时钟,必须与前端CCD信号严格匹配,在这里也是通过软件产生,实际验证过程中再根据具体情况进行调整。

DATACLK 占空比为 1:1, 所以当 div8=0、1、2、3 时DATACLK为低电平;SHP和 SHD占空比都为 3:1,但是SHP比SHD超前,所以当div8=1、2时,SHP为低电平;当 div8=5、6时,SHD为低电平。

2.2.3 AD9945行钳制时钟输入

通过观察CCD输出信号,发现CCD信号的有效像元之间夹杂着一些光学暗电平和一些空白像素,在此区间CCD是没有输出的。通过软件设计PBLK和CLPOB脉冲信号,使AD9945采集的结果更准确。

设置CLPOB为20个像素时间宽度,而PBLK脉冲宽度的设置需要准确知道CCD空白像素的宽度,在此也是预设20个像素时间宽度,针对实际情况再进行调整。

2.3 驱动程序及仿真结果

由于设计需要的频率较高,担心FPGA编程后的管脚输出达不到所需电压,波形也不尽如人意,所以设计通过反向器来提升FPGA的输出信号,使其达到AD9945的输入要求,同时可以对波形进行整形,这就要求在编写FPGA程序时,时序编写要反向设计,按照上述时序分析反逻辑编写。

驱动电路实体端口定义如下:

软件(QuartusII)仿真结果如图(图 1~图 3)。

通过把仿真得到时序图与芯片要求的时序图进行比较,发现设计得到的驱动信号符合AD9945数据手册的要求,因此能正常驱动AD9945进行工作,完成对CCD信号的采集、处理。

[1]ADI公司.AD9945芯片资料,2003.

[2]常丹华.基于CPLD技术的CCD驱动时序产生方法[J].仪器技术和传感器,2001(3):26-28.

[3]潘松,黄继业.EDA技术与 VHDL(第二版)[M].北京:清华大学出版社,2007.

[4]吴继华,王诚.Altera FPGA/CPLD设计(初级篇)[M].北京:人民邮电出版社,2010.

猜你喜欢

低电平寄存器电平
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
浅谈物理电路与数字电路
三电平PWM并网变换器LCL滤波器量化设计
准PR控制的三电平逆变器及中点平衡策略
15-MeV电子直线加速器的低电平系统
光伏并网系统二电平逆变器的故障诊断
NPC五电平Z源逆变器的设计研究
集成电路静态参数测试