0 引言

出租车计价系统较多的是利用单片机进行控制,但较易被私自改装,且故障率相对较高,且不易升级;而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位小数。

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为小数点位。

4 系统仿真验证

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

控制计价模块仿真图如图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也在对应的数码管处,输出高电平点亮小数点。本设计的软件仿真结果正确,达到预期目标。

python写出租车计费系统_用VHDL设计出租车计费系统相关推荐

  1. python飞机票预定系统_数据库课程设计 - 机票预订系统

    一.机票预定系统 1.1 题目要求 要求具备如下基本功能 班机基本信息的管理: 航班信息的管理: 旅客预定机票.取消预约.付款取票.退票的管理: 查询航班信息.航班预定情况.旅客信息,计算航班满座率. ...

  2. mysql简易oa系统_基于mybatis设计简单OA系统问题2

    1. 标签用于格式化数字,百分比,货币. 教程: 2.错误: org.apache.jasper.JasperException: An exception occurred processing J ...

  3. java计算机毕业设计食用菌菌棒溯源系统的开发与设计源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计食用菌菌棒溯源系统的开发与设计源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计食用菌菌棒溯源系统的开发与设计源程序+mysql+系统+lw文档+远程调试 本源 ...

  4. python写个礼物送人_送你个情人节礼物:Python版抖音同款表白神器

    又到了一年一度的情人节!大家都准备送什么给自己心仪的对象呢? 鲜花.巧克力都太俗套了,今天给大家带来一个抖音上看到的表白神器 - 用Python写一个告白程序,让她看到你满满的爱(tao)意(lu). ...

  5. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  6. python人脸识别门禁系统_智能人脸识别门禁系统

    龙源期刊网 http://www.qikan.com.cn 智能人脸识别门禁系统 作者:吕琳涵 朱畅 钟华 林晓毅 来源:<世界家苑 · 学术> 2018 年第 12 期 摘 要:此项目是 ...

  7. 用python写跑酷游戏脚本_用python写游戏之2D跑酷游戏(二)

    这篇文章介绍2D跑酷游戏中,添加地板资源, 给主角附加重力作用,以及添加游戏控制器和游戏场景的切换. 废话不多说,直接开始. 添加地板资源 定义地板类,继承自pygame.sprite.Sprite ...

  8. python控制电脑开机后进不了系统_电脑开机进不了系统原因以及解决方法

    电脑开机进系统时经常会遇到一些英文界面就进不了了,或者进系统后就蓝屏,再或者开机快进系统了就重新启动.下面装机之家分享一下电脑开机进不了系统原因以及解决方法,希望能够帮助到大家. 故障判断:电脑开机能 ...

  9. 如何设计日志系统_架构 - 如何设计一个百亿级日志系统

    " 日志是记录系统中各种问题信息的关键,也是一种常见的海量数据. 日志平台为集团所有业务系统提供日志采集.消费.分析.存储.索引和查询的一站式日志服务. 主要为了解决日志分散不方便查看.日志 ...

  10. acer台式电脑怎么重装系统_宏基台式电脑怎么装系统

    acer宏碁作为电脑行业令人熟知品牌,一直深受用户们的喜爱.而今它也紧跟时代,推出了新兴产品一体机.最为重要的是,配置同样比较简约,并且只做办公任务,配置已经足够了.接下来我们就一起看看宏基台式电脑怎 ...

最新文章

  1. Java中通过substring和charAt截取字符串并获取指定字符
  2. 用MOS管防止电源反接的原理
  3. VTK:突出坏细胞用法实战
  4. Visual Studio下Qt调用IDL
  5. react学习(51)--避免死循环
  6. 赛题解析|初赛赛道三:服务网格控制面分治体系构建
  7. Java笔记-使用RabbitMQ的Java接口实现topic(主题模式)
  8. ansibe tower的开源替代品semaphore
  9. c语言图形时钟编程,c语言程序+图形编程——打造简易的时钟
  10. 《中文版PHOTOSHOP.CS3完全自学教程》李金明.李金荣.彩色扫描版.pdf
  11. 添加打印机计算机无法访问,Win7系统添加打印机提示Windows无法打开“添加打印机”的解决方法...
  12. oracle linux 环境变量
  13. python追加写_python覆盖写入,追加写入的实例
  14. 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
  15. 我用自己的亲身经历告诉你为什么不建议你合租!
  16. Zeppelin Job monitor打开
  17. HTTP网页从请求到响应过程详解
  18. 【OpenCV】cv2.putText()函数用法
  19. SEO人员,做好SEO的三大要素有哪些?
  20. 使用U-Net 进行图像分割

热门文章

  1. TB6612FNG电机驱动替代方案
  2. 在RStudio里面部署Python
  3. java crc8_Crc8算法
  4. 自主研发的车牌识别SDK
  5. 项目管理如何真正实现降本增效?
  6. 用Excel控件做动态图表
  7. maya导入abc动画_完美动力小课堂:abc格式应用--Realflow和Maya互导
  8. 《自抗扰控制技术》——第二遍(仿真)
  9. 最新计算机java毕业设计题目选题推荐2023
  10. 吉客云与金蝶云星空集成方案(吉客云主管库存)