1、 XXX大学本科生毕业论文 IV 汽车电子防盗报警系统软件设计摘要:随着人民生活水平的不断提高,汽车的普及应用为人们的生活带来了方便,但也给人们提出了一大难题汽车防盗。本文采用自顶向下的EDA设计方法,用VHDL语言进行基于可编程逻辑器件的汽车电子防盗报警系统软件设计。系统划分为四个模块:启动/解除警戒模块、检测信号模块、光报警模块和声音报警及锁止模块,其中检测信号模块和光报警模块用有限状态机实现。本设计采用Xilinx ISE进行前端设计输入、后端布局布线及配置下载;用Modelsim软件对系统进行功能仿真;用Leonado Spectrum进行综合。系统实现了实时监测非法入侵,及时声光报警
2、、启动/解除警戒和禁止非法使用发动机移动车辆等基本功能。 关键词:自顶向下;有限状态机;VHDL语言;汽车防盗 The Software Design of Guarding Against Theft and Alarm System about AutomobileAbstract: With the incessant improvement of the standard of living, the popularization of the car brings much convenience in peoples life, but at the same time the u
3、se of the car also brings a big problem-guard against theft of cars. In this paper, it adopts top-down design method of EDA and carries through the design of guarding against theft and alarm system about automobile with VHDL language, which bases on Programmable Logic Device (PLD). The system is con
4、sist of four modules, including starting and closing alertness module, detecting signal module, alarm of sound and locked module, alarm of light module, detect signal module and alarm of light module were carried out by finite state machine. This design uses Xilinx ISE to carry through foreside inpu
5、tting design, placing route and configuring download of back-end; Function simulating of the system was carried out by Modelsim; It uses Leonado Spectrum to carry through synthesis. The system carries out some basic functions, there are detecting inbreak in real time, alarming through sound and ligh
6、t in time, starting and closing alertness, forbidding moving car by engine and so on. Key words: top-down, finite state machine, VHDL language, guard against theft of automobile目 录第1章 绪论11.1 课题背景、目的和意义11.1.1 课题的背景11.1.2 课题的目的和意义41.2 论文的主要内容41.3 本章小结4第2章 汽车防盗报警系统整体设计52.1 系统分析与设计52.1.1 设计要求52.1.2 系统分析
7、52.2 系统工作原理及模块划分62.3 本章小结7第3章 系统软件设计83.1 VHDL编程语言83.2 系统模块设计83.2.1 启动/解除警戒模块设计83.2.2 检测信号模块设计93.2.3 光报警模块设计123.2.4 声音报警及锁止模块设计153.3 系统顶层设计153.4 本章小结16第4章 系统模块实现184.1 调试与仿真综合软件介绍184.2 系统模块实现194.2.1 启动/解除警戒模块实现204.2.2 检测信号模块实现204.2.3 光报警模块实现214.2.4 声音报警及锁止模块实现234.3 本章小结24第5章 系统顶层实现255.1 系统顶层仿真255.2 系统
8、顶层综合265.3 系统引脚锁定265.4系统实现过程及布线后仿真275.5 使用iMPACT进行下载配置285.6 本章小结30结论31致谢32参考文献33附录34XXX大学本科生毕业论文第1章 绪 论1.1 课题背景、目的和意义1.1.1 课题的背景 众所周知,汽车是当今世界主要的交通工具之一。随着人民生活水平的不断提高,汽车越来越成为人们生活中不可缺少的一部分,从世界上第一辆T型福特车被盗开始,偷车已成为现今城市最常见的犯罪行为之一。随着汽车数量的增加,特别是轿车正以很快的速度步入家庭,车辆被盗的数量逐年上升,这给社会带来极大的不安定因素,担心车辆被盗,成为困扰每一位汽车用户的难题。人们
9、为了车辆的安全大都安装了汽车防盗报警系统。汽车防盗报警器的使用在很大程度上有效地保护了国家和人民生命财产的安全。使人们有了安全的依靠。同时车辆防盗报警器的使用也减少了盗窃犯罪事件的发生,起到了一定的威慑作用。随着科学技术的进步,为对付不断升级的盗车手段,人们研制开发不同方式结构的防盗器。目前汽车防盗装置已经由初期的机械控制,发展成为电子密码、遥控呼救、信息报警等高科技产品,早期的防盗装置主要用于控制门锁、门窗、起动器、制动器、切断供油等联锁机构,以及为防止盗贼拆卸零件而设计的专用套筒扳手。随着科技的发展,汽车防盗装置日趋严密和完善,目前防盗器按其结构与功能可分四大类:机械式、电子式、芯片式和网
10、络式,各有优劣,但汽车防盗的发展方向是向智能程度更高的芯片式和网络式发展1。1、机械锁机械锁是最常见也是最早的汽车防盗器,现阶段在高中档汽车中几乎不被使用,即便是低档汽车也已经很少单独使用,主要和电子式、芯片式联合使用,分为方向盘锁和变速箱锁两大类。其中方向盘锁在使用时,主要是将方向盘与制动脚踏板连接一起,使方向盘不能作大角度转向及不能制动汽车。而安装变速箱锁是在换挡杆附近安装变速锁,可使变速箱不能换挡。通常在停车后,把换挡杆推回P位或挡位置,加上变速箱锁,可使汽车不能换挡。方向盘锁和变速箱锁、钩锁等这些机械式防盗器,主要是靠锁定离合、制动、油门或转向盘、变速杆来达到防盗的目的,但只能防盗不能
11、报警。另外,机械式防盗锁靠坚固的金属结构锁住汽车的操纵部位,使用起来不隐蔽,且占用驾驶室空间;机械锁主要起到限制车辆操作的作用,对防盗方面能够提供的帮助非常有限,很难抵挡住生猛型盗车贼手中撬棍、钢锯、老虎钳等重型工具的盗窃。但它们能拖延偷车贼作案的时间却是事实,一般偷车贼要用几十秒甚至几分钟才能撬开方向盘锁,变速杆锁的破坏时间还要长一点。2、电子式防盗系统在现阶段,应用最广泛的是电子式防盗锁。机械防盗装置是预防汽车被盗的装置,但这种装置不能防止他人进入驾驶室、车内,打开行李箱、发动机罩或起动发动机等。而电子防盗装置不仅能可靠地防止汽车被盗,而且能防止他人拆卸某些汽车零件和进入车内。电子防盗报警
12、器,也称微电脑汽车防盗器,是目前使用最广泛的类型,包括插片式、按键式和遥控式等电子式防盗器。它主要是靠锁定点火或启动系统来达到防盗的目的,同时具有声音报警功能。这种防盗器共有4种功能:(1)服务功能,包括遥控车门、遥控起动、阻吓窃贼作用等;(2)警惕提示功能,具有触发报警记录(提示车辆曾被人打开过车门);(3)报警提示功能,即当有人动车时发出警报;(4)防盗功能,当防盗器处于警戒状态时,切断汽车上的起动电路,使汽车无法起动。该类防盗器安装隐蔽,功能齐全,无线遥控,操作简便,但需要靠良好的安装技术和完善的售后服务来保证。电子防盗系统的致命弱点在于其电子密码和遥控操作方式,当车主用遥控器开关车门时
13、,匿藏在附近的偷车贼可以用接收器或扫描器盗取遥控器发出的无线电波或红外线,再经过解码,就可以开启汽车的防盗系统。另外这类电子防盗报警器的使用频率普遍被限定在300350MHz的业余频段上,而这个频段的电子波干扰源又多,电波、雷电、工业电焊等都会干扰它而产生误报警。如上海通用别克系列轿车上配置的Passkey和Passkey防盗系统就是电子式防盗系统。3、芯片式数码防盗系统电子防盗系统固然有其优点,但随着时间的推移,人们研制出了更先进性的替代品,这就是目前在汽车防盗领域位居重点的芯片式数码防盗器。由于特点突出且使用方便,大多数轿车均采用这种防盗方式作为原配防盗器。目前很多高档车,如国产的大众、广
14、州本田、派力奥、爱丽舍、毕加索等车型已装有原厂的芯片数码防盗系统。芯片式数码防盗器基本原理是锁住汽车的马达、电路和油路,在没有芯片钥匙的情况下无法启动车辆。数字化的密码重码率极低,而且要用密码钥匙接触车上的密码锁才能开锁,杜绝了被扫描的弊病。 目前芯片式防盗已经发展到第四代,最新面世的第四代电子防盗芯片,具有特殊诊断功能,即已获授权者在读取钥匙保密信息时,能够得到该防盗系统的历史信息。系统中经授权的备用钥匙数目、时间印记以及其他背景信息,成为收发器安全特性的组成部分。第四代电子防盗系统除了比以往的电子防盗系统更有效地起到防盗作用外,还具有其他先进之处,如它独特的射频识别技术可以保证系统在任何情
15、况下都能正确识别驾驶者,在驾驶者接近或远离车辆时可自动识别其身份自动打开或关闭车锁;无论在车内还是车外,独创的TMS37211器件都能够轻松探测到电子钥匙的位置。国内不少厂商通过引进国外先进技术开发出了我国的芯片式防盗系统,如爱丽舍应答式防盗系统是在BOSCH MP5.2电喷系统的基础上增加了一套新系统,它可以用来锁定和解锁发动机电脑,从而来实现车辆的防盗功能,当插入一把带有应答器的正确钥匙并打到“M”位时,系统自动完成对码、解锁发动机电脑,否则发动机电脑处于闭锁状态,发动机点火和喷油的控制被切断,汽车无法起动。4、网络式防盗系统网络防盗是指通过网络来实现汽车的开关门、启动马达、截停汽车、汽车
16、的定位以及车辆会根据车主的要求提供远程的车况报告等功能。网络防盗主要是突破了距离的限制。目前主要使用的网络有:无线网络(BB机网络)、卫星定位跟踪系统(简称GPS),其中应用最广的就是GPS。GPS系统全称为“全球卫星定位系统”。实际上,此技术是美国耗资100多亿美元,历时20多年发展的一大航天工程。1991年在海湾战争中被首次使用,海湾战争之后,GPS技术在非军事领域得到了更加深入的应用,在汽车反劫防盗领域已取得实际效果。GPS卫星定位汽车防盗系统属于网络式防盗器,它主要靠锁定点火或起动来达到防盗的目的, GPS应用于汽车反劫防盗服务就得益于卫星监控中心对车辆的24小时不间断、高精度的监控服
17、务。该系统由安装在指挥中心的中央控制系统、安装在车辆上的移动GPS终端以及GSM通信网络组成,接受全球定位卫星发出的定位信息,计算出移动目标的经度、纬度、速度、方向,并利用GSM网络的短信息平台作为通信媒介来实现定位信息的传输,具有传统的GPS通信方案所无法比拟的优势。缺点是价格昂贵,每月要交纳一定的服务费。一些常见的品牌有赛格、华强、迈吉贝斯、大三通等等,这类产品因费用太高等各方面原因,目前在市场上还不普及,市场占有率非常低。1.1.2 课题的目的和意义本课题采用现代数字系统设计的思路和自顶向下的EDA设计方法,针对当今社会汽车防盗越来越重要的现实问题,通过VHDL语言软件编程设计基于可编程
18、器件的汽车电子防盗报警系统,达到了实时监测非法入侵、及时声光报警、启动/解除警戒和禁止非法使用发动机移动车辆等基本要求,为汽车防盗报警方面进一步研究,扩展更实用更全面的功能,设计更完善的产品打下了基础。通过设计掌握EDA设计的基本思路、VHDL语言编程方法,有限状态机的设计方法以及掌握开发软件Xilinx ISE,仿真软件Modelsim和综合工具Leonado Spectrum的运用。1.2 论文的主要内容本文由五章的内容构成,绪论部分介绍了当今汽车防盗报警系统发展的状况,说明了本课题的目的和意义以及论文主要内容。后面的四章对系统的设计过程和实现过程作了详细阐述。第2章对系统进行整体分析和模
19、块划分;第3章详细介绍了系统四个模块和系统顶层的程序设计编写过程;第4章主要是系统四个模块的独立调试与仿真;最后一章是系统顶层的实现过程,也是整个系统的实现过程,这一章对系统实现的流程做了总体的介绍。1.3 本章小结本章主要介绍了当今社会汽车防盗报警系统发展状况,现有的种类和特点以及本课题的目的和意义并对论文主要内容作了简要概述。第2章 汽车防盗报警系统整体设计2.1 系统分析与设计2.1.1 设计要求本课题要求设计一种基于可编程逻辑器件的汽车防盗报警电子系统,完成软件部分设计,得出系统功能仿真结果。其具体设计指标要求如下:(1)启动/解除警戒,灯亮表示启动,灯灭表示解除警戒;(2)实时检测非
20、法入侵,检测到非法入侵,锁住车门;(3)禁止非法使用发动机移动车辆,一旦非法使用发动机,锁止发动机并锁住车门;(4)及时声光报警,采用喇叭发声和三个灯轮流点亮的方式进行声光报警。2.1.2 系统分析从本系统的设计要求来分析,软件设计可以采用原理图设计和硬件描述语言设计。硬件描述语言(Hardware Description Language, HDL)属于文本输入方法的范畴,是一种用形式化方法来描述数字电路和设计数字逻辑的语言,这种设计方法也被称为高层次设计(High-Level-Design)方法,其设计流程示意图如图2-1所示。 图2-1 HDL设计流程的示意图相对于原理图设计,硬件描述语
21、言设计具有很多优点:开发效率高、便于移植、便于文档管理、便于仿真、可以开发出非常复杂的数字系统等等。因此本系统采用硬件描述语言设计。硬件描述语言有VHDL语言和Verilog HDL语言,这两种语言都具备HDL的优点,Verilog HDL推出比VHDL早,它模仿C语言,语法简单,风格自由,比较容易掌握,而VHDL是基于Ada语言的,追求语法的严格性,学习起来相对烦琐一点,但是严格的语法在一定程度上限制了错误的产生,调试起来可能会容易一些2。VHDL的系统抽象能力比Verilog HDL要强一些,在系统级的描述上占一定的优势,本系统设计采用VHDL语言编写程序代码。整个系统是一个数字系统,非法
22、入侵信号采用数字信号模拟,用高电平1表示车辆受到非法入侵,用低电平0表示不存在非法入侵。灯光报警要求每个灯持续一个确定的时间,这就需要一个标准时钟信号,而标准时钟信号都是从外部晶振中得到的,本设计采用频率为1MHZ的外部晶振,在设计中需要考虑时钟的换算。2.2 系统工作原理及模块划分 系统的工作原理:启动系统装置,系统进入检测信号状态,同时检测非法入侵信号和非法使用发动机的信号,若无非法信号,系统将一直处于检测状态,当检测到非法入侵信号时,进行声光报警,并锁住车门;当检测到非法使用发动机信号时,进行声光报警,并锁止发动机以及锁住车门。解除系统报警,系统停止工作。根据系统分析及系统工作原理,把整
23、个系统划分成四个模块:启动/解除警戒模块、检测信号模块、声音报警及锁止模块和光报警模块 ,系统结构图如图2-2。图2-2 系统模块构成图四个模块的功能是:启动/解除警戒模块用以启动或解除整个防盗报警系统,使装置进入或退出正常工作状态;检测信号模块检测汽车是否存在异常移动、异常振动、异常提升、车身异常切斜和非法启动发动机等异常情况;声音报警及锁止模块发出声音报警,并锁住车门,锁止非法启动发动机信号;光报警模块通过LED灯闪烁发出报警信号;2.3 本章小结本章主要介绍了系统设计的一些要求及性能指标,并对整个系统进行了分析,选择了适合的设计输入方式和硬件描述语言。通过分析系统的工作原理,对系统进行了
24、模块的划分,总共划分为四个模块:启动/解除警戒模块、检测信号模块、声音报警及锁止模块和光报警模块。第3章 系统软件设计3.1 VHDL编程语言VHDL的全称为VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,它的中文译名为超高速集成电路的硬件标准语言。模块化和自顶向下,逐层分解的结构化设计思想贯穿于整个VHDL设计文件之中。VHDL将所设计的任意复杂的电路系统均看作一个设计单元,可以用一个程序文件来表示。一个完整的VHDL语言程序通常包含实体、构造体、配置、程序包和库五个部分。实体是声明到其他实体或其他
25、设计的接口,即定义本设计的输入/输出端口;构造体是用来定义实体的实现,即电路的具体描述;配置为实体选定某个特定的结构体;程序包则用来声明在设计或实体中将用到的常数、数据类型、元件及子程序等;库用以存储预先完成的程序包和数据集合体。这五个部分并不是每一个VHDL程序都必须具备的,其中只有一个实体和一个与之对应的构造体是必须的。VHDL编程语言具有以下主要优点3:(1)具有强大的功能,覆盖面广,描述能力强,可用于从门级、电路级直至系统级的描述、仿真和综合。(2)有良好的可读性,它可以被计算机接受,也容易被读者理解。用VHDL书写的既是源文件又是文档。(3)有良好的可移植性,作为一种已被IEEE承认
26、的工业标准VHDL事实上已成为通用的硬件描述语言,可以在不同的设计环境和系统平台中使用。(4)使用VHDL可以延长设计的生命周期。(5)VHDL支持对大规模设计的分解和已有设计的再利用。3.2 系统模块设计3.2.1 启动/解除警戒模块设计此模块用于启动/解除整个系统,使系统进入/退出正常的工作状态。用一个开关来控制系统的启动和解除,并用一个led灯来显示系统的状态。开关接通,即输入为高电平1时,系统进入正常的工作状态,led灯点亮。开关断开时,输入的为低电平0,系统退出正常工作状态,led灯熄灭。这用IF语句的双路选择结构实现,其中sta表示开关控制信号,led1表示led 灯信号,程序见附
27、录。3.2.2 检测信号模块设计信号检测模块的任务是检测非法入侵信号和非法启动发动机信号,非法入侵信号包括汽车异常移动、异常振动、异常提升、车身异常切斜四个信号,总共五个非法信号。整个模块采用有限状态机来进行设计,下面先对有限状态机作介绍。状态机是包括一组寄存器的电路,该寄存器的值称为状态机的状态。状态机的状态不仅和输入信号有关,而且还与寄存器的当前状态有关。状态机可以认为是组合逻辑电路和寄存器逻辑电路的特殊组合,它包括两个主要部分:组合逻辑部分和寄存器部分。寄存器逻辑用于存储状态机的状态,组合逻辑包括两部分:状态译码和输出译码。状态译码用于确定状态机下各时钟周期的状态值,即确定状态机的激励方
28、程,而输出译码确定状态机的输出,即确定状态机的输出方程。最一般和最常用的状态机通常包括说明部分、状态更新进程、状态译码进程、辅助进程等几个部分。说明部分用于说明状态机中的状态情况和定义状态机的现态和次态;状态更新进程就是状态机的主控时序进程,它负责状态机运转和在时钟驱动下负责状态转换的进程;状态译码过程也就是主控组合进程,它的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合和时序进程的信号),或/和当前状态的状态值确定下一状态的取向,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。辅助进程用于配合状态机工作的组合或时序进程。例如为了完成某种算
29、法的进程,或用于配合状态机工作的其它时序进程,或为了稳定输出设置的数据锁存器等4。状态机分为同步状态机和异步状态机。同步状态机使用全局时钟信号,所有寄存器的时钟都是同一个,这使得状态的改变只发生在时钟的上升沿。异步状态机则利用组合逻辑电路的传播延迟来实现状态的存储功能,这样的状态机难于设计,而且很不稳定,一般情况设计同步状态机。在状态机的输出的产生过程中,根据输出译码是否使用输入信号可分为两类状态机:摩尔状态机和米利状态机。在摩尔状态机中,输出只与当前状态有关,而在米利状态机中,输出不仅和当前状态有关,还与输入状态有关。此模块设计采用的是米利状态机。米利状态机的模型如图3-1所示。图3-1 米
30、利状态机模型本模块总共八个输入信号,其中五个非法信号分别为a1,a2,a3,a4,b,一个时钟信号clk,一个复位信号 rst,一个启动输入信号start1;一个检测结果输出信号q。整个模块采用一个米利状态机来实现,它包括四个进程,分别是状态更新进程,状态译码进程,辅助进程和输出译码进程。状态机中设计了两个状态,为状态st1和st2,状态st1表示检测信号状态,状态st2表示报警状态。状态转移如图3-2所示。图3-2 检测信号模块的米利状态机转移图一开始工作状态机进入检测信号状态st1进行实时监测,当检测到非法信号,状态机转移到报警状态st2。在这里,非法信号为a1,a2,a3,a4,b,它们
31、都是高电平1有效,把这五个信号相或作为判断条件,即是其中任一个非法信号有效,则判断条件成立,状态机就转移到报警状态。一旦进入报警状态st2,将持续5s的报警,不管此时是不是还有非法信号存在,5s报警完成后,状态机继续判断是不是还存在非法信号,如果存在,则继续报警,否则回到检测状态st1继续进行实时监测。在程序的编写中状态更新进程是一个很重要的部分,它既用于状态机的复位,同时也负责整个状态机的状态更新,此进程VHDL代码如下:process( clk , rst ) -每个时钟上升沿,更新状态 begin if rst = 1 then -状态机复位 cur_state = st0 ; elsi
32、f clkevent and clk = 1 then -状态更新 cur_state if (a1 or a2 or a3 or a4 or b) = 1 then next_state = st2; else next_state if flag = 1 then if (a1 or a2 or a3 or a4 or b) = 1 then next_state = st2; else next_state = st1; end if; else next_state = st2; end if; end case;上面提到的持续5s的报警状态将在辅助进程里实现,在这里采用一个计数器来实
33、现这项功能,由于外部提供的是频率1MHZ的晶振,所以计数器不能只是简单的计5个数,而是需要先对计数器计数值进行换算,换算如下:1MHZ的晶振提供的时钟的周期为1us,要计时5s,则必须计数5s/1us= 5000000次,换算成二进制,则为10011000100101101000000,计数器从0开始计数,则需要计数到10011000100101100111111。计数器在状态st2中实现,但在状态st1中需要先对计数器以及标志位flag赋初值。在计数器计数的同时,同样的也要对标志位flag进行赋值,以便跟译码进程关联起来。计数器的程序编写如下:if clkevent and clk = 1
34、then if cnt = 10011000100101100111111 then cnt = 00000000000000000000000; flag = 1; else cnt = cnt + 1; flag if q1= 1 then next_state = s1; else next_state if q1 = 1 then if flag1 = 1 then next_state = s2; else next_state = s1; end if; else next_state if q1 = 1 then if flag2 = 1 then next_state = s3
35、; else next_state = s2; end if; else next_state if q1 = 1 then if flag3 = 1 then next_state = s1; else next_state = s3; end if; else next_state = s0; end if;红,绿,黄三个led灯持续点亮的时间用三个计数器来实现,计数器写在状态机的辅助进程里。三个标志位flag1,flag2,flag3以及三个计数器都需要先在状态s0的时候赋初值。外部提供的时钟是频率为1MHZ晶振,在设置计数器的计数值时,需要先进行换算,换算方式与检测信号模块中的计数器值
36、换算方式一样,经过换算,每个计数器计数的值为:0到111101000010001111111。当状态机进入s1,s2,s3状态任一状态时,其对应的计数器开始计数,当计数到111101000010001111111时,即是计时完2s时,标志位置1,这样,s1,s2,s3三个状态就可以循环转移了。s1状态下的计数器程序如下,s2,s3状态下的计数器与此相似。if clkevent and clk = 1 then if cnt1 = 111101000010001111111 then cnt1 = 000000000000000000000; flag1 = 1; else cnt1 = cnt1 + 1; flag1 把信号关联起来,这样就可以很清楚的知道各信号是怎样一一对应连接的5。本系统的顶层设计的对外接口有输入信号start,a1,a2,a