今天,大多数的CpLD(复杂可编程逻辑器件)都采用可减少功耗的工作模式,但当系统未使用时,应完全切断电源以保存电池能量,从而实现很多设计者的最终节能目标。图1描述了如何在一片CpLD上新增几只分立元件,实现一个节省电池能量的系统断电电路。在本例中,使用的CpLD是AlteraEpM570-T100。使用一只外接p沟道MOSFETQ1和一只国际整流器公司的IRLML6302(或等效器件),构成IC1CpLD的一个电源控制开关。CpLD和开关矩阵控制着MOSFET的栅极,当用户按下一个开关时,在Q1上施加开关的偏压。CpLD内带一个嵌入的计时器,用于监控开关和系统的工作。当系统处在一个特定的不工作周期内时,计时器会去掉MOSFET的栅极驱动,使CpLD以及连接到MOSFET上的其它元器件断电。
图1用几只外接电元和内部的逻辑块,就可以使一个CpLD电路在预设间隔后切断自身的电源
Q1的源极连接到电池的正极,其漏极连接到IC1的VCC(INT)、VCC(IO1)和VCC(IO2)电源脚和其它要断电控制的元件。当电源断开时,一只1kΩ的上拉电阻R3将Q1的栅源电压保持在0V,维持其关断状态。当切断IC1电源时,它通过CpLD的断电管脚建立一个对地的泄漏路径。EpM570T100带有热插保护,可将任何用户可接触器件的I/O脚限流在300mA以下。因此,即使在最差情况下,R3上出现的I/O脚电压也不会达到FET的0.7V最小栅极阈值导通电压。
按下任何开关都会通过开关的触点以及相应的二极管建立一个电流路径,因此在R3上出现约2.3V的栅源偏压,这个电压足以在约100ms时间内使Q1导通,并为IC1供电。当激活机械开关时,它们的最小导通时间至少为3ms,而一个典型的操作员的按/放时间至少要30ms。由于人的响应时间相对较慢,在操作者松开开关以前,CpLD可以完成导通、复位内部电路,并将使Q1导通的断电管脚维持在逻辑零状态。
除了用户设定的应用逻辑以外(图中未画),CpLD的电源控制逻辑新增了一对标准参数的库宏电路,它由Altera的QuartusII开发工具生成。内部的4.4MHz±25%振荡器Altufm_osc驱动一个模块化44millionLpM(库参数化模块)计数器。CpLD应用逻辑出现的逻辑低电平信号或关闭任何开关时都会使计数器复位。当复位计数器时,它的执行信号变低,驱动外接的断电管脚。当去掉复位时,反相的执行信号会重新开始LpM计数器的运行。
假如所有开关均为开,应用逻辑为不工作状态,则计数器在约10秒内计数到4400万,然后内部执行信号变高电平,关断计数器,并保持执行信号为高电平。接下来,断电管脚向VCC爬升,当断电管脚电压达到2.3V时关断Q1。关断CpLD的电源会使断电管脚进入三态(或不连接)模式,而R3使Q1保持关断。
用户可以使用符合JTAG标准的命令,用一根下载电缆连接到一个厂家含义的10脚插头上,对EpM570-T100进行配置。该过程要在配置前、中、后按一个外接的开关,以保证CpLD能在配置过程中获得电源。可以通过改变计数器的模块,将不工作时间设置为任何要的值。虽然电源、地和JTAG信号都使用专用的器件管脚,但也可以将任何通用CpLDI/O脚设定为开关输入和断电输出。
假如你的应用要一个按键开关矩阵,则可以用n个二极管搭成一个nxm开关,进行有效的上电检测(图2)。在本例中,一排排开关通过二极管D1~D4连接到MOSFET的栅极。电阻R8~R11为每行开关供应一个对地通路,并只在开关闭合时承载电流,使行输入为低电平,同时保证只消耗最小的电源电流。
图2一个小键盘矩阵可拓展CpLD电路的控制功能,并保留电路的自动断电功能
当用户按压任一开关时,Q1的栅极为低电平,CpLD接通。在用户释放开关以前,一个快速的CpLD上电例程,扫描开关阵列的各行和各排,以确定用户按下的是哪个开关。并且重置信号复位LpM计数器的不工作按时器。