基于CPLD的出租车计费器系统的研究与设计
扫描二维码
随时随地手机看文章
引言
随着科学技术的发展,出租车计费器也经历了一个从低级到高级的发展阶段。传统的计费器一般由单片机实现,它有诸如硬件电路复杂,外围可扩展的资源有限,可靠性低,功能升级繁琐,需要硬件重组和软件更新同步进行,成本高等缺点。而用户对计费器的要求越来越高,对于出租车计费器而言,用户不仅要求其性能稳定,计费准确,有防作弊功能,同时还要求其具有车票打印、刷卡付费、语音播报提示、电脑串行通信及税控等功能。由于具体情况不同,不同国家和地区的出租车收费方式存在差异,即使相同地区,不同车型的出租车收费方式也是有差别的。传统的单片机已经很难满足这些越来越高的功能和性能上的要求虬为此,我们设计了一款以可编程逻辑器件(CPLD)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusII9.0开发软件为设计工具的出租车计费器。这种计费器在实际中不仅成本低、周期短,而且具有设计灵活、修改方便、易于调试、系统可靠性高等一系列优点。1系统功能描述不同区域的出租车计费标准不尽相同,对于本文以基于CPLD的方式设计的计费器,如果要适用某个区域的出租车,只需要修改计费标准就可以了,灵活方便而容易实现。本计费器能够实现的功能主要包括自动显示路程和自动计费。具体要求如下:
(1)实现计费功能。按行驶里程计费,起步价为7.00元,并在车行驶3km后按1.2元/km计费;当计费器达到或超过20元时,每千米加收50%的车费;车停止和暂停时不计费。
⑵现场模拟汽车的启动、停止、暂停和换挡等状态。
(3)设计数码管动态扫描电路,将车费和路程显示出来,各有两位小数o
2系统总体设计
基于CPLD的出租车计费系统可分为三大模块,即外部输入模块、控制模块和译码显示模块。各部分主要功能如下:数模块、计费模块等子模块组成。计费时钟脉冲信号模块提外部输入模块对车轮传感器传送的脉冲信号进行计数(每千米送1000个脉冲),并用高低脉冲模拟出租车的启动、停止、暂停和挡位输入等。控制模块是三大模块中的核心模块,它实现了出租车的计费和路程的计数,并且通过不同的挡位控制车速。译码显示模块则将车费和行驶的里程由十进制转换成4位的十进制,译码后用动态扫描的方式驱动数码管将车费和行驶的里程数实时显示(均为两位整数、两位小数)。
三大模块相互依赖,相互配合,协调工作,最终实现出租车计费器系统的功能。其系统总体设计框图如图1所示。
图1 出租车计费器系统总体设计框图
3单元模块设计
此计费器系统采用自顶向下、模块化设计的理念。整个系统的核心模块有两个,分别为控制模块(taxi)和译码显示模块(decoder)。最底层子模块用VHDL编写,在QuartusII9.0环境下对每个底层模块程序进行编写、编译和仿真。最后再将各个模块连接起来,用图形法逐级形成顶层模块,最终形成的系统顶层原理图如图2所示。
3.1taxi模块
taxi模块由计费时钟脉冲信号模块、控制模块、里程计数模块、计费模块等子模块组成。计费时钟脉冲信号模块提供基本的时钟标准给里程计数子模块和计费子模块使用。控制模块是系统的核心部分,根据启动信号(start)、停止信号(stop)、暂停信号(pause)和挡位控制(speedup)等信号对计费器和里程计数器的状态进行控制。启动信号为一个脉冲触发信号,当它为一个脉冲时,表示汽车已经启动,并根据车速的选择和基本车速发出响应频率的脉冲(计费脉冲)开始实现路程的计数和车费,同时显示路程计数和车费的起步价;当停止信号为高电平时,表示汽车熄火,同时停止发出脉冲,此时车费和路程计数清零;当暂停信号为高电平时,表示汽车暂停并停止发出脉冲,此时车费和路程的计数暂停;挡位控制信号用来改变车速,不同的挡位对应着不同的车速,同时路程计数的速度也不同。里程计数模块根据计费脉冲信号的输入实现实时里程计数,其计数量程为99.99km。计费模块根据脉冲输入实现实时计费功能,其计费量程为99.99元。
3.2decoder译码和显示模块
显示模块由七段LED数码管译码和动态扫描显示两部分组成,采用的是共阴极七段数码管。根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以在程序中设置了一个控制小数点的变量%。在显示时需要注意的是,如果选择的扫描频率不合适,可能会出现数字和小数点闪动的情况。在本设计中,进行译码的时钟频率必须比汽车的计费时钟高得多才能实时显示出车费和路程的变化,这里采用时钟频率为20MHz可取得较好的效果。
4系统调试和仿真
系统调试是分模块进行的,即先把每一模块的功能调试完成后,再把整个系统连接起来进行调试。系统仿真是EDA技术的重要组成部分,也是对设计的电路进行功能和性能测试的有效手段。本设计利用QuartusII9.0自带的仿真工具对每个模块分别进行了仿真。限于篇幅,此处只给出核心模块taxi的仿真,其结果如图3所示。
观察仿真波形可知,当启动键(start)为一个脉冲时,表示汽车已启动,车费(money)显示起步价7.00元,同时路程(distance)随着计费脉冲开始计数;当停止键(stop)为1时,表示汽车熄火停止,车费(money)和路程(distance)均为0;当暂停键(pause)为1时,车费和路程停止计数;当挡位分别取0、1、2、3时,路程的计数逐渐加快,表示车速逐渐加快。在路程超过3km后车费按照设定标准逐步递增。仿真图结果与期望结果相符,实现了出租车计费器的功能。最终的电路设计完成后,若总体电路编译无错,且时序仿真成功,即可进行硬件测试。
5结论
本文介绍了一种全新的出租车计费器系统的CPLD的设计方法。实验表明,该计费器实现了预置参数的自动计费和自动记程等功能,且预置参数的可调范围广如果将该设计结合到实际应用中,那么只需要改变设计中的计费标准就可以了,升级方便。设计中采用了大规模可编程逻辑器件,使系统整体具有抗干扰能力强、功耗小、系统稳定、工作可靠等优点叫此外,从系统综合后生成的报告可知器件资源尚有较大扩展空间,故可根据实际需要扩展一些功能。比如,通过器件内部编程增加时间显示功能;还可以通过CPLD的输出弓线控制打印机打印发票;也可以通过CPLD的输出弓线控制语音器件,对顾客发出问候语,提醒其所要收缴的费用等。