用CPLD实现船用柴油机监测仪的控制

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

用CPLD实现船用柴油机监测仪的控制作者:叶凌峡摘要:利用CPLD和EEPROM配合来实现船用柴油机监测仪的测控功能,以提高系统的可靠性。设计中针对柴油机监测仪需对其转速,机油压力,水温和油温进行监测的要求,运用VHDL语言实现了A/D采样控制器的设计,测频控制的设计和与EEPROM的接口设计,并介绍了所用的CPLD芯片XC95108及硬件描述语言VHDL的特点。本次设计是对CPLD开发的一项综合性应用。关键词:柴油机监测仪、CPLD、VHDL船用柴油机在工作时需要随时对其转速,机油压力,水温和油温进行监测,一旦其值超过警戒值,柴油机监测仪将报警并发出停机信号,从而起到保护柴油机的作用。柴油机的工作往往是长时间不间断的,而且工作环境也比较恶劣,因此柴油机监测仪需要有比较好的可靠性和稳定性。以往的柴油机监测仪中的控制使用单片机来完成,实现起来较容易,但由于受到外界的干扰太多,整个系统的工作不是很稳定,现在用CPLD和EEPROM相结合来实现柴油机监测仪的测控部分,将极大的提高系统的可靠性,更好的完成对柴油机的监测工作。并且由于现在拥有先进的EDA工具软件和强大的VHDL语言,使得CPLD的开发和单片机一样方便高效。在设计实现中,涉及到了CPLD对A/D采样控制器的设计,与EEPROM的接口设计和测频控制的设计,是对CPLD的一次综合应用。一、柴油机监测仪简介:柴油机监测仪是实时监测柴油机转速,柴油机机油压力,柴油机水温和柴油机油温的仪器,并在柴油机到达设定值时声光报警。它是通过磁阻传感器把测得的柴油机实时转速转换为电脉冲信号,监测仪通过换算得出转速并由4位数码管显示器实时的显示柴油机转速,并通过比较设定的报警转速,大于设定的转速时声光报警。油压显示是由机油压力传感器把机油压力信号转变为电信号由监测仪实时显示机油压力,并通过比较设定的机油压力值,小于设定值时声光报警。水温及油温是通过温度传感器把测得的温度转变为电信号,监测仪实时的显示水温及油温。并比较设定的水温及油温值,大于设定值时声光报警。参数如下:电压:直流18-30V;测速范围:0-9999转/分,报警转速为1100转;水温显示0--99度,报警温度为60度;油压显示0--9.9公斤力,报警压力为<1.5公斤力;油温显示0--99度,油温报警为85度。二、CPLD器件选用:复杂的可编程逻辑器件CPLD(即ComplexProgrammableLogicDevice)将PLD的概念扩展到更高层次的集成度范畴,从而改善系统的性能,进一步缩小PCB板的面积,提高可靠性,降低成本。采用在系统可编程ISP(In-SystemProgrammability)技术以CPLD构成的系统可以在装配后进行逻辑设计和编程下载,并能根据需要对系统硬件功能实时的加以修改或按预定程序改变逻辑组态,从而使整个硬件系统变得像软件设计那样灵活而易于修改。这里选用XILINX公司的CPLD芯片XC95108作为主控制芯片,实现柴油机监测仪的控制。XC95108基本特征如下:☆128个宏单元,2400个可编程逻辑门☆69个通用输入/输出I/O引脚☆至少10000次编程擦写周期☆高速全局时钟输入☆最高频率125MHz☆传输延迟7.5ns☆兼容TTL输入/输出电平或3.3V电平☆高速全局引脚☆防止非法COPY的可加密单元☆百分之百可测☆强化的引脚锁定结构☆支持扩展的IEEEStd1149边界扫描☆可编程节能模式☆支持同时多片并行在系统编程☆引脚位置可任意设置☆24mA电流高电平输出驱动三、VHDL语言及其特点:VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年,最新版为1993年由IEEE修订,得到了众多的EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体分成外部和内部,即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下:1.与其它的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。2.VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。3.VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。4.VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。四、实现方案:用CPLD和EEPROM来实现监测和控制保护,用AT89C2051和HD7279A来完成显示和键控,由于工作的独立性,使的整个系统变得可靠,即使单片机死机导致显示和键控失效,但由于自动控制部分不受影响,仍然可以保证柴油机的安全工作,这时只要复一下位,显示和键控就会正常。EEPROM用来存储进行各项换算后的数据,可以根据不同的需求,不同的测量精度来确定其容量大小,本文选用的精度较低,所以仅需要较小容量的EEPROM就可实现其功能了。系统模块关系如图1。图1系统模块关系图CPLD的内部工作逻辑如图2,其内部功能块分为五个部分。图2CPLD内部功能图1.转速处理模块柴油机的转速以频率形式输入,此模块完成频率的测量,其基本原理是计算每秒钟内待测信号的脉冲个数。模块的计算使能信号TESTEN能产生一个1秒脉宽的周期信号,并对计算器进行同步控制。当TESTEN高电平时允许计数,低电平时停止计数,并保持其所计的数,通过锁存器将数据输出之后对计数器清零,为下一秒钟的计数操作做准备。测频控制信号发生器的工作时序如图3。取控制信号时钟CLK1的频率为1Hz,那么信号TESTEN的脉宽恰好为1秒,可以作为闸门信号。然后根据测频的时序要求,可得出锁存信号LOAD和清零信号CLR_CNT的逻辑描述。由图3可见,在计数完成后,即计数使能信号TESTEN在1秒的高电平后,利用其反相值的上升沿产生一个锁存信号LOAD,在0.5秒后CLR_CNT产生一个清零信号上升沿。图3测频控制信号工作时序图模块VHDL程序如下:libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;entityTESTFisport(FS:inSTD_LOGIC;CLK1:inSTD_LOGIC;QD1:outSTD_LOGIC_VECTOR(7downto0));endTESTF;architectureTESTF_archofTESTFissignalTESTEN,CLR_CNT,DIV2CLK1,LOAD:STD_LOGIC;signalMQ:STD_LOGIC_VECTOR(7DOWNTO0);beginPROCESS(CLK1)BEGINIF(CLK1'EVENTANDCLK1='1')THENDIV2CLK1=NOTDIV2CLK1;ENDIF;ENDPROCESS;PROCESS(CLK1,DIV2CLK1)BEGINIF(CLK1='0'ANDDIV2CLK1='0')THENCLR_CNT='1';ELSECLR_CNT='0';ENDIF;LOAD=NOTDIV2CLK1;TESTEN=DIV2CLK1;ENDPROCESS;PROCESS(FS,CLR_CNT,TESTEN)BEGINIF(CLR_CNT='1')THENMQ=00000000;ELSIF(FS'EVENTANDFS='1')THENIF(TESTEN='1')THENMQ=MQ+'1';ELSEMQ=00000000;ENDIF;ENDIF;ENDPROCESS;PROCESS(LOAD)BEGINIF(LOAD'EVENTANDLOAD='1')THENQD1=MQ;ENDIF;ENDPROCESS;endTESTF_arch;2.A/D采样控制模块系统用ADC0809的三个模拟输入通道对柴油机油温、水温和压力进行采样,转换为8位数字信号输出。本模块通过对ADC0809进行控制,循环从ADC0809中取出各项数据值。下面列出ADC0809引脚功能示意图和用CPLD实现对其控制的VHDL程序及相应注释。模块VHDL程序如下:libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entityTESTTisport(D:inSTD_LOGIC_VECTOR(7downto0);--ADC0809A/D变换输入ST:inSTD_LOGIC;--采样控制时钟信号EOC:inSTD_LOGIC;--A/D转换状态信号OE:outSTD_LOGIC;--输出使能信号ALE:outSTD_LOGIC;--通道选择地址锁存信号STA:outSTD_LOGIC;--转换启动信号ADDR:outSTD_LOGIC_VECTOR(2downto0);--模拟通道选择QADDR:outSTD_LOGIC_VECTOR(1downto0);QD2:outSTD_LOGIC_VECTOR(7downto0));endTESTT;architectureTESTT_archofTESTTisSIGNALQQ:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALTOA:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALDK,CLR:STD_LOGIC;--A/D转换启动信号发生器beginOE=NOTEOC;CLR=NOTEOC;PROCESS(EOC)BEGINIF(EOC='1'ANDEOC'EVENT)THENQQ=D;--用A/D转换状态信号EOC的上升沿将变ENDIF;--换好的数据锁存ENDPROCESS;PROCESS(CLR,ST)BEGINIF(CLR='1')THENDK='0';ELSIF(ST='1'ANDST'EVENT)THENIF(TOA011)THEN--依次选通模拟通道TOA=TOA+'1';ELSETOA=000;ENDIF;DK='1';ADDR=TOA;ENDIF;ENDPROCESS;ALE=DK;STA=DK;QD2=QQ;QADDR=TOA(1DOWNTO0);endTESTT_arch;3.ROM数据处理模块此模块从A/D采样控制模块和转速处理模块输入测量数据,将数据规范为12位ROM地址,依次从外部ROM中读取显示数据,并输出给系统显示模块进行处理。ROM中以页面形式存储转换数据,每页4个字节,数据格式如表1。12位地址信号中,最高2位用于项目选择,依次设置为:“00”油温,“01”水温,“10”压力,“11”转速。最低2位用于寻址页面内4个字节的数据,其余8位地址用于寻址有效页面。模块VHDL程序如下:libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entityRCONTROLLORisport(QD1:inSTD_LOGIC_VECTOR(7downto0);QD2:inSTD_LOGIC_VECTOR(7downto0);QADDR:inSTD_LOGIC_VECTOR(1downto0);K

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功