|
摘要 介绍CCD驱动信号的VHDL语言设计方法。应用CPLD构建CCD采集系统的核心,由1片EPM7128S产生整个系统的时序逻辑,包括CCD时序信号发生、模拟开关切换信号、A/D转换控制信号、数据存储读写控制信号。 关键词 VHDL CPLD CCD MAXPLUSII CCD(Charge Coupled Devices)即电荷耦合器件,是20世纪70年代初开始发展起来的半导体器件。作为一种高灵敏光电传感器,在科学、天文、工业等领域有广泛的应用。本文采用线阵CCD,研制一种眼镜自动检测仪器。 复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)规模大、集成度高;可以替代几十甚至上百块通用IC芯片,实际上构成一个子系统部件,并且具有系统在线编程能力(ISP),为系统的调试和升级提供了保证。用户可以根据逻辑功能的需要设计构造自己的数字集成电路系统。正如Altera公司所宣扬的“专用集成电路能做到的,我们能做得更好”。在该公司的集成开发环境MAXPLUSII下,通过VHDL语言编写程序,编译后即可下载到CPLD芯片中,完成时序逻辑设计。MAXPLUSII是一个完全集成化的可编程逻辑设计环境;具有开放的界面,与结构无关,多平台,有丰富的设计库,模块化工具,并且支持各种硬件描述语言(HDL)。 1CCD采集电路设计 (1) 工作原理 本文设计的电路是眼镜检测仪的核心部件。该仪器的原理是,由于LED发出的光在CCD上的成像位置随不同眼镜对光路的改变而改变,因此由光斑在CCD上的相对位置即可计算出眼镜类型和度数。 电路原理框图如图1所示。CCD采集的信号经过放大,由模拟开关分时切换进行A/D转换;数字化后的数据送RAM存储;在单片机的控制下,检测结果在液晶上实时显示,用户也可以选择打印检测结果。为了调试方便,电路中加了串行调试接口,可将采集的数据送计算机进行分析。采集电路的核心是时序逻辑设计,用1片EPM7128S完成所有时序逻辑功能,包括CCD驱动信号、模拟开关控制信号、A/D转换的片选和转换控制信号、存储器操作所需的地址和控制信号。 (2) 芯片选择 正确选择合适的芯片是实现预定的功能保证。综合考虑检测精度与成本后,选用TCD1205线阵CCD接收光信号。该CCD有2048个有效像素,像素大小为14 μm×200 μm。 CPLD选用Altera公司MAX7000系列的EPM7128S。EPM7128S有2500个可用门、128个宏单元、8个逻辑阵列块,68个用户I/O引脚,引脚间的逻辑延迟为5 ns,并可通过工业标准4引脚JTAG接口实现在线编程。 A/D转换采用Maxim公司的MAX153。该芯片是1 Msps转换速度,8位分辨率,单电源供电,多种操作模式。其中RD模式只需要提供转换启动信号,操作简单,价格低廉,能很好地满足需要。 行列2片CCD总共采集4 KB的数据。我们采用8 KB×8 SRAM DS1225存储数据。该片读写速度快,掉电数据不丢失,并且有一定的数据冗余。 2时序逻辑的VHDL设计 CCD所需的驱动时序如图2、图3所示,RAM的读写时序如图4所示, A/D转换控制时序如图5所示;VHDL设计的时序逻辑仿真如图6所示。 图1电路原理框图图2CCD时序图3CCD时序要求图4A/D时序要求图5RAM读写时序要求根据CCD对脉冲沿的要求,信号经过7414取反后再驱动CCD,因此在VHDL程序中,CCD信号是取反的。用VHDL产生频率大致相同的脉冲信号比较容易,比如CCD驱动信号中的RS、BT、φ1、φ2(仿真图中的d1、d2)以及A/D转换信号等;而要产生频率差别很大的脉冲信号却比较困难,比如,本文中需要同时产生SH、ICG、 RS、BT以及A/D转换、RAM的地址写信号等。有一个方法就是使用计数器来分频系统的时钟输入信号。下面的程序即可实现分频,多次分频就可以得到想要的频率信号。PROCESS ( clk ) variable q10: integer range 0 to 5; variable q4:integer range 0 to 9; BEGIN图6时序逻辑仿真IF ( clk ''EVENT AND clk = ''1'') THEN if (q10 = 4) then q10 :=0; ste<=not ste; else q10 := q10+1; end if ; END PROCESS; 但是这样非常消耗资源,且计数器用得越多,延迟越大。因此,采用了另外一种解决方案,通过分支CASE语句,配合一个15位矢量信号实现了功能要求。 signal qd1 : std_logic_vector (14 downto 0); case qd1 is when "000000000000000" => rsbtc<=''0''; init <=''1''; ccdsh<= ''1''; ccdicg <= ''0''; ramfrom0<=''1''; end case;由于所有的时序逻辑都由EPM7128S产生,电路中只有一个晶振,各芯片之间的逻辑关系完全由编程控制,因此很容易协调A/D转换、RAM控制之间的时序关系。完整的源程序见本刊网站www.djp.com.cn。 结语 可编程逻辑器件(CPLD)精简的系统,灵活的在线编程代表着大规模控制电路的发展方向。本文介绍了应用可编程逻辑器件作为CCD图像采集控制系统,结合VHDL语言实现时序信号,不需要处理器的参与就可以完成信号的采集与存储,系统简单可靠。软硬件稍作修改即可以用于其他CCD系统。 参考文献 1宋万杰,罗丰,吴顺君. CPLD技术及其应用\[M\]. 西安:西安电子科技大学出版社,2000 2曾繁泰,陈美金. VHDL程序设计\[M\]. 北京:清华大学出版社,2001 3王毅平,张振荣. VHDL编程与仿真\[M\]. 北京:人民邮电出版社,2000 4蒋璇,臧春华. 数字系统设计与PLD应用技术\[M\]. 北京:电子工业出版社,2001 5吴建文,姚永强. 用于天文观测的CCD相机系统研究\[J\]. 单片机与嵌入式系统应用, 2002(12):62~65 吴建文:博士,研究方向为仪器仪表。
|