1引言
SoC(System on Chip)是将来电路设计的一个趋势,由于CPLD(Complex Programmable Logic Device)芯片密度不断增加和新一代EDA(Electronic Design AutomaTIc)开发工具的使用,利用CPLD器件实现SoC已成为可能,而单片机与CPLD之间的通信和合作方法亦成为目前单片机应用的一个热门方向。
通过水流、气流的喷射和循环以达到按摩功效并具备一些辅助功能的按摩浴缸已经成为时尚产品,而目前市场上的一般产品往往采用在浴缸中安装机械式阀门,并在浴缸表面配以手动的开关、旋钮来实现诸如背部、脚部及其他部位的出水按摩效果,这样的方式一来用户使用不方便,二来安装难度增加,三者维护成本高。
按照新型按摩浴缸的模型设计,需控制的输出包括水泵1路、气泵1路、加热器1路、电控阀门12路、灯光6路、消毒泵1路,共22路输出,另外还包括了故障检测(19路)及液位检测(2路)共21路输入。在单片机尚要兼顾键盘、LCD显示及遥控器的情况下,直接使用其I/O端口显然是不现实的。通过引入CPLD的设计可以解决上述多输入输出的控制问题。
2 CPLD介绍
ATF1508AS是ATMEL公司生产的电可擦写、可在线编程的逻辑电路器件,它内含128个逻辑宏单元,可以通过LogicDoubling技术进行逻辑功能设计的扩展,可以灵活地实现用户设计的要求。
ATF1508AS共有84个管脚,其中61个管脚可作为I/O使用,完全可以满足上述新型浴缸的控制要求。图1是ATF1508AS的组成示意图。
图1 ATF1508AS的组成示意图
3 CPLD应用开发
CPLD的设计方法包括电路原理图法、Verilog编程、VHDL编程等,本设计中采用电路原理图的设计方法,下面说明相关设计过程。
显然CPLD是处于单片机与驱动控制电路之间的接口部分,单独将它抽象出来,则其输入输出框图如图2所示:
图2 CPLD输入输出框图
3.1 输出部分设计
由于前述新型浴缸模型中有22路输出,所以输入信号应设计五位地址输入线(25=32》22)以满足输出数量的要求,另外相应的控制信号线还包括复位、时钟及输出开关控制信号共三个。显然,对输出部分来说,CPLD的功能类似于5线-22线的译码器,但由于输出信号之间要求相互不能影响,所以在译码器的基础上需增加触发器以实现上述要求,同时还需加入相应输出设备的开关控制信号。
5线-22线译码器是用两片4线-16线译码器74154扩展而成的(多余的输出不用), 对于4线-16线译码器74154来说,它有两个片选信号控制端G1N和G2N,只有当G1N和G2N都为逻辑“0”时,74154芯片才能正常译码。利用G1N进行两片74154的扩展,再利用G2N作为输出设备的开关控制信号刚好可以满足设计需求。扩展后的译码器电路能实现5线-32线的译码,可以满足22路输出的要求,因为输出设备存在多路共同输出的组合,通过在译码器的输出端添加多个双二输入JK触发器7474可以实现这一功能。分析JK触发器的特性方程:Qn+1=J + Qn可知,当
(1) J=1,K=0时Qn+1=1;对应于相应设备关闭;
(2) J=0,K=1时Qn+1=0;对应于相应设备开启;
(3) J=K=0时Qn+1=Qn;对应于相应设备保持原开关状态;
(4) J=K=1时Qn+1= 。(实际上该种组合因电路设计的原因不存在)
针对图3所示的电路,经分析可知,左半部分的电路用于控制输出设备的开启,而右半部分的电路控制输出设备的关闭,且由于各个输出设备的控制码不同,所以不存在冲突的问题。输出部分的设计占用了CPLD的30个I/O端子,其中8个I/O端子用于与单片机的连接,另外22个I/O端子通过驱动控制电路与相应设备连接。
对于设计完成的输出控制部分来说,其与单片机连接的8位数据格式及相应定义如下:
CLRN CLK G2N G1N A B C D
CLRN:复位信号(低电平有效)
CLK:时钟信号(上升沿有效)
G2N:输出控制信号(“0”:开,“1”:关)
G1N、A、B、C、D:地址码输入
3.2输入部分设计
3.2.1 故障检测部分设计
该部分是针对浴缸控制器中关于故障检测的功能进行设计的,它的信号来自各相应设备的故障检测电路,并规定“1”表示设备发生故障,“0”表示设备正常。对故障检测的输入部分来说,CPLD相当于一个多路数据选择器。利用两片16选1数据选择器74150可以扩展成32选1数据选择器,从而满足19路故障检测信号输入的要求。具体的实现方法是利用74150的片选端EN作为扩展端,对于74150来说,只有当EN为逻辑“0”时,数据选择器才能正常工作,设计电路如图3所示。故障检测输入部分的设计占用了CPLD的27个I/O端子,其中6个I/O端子(5个地址码端子,1个选择输出端子)与单片机连接,其他21个I/O端子通过接口电路与故障检测电路连接。
3.2.2 液位检测部分设计
液位检测是新型浴缸系统正常工作的一个重要组成部分。液位检测包括浴缸液位检测和消毒液液位检测两个部分,其中浴缸液位是否达到预定水位是系统中水泵、气泵等设备开启的必要条件,而消毒液液位是否高于正常位置也是系统能否正常消毒的充分条件。
实际设计中通过两个非接触式液位开关检测相关液位,液位开关的输出为标准的TTL电平信号,并规定“1”表示液位达到设定值,“0”表示液位未达到设定值。如果浴缸液位未达到设定值,则系统会提示加水信息,如果消毒液液位低于设定值,则系统会提示添加消毒液。
对于设计完成的输入控制部分来说,其与单片机连接的6位数据格式及相应定义如下:
Yselect:数据选择输出
A0、A1、A2、A3、A4:地址码输入
3.3 CPLD的烧录
上述关于CPLD输入输出功能的设计是使用MaxplusII工具进行的,设计完成后得到的结果是*.pof文件,使用Pof2Jed工具将*.pof 转换为 *.jed 文件, 然后利用 AtmIsp 工具将相应的*.jed烧录到CPLD中,就完成了整个CPLD芯片的设计、实现过程。
图3 CPLD 设计示意图
4 CPLD的应用效果[1][2]
4.1 输出设备控制
在所有的控制设备中,除了气泵、多路水阀及灯光以外,其他均是简单的开关控制。现在以气泵及灯光的控制说明CPLD的应用效果。
4.1.1气泵控制
根据气泵电机的组成原理,经过实际测试,可以通过PWM调节实现气泵的调速,而用单片机实现不同的脉冲输出或PWM波形是非常简单的功能,具体的电路连接示意图如下图所示。
通过实验,我们实现了气泵的无极调速。下面是典型的脉冲波形输出示意图。
4.1.2灯光控制
一般情况下,浴缸中安装三个彩灯及三个白灯,均是由高亮度发光二极管构成,彩灯按照红、篮、绿三色由2个、3个、2个共7个发光二极管组成,白灯由7个白色发光二极管组成,要求白灯能够实现亮度的控制,彩灯能够实现几种不同周期循环状态的控制。
白灯亮度的控制采用控制不同发光二极管组合的方式实现,亮度共分7级,分别对应相应数量的白灯点亮,具体实现时,将白灯分成三组:第一组1个白色发光二极管,第二组2个白色发光二极管,第三组4个白色发光二极管,通过这三组白色发光二极管的组合就可以实现7级亮度的调节。
彩灯循环状态的控制采用脉冲式输出的方式实现,配合定时器及外围添加逻辑或门的方式可以具体实现彩灯循环的控制。
4.2 输入设备控制
4.2.1 故障检测控制
故障检测是本文作者针对新型多功能浴缸提出的一种全新功能,它一方面可以提醒用户关于系统故障的信息,另一方面,也为浴缸生产厂家的维护人员提供了全面的检测、维修信息。
如前所述,故障检测的信号来自各相应设备的故障检测电路,并规定“1”表示设备发生故障,“0”表示设备正常。在软件实现的过程中,首先要建立一个设备与地址A4-A0的对应表,然后定时轮询CPLD的相应端子,采集故障检测信息,并根据相应的信息进行显示及驱动蜂鸣器报警。同时软件系统还会存储累积的设备故障次数,以方便厂家分析故障原因。
4.2.2 液位检测控制
系统响应按键 *** 作需进行关于水泵、气泵、加热器、阀门的启动时,均会先行采集液位开关的输入状态,并根据采集的信息判断是进行设备开启 *** 作,还是显示错误提示。
5 结束语
本文作者的创新点在于将单片机控制与CPLD的应用综合在新型浴缸的设计和生产过程中。从以上CPLD的实际应用效果可以总结出,使用CPLD不但可以简化控制电路的设计,而且可以获得稳定、可靠的控制效果,同时还降低了系统开发的成本,完全达到了设计要求。可以预见的是,随着CPLD芯片密度的进一步提高,必然会将单片机及CPLD的设计加入SoC,以形成更加专用的SoC系统,进一步降低产品的生产成本,并提高系统的保密性。
责任编辑:gt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)