目录
一、设计题目说明 (1)
二、设计方案 (1)
1、设计思路 (1)上海奇瑞
2、外部接口 (1)
3、总体框图 (1)
三、系统实现 (2)湖南汽车报价
1、设计原理 (2)
2、模块设计 (2)
四、仿真 (4)
五、测试 (5)
六、总结 (5)
1、实验中遇到的问题 (5)
2、心得收获 (6)
3、不足 (6)
附录:VHDL代码 (7)
一、设计题目说明
题目九:出租车计价器设计(平台实现)★★
完成简易出租车计价器设计,选做停车等待计价功能。
基本功能:
大众新款朗逸1)起步8元/3公里,此后2元/公里;
2)里程指示信号为每前进50米一个高电平脉冲,上升沿有效;显示行驶公里数,精确到0.1公里。(模拟时速40KM/h)
3)前进里程开始之前显示价钱,精确到0.1元;
4)用两个按键分别表示开始行程和结束行程。
选做功能:
1)增加一个停车等待/恢复行程按钮,用2个数码管显示等待时间,精确到0.1分钟。
2)等候费1元/分钟,计价精度为0.1元。
二、设计方案
1、设计思路
本设计是一个简易的出租车计费系统,实现计价功能并完成了选做功能。计费标准为按行程里程收费,起步价为8.00元;当里程小于3公里时,按照起价计费,车行超过3公里后再按2元/公里收费;等待累积时间超过2min,按照1元/分钟计费。本程序能模拟出租车的启动,停止,暂停等状态,并用LED数码管实时显示车费和汽车行驶里程以及等待时间。用三位数字显示总费用,显示方式为“XX.X”,单价为元。计价范围为0—99.9元,计价分辨率为0.1元;用三位数字显示汽车行驶里程,显示方式为“XX.X”,单位为km。计程范围为0—99.9km,计程分辨率为1km;用两位数字显示计程车
停车等待的时间,显示方式为“X.X”,单位为分钟。计时范围为0—9.9分钟,计程分辨率为0.1分钟。此计费器设有由司机控制的整体复位控制,计费控制和等待控制。
2、外部接口
(1)时钟信号输入:clk_100基准频率100HZ;
(2)计价器开关:start高电平开低,电平关;
(3)乘客上下车开关:in_car高电平乘客上车,低电平乘客下车;
(4)中途停车等待开关:stop高电平停车等待,低电平正常行驶;
(5)数字显示向量:ledag八位对应数码管的七个部分以及小数点;
(6)数码管选择向量:Bt八位对应八个数码管。
上海大众lavida朗逸3、总体框图
三、系统实现
1、设计原理
根据设计要求,系统的输入信号有100HZ时序信号clk_100,系统启动和重置信号start,计价开始以及乘客上下车信号 in_car,停车等待信号stop。系统的输出信号有:总费用数c0 ~ c2,行驶距离 k0 ~ k2,等待时间m0 ~ m1等,这些信号通过显示译码显示模块输出到指定的数码管。系统有一个脉冲输入信号clk_100,其根据设计要求分频成1/6Hz、1/9Hz和2/9Hz分别作为等待时间计时及和超时计费的脉冲、行驶距离脉冲和里程费用脉冲。三个控制输入开关start、in_car和stop;控制过程为:start作为系统启动和复位开关,当start为低电平时重置车费为初值8.0元,当start为高电平时系统启动,开始显示示数;当in_car为高电平时,系统开始根据行驶计费,此时的stop需要置为0;如需停车等待,就把s
top变为高电平,进行等待计费;当乘客到达目的地下车时,需手动置为0,来读取最终的行驶路程数、等待时间和最后的总费用,直接将start置为0,系统停止工作,价格开始归为起步价8.0元。整个设计由显示、译码、分频、计量四个部分组成。
2、模块设计
(1)显示模块
显示模块负责将6000000HZ的显示频率分为八个时段,当start为高电平时,每个时段负责显示其对应的数码管示数以及小数点,当start为低电平时,数码管不显示。选择最高频率作为显示刷新频率能尽可能使示数更新准确。
(2)译码模块华泰汽车集团董事长
译码模块完成计价、计时和计程的数据译码显示。数据送入译码显示模块进行译码,送至对应的数码管上显示,并且显示小数点。
(3)分频模块
将基准的100HZ时钟频率分频为每6s一个高电平,占空比为1/600的脉冲clk_599作为出租车等待时间
驾车脉冲。当stop停车等待信号为高电平时,每一个clk_599高电平上升沿代表等待时间加0.1分钟;当等待时间超过2分钟,en1信号变为高电平,此时每来一次等待时间上升沿脉冲,等待时间增加0.1分钟并且车费增加0.1元;
将基准的100HZ时钟频率分频为每9s一个高电平,占空比为1/900的脉冲作为出租车里程脉冲clk_899。当stop停车等待信号为低电平时,每一个clk_899高电平上升沿代表出租车行驶路程增加0.1km;当总里程小于3km时,车费为起步价,当大于3km时,en0信号变为高电平,此时按照2元/km计费,里程每增加0.05km,车费增加0.1元;
将基准的100HZ时钟频率分频为每4.5s一个高电平,占空比为1/450的脉冲作为出租车里程脉冲clk_449。当里程大于3km时,每一个clk_449高电平上升沿代表出租车行驶路程增加0.05km,此时按照2元/km计费,里程每增加0.05km,车费增加0.1元。
(4)计量模块
计量模块是整个系统实现里程计数和时间计数以及计费的重要部分。计量模块采用100Hz的上升沿驱动信号。
1)消抖部分
为避免误操作和抖动造成的计费错误,程序引入了消抖模块。采用延时消抖策略,每当开关信号变化时,延时20ms再检测一次电平,确认开关信号是否变化。
2)重置清零部分
维护系统,显示正常示数。当start为低电平时,重置车费为8.0元,清零等待时间,行驶里程以及其它信号;当in_car为低电平时,将en1,en0信号置为0,暂停计时和记里程,费用也不再增加。
3)计时部分
计算乘客的等待累积时间。当stop为高电平时,每当clk_100来一个上升沿,计时器就自增1,并且自动完成进位,当等待时间大于2min时,en1使能信号变为1。计时器的量程为9.9min,满量程后自动归零。
4)计程部分
计算乘客所行驶的公里数。当stop为低电平时,每当clk_100来一个上升沿,计程器就自增1,并且自动完成进位,当行驶里程大于3km时,en0使能信号变为1。计程器的量程为99.9km,满量程后自动归零。
5)计费部分
本模块受clk_100脉冲驱动,当start=1、in_car=1且en0或en1=1时程序始终处于计费状态,c0、c1、c2三个四位向量信号从低位到高位表示费用,其中c0表示0.1元。此时计费方案取决于en计费使能信号。即行程在3km内,而且等待累积时间小于2min(en0=0,en1=0)则为起步价8.0元;3km以外每公里按2元计费(en0=1,en1=0);等待时间超过2min,则按每分钟1元计费(en0=0,en1=1)。
四、仿真
仿真波形图
由波形图可知,等待时间为2.8分钟,行驶公里数为4.5公里。根据设计要求所得费用为:8.0元+(4.5k
m-3.0km)*2.0元/公里+(2.8min-2.0min)*1.0元=8.0+3.0+0.8=11.8元,和实际结果大致相同,仿真成功。