基于vhdl的出租车计费系统.doc_第1页
基于vhdl的出租车计费系统.doc_第2页
基于vhdl的出租车计费系统.doc_第3页
基于vhdl的出租车计费系统.doc_第4页
基于vhdl的出租车计费系统.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密级: 基于VHDL语言的出租车计费系统设计 摘要 利用VHDL语言设计出租车计费系统,使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点。此程序通过下载到特定芯片后,可应用于实际的出租车计费系统中。关键词 计数器;VHDL;MAX+PLUS;FPJADesign of Taxi Accounting System Based on VHDL AbstractThe taxi accounting system based on vhdl includes the design of the tatiff software,the reset and simulation of the cars function such as start,stop,pause and so on .It displays the tariff number through the dynamic scnnning circuit.The design of this system has shown the readability,portability and easily understanding of VHDL as a hard describle language. The program can be used in the truly taxi accounting system bu downloading to the given chip.Keywords: counter; VHDL;MAX+plusII;FPJA 目 录第1章 前 言51.1课题设计背景51.2课题设计意义5第2章 计费系统的方案比较与要求62.1出租车计费设计比较62.2出租车计费系统设计要求7第三章 出租车计费系统软件设计与实现73.1 系统总体实现模块顶层设计图73.2出租车计费系统程序流程图83.3 系统各功能模块的实现93.3.1 分频器模块FPQ93.3.2 等待判别模块DDPB93.3.3 里程计算模块LCJS93.3.4 里程计费模块LCJF103.3.5 等待计时模块DDJS103.3.6 等待计费模块DDJF103.3.7 输出数据选择模块SCXZ11第4章 计费系统硬件设计与实现114.1 电源电路设计114.2 下载配置的电路设计124.3 FPGA芯片及其外围电路设计124.3.1 FPGA的硬件结构图124.3.2 按键和LED134.3.3 复位134.3.4 外部时钟14第5章 计费系统设计功能仿真155.1静止时出租车计费仿真图155.2在时段选择为1(sdbz)时的出租车计费仿真图165.3在时段选择(sdbz)为0时的出租车计费仿真图175.4 里程在三千米内的计费仿真图(时段标志为0)185.5里程在三千米内的计费仿真图(时段标志为1)195.6等候时间计费仿真图20第6章 设计系统的方案结论21第7章 结束语21主要参考文献22致 谢22附录23系统所用模块源程序和编译框图23第1章 前 言1.1课题设计背景出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。 随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可以完成计价的工作。 大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善.当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程,计价,显示等基本工作。单片机以及外围芯片的不断发展促进了计价器的发展。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。1.2课题设计意义出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。传统国内外出租车计费器多数由单片机实现,升级繁琐,成本高。以出租车多功能计费器为例,传统的计费器常以MCS251系列单片机为其核心主控部件,如89C51RC2, LPD78F0034 等,该系列的单片机工作频率一般不大于24MHz,而且可扩展的资源有限, 最大能够扩展的程序空间和内存空间一般都只有64kB,很难胜任出租车多功能计费器的不断升级要求。传统的计费器通常采用硬件模块化的设计结构,主要包括主控模块,电源模块, 按键显示模块,防作弊及脉冲输入模块以及税控模块等。在主控模块中又包括CPU 子模块, 语音识别子模块,串口通信子模块,复位、看门狗及电源监控子模块,打印子模块等,硬件电路复杂,不利于系统功能升级,容易在运营过程中产生干扰,影响系统的使用; 并且由于分立器件多,必然造成电源功耗大,芯片易发热,影响芯片的使用寿命。基于FPGA的出租车计费器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,特别是对小批量、多品种的产品需求,基于FPGA的出租车计费器已成首选。计费系统在各大、中城市出租车中使用越来越广泛。针对现有计费系统通用性差的缺陷,本文采用ISP器件和VHDL语言开发了一套出租车计费系统;该计费系统的可靠性高、成本低、通用性强;该系统在不改变硬件电路的前提下,具有可以重构系统的功能,采用完全相同电路结构,只要根据各地区的需求在VHDL程序中设置各参数,就可以适应各地区出租车不同计费标准的需要,还可根据各地区需求增加其他功能。通过本课题的设计,能够综合运用学过的数字系统、基础EDA技术、PCB电路设计等知识,学习Max+plussII设计软件环境的使用方法,熟悉Altera公司生产的FPGA芯片,在基本实验板上完成若干数字系统的设计和实现。 第2章 计费系统的方案比较与要求2.1出租车计费设计比较出租车计费器现状和挑战最近几年出租车行业发展迅速,在全国有几千家出租车公司,出租车计费器的市场非常庞大。目前市场上使用的出租车计费器主要采用的都是利用MCU如89C51单片机实现计费器设计,显示方式上主要采用的是固定显示内容的LED显示传统的出租车计费器,由于发展使用了十几年,在稳定性、成本、以及使用习惯上都具一些优势,但是随着出租车价格市场化,我国加入WTO以来主导出租车行业成本的许多因素主要包括油价的波动,都对传统的出租车计费器提出了更高的要求。近一年来,各城市都在对出租车价格进行调整,由于数量太多,很多城市的调价甚至需要一个月的时才能完成,经常会同一时间出现几个价格,有的城市的出租车上还会出现司机人工计价尴尬情形。这些都暴露了传统计费器在灵活性和升级换代能力的天生不足。传统计费器的不足可以体现在以下几点:1产品更新周期长传统计费器利用MCU如89C51单片机实现汽车计费器的设计,大部分的功能可以用片机来实现。但是单片机程序是不通用的,不同的芯片有不同的指令集,因此设计研发较困难,周期长。如果系统设计的不好,则系统不是很稳定,而且灵活度不够,不易实现功能复杂的设计。2计价方式的不灵活每次计价标准的修改都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力,很难达到目前油价联动的需求。3固定化,如果需要改变显示内容,甚至需要整个设备的更换,不利于产品的理想升级。这些都体现了目前对出租车计费器市场更新换代的需求。二解决方案考虑到目前出租车行业迅猛发展的趋势以及对计费器更高的灵活性要求,本设计希望尝试一些新的方法来予以解决。1利用FPGA取代MCU随着FPGA等数字可编程器件的出现解决传统电子设计不能完成的任务,利用FPGA实现出租车计费器。可行性很高,而且电路简单,大大减少外围器件,可以用软件完全仿真,灵活度高,可以设计一些复杂的系统,而且编好的系统可以在不同的FPGA或CPLD片上通用。FPGA能完成任何数字器件的功能,使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。同时由于FPGA的功能完全取决于VHDL语言编写的程序,不拘泥于某种芯片的特殊指令,更加提高了产品的更新换代能力。2增加计价标准设定功能通过设计此功能模块可以使得计价标准设计更加灵活,体现目前出租车行业发展的需要,使运价、油价联动成为可能。2.2出租车计费系统设计要求 (1) 里程,即汽车行驶里程,用四位数字显示,显示方式为“XXX.X”,单位为km,精确到0.1 km。 (2) 单价,即里程单价,用三位数字显示,显示方式为“X.XX”,单价为元/km,根据每天不同的时间段有两种情况:当时间段为06:0023:00时单价为1.40元/km,其他时间段内单价为1.80元/km。(3) 等候时间,用四位数字显示分钟和秒,显示方式为“XX:XX”,等候的定义是:当汽车行驶速度小于或等于12 km/h时为“等候”。 (4) 等候单价,等候单价有两种情况:在等候时间小于1小时的情况下,等候单价为1元每5分钟;在等候时间大于1小时的情况下,等候单价为20元每小时。(5) 费用的计算,出租车的起价为5.00元,当里程小于3 km时,按起价计算费用;当里程大于3 km时按下式计算费用: 费用=里程里程单价+等候时间等候单价 (6) 费用的显示,用五位数字显示,显示方式为“XXX.XX”,单价为元。第三章 出租车计费系统软件设计与实现3.1 系统总体实现模块顶层设计图根据现代出租车计费的普遍要求,使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,为此,我们可将整个测控FPGA系统CZJFXT分为七个模块,它们分别是:(1)分频器模块FPQ,(2)等待判别模块DDPB,(3)里程计算模块LCJS,(4)里程计费模块LCJF,(5)等待计时模块DDJS,(6)等待计费模块DDJF,(7)输出数据选择模块SCXZ。其顶层设计框图如下图3-1所示。图3-1出租车计费系统顶层设计框图3.2出租车计费系统程序流程图1 本计费系统程序流程如图下图3-2所示,根据程序流程图,我们可以很清晰地看到程序的流程步骤。计费器计数里程、等待时间计费显示里程显示等待时间显示等待时间计算里程计数车开始启动车跑完一次后车费、里程、等待时间清零图4-2程序流程图程序流程图3-23.3 系统各功能模块的实现3.3.1分频器模块FPQ图3-3分频器的软件编译图形如图3-3所示,将外部输入时钟信号SCLK(设计时假设为(200 Hz)经过适当分频后,产生1 Hz的系统工作用的基准输出时钟信号CLK1HZ,供系统中的有关模块计时用。 3.3.2 等待判别模块DDPB图3-4 等待判别模块的软件生成图形如图3-4所示,根据速度传感器脉冲信号WCLK和分频器产生的基准时钟信号CLK1HZ,计算单位时间里WCLK的脉冲个数(每km产生1000个脉冲信号,即每米产生1个脉冲信号),亦即出租车行驶速度,从而判别出租车是否处于等待状态,发出等待标志信号DDBZ,输入START用于控制出租车是否处于行驶状态。 3.3.3 里程计算模块LCJS图3-5里程计算模块的软件生成图形如图所示,根据速度传感器脉冲信号WCLK和等待标志DDBZ,对出租车行驶的里程数XSLC进行计算,同时发出里程标志信号LCBZ和里程计费标志信号JFBZ。 3.3.4 里程计费模块LCJF 图3-6里程计算模块的软件生成图形如图3-6所示,在计费标志信号JFBZ、等待标志信号DDBZ、里程标志信号LCBZ和时段标志信号XDBZ等信号的控制下,计算行驶里程超过2 km以上里程的费用LCFY。 3.3.5 等待计时模块DDJS图3-7等待计时模块的软件生成图形如图3-7所示,在等待标志信号DDBZ和基准时钟信号CLK1HZ的控制下,进行等待时间DDSJ的计算,其中DDSJ的低8位表示等待时间的秒数,DDSJ的高8位表示等待时间的分钟数,同时根据等待时间的长短发出一个熄灯标志信号XDBZ。 3.3.6 等待计费模块DDJF图3-8等待计时模块的软件生成图形如图3-8所示,在等待标志信号DDBZ和熄灯标志信号XDBZ控制下,进行等待费用DDFY的计费操作。 3.3.7输出数据选择模块SCXZ 图3-9输出数据选择的软件生成图形如图3-9所示,根据单片机发出的数据传输选择控制信号SEL,选择有关计算处理结果传输给单片机。SEL与被传送数据的具体关系如表(1)所示表(1)第4章 计费系统硬件设计与实现4.1 电源电路设计板子由外部提供5V 电源,使用的圆头插座的封装,可以直接用5V 的电源适配器插上使用,不需要直流稳压电源,FPGA 的IO 的电源是3.3V,内核的电压是1.5V,所以用上两个LEO,一个将5V 转到3.3V,另一个将3.3V 转到1.5V,加上一些滤波电容,板上的其他外设的电源均是3.3V,另外有3.3V 的电源指示灯,表示电源是否正常,还有防反插二极管,防止电源反插,对器件造成损坏电路图如图4-1所示。图4-1 电源电路图4.2 下载配置的电路设计大家都知道FPGA是SRAM 型的可编程逻辑器件,不像ROM型可编程器件CPLD那样,通过JTAG就可以直接把代码固化片子里面。FPGA 随便也可以通过JTAG 下载代码到片子里面运行。FPGA下载到片子里面代码是存放在RAM里,所以断电后这些代码马上就没有了。这样,FPGA就需要非易失性存储器用来存放代码,每次上点后把代码从配置芯片读扫FPGA然后运行。我们选用ALTERA 公司配套的AS 模式的配置存储器EPCS1,成本比较低,并且很容易配置。调试的时候流程是:修改设计,编译然后通过JTAG下载到FPGA 内部运行,一直这样进行直到设置成功,最后才把代码固化到配置存储器里面。4.3 FPGA芯片及其外围电路设计4.3.1 FPGA的硬件结构图本论文基于EP1C3T144 的FPGA设计,结构框图如图4-2所示,包括电源部分、按键和LED、下载配置部分、复位部分、外部时钟、滤波电容、用户扩展接口、5 1 单片机接口、FPGA芯片,共9个部分。LED外部时钟FPGA复位开关扩展接口滤波电容MCU接口接口用户接口JTAG电源图4-2 FPGA硬件结构框图FPGA 一共144 个引脚就是和以上8 个部分连接。这块板子既可以单独使用,也可以配合51 的板子一起使用。单独使用时,通过用户接口和其他的电路连接,不同电路之间通信等。如果全局时钟不够,需要将预留给51 的全局时钟资源拿来用。和51 配合使用的时候,51 和FPGA之间是总线的接口,FPGA相当于是51 的一个存储器映射外设,操作的时候注意读写,另外不使用的时候要把数据线变为三态。4.3.2 按键和LED板上提供4 个拨码按键和4 个LED,分别接到FPGA的8 个IO 引脚上,具体的引脚可以参看电路图或者丝印。按键和LED 可以用外当成最简单的外设,用和来控制这些外设。对于用该板作开发的用户来说,可以把按键当成键盘控制,而把LED 当成提示来用。4.3.3 复位开发板上有两个复位按键,一个叫做硬件复位,按下此键,所有FPGA的代码重新从EPCS1里面读到FPGA,程序从新开始运行,该引脚接到FPGA 的nCONFIG 引脚,该引脚为低电平是代码重新开始配置。另外一个复位按键连接到FPGA 的另外一个全局时钟上,用来表示在设计的过程中的reset 引脚。复位电路图如图4-3所示。图4-3 复位电路原理图4.3.4 外部时钟该板上接一个外部晶振,晶振的频率自己可以任选,我们提供的是200hz 的晶振,用来做全局时钟。当然用户要是想用其他的全局时钟,就必须要把51 扩展部分的两个全局时钟连接其他的时钟源。第5章 计费系统设计功能仿真5.1静止时出租车计费仿真图图5-1出租车计费系统功能仿真图说明:,当设置速度脉冲(wclk)为无和行驶标志为1,并加入相应的的时钟脉冲,从图的仿真结果我们可知,等候时间为0,等待时间计费为0,里程计算为0,里程计费也为0,但分频器模块和时钟计算模块(秒计数正常工作)却在正常工作。根据原计费系统的计费要求与原理,当启动标志为1时,出租车处于停止状态,计费系统不计费,当时钟必须正常运行。仿真图的结果与原设计要求达到了一致,从而验证了出租车计费系统对停止状态能准确判别并能正确计费。并且该仿真图也说明了出租车的分频器模块能正常运行,即进行200分频,产生秒秒冲。5.2在时段选择为1(sdbz)时的出租车计费仿真图图5-2出租车计费系统功能仿真图说明:当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为千米时,得到的里程费用为分,即.元。根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为,即超出三千米的计费标准为每千米.元,总费用(LCFY)元,与计费系统仿真的结果一致,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。从而初步论证了该系统设计有效。5.3在时段选择(sdbz)为0时的出租车计费仿真图图5-3出租车计费系统功能仿真图说明:当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为千米时,得到的里程费用为分,即.元。根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为,即超出三千米的计费标准为每千米.元,总费用(LCFY)元,与计费系统仿真的结果一致,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。5.4 里程在三千米内的计费仿真图(时段标志为0)图5-4功能仿真图说明:当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为千米时,得到的里程费用为分,即.元。根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为,即超出三千米的计费标准为每千米.元,总费用(LCFY).元,与计费系统仿真的结果一致,而且由上仿真图还可以看出,当里程间与.千米与千米时,即里程小于三千米时,计费为元,当计费里程超过千米时,计费按时加.元,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。5.5里程在三千米内的计费仿真图(时段标志为1)图5-5功能仿真图说明:当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为千米时,得到的里程费用为分,即.元。根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为,即超出三千米的计费标准为每千米.元,总费用(LCFY).元,与计费系统仿真的结果一致,而且由上仿真图还可以看出,当里程间与.千米与千米时,即里程小于三千米时,计费为元,当计费里程超过千米时,计费按时加.元,由此可知,该计费系统能准费的按所要求的计费,并且有这图与上一图知道,按要求设置的时段选择有效,从而初步论证计费系统设计有效。5.6等候时间计费仿真图图5-6功能仿真图说明:当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的等候计费功能,当出租车的速度小于每分钟200米时,可认为出租车处于等待状态,由上仿真图可以看出,出租车的速度为120米每分钟,等待时间为1分钟,收费为20分。根据根据原设想的计费要求与原理,得到等待费用的计费有两种方式,当等候时间小于1小时时,等候单价为1元每五分钟,即一分钟收费20分。与计费系统仿真的结果一致,而且由上仿真图还可以看出,按要求设置的熄灯标志有效,从而初步论证计费系统等候计时和等候收费设计有效。 通过上面的六张出租车计费系统仿真图的仿真结果,可以得出这样的结论:该计费系统在整体上符合设计要求,能较好地判别出出租车的各种状态,从而由各种状态能够较好的计算出所要求的各种数据,进而达到计费的目的。第6章 设计系统的方案结论VHDL硬件描述语言打破了硬件和软件设计人员之间互不干涉的界限,可以使用语言的形式来进行数字系统的硬件结构、行为的描述,直接设计数字电路硬件系统。从本文描述的出租车计费系统可以看出,通过编程、下载后,该芯片已经具备了原来需要使用复杂的数字电路实现的功能;这样,使用语言描述的形式,大大缩短了开发周期,减少了开发难度,并使得系统更加灵活、稳健。同时我们在设计中需注意的问题(1)在一个进程中只允许一个信号上升沿作为触发条件,且用触发沿作为判别条件有利于系统实现的稳定和精确,由于VHDL语言的特殊优点,他不需要像单片机那样的比较长等待延时来加以确定。从而能更快地正确检测出条件的变化。(2)信号值改变后,要经过一个小的延时才能生效,同一个信号不能在多个进程中赋值(因多个信号源不能同时对同一个信号驱动)。(3)时序电路与组合电路最好不要在同一个进程以免浪费资源。(4)一个功能模块最好按上升沿信号分多个进程完成,各进程间用信号联系。(5)同一个信号在进程中的值改变后,要注意该值改变前后,该进程中其他变量的变化,避免逻辑死锁。这样的错误在逻辑上比较难以检查出来,且在编译过程中也发想不了,所以要特别加以留意。(6)在顺序语句中,信号赋值后需一定的延时才能改变而变量不需要延时。第7章 结束语经过测试,本系统的所有功能均可正常运行,并且达到预期效果,与此同时本系统还存在着很多的不足.现我对系统目前的优点和不足作些阐述。优点:本系统所具有的功能含盖面广,同时还能很好的实现对所需各项数据的监测和计费,与其它语言所编写的程序不同,本系统所采用的硬件描述语言更易于理解,层次分明,便于移植,效率比较高,再加上其操作简单。是一款很好的出租车计费系统。不足:由于本计费系统涉及到上升沿判别条件非常多,所以其还存在一点的毛刺干扰,要想计费系统更加精确,应该加入一定的毛刺消除方法,进而消除毛刺的影响。同时由于MAX+plussII软件的性能和本计费系统的要求比较高,在功能仿真时,其仿真时间有限,有一个功能仿真图是没有做出拉力,那就是等待时间超过一小时的等待计费,由于涉及到要判别是否等待时间超过一小时,所以仿真时间超长,计算机难以承受,所以就没有对其进行专门的仿真验证了。修改意见:本系统所具有的功能已经可以满足现代出租车正常的计费,但是其存在着运行性能、可扩展性差等问题,应着重改进以下问题.由于本计费系统所涉及的模块变量都只分配了16位的容量空间,所以其计时和计费都有一定上限,当超越了其计算范围是,其只能在达到其的容量上限后归零重新计算,比不能反映当前变量的真实数值。所以可考虑分配更大的位数空间,比如32位。代码的利用率不高,要善于使用自定义函数来实现功能,并且实现功能函数的分类管理的存放,以方便调用和修改,也便于扩展,更有利于以后做研究的参考和借鉴。主要参考文献1王诚,蔡海宁.Altera FPGA/CPLD 设计,人民邮电出版社,2011. 2陈忠坪,高金定.基于maxplusII的FPGA设计与实践,电子工业出版社,2010. 3李清国.基于FPGA的案例教程,中科多媒体电子出版社,2011. 4王培安.VHDL语言入门与精通,重庆大学出版社,2008. 5何宾. EDA原理,清华大学出版社.2011. 6袁仁武.EDA技术实用教程.清华大学出版社,2009.7郭照南. 电子技术与EDA技术课程设计,中南大学出版社,2010.8潘松,黄继业. EDA技术实用教程VHDL版(第四版),电子工业出版社,2010.致 谢在这里,我要感谢肖老师,因为肖老师在我开发这个系统的过程是给我了很大的帮助,为了能完成这个系统,肖老师在指导思路和编写模块程序上给了我很大的帮助,这是肖老师对我的厚爱,也是肖老师对我的培养。我会在以后的工作学习中继续努力,绝不会辜负关心帮助我的人对我的希望!附录 系统所用模块源程序和编译框图1 分频器模块FPQ的VHDL程序设计-FPQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY FPQ ISPORT(SCLK: IN STD_LOGIC; -SCLK=200 Hz CLK1HZ: OUT STD_LOGIC); -CLK1HZ=1 HzEND ENTITY FPQ; ARCHITECTURE ART OF FPQ IS SIGNAL CNT100: INTEGER RANGE 0 TO 99; SIGNAL CLK1: STD_LOGIC; BEGIN PROCESS(SCLK)BEGIN IF SCLKEVENT AND SCLK=1 THEN IF CNT100=99 THEN -当达到99时,CNT100清零 CNT100=0; CLK1=NOT CLK1; ELSE CNT100=CNT100+1 -;否则CNT100加1 END IF; ELSE CLK1=CLK1; END IF; CLK1HZ=CLK1; END PROCESS;END ARCHITECTURE ART;用分频器的编译图形生成符号2等待判别模块DDPB的VHDL程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDPB IS PORT(START,WCLK:IN STD_LOGIC; CLK1HZ:IN STD_LOGIC; DDBZ:OUT STD_LOGIC); END ENTITY DDPB;ARCHITECTURE ART OF DDPB IS SIGNAL CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL T60S:STD_LOGIC; SIGNAL WCLKCOU:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN -产生60 s周期性跳变信号进程PROCESS(CLK1HZ) IS BEGIN IF START=1 THEN T60S=1;CNT60=00000000;ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 THEN -CNT60=60 T60S=1;CNT60=00000000; ELSE CNT60=CNT60+1;T60S=0; END IF; END IF; END PROCESS ; PROCESS(START, WCLK, T60S) IS BEGIN IF START=1 THEN WCLKCOU=0000000000000000; ELSIF WCLKEVENT AND WCLK=1 THEN IF T60S=1 THEN WCLKCOU=0000000000000000; ELSE WCLKCOU=WCLKCOU+0000000000000001; -距离计算,单位为mEND IF; END IF; END PROCESS ; -等待标志判别进程 PROCESS(WCLKCOU,T60S) IS BEGIN IF T60SEVENT AND T60S=1 THEN IF WCLKCOU=0000000011001000 THEN -WCLKCOU=200 DDBZ=1; -等待 ELSEDDBZ=0; -行驶 END IF; END IF; END PROCESS ; END ARCHITECTURE ART;等到判别模块的编译生成图形符号3里程计算模块LCJS的VHDL程序设计-LCJS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITYLCJS IS PORT(START, DDBZ, WCLK: IN STD_LOGIC; XSLC: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LCBZ,JFBZ:OUT STD_LOGIC);END ENTITY LCJS;ARCHITECTURE ART OF LCJS IS SIGNAL BMS:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL BMS1: INTEGER RANGE 0 TO 99999; SIGNAL JFBZ1: STD_LOGIC; BEGIN -里程计算及标志产生进程 PROCESS(START,WCLK)VARIABLE MS: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THEN MS:=00000000; BMS=0000000000000000;LCBZ=0; ELSIF WCLKEVENT AND WCLK=1 THEN IF DDBZ=0 THEN IF MS=01100011 THEN MS:=00000000;BMS=20 THEN LCBZ=1; -大于2 km标志 END IF; ELSE MS:=MS+1; -米数计算 END IF; END IF; END IF; END PROCESS;-里程计算结果输出 XSLC=BMS; -里程计算结果转换 BMS1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1=0; END CASE; END PROCESS; -计费标志去毛刺进程 PROCESS(WCLK,JFBZ1) ISBEGINIF WCLKEVENT AND WCLK=1 THEN JFBZ=JFBZ1; END IF; END PROCESS;END ARCHITECTURE ART;里程计算模块的生成图形符号4里程计费模块LCJF的VHDL源程序-LCJF.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LCJF IS GENERIC(SD1:INTEGER:=140; -04:0023:00单价 SD2:INTEGER:=180); -其他时段单价PORT(LCBZ,JFBZ,START,DDBZ,SDBZ:IN STD_LOGIC; LCFY:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY LCJF;ARCHITECTURE ART OF LCJF IS SIGNAL LCFY1: STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS(START, LCBZ, SDBZ, JFBZ) BEGIN IF START=1 THENLCFY1=0000000000000000; ELSIF JFBZEVENT AND JFBZ=1 THEN IF DDBZ=0 THEN -行驶状态 IF LCBZ=0 THEN -2 km以内 LCFY1=0000000000000000; ELSIF LCBZ=1 THEN -2 km以上 IF SDBZ=0 THEN LCFY1=LCFY1+SD1; ELSIF SDBZ=1 THEN LCFY1=LCFY1+SD2; END IF;END IF; END IF; END IF; END PROCESS; LCFY=LCFY1;END ARCHITECTURE ART; 里程费用模块的生成图形符号5等待计时模块DDJS的VHDL源程序-DDJS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDJS IS PORT(START, DDBZ: IN STD_LOGIC; CLK1HZ: IN STD_LOGIC; DDSJ: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);XDBZ: OUT STD_LOGIC);END ENTITY DDJS;ARCHITECTURE ART OF DDJS IS SIGNAL MS,MG,FS, FG: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL XIDENG: STD_LOGIC;BEGIN PROCESS(START, DDBZ, CLK1HZ) IS BEGIN IF START=1 THENMS=0000;MG=0000; FS=0000;FG=0000; ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF DDBZ=1 THEN IF MG=9 THEN MG=0000; IF MS=5 THEN MS=0000; IF FG=9 THEN FG=0000; IF FS=5 THEN XIDENG=1;FS=0000; ELSEFS=FS+1; -分数十位计算 END IF; ELSE FG=FG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论