简易出租车计价器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于VHDL的简易出租车计价器

摘要:本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,利用元件例化语句,将分别实现判断、计时间、计里程以及计费的模块综合在一起,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。

关键字:VHDL 计价元件例化EDA技术仿真

一、设计背景

随着我国经济社会的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。出租车计价器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。多年来国内普遍使用的计价器只具备单一的脊梁功能。最早的计价器全部使用机械齿轮结构,只能简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技的发展,产生了第二代计价器,它采用手摇计算机与机械结构相结合的方式实现了半机械半电子化,此时它在计程的同时还完成计价的工作,大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器,它的功能也在不断完善。本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到出租车计价系统的硬件结构,通过Quartus II 软件下进行设计、仿真,使各项指标符合设计要求,具有一定的实用性。虽然以前有基于数字电路、单片机进行的出租车计价器的设计,但用数字电路设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;而基于单片机的设计,虽然开发成本降低,但其外围电路较多,而且调试复杂,抗干扰能力差,从而也导致计价器不够准确。而基于VHDL语言的FPGA芯片稳定性好,抗干扰能力强,外围电路少,执行速度快,适合像出租车计价器的这种较复杂的电路设计。

EDA技术是电子设计自动化(Electronic Design Automation)的缩写,是现代电子设计技术的核心。EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、优化、仿真,直至下载到可编程逻辑器件或专用集成电路芯片中,实现既定的电子电路设计功能。EDA技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA 软件平台来完成对系统硬件功能的实现,极大地提高了设计效率,缩短了设计周期,节省了设计成本。

二、总体设计

1、设计要求

本设计采用呼市出租车计价方式:

(1)起步价为6.00元,起步公里为2公里

(2)超过2公里,每公里按1.3元收费

(3)单程超过10公里后,每公里按1.5元收费

(4)每等候5分钟按1公里计算收费

要求显示里程、计费及等候时间。乘客上车后,按下启动键开始计费,计费显示三位整数、一位小数。

2、设计思路

输入2个时钟信号,分别模拟时间脉冲和里程脉冲,时间脉冲为秒脉冲,里程脉冲为汽车电机转数,每1500rad为1km,对等待时间、路程计数,进而统计费用。设计共分为四个模块,分别为判断模块、时间模块、里程模块以及计费模块:判断模块是通过时间脉冲与里程脉冲的输入来判断是由里程模块还是时间模块计数,时间模块是在汽车停止时对等待时间进行计数,里程模块是对汽车的行驶里程进行计数,计费模块是综合时间模块与里程模块的计数计算总的费用。总体设计图如下:

(1)判断模块

判断模块主要通过对秒脉冲和里程脉冲进行计数,判断出租车是否停下,然后输出片选信号,选择时间计费还是里程计费。sta为使能端,sclk为时间脉冲,lclk为里程脉冲,dge为输出端。当sta端口输入信号为高电平时,模块工作。程序编写过程中,定义变量a,初值为0,若lclk有脉冲输入,在上升沿到来时,

a加1;同时当sclk遇到上升沿,根据a的值输出dge,若a=0,dge输出为0,否则dge输出为1;同时若sclk为高电平,a=0,否则为高阻状态。将dge端口连接至时间模块和里程模块,从而判断出由时间模块工作或里程模块工作。判断模块图如下所示:

(2)时间模块

时间模块是当出租车停下时,对秒脉冲进行计数,从而计算出出租车停下的累积时间,并输出累积时间和计费脉冲。sta为使能端,输入高电平时模块工作;sclk为时间脉冲输入,输入的脉冲为秒脉冲;dge为判断模块的输出端,该端口控制该模块是否工作,当dge端的输入,即判断模块的输出为“0”时,该模块工作。两个输出端分别输出时间及等候时所用的费用,时间输出端输出一共等候的时间,即秒脉冲的总时间;因为每等候5分钟按运行一分钟收费,所以当时间秒脉冲输入300下时,t-c端加1,即相当于行驶了一公里,并将其连接到计费模块,实现最终的计费。时间模块的模块图如下图所示:

(3)里程模块

里程模块是当出租车行驶的时候,对里程脉冲进行计数,从而算出出租车所行驶的里程,通过对单双程的控制进行不同的计费标准,最后输出行驶里程和计费脉冲。sta为使能端,其输入为高电平时模块工作;doub端口为单双程判断,输入为高电平时模块工作;dge为判断模块的输出,该模块的输入,当dge 为”1”时,该模块工作;lclk为里程脉冲输入,当里程脉冲输入为1500rad时,运行为1公里,设计过程中难点在于运行不足10公里与超过10公里的费用单价不同,后采用的方法为超过10公里后,里程输出采用相同的计数,但d-c端在每

1300rad按1公里计费,这样可得到相同的计费结果,同时降低了设计的难度,即在前10公里每1500rad,d-c加1,,超过10公里后,每1300rad,d-c加1,将d-c 端连接至计费模块的输入,完成最终的费用计算,里程输出端输出行驶的里程数。里程模块的模块图如下图所示:

(4)计费模块

计费模块通过对里程计费脉冲和时间计费脉冲分别进行计数,将其换算成价钱并对进行价钱输出。sta为使能端,输入为高电平时,模块工作;t-count与d-count分别为时间模块与里程模块的输出,也是该模块的两个输入端,该模块将时间与里程模块的输出计数输出累加,折算成费用,该模块的输出即为该成所需支付的总费用。计费模块的模块图如下图所示:

3、仿真结果

(1)判断模块仿真结果

sta为高电平时,模块工作。a为定义的变量,lclk到达上升沿时,a=a+1;sclk 到达上升沿时,若a=0,dge=0,否则等于1;若sclk为高电平,a=0.

相关文档
最新文档