郝红俊
摘要:使用CPLD内部的资源施密特触发器和反相器,只需外加一个RC就可以设计出一个稳定的振荡器,为CPLD或外围器件提供时钟源
灵活方便的设计及低成本的特性,使之具有很好的产品商业使用价值。
关键字:CPLD;施密特触发器;振荡器
前言
电子技术的飞速发展,尤其是消费类电子产品在成本、产品功能及品质的更高要求、使消费类电子产品的设计不是简单地要求设计出来,而是要考虑低成本高品质。CPLD的成本低,占用PCB面积小,功耗低和灵活的后期可编程特性在嵌入式设计中得到越来越广泛的应用。
由于CPLD资源较小,大部分工程师都用CPLD来实现整合逻辑电路,扩展主处理器的I/O功能,或做电源管理功能,由于CPLD内部没有振荡器,而振荡器的功能对于CPLD做电源管理,产品的系统管理尤为重要,如果在CPLD外部加一个振荡器就增加了整个设计的成本。利用CPLD内部的反向器,再加上外部简单的RC,即可以实现一个简单的振荡器供CPLD内部设计使用、可以降低设计成本,灵活性强,稳定性高。
CPLD内部施密特触发器
CPLD内部施密特触发器电器特性见表1。目前大部分使用的CPLD都需要两个电源VCC和VCCIO,VCC就是CPLD内部的核电压,VCCIO是CPLD所有I/O引脚电压。
从表1看出,Vt+和t是取决于VCCIO的电压。目前大部分设计都选用VCCIO为3.3V,所以,VT+(min.)=0.5×3.3V=1.65V,VT+(max.)=0.8×3.3V=2.64V
VT(min.)=0.2×3.3V=0.66VVT(max.)=0.5×3.3V=1.65V
从上面给出的VCCIO为3.3V计算可以看出,对于施密特触发器当输入电压在1.65V下输出都为低电平,当输入电压在1.65V之上都为高电平,1.65v为高低电平的临界点。
振荡器实现
利用CPLD内部的施密特触发器使输入波形得到校正,再加上反向器反向和外部RC实现振荡器,只需要在使用CPLD的任意两个I/o PIN引脚(当然从CPLD内部原理来看最好是使用相邻的两个PIN引脚,会减小CPLD内部资源的占用)。其中一个PIN引脚串入电阻,外接一个对地电容,当内部的A点为高电平时,PINI会通过RI对c1充电,由于电容的电压不可越变,电压是对电流的积分,所以电压会逐渐上升,当电平上升至0.5×VCCIO,CPLD施密特触发器才认为是高电平,再经过内部的反向器会反向,所以A点会变成低电平,这时c1会通过R1逐渐放电,当放电电平低于0.5× VCCIO时,反向器反向A点又变回高电平,这样反复的振荡就构成了一个稳定的振荡器时钟源(见表1)。
CPLD实现代码
本设计使用VHDL语言,选用XILINX公司的C00LRUNNER-II系列的CPLD器件,基于0.18nm CMOSCPLD,3.8ns PIN-to-PIN延时,快速JTAG下载,2个bank,具体实现见代码列表。
振荡器应用
上述代码通过XILINX的编译综合器后,会产生一个可下载档案,此档案可以通过JTAG直接下载到芯片中使用,由于代码示例的为一个实时振荡器,也就是只有芯片上电,振荡器部分会一直工作,对于用于电源管理的嵌入式产品设计,由于一直振荡带来额外的电功耗损耗,功耗的损耗和振荡的频率是相关的,当频率越高时,功耗越大。所以,设计还可以再被优化使用。比如,当符合什么条件时振荡器才开始振荡,或者达到什么条件时振荡器停止振荡,这样灵活的优化设计会给产品带来更多的附加价值,延长电池的使用寿命。
振荡器的振荡频率是通过外部引脚的电阻和电容来调整的、当电阻越小,电容越小时,振荡的频率就很高。当电阻很大时,电容也变大,振荡的频率就会变低。振荡器的精度取决于外面电阻和电容的精度,电阻的精度以现在工艺可以做到1%的正负误差,电容可以选择5%的正负误差,高精度的电阻和电容会带来比较精准的振荡频率。
结语
本文的设计充分利用了CPLD内部的硬件资源和VHDL灵活严谨的编程和外加简单的RC实现了一个振荡时钟源,既可供CPLD内部设计使用,也可以供给外部其他设计使用,该设计减小了设计的复杂性,通过CPLD的灵活可编程性降低了产品的成本,具有一定的商业应用价值。