基于FPGA的出租车计费系统设计

2011-07-22 20:14:21来源: 山西电子技术 关键字:出租车计费系统  VHDL语言
   

摘要:出租车计费系统大多利用单片机进行控制,较易被改装,且故障率较高。针对这一问题,设计了一种基于FPGA的出租车计费系统,可模拟汽车行驶、暂停等待,停止等过程,并可同时显示金额、乘车总路程。设计采用层次化设计方法,用VHDL语言进行编程,开发软件为MAX+plusⅡ。经测试,波形与仿真结果都满足设计要求。
关键词:出租车计费系统;VHDL语言;MAX+PLUSⅡ;FPGA

    随着城市化水平的提高和人民生活水平的改善,出租车的服务显得越来越重要。因此出租车计费器也就应运而生了。出租车计费器是一种专用的计量仪器,它安装在出租车上,指示出载客路程数,以及乘客应付费用的总数。
    出租车计价系统较多的是利用单片机进行控制,但较易被私自改装,且故障率相对较高,且不易升级;而FPGA具有高密度、可编程及有强大的软件支持等特点,所以设计的产品具有功能强、可靠性高、易于修改等特点。
    本文正是基于FPGA,设计了一种出租车的计费系统,它可以直观地显示出租车行驶的里程和乘客应付的费用。

1 系统功能设计
    所设计的计价器的计费标准为:车在行驶3 km以内,只收起步价9.0元;车行驶超过3 km后,按每公里2元计费。行驶路程达到或超过9 km后,车费按每公里3.0元开始计费。车遇红灯或中途暂停时,每3分钟计0.5元。若停止(rst)则车费清零,等待下一次计费的开始。要求能够显示里程数和乘客应付的费用,其中里程数精确到0.01 km,乘客应付的费用精确到0.1元,显示范围为:里程为0~99.99公里,费用为0~999.9元。

2 系统设计方案
    基于FPGA的出租车计费系统的组成如图1所示。由外部输入、FPGA控制部分以及数码显示三部分组成。其中FPGA部分又由分频模块、计价模块、BCD转换模块以及动态译码扫描模块组成;外部输入包括启动按键(start)、暂停按键(pause)、停止按键(stop即rst)以及两个脉冲信号(分别是每20 m一个脉冲的路程脉冲信号pulse和32 MHz的工作脉冲信号clk32M)。显示模块用8个LED数码管分别显示行驶里程和车费,行驶里程显示2位整数和2位小数,车费显示3位整数和1位小数。

a.jpg



3 各模块设计
    设计FPGA控制部分,包括控制计价模块,BCD转换模块,动态扫描译码模块以及分频模块。采用混合设计的方法,各子部分用VHDL编程,顶层部分用原理图进行设计。
3.1 控制计价模块(jijia)
    控制计价模块由里程计费模块、等待计费模块、总价模块组成。
    里程计费模块,主要对传感器公里脉冲信号pulse计数(20m一个脉冲),计算出租车本次交易行驶的路程以及里程费用。每数到50个pulse为1 km,总路程由lucheng端输出。在3 km内时,里程车费cf1为9元不变,当超过3 km时,p=1,开始里程费用计数,当计费停止,即start端口置“0”或出租车停止行驶,即rst端口置“0”时,相关数据复位,清零。
    等待计费模块,在3 km之后(p=1),每当pause=1时,则开始计时,当秒脉冲数到180个时(即3分钟),此时等待车费cf2加5,表示车费加0.5元。
    总价模块是将里程计费和等待计费相加,计算出总费用,从chefei端输出。
3.2 BCD转换模块(zhuanhuan)
    该模块将计费模块的车费和路程转换成4位十进制数,便于数码管显示。输入口acf,bcf分别为总路程数的输入口和总费用的输入口,两者都是二进制码进行十进制编码计数,通过该编码器生成BCD码,输出口分别以BCD码表示个,十,百,千位的数据。Aclk是工作脉冲,即32MHz。
3.3 动态扫描模块(dtxianshi)
    该模块由动态扫描模块以及译码模块组成。动态扫描模块,该模块利用视觉暂留效应,采用动态扫描电路,将8进制转换后的路程数和车费的4位十进制数显示在数码管上,节约了硬件资源和能源。该模块经过8进制扫描模块将路程和车费轮流显示出来。端口d是选通地址码的输入端口,A1,A2,A3,A4,B1,B2,B3,B4分别是个,十,百,千位的数值输入端口。根据输入的地址码,模块每次只有一位数字向后传输到输出口q,同时输出小数点的显示控制信号(dp),使路程显示为00.00公里,费用显示为000.0元。
    译码模块,该模块把0-9的BCD码译成数码管显示码,输入端口q输入扫描模块选出要显示的BCD码,译成数码管的显示码由g[6..0]输出。本设计中数码管是共阴数码管。
3.4 分频模块(fenp)
    本设计中输入的系统时钟为32 MHz,进行分频,再对数码管的地址进行扫描。输入端口rse为出租车停运信号输入端口,当出租车停止时,该模块停止工作,清零。当出租车行驶时对输入的32 MHz脉冲信号进行分频,分别从输出端口cp1得到秒脉冲,cp32得到32 Hz工作脉冲。
3.5 整体电路
    将各个模块按照输入输出关系连接,顶层电路原理图如图2所示。g[6…0]为七段显示码输出,通过动态扫描依次控制8个数码管的显示,dp为小数点位。

b.jpg



4 系统仿真验证
    用MAX+plusⅡ软件对各个子模块及顶层原理图进行了时序仿真,仿真波形如图3所示。

c.jpg


    控制计价模块仿真图如图3所示。由图3(a)可得,当reset=1,start=1,且pause=0时,表示出租车处于行驶状态,此时路程开始递增,当不超过3 km时,车费为5A即90,起步价9.0元。由图3(b)可得,当超过3 km后,车费每行驶1 km加20(即2元)。由图3(c)可得,当reset= 1,start=1,且pause=1时,出租车处于等待状态,此时路程不再递增,而时间递增,当时间达到3分钟时,车费加5(即0.5元)。
    顶层电路的仿真图如图4所示。从图中可以看出,随着输入的变化,从g[6…0]输出了共阴的数码管显示编码,dp也在对应的数码管处,输出高电平点亮小数点。
    综上分析,本设计的软件仿真结果正确,与设计要求相符。

关键字:出租车计费系统  VHDL语言

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0722/article_2341.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:FPGA时钟设计
下一篇:基于FPGA的USB接口数据采集系统设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
出租车计费系统
VHDL语言

小广播

独家专题更多

TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved