基于vhdl的出租车计费系统.docx
- 文档编号:12457107
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:37
- 大小:500.47KB
基于vhdl的出租车计费系统.docx
《基于vhdl的出租车计费系统.docx》由会员分享,可在线阅读,更多相关《基于vhdl的出租车计费系统.docx(37页珍藏版)》请在冰豆网上搜索。
基于vhdl的出租车计费系统
[摘要]利用VHDL语言设计出租车计费系统,使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点。
此程序通过下载到特定芯片后,可应用于实际的出租车计费系统中。
[关键词]计数器;VHDL;MAX+PLUSⅡ;FPJA
DesignofTaxiAccountingSystemBasedonVHDL
[Abstract]Thetaxiaccountingsystembasedonvhdlincludesthedesignofthetatiffsoftware,theresetandsimulationofthecar’sfunctionsuchasstart,stop,pauseandsoon.Itdisplaysthetariffnumberthroughthedynamicscnnningcircuit.Thedesignofthissystemhasshownthereadability,portabilityandeasilyunderstandingofVHDLasaharddescriblelanguage.Theprogramcanbeusedinthetrulytaxiaccountingsystembudownloadingtothegivenchip.
Keywords:
counter;VHDL;MAX+plusII;FPJA
目录
第1章前言5
1.1课题设计背景5
1.2课题设计意义5
第2章计费系统的方案比较与要求6
2.1出租车计费设计比较6
2.2出租车计费系统设计要求7
第三章出租车计费系统软件设计与实现7
3.1系统总体实现模块顶层设计图7
3.2出租车计费系统程序流程图8
3.3系统各功能模块的实现9
3.3.1分频器模块FPQ9
3.3.2等待判别模块DDPB9
3.3.3里程计算模块LCJS9
3.3.4里程计费模块LCJF10
3.3.5等待计时模块DDJS10
3.3.6等待计费模块DDJF10
3.3.7输出数据选择模块SCXZ11
第4章计费系统硬件设计与实现11
4.1电源电路设计11
4.2下载配置的电路设计12
4.3FPGA芯片及其外围电路设计12
4.3.1FPGA的硬件结构图12
4.3.2按键和LED13
4.3.3复位13
4.3.4外部时钟14
第5章计费系统设计功能仿真15
5.1静止时出租车计费仿真图15
5.2在时段选择为1(sdbz)时的出租车计费仿真图16
5.3在时段选择(sdbz)为0时的出租车计费仿真图17
5.4里程在三千米内的计费仿真图(时段标志为0)18
5.5里程在三千米内的计费仿真图(时段标志为1)19
5.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.1km。
(2)单价,即里程单价,用三位数字显示,显示方式为“X.XX”,单价为元/km,根据每天不同的时间段有两种情况:
当时间段为06:
00~23:
00时单价为1.40元/km,其他时间段内单价为1.80元/km。
(3)等候时间,用四位数字显示分钟和秒,显示方式为“XX:
XX”,等候的定义是:
当汽车行驶速度小于或等于12km/h时为“等候”。
(4)等候单价,等候单价有两种情况:
在等候时间小于1小时的情况下,等候单价为1元每5分钟;在等候时间大于1小时的情况下,等候单价为20元每小时。
(5)费用的计算,出租车的起价为5.00元,当里程小于3km时,按起价计算费用;当里程大于3km时按下式计算费用:
费用=里程╳里程单价+等候时间╳等候单价
(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-2
3.3系统各功能模块的实现
3.3.1分频器模块FPQ
图3-3
分频器的软件编译图形如图3-3所示,将外部输入时钟信号SCLK(设计时假设为(200Hz)经过适当分频后,产生1Hz的系统工作用的基准输出时钟信号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等信号的控制下,计算行驶里程超过2km以上里程的费用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.3FPGA芯片及其外围电路设计
4.3.1FPGA的硬件结构图
本论文基于EP1C3T144的FPGA设计,结构框图如图4-2所示,,包括电源部分、按键和LED、下载配置部分、复位部分、外部时钟、滤波电容、用户扩展接口、51单片机接口、FPGA芯片,共9个部分。
图4-2FPGA硬件结构框图
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)时,可仿真计费系统的计费功能,当计费系统显示里程为9.9千米时,得到的里程费用为1760分,即17.6元。
根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为1,即超出三千米的计费标准为每千米1.8元,总费用F(LCFY)=5+7*1.8=17.6元,与计费系统仿真的结果一致,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。
从而初步论证了该系统设计有效。
5.3在时段选择(sdbz)为0时的出租车计费仿真图
图5-3
出租车计费系统功能仿真图说明:
当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为9.9千米时,得到的里程费用为1480分,即14.80元。
根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为0,即超出三千米的计费标准为每千米1.4元,总费用F(LCFY)=5+7*1.4=14.80元,与计费系统仿真的结果一致,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。
5.4里程在三千米内的计费仿真图(时段标志为0)
图5-4
功能仿真图说明:
当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为3千米时,得到的里程费用为640分,即6.40元。
根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为0,即超出三千米的计费标准为每千米1.4元,总费用F(LCFY)=5+1*1.4=6.40元,与计费系统仿真的结果一致,而且由上仿真图还可以看出,当里程间与2.9千米与3千米时,即里程小于三千米时,计费为5元,当计费里程超过3千米时,计费按时加1.4元,由此可知,该计费系统能准费的按所要求的计费,从而初步论证计费系统设计有效。
5.5里程在三千米内的计费仿真图(时段标志为1)
图5-5
功能仿真图说明:
当输入适当的频率(sclk)和速度脉冲(wclk)时,可仿真计费系统的计费功能,当计费系统显示里程为3千米时,得到的里程费用为680分,即6.80元。
根据原设想的计费要求与原理,计费应为前三千米计费五元,超过三千米的按时段选择的不同计费,由上图可知,时段选择为0,即超出三千米的计费标准为每千米1.4元,总费用F(LCFY)=5+1*1.8=6.80元,与计费系统仿真的结果一致,而且由上仿真图还可以看出,当里程间与2.9千米与3千米时,即里程小于三千米时,计费为5元,当计费里程超过3千米时,计费按时加1.8元,由此可知,该计费系统能准费的按所要求的计费,并且有这图与上一图知道,按要求设置的时段选择有效,从而初步论证计费系统设计有效。
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软件的性能和本计费系统的要求比较高,在功能仿真时,其仿真时间有限,有一个功能仿真图是没有做出拉力,那就是等待时间超过一小时的等待计费,由于涉及到要判别是否等待时间超过一小时,所以仿真时间超长,计算机难以承受,所以就没有对其进行专门的仿真验证了。
修改意见:
本系统所具有的功能已经可以满足现代出租车正常的计费,但是其存在着运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 vhdl 出租车 计费 系统