出租车自动计费系统.docx

上传人:b****4 文档编号:5882558 上传时间:2023-05-09 格式:DOCX 页数:14 大小:191.50KB
下载 相关 举报
出租车自动计费系统.docx_第1页
第1页 / 共14页
出租车自动计费系统.docx_第2页
第2页 / 共14页
出租车自动计费系统.docx_第3页
第3页 / 共14页
出租车自动计费系统.docx_第4页
第4页 / 共14页
出租车自动计费系统.docx_第5页
第5页 / 共14页
出租车自动计费系统.docx_第6页
第6页 / 共14页
出租车自动计费系统.docx_第7页
第7页 / 共14页
出租车自动计费系统.docx_第8页
第8页 / 共14页
出租车自动计费系统.docx_第9页
第9页 / 共14页
出租车自动计费系统.docx_第10页
第10页 / 共14页
出租车自动计费系统.docx_第11页
第11页 / 共14页
出租车自动计费系统.docx_第12页
第12页 / 共14页
出租车自动计费系统.docx_第13页
第13页 / 共14页
出租车自动计费系统.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

出租车自动计费系统.docx

《出租车自动计费系统.docx》由会员分享,可在线阅读,更多相关《出租车自动计费系统.docx(14页珍藏版)》请在冰点文库上搜索。

出租车自动计费系统.docx

出租车自动计费系统

EDA课程设计报告书

 

课题名称

出租车自动计费系统

姓名

学号

院系

专业

指导教师

 

一、设计任务及要求:

能够实现计费功能:

费用的计算是按行驶里程收费,设出租车的起步价是5.00元,当里程小于3km里时,按起步价收费;当里程大于3km时每公里按1.3元计费。

等待累计时间超过2min,按每分钟1.5元计费。

所以总费用按下式计算:

总费用=起步价+(里程-3km)*里程单价+等候时间*等候单价

 

指导教师签名:

年月日

二、指导教师评语:

 

指导教师签名:

年月日

三、成绩

 

验收盖章

年月日

出租车自动计费系统

1、基本设计思想

根据设计要求,系统的输入信号clk,计价开始信号Start,等待信号Stop,里程脉冲信号fin。

系统得输出信号有:

总费用数cha0~cha3,行驶距离km0~km1,等待时间min0~min1等。

系统有两个脉冲输入信号clk_750k、fin,其中clk_750k将根据设计要求分频成13hz、15hz和1hz分别作为公里计费和超时计费的脉冲。

两个控制输入开关start、stop;控制过程为:

start作为计费开始开关,当start为高电平时,系统开始根据输入的情况计费。

当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;价格开始归为起步价5.00元。

整个设计由分频模块、计量模块、计费模块、控制模块等四个部分组成。

其中计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费;同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。

计量模块采用1HZ的驱动信号,计费模块采用13HZ、15HZ的驱动信号;计量模块每计数一次,计费模块就实现13次或者15次计数,即为实现计时时的1.5元/min、计程时的1.3元/km的收费。

组成框图如下所示:

图1.1出租车系统框图

2、具体模块的功能设计

2.1分频模块

由于试验箱上没有13hz和15hz的整数倍时钟信号,所以近似得到13HZ、15HZ和1HZ的时钟频率。

本设计中通过以上三种不同频率的脉冲信号实现在计程车在行驶、等待两种情况下的不同计费。

模块元件如下:

图2.1.1分频模块

分频模块仿真波形如下:

图2.1.2分频模块仿真波形

波形分析说明:

当CLR为高电平且时钟信号为上升沿时,输出信号正常工作。

CLK_1输出是输入时钟信号的频率的1,CLK_13输出是输入时钟信号的频率的1/13,CLK_15输出是输入时钟信号的频率的1/15。

2.2计量模块

计量模块主要完成计时和计程功能。

计时部分:

计算乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为59min,满量程后自动归零。

计程部分:

计算乘客所行驶的公里数,当行驶里程大于3km时,本模块中en0使能信号变为1;当clk1每来一个上升沿,计程器就自增1,计程器的量程为99km,满量程后自动归零。

元件框图为:

图2.2.1计量模块

计量模块仿真波形为:

图2.2.2计量模块仿真波形图

由波形可知,Start置1程序始终处于计费状态,当fin脉冲到来时k0和k1进入计程状态,且k0每次满9就向k1进位,超过3km时en0就变为高电平;同理,当stop由0置为1时开始由计程进入等待状态,fin脉冲归为0里程计数停止,等待时间开始计时,m0每次满9就向m1进位,超过2min时en1就变为高电平。

2.3控制模块

本模块主要是通过计量模块产生的两个不同的输入使能信号en0、en1,对两个分频模块输出的13HZ、15HZ的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。

模块元件如下:

图2.3.1控制模块

控制模块仿真波形如下:

图2.3.2控制模块仿真波形图

由仿真波形可知,当en0=1时,输出clk_in1;当en1=1时,输出clk_in2。

当同时为1时,由于clk_in1优先级别高于clk_in2,所以输出clk_in1。

2.4计费模块

当计费信号Start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同单价的时段进行计费。

即行程在3km内,而且等待累积时间小于2min则为起步价5元;3km外以每公里按1.3远计费,等待累积时间超过2min则按每分钟1.5元计费。

c0、c1、c2、c3分别表示费用的显示。

模块元件为:

图2.4.1计费模块

计费模块仿真波形:

图2.4.2计费模块仿真波形图

由图可知当处于计费状态时,随着clk2的高电平的到来,计费起步价为5元。

c0满9向c1进位,c1满9向c2产生进位,依次逐级进位,从而完成计费功能。

2.5总原理图

图形如下所示:

图2.5.1总原理图

程序最终功能实现仿真波形:

图2.5.2总原理图的仿真波形图

由图中可以看出,当fin脉冲信号到来时,实现了行驶计费,当行驶里程超过三公里,则再按每公里1.3元计费;当stop为高电平,即进入等待计时收费;当等待时间超过2min时,每过一分钟加1.5元,即为实现每等一分钟收费1.5元。

但本次仿真中等待时间为1分钟,没有超过2分钟,因此没有等待时间的计费。

结果验证:

出租车的起步价是5元,当行驶了33km的时候,收费为5+(33—3)*1.3=44元

3、设计总结

在这一周里我们再次熟悉和增强了对VHDL语言的基本知识,熟悉利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来。

VHDL硬件描述语言打破了硬件和软件设计人员之间互不干涉的界限,可以使用语言的形式来进行数字系统的硬件结构、行为的描述,直接设计数字电路硬件系统。

通过编程、下载后,该芯片已经具备了原来需要使用复杂的数字电路实现的功能;更加了解和加深了对编制和调试程序的技巧,进一步提高了上机动手能力,培养了使用设计综合电路的能力,养成了提供文档资料的习惯和规范编程的思想。

参考文献

[1] 江国强.编著.EDA技术及应用[M].西安:

西安电子科技大学出版社,第3版;47-52 

[2] 潘松等.主编.EDA技术实用教程[M].科学出版社,2006;35-41

[3] 雷伏容.主编.VHDL电路设计[J].北京:

清华大学出版社,2006;12-25

[4] 王树昆,赵晓巍.EDA技术在教学中的应用[M].吉林:

吉林工程技术师范学院学报,2003;19(9):

4-7

附录:

1.分频源程序:

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYfenpinqiIS

PORT

(clk:

INstd_logic;

clk_15,clk_13,clk_1:

OUTstd_logic——端口说明

);

ENDfenpinqi;

ARCHITECTUREcdOFfenpinqiIS

begin

p1:

process(clk)

variablea:

integerrange0to20;——定义了变量A

begin

ifclk'eventandclk='1'then——时钟信号上升沿有效

ifa>=14then

a:

=0;

clk_15<='1';——实现了1/15分频,输出高电平

else

a:

=a+1;

clk_15<='0';——当a<14的时候输出低电平

endif;

endif;

endprocessp1;

p2:

process(clk)

variableb:

integerrange0to20;——定义了变量B

begin

ifclk'eventandclk='1'then——时钟信号上升沿有效

ifb>=12then

b:

=0;

clk_13<='1';——实现了1/13分频,高电平有效

else

b:

=b+1;

clk_13<='0';——当a<12的时候输出低电平

endif;

endif;

endprocessp2;

clk_1<=clk;

endcd;

2.计量源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityjiliangis

port(start:

instd_logic;--计费开始信号

fin:

instd_logic;--里程脉冲信号

stop:

instd_logic;--行驶中,中途等待信号

clk1:

instd_logic;--驱动脉冲

en1,en0:

bufferstd_logic;--计费单价使能信号

k1,k0:

bufferstd_logic_vector(3downto0);--行驶公里计数

m1,m0:

bufferstd_logic_vector(3downto0));--等待时间计数

endjiliang;

architecturert2ofjiliangis

signalw:

integerrange0to59;--计时范围0~59

begin

process(clk1)

begin

ifclk1'eventandclk1='1'then

ifstart='0'then

w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";k0<="0000";

elsifstop='1'then--计时开始信号

ifw=59thenw<=0;

elsew<=w+1;

endif;

ifm0="1001"thenm0<="0000";

ifm1="0101"thenm1<="0000";

elsem1<=m1+1;

endif;

elsem0<=m0+1;

endif;

ifstop='1'thenen0<='0';

ifm1&m0>"00000010"thenen1<='1';--若等待时间大于2min则en1置1

elseen1<='0';

endif;

endif;

elsiffin='1'then--里程计数开始

ifk0="1001"thenk0<="0000";

ifk1="1001"thenk1<="0000";--计程范围0~99

elsek1<=k1+1;

endif;

elsek0<=k0+1;

endif;

ifstop='0'thenen1<='0';

ifk1&k0>"00000011"thenen0<='1';--若行驶里程大于3km则en0置1

elseen0<='0';

endif;

endif;

endif;

endif;

endprocess;

endrt2;

3.控制模块源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitykongzhiis

port(en0,en1:

instd_logic;--使能选择信号

clk_in1:

instd_logic;--13分频输入信号

clk_in2:

instd_logic;--15分频输入信号

clk_out:

outstd_logic);--输出信号

endkongzhi;

architecturert3ofkongzhiis

begin

process(en0,en1)

begin

ifen0='1'then--实现二选一功能

clk_out<=clk_in1;

elsifen1='1'then

clk_out<=clk_in2;

endif;

endprocess;

endrt3;

4.计费模块源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityjifeiis

port(clk2:

instd_logic;--计费驱动信号

start:

instd_logic;--计费开始信号

c0,c1,c2,c3:

bufferstd_logic_vector(3downto0));

endjifei;

architecturert4ofjifeiis

begin

process(clk2,start)

begin

ifstart='0'thenc3<="0000";c2<="0000";c1<="0101";c0<="0000";--起步价5元

elsifclk2'eventandclk2='1'then

ifc0="1001"thenc0<="0000";

ifc1="1001"thenc1<="0000";

ifc2="1001"thenc2<="0000";

ifc3="1001"thenc3<="0000";--计价范围0~999.9元

elsec3<=c3+1;

endif;

elsec2<=c2+1;

endif;

elsec1<=c1+1;

endif;

elsec0<=c0+1;

endif;

endif;

endprocess;

endrt4;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2