(VHDL实验报告)出租车计费器的设计
基于VHDL的计程车计价器设计
目录摘要 ......................................................................................................................................错误!未定义书签。
ABSTRACT ............................................................................................................................错误!未定义书签。
目录 (I)前言 ........................................................................................................................................错误!未定义书签。
第一章概述 ............................................................................................................................错误!未定义书签。
第一节设计背景 ........................................................................................................... 错误!未定义书签。
第二节EDA发展概况.................................................................................................. 错误!未定义书签。
基于VHDL语言的出租车计价器的设计
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车最重要的工具。
它关系着双方的利益。
具有良好的性能的计价器无疑是对广大出租车司机朋友还是乘客来说都是很重要的。
因此,汽车计价器的研究也是十分有应用价值的。
随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以低价高质的服务给人们带来了出行的享受。
但是总存在着买卖纠纷困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器。
用更加精良的计价器来为乘客提供更加方便快捷的服务。
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口的,不但不不够准确,而且价格还十分昂贵。
随着改革开放的日益深入,出租车行业的发展势头已十分突出,国内各机械厂纷纷推出国产计价器。
刚开始出租车计价器的功能从刚才开始的只显示路程,到能够自主计费,以及现在能够打印发票和语音提示、按时间自主变动单价等功能。
随着旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
本设计就是采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到出租车计价系统的硬件结构,通过Quartus II 7.2软件下进行设计、仿真,再在EDA试验箱进行硬件仿真,使各项指标符合设计要求,具有一定的实用性。
虽然以前有基于数字电路、单片机进行的出租车计价器的设计,但用数字电路设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;而基于单片机的设计,虽然开发成本降低,但其外围电路较多,而且调试复杂,抗干扰能力差,从而也导致计价器不够准确。
而基于VHDL语言的FPGA 芯片稳定性好,抗干扰能力强,外围电路少,执行速度快,适合像出租车计价器的这种较复杂的电路设计。
2.1 设计要求设计一种出租车计价器,计费标准如下:(1)起步价8.00元,起步公里为3公里;(2)超过三公里,每公里按1.00元收费;(3)单程行驶里程超过20公里。
VHDL语言的出租车计费器设计说明
用VHDL语言设计出租车计价器1个报价近年来,出租车行业发展迅速。
全国有数千家出租车公司,出租车计价器市场巨大。
随着电子科学技术的不断发展,特别是集成电路的飞速发展,电子设计自动化已经成为主要的设计手段。
随着EDA技术的蓬勃发展和FPGA等数字可编程器件的出现,数字出租车计价器的设计变得更加简单,性能更加稳定,可以实现更加复杂的功能。
此外,利用EDA软件可以方便地在计算机上实现设计和仿真。
本设计基于VHDL(FPGA)语言,是电子设计领域最具活力和前景的技术,未来必将取代一些过时的数字元件。
1.1课程设计的目的随着电子技术的不断发展和进步,集成电路的设计方法也在不断更新。
今天,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所取代。
只有基于硬件描述语言和逻辑综合的子项下的电路设计方法,才能满足集成电路系统设计日益复杂的要求,缩短设计周期,满足集成电路系统设计日益迫切的要求。
在这种情况下,传统的出租车计价器的设计方法已经跟不上现在的节奏,过去的出租车计价器的功能也远远不能满足实际需要。
以往出租车计价器的不稳定和功能短是大家开始寻找功能更强大、性能更稳定、价格更低廉的新型出租车计价器的缺点。
大规模可编程逻辑器件和VHDL硬件描述语言的出现使这一切成为可能。
本设计的研究目标和意义是使用价格低廉、性能稳定、价格低廉、扩展性强的出租车计价器,满足当前出租车市场的需求,从而解决当前出租车计价器存在的一系列问题。
1.2课程设计要求1.它可以实现充电功能。
收费标准为:按里程收费,起步费10.00元,车库3公里后再按2元/公里收费。
计价器收费或超过一定收费(如20元)时,每公里收取车费的50%,车停止收费。
2.实现预设功能:可以预设起步费,每公里收费,车行里程。
3.实现模拟功能:可以模拟汽车的启动、停止、暂停、速度等状态。
4.设计一个动态扫描电路:用两位小数显示票价。
5.用VHDL语言设计一个满足上述功能要求的出租车计价器,并用层次化设计方法设计电路。
基于VHDL_的出租车计费器的设计
基于VHDL 的出租车计费器的设计目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
本设计是一种采用FPGA芯片进行出租车计费器,主要分为分频模块、计量模块、计费模块、控制模块等模块,利用FPGA的可编程性,简洁又多变的设计方法,缩短了研发周期。
主要采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品的升级。
一、设计任务与要求(1)、能够实现计费功能费用的计算是按行驶里程收费,设出租车的起步价是5.00元,当里程小于3km里时,按起步价收费;当里程大于3km时每公里按1.3元计费。
等待累计时间超过2min,按每分钟1.5元计费。
所以总费用按下式计算:总费用=起步价+(里程-3km)*里程单价+等候时间*等候单价(2)、能够实现显示功能●显示汽车行驶里程:用四位数字显示,显示方式为“XXXX”,单价为km。
计程范围为0~99km,计程分辨率为1km。
●显示等候时间:用两位数字显示分钟,显示方式为“XX”。
计时范围为0~59min,计时分辨率为1min。
●显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。
计价范围为999.9元,计价分辨率为0.1元。
二、设计原理根据设计要求,系统的输入信号clk,计价开始信号Start,等待信号Stop,里程脉冲信号fin。
基于VHDL语言的出租车计价器
(基于VHDL语言)出租车计价器自己做的大作业经过测试完全通过,不过里面的时间脉冲以及里程脉冲的时钟信号都比较难搞,不过可以修改其中的值来满足你们提供的时钟脉冲题目要求:(1)行程3公里内(包括3公里),且等待累计时间2分钟内(包括2分钟),起步费为10元;(2)3公里外(不包括3公里)以每公里2元,等待累计时间2分钟外(不包括2分钟)以每分钟以1.0元计费;(3)能显示行驶公里数、等待累计时间和最后的总费用;(4)本计费器的显示范围为0~99元,计价分辨率为1元;计程器显示范围为0~99公里,分辨率为1公里;计时器的显示范围是分钟的显示范围是0—99,分辨率为1分钟。
秒的显示范围是0—59。
分辨率为1秒本出租车计价器的设计共分4个模块:判断模块、时间模块、里程模块、计费模块。
总的设计图如图1所示:计价开始控制判断模块library ieee;use ieee.std_logic_1164.all;--entity judge isport(sclk,sta,lclk: in std_logic;dge: out std_logic);end;architecture beh of judge isbeginprocess(sta,lclk,sclk)variable a: integer range 0 to 64;beginif sta='1' thenif lclk'event and lclk='1' thena:=a+1;end if;if sclk'event and sclk='1' thenif a=0 thendge<='0';--shijian processelsedge<='1';--licheng processend if;end if;if sclk='1' thena:=0;end if;elsedge<='Z';end if;end process;end;时间模块library ieee;use ieee.std_logic_1164.all;--entity time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10); end;--architecture beh of time_count is beginprocess(sta,sclk,dge)variable count: integer range 0 to 60; variable ge: integer range 0 to 10; variable shi: integer range 0 to 10; variable t_c: std_logic;beginif sta='1' thenif dge='0' thenif sclk'event and sclk='1' then count:=count+1;if count=1 thent_c:='0';end if;if count=60 thencount:=0;ge:=ge+1;if ge>2 thent_c:='1';elsif ge>0 thent_c:='1';end if;if ge=10 thenge:=0;shi:=shi+1;if shi=10 thenshi:=0;end if;end if;end if;end if;end if;elsege:=0;shi:=0;t_c:='0';end if;minge<=ge;minshi<=shi;t_count<=t_c;end process;end;里程模块library ieee;use ieee.std_logic_1164.all; --entity time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10); end;--architecture beh of time_count is beginprocess(sta,sclk,dge)variable count: integer range 0 to 60; variable ge: integer range 0 to 10; variable shi: integer range 0 to 10; variable t_c: std_logic;beginif sta='1' thenif dge='0' thenif sclk'event and sclk='1' then count:=count+1;if count=1 thent_c:='0';end if;if count=60 thencount:=0;ge:=ge+1;if ge>2 thent_c:='1';elsif ge>0 thent_c:='1';end if;if ge=10 thenge:=0;shi:=shi+1;if shi=10 thenshi:=0;end if;end if;end if;end if;end if;elsege:=0;shi:=0;t_c:='0';end if;minge<=ge;minshi<=shi;t_count<=t_c;end process;end;计费模块library ieee;use ieee.std_logic_1164.all;--entity price_count isport(sta,t_count,d_count: in std_logic;mge,mshi: out integer range 0 to 10); end;--architecture beh of price_count issignal t_ge,t_shi: integer range 0 to 10; signal d_ge,d_shi: integer range 0 to 10; begin--process(sta,t_count)variable tshi: integer range 0 to 10:=1; variable tge: integer range 0 to 10;beginif sta='1' thenif t_count'event and t_count='1' then tge:=tge+1;if tge=10 thentge:=0;tshi:=tshi+1;if tshi=10 thentshi:=0;end if;end if;end if;elsetge:=0;tshi:=1;end if;t_ge<=tge;t_shi<=tshi;end process;--process(sta,d_count)variable dge,dshi: integer range 0 to 10; beginif sta='1' thenif d_count'event and d_count='1' then dge:=dge+2;if dge=10 thendge:=0;dshi:=dshi+1;if dshi=10 thendshi:=0;end if;end if;end if;elsedge:=0;dshi:=0;end if;d_ge<=dge;d_shi<=dshi;end process;--process(d_ge,d_shi,t_ge,t_shi) variable cge: integer range 0 to 1; variable ge,shi:integer range 0 to 10; beginge:=d_ge+t_ge;if ge>=10 thenge:=ge-10;cge:=1;elsecge:=0;end if;shi:=d_shi+t_shi+cge;mge<=ge;mshi<=shi;end process;end;显示模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(CLK:in std_logic;sminge,sminshi: in integer range 0 to 10;skmge,skmshi: in integer range 0 to 10;smge,smshi: in integer range 0 to 10;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0)); end;architecture one of display issignal cnt1:std_logic_vector(22 downto 0);signal S:std_logic_vector(2 downto 0);signal sel:std_logic_vector(2 downto 0);beginprocess(CLK)beginif CLK'event and CLK='1' THEN cnt1<=cnt1+1;end if;END PROCESS;S<=cnt1(5 downto 3);--300hzsel<="000" when S="000" else"001" when S="001" else"010" when S="010" else"011" when S="011" else"100" when S="100" else"101" when S="101" else"110" when S="110" else"111" when S="111" else"ZZZ";weixuan<=sel;process(sel,sminshi,sminge,skmshi,skmge,smshi,smge) variable num:integer range 0 to 10;begincase sel ISwhen"000"=>num:=sminge;when"001"=>num:=sminshi;when"011"=>num:=skmge;when"100"=>num:=skmshi;when"110"=>num:=smge;when"111"=>num:=smshi;when others=>num:=0;end case;case num ISwhen 0=>seg<="00111111";when 1=>seg<="00000110";when 2=>seg<="01011011";when 3=>seg<="01001111";when 4=>seg<="01100110";when 5=>seg<="01101101";when 6=>seg<="01111101";when 7=>seg<="00000111";when 8=>seg<="01111111";when 9=>seg<="01101111";when others=>seg<="00000000";end case;end process;end one;元件例化模块library ieee;use ieee.std_logic_1164.all;--entity comp isport(sclk,lclk,sta,dclk: in std_logic;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0)); end;--architecture beh of comp is--component judge isport(sclk,sta,lclk: in std_logic;dge: out std_logic);end component;--component time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10);end component;--component distance_count isport( sta,lclk,dge: in std_logic;kmge,kmshi: out integer range 0 to 10;d_count: out std_logic);end component;--component price_count isport(sta,t_count,d_count: in std_logic;mge,mshi: out integer range 0 to 10);end component;--component display isport(CLK:in std_logic;sminge,sminshi: in integer range 0 to 10;skmge,skmshi: in integer range 0 to 10;smge,smshi: in integer range 0 to 10;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0));end component;--signal w,x,y: std_logic;signal time_ge,time_shi:integer range 0 to 10;signal pri_ge,pri_shi:integer range 0 to 10;signal dis_ge,dis_shi:integer range 0 to 10;--beginU1: judge port map(sta=>sta,sclk=>sclk,lclk=>lclk,dge=>w);U2: time_count port map(sta=>sta,sclk=>sclk,dge=>w,t_count=>x,minge=>time_ge,minshi=>time_shi);U3: distance_count port map(sta=>sta,lclk=>lclk,dge=>w,d_count=>y,kmge=>dis_ge,kmshi=>dis_shi);U4: price_count port map(sta=>sta,t_count=>x,d_count=>y,mge=>pri_ge,mshi=>pri_shi);U5: display port map(dclk,time_ge,time_shi,dis_ge,dis_shi,pri_ge,pri_shi,weixuan,seg);end;。
出租车计价器实验报告
大规模集成电路实验报告院系:电子工程学院班级:研2-093专业:电路与系统任课教师:任爱峰姓名:冀晓涛学号:0911120640出租车计价器的VHDL设计与仿真一、设计要求及主要技术指标(1)、设计要求1、设计一个出租车计价器。
2、该计价器的计费系统:行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费。
3、并能显示行驶公里数、等待累计时间、总费用。
(2)、主要技术指标1、计价范围:0~999.9元计价分辨率:0.1元。
2、计程范围:0~99公里计程分辨率:1公里。
3、计时范围:0~59分计时分辨率:1分。
二、系统组成它由外部输入模块、FPGA模块、显示模块三部分组成。
三、模块设计(1)、分频模块1、分频模块对频率为240Hz的输入脉冲进行分频,2、得到的频率为16Hz,15Hz和1Hz的三种频率。
(2)、控制模块控制模块是系统的核心部分,对计价器的状态进行控制。
(3)、计量模块1、计价部分:行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。
2、计时部分:计算乘客的等待累计时间。
计时器的量程为59分,满量程自动归零。
3、计程部分:计算乘客所行驶的公里数。
计程器的量程为99公里,满量程自动归零。
(4)、译码模块1、计费数据送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示。
2、计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示。
3、计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示。
(5)、显示模块1、计价数据在以百元、十元、元、角为单位对应的数码管上显示。
2、计时数据在以分为单位对应的数码管上显示。
3、计程数据在以公里为单位的数码管上显示显示。
四、程序设计与仿真出租车计价器电路符号(1)、出租车计价器VHDL程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity taxi isport ( clk_240 :in std_logic; --频率为240Hz的时钟start :in std_logic; --计价使能信号stop:in std_logic; --等待信号fin:in std_logic; --公里脉冲信号cha3,cha2,cha1,cha0:out std_logic_vector(3 downto 0); --费用数据km1,km0:out std_logic_vector(3 downto 0); --公里数据min1,min0: out std_logic_vector(3 downto 0)); --等待时间end taxi;architecture behav of taxi issignal f_15,f_16,f_1:std_logic; --频率为15Hz,16Hz,1Hz的信号signal q_15:integer range 0 to 15; --分频器signal q_16:integer range 0 to 14; --分频器signal q_1:integer range 0 to 239; --分频器signal w:integer range 0 to 59; --秒计数器signal c3,c2,c1,c0:std_logic_vector(3 downto 0); --费用计数器signal k1,k0:std_logic_vector(3 downto 0); --公里计数器signal m1:std_logic_vector(2 downto 0); --分的十位计数器signal m0:std_logic_vector(3 downto 0); --分的个位计数器signal en1,en0,f:std_logic; --使能信号beginfeipin:process(clk_240,start)beginif clk_240'event and clk_240='1' thenif start='0' then q_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0';elseif q_15=15 then q_15<=0;f_15<='1'; --此IF语句得到频率为15Hz的信号else q_15<=q_15+1;f_15<='0';end if;if q_16=14 then q_16<=0;f_16<='1'; --此IF语句得到频率为16Hz的信号else q_16<=q_16+1;f_16<='0';end if;if q_1=239 then q_1<=0;f_1<='1'; --此IF语句得到频率为1Hz的信号else q_1<=q_1+1;f_1<='0';end if;if en1='1' then f<=f_15; --此IF语句得到计费脉冲felsif en0='1' then f<=f_16;else f<='0';end if;end if;end if;end process;process(f_1)beginif f_1'event and f_1='1' thenif start='0' thenw<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";elsif stop='1' thenif w=59 then w<=0; --此IF语句完成等待计时if m0="1001" then m0<="0000"; --此IF语句完成分计数if m1<="101" then m1<="000";else m1<=m1+1;end if;else m0<=m0+1;end if;if m1&m0>"0000001"then en1<='1'; --此IF语句得到en1使能信号else en1<='0';end if;else w<=w+1;en1<='0';end if;elsif fin='1' thenif k0="1001" then k0<="0000"; --此IF语句完成公里脉冲计数if k1="1001" then k1<="0000";else k1<=k1+1;end if;else k0<=k0+1;end if;if k1&k0>"00000010" then en0<='1'; --此IF语句得到en0使能信号else en0<='0';end if;else en1<='0';en0<='0';end if;cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0; --费用数据输出km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0; --公里数据、分钟数据输出end if;end process;process(f,start)beginif start='0' then c3<="0000";c2<="0001";c1<="0000";c0<="0000";elsif f'event and f='1' thenif c0="1001" then c0<="0000"; --此IF语句完成对费用的计数if c1="1001" then c1<="0000";if c2="1001" then c2<="0000";if c3<="1001" then c3<="0000";else c3<=c3+1;end if;else c2<=c2+1;end if;else c1<=c1+1;end if;else c0<=c0+1;end if;end if;end process;end behav;(2)、程序仿真图注:1. 仿真图中秒跟分的关系为3进制,即w为2时就归0;2. 出租车总行驶5公里,等待累计时间为4分钟,总费用为16.2元。
基于verilog_HDL的出租车计费器
《EDA技术与应用》实训报告学号姓名指导教师:江国强杨艺敏2011 年4 月28 日实训题目:出租车计费器1.系统设计1.1 设计要求1.1.1 设计任务设计并制作一台出租车计费器。
1.1.2 技术要求①用EDA实训仪的I/O设备和PLD芯片实现出租车计费器的设计。
②出租车起步开始计程和计费,计程系统按实际公里数计程,计费系统首先显示起步价(如7.0),车行驶2km以内,只收起步价7元。
③出租车行驶超过2km后,按每公里1.6元在7.0元的基础上增加。
④出租车行驶超过10km后(或超过20元路费),每公里加收50%的车费,即车费变为每公里2.4元。
⑤出租车达到目的地后,(用一个按钮)计程和计费数据清零,为下一次计费开始。
1.2 方案比较最初计费模块选择乘法,但占用资源过多,所以选择分段加法来解决1.3 方案论证1.3.1 总体思路整个系统主要由计程兼计费模块组成,另外添加计时器和流水灯模块作为附加功能,最后由选择模块选择输出费用或时间,分频模块作为路程模拟输入。
1.3.2 设计方案分频器将实训仪的时钟转换成1s或0.1s的脉冲模拟行进一公里,将脉冲输入计程兼计费模块进行路程累加和计费,同时输出路程数和费用。
流水灯则按行进路程进行亮灭,附加的时钟功能可以查看时间。
最后由选择模块进行费用和时间间的切换。
2.各个模块程序的设计①分频模块:模拟车辆行进,分1s/km档和0.1s/km档module fpq(clk,cout,k1);input clk,k1;reg [24:0] q;output reg cout;always @(posedge clk)begincase(k1)0: begin q=q+1;if (q==20000000-1)begin cout=1;q=0;endelse cout=0;end1: begin q=q+1 ;if (q==2000000-1)begin cout=1;q=0;endelse cout=0;endendcaseendendmodule②计程兼计费模块:jsq99累计路程dejfq按规则计费,同时附带输出显示该模块又由两个小模块组成:jsq99:路程显示module jsq99(clr,clk,q,cout,k2);input clk,clr,k2;output reg[7:0]q;output reg cout;always @(posedge clk or negedge clr)beginif(~clr) q = 0;else beginif(k2==0)beginif(q=='h99) q = 0;else q = q+1;if(q[3:0]=='ha)beginq[3:0] = 0;q[7:4] = q[7:4]+1;endif(q==0) cout = 1;else cout = 0;endendendendmoduledejfq:计费module dejfq(clk,clrn,q,k2);input clk,k2;input clrn;output reg[11:0] q;reg[3:0] c;always @(posedge clk or negedge clrn)beginif(~clrn) begin c=0;q=0;endelse beginif(k2==0)beginif(c<14) c=c+1;if(c<=2) q[7:4]=7;else if(c<=10)beginq[3:0]=q[3:0]+6;q[7:4]=q[7:4]+1;if(q[3:0]>9)begin q[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;endif(q[7:4]>9)begin q[7:4]=q[7:4]-10;q[11:8]=q[11:8]+1; endendelse if(c>10)beginq[3:0]=q[3:0]+4;q[7:4]=q[7:4]+2;if(q[3:0]>9)begin q[3:0]=q[3:0]-10;q[7:4]=q[7:4]+1;endif(q[7:4]>9)begin q[7:4]=q[7:4]-10;q[11:8]=q[11:8]+1;endendend if(c>14) c=11;endendendmodule③选择器:选择显示时间或费用,拨下拨码开关显示路程和费用,拨上显示时钟。
出租车计价器-课程设计报告
软件学院课程设计报告课程题目出租车计价器班级集成13-4专业集成电路设计与集成系统学生学号指导教师(填写自己班的指导教师)年月日1.课程设计目的全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
2.课程设计题目描述和要求2.1.课程设计题目描述①.实现计费功能,计费标准为:按行驶里程计费,起步价为7.0元,并在车行3km 后按2.2元/km 计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。
②.现场模拟功能:以开关或按键模拟公里计数,能模拟汽车起动、停止、暂停等状态。
③.将车费和路程显示出来,各有一位小数。
2.2.总体设计思路框架2.3.课程设计题目要求①.设计正确,方案合理。
②.程序精炼,结构清晰。
③.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。
④.上机演示。
⑤.有详细的文档。
文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。
3.设计思想和设计内容3.1 出租车计费设计该出租车计费器按下开关S1后开始计费和计里程数,起步价是7元,行驶3公里,以后2.2元/公里。
并且设计选择模块,在车费超过20元每公里加收50%车费即3.3元/公里。
3.2 基本设计思想出租车计费器根据设计要求可初步分为3方面——显示、记里程数、记费。
之后再根据三方面分别设计模块。
1.显示模块。
一般计数器显示数字为1-F即16进制,而16进制不方便观看,所以在设计这一模块时我们将16进制改为10进制输出进而设计了译码模块。
2、里程模块。
设计要求对里程计数主要分为两个方面,计数以及公里数比较。
即3公里之内收7元,3公里之后20元(通过计算为9公里)以内每公里2.2元,9公里以外为每公里3.3元。
出租车计费器的设计
目录1 引言 12 EDA技术简介 23 FPGA简介 34 总体设计 54.1 总体设计思想 54.1.1 分频模块 54.1.2控制模块 54.1.3计量模块 54.1.4译码显示模块 64.2 时序仿真图及延时分析 64.3 VHDL源代码 85 设计总结 11参考文献 121 引言随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确。
利用VHDL语言设计出租车计费系统,使其实现计费以及预置和模拟汽车启动、停止、等待等功能设计出动态扫描电路显示车费数目,突出了其作为硬件描述语言的良好的可能性、可移植性和易理解等优点。
此程序通过下载到芯片EP1K30TC144-3后,可应用于实际的出租车系统中。
本文针对FPGA器件,用EDA工具软件Max+P1usⅡ,设计了一种出租车的计价器,它可以以十进制数的形式,直观地显示出租车行驶的里程和乘客应付的费用,具有一定的实际应用价值。
2 EDA技术简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
现在对EDA的概念或范畴用得很广,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
出租车计费器VHDL语言
《数字逻辑电路》课程设计——出租车计费器的设计计算机学院软件工程1401赵雷3140608027出租车计费器的设计一、系统设计任务及要求(1)能实现计费功能,计费标准为:按行驶里程收费,起步价为7.00元,并在车行3千米后再按2元/千米,当总费用达到或超过40元时,每千米收费4元,客户端需要停车等待时按时间收费,计费单价每20秒1元。
(2)设计动态扫描电路:以十进制显示出租车行驶的里程与车费,在数码管上显示(前四个显示里程,后三个显示车费)。
(3)用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
(4)完成电路全部设计后,通过系统试验箱下载验证设计的正确性。
二、系统设计方案根据系统设计设计要求不难得知,整个出租车计费系统按功能主要分为速度选择模块、计程模块、计时模块、计费模块4个模块。
车速控制模块计数器模块译码模块动态扫描电路模块顶层原理图1.速度模块:通过对速度信号sp的判断,决定行使的路程,这里是通过速度信号来模拟一个变量的取值。
如kinside变量,其含义是行进100m所需的时钟周期数,然后每行进100m,则产生一个脉冲clkout来驱动计费模块。
VHDL语言:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Taxi_part1 isport(clk,reset,start,stop:in std_logic;sp :in std_logic_vector(2 downto 0);clkout :out std_logic);end Taxi_part1;architecture behavior of Taxi_part1 isbeginprocess(clk,reset,stop,start,sp)type state_type is(s0,s1);variable s_state:state_type;variable cnt:integer range 0 to 1400;variable kinside:integer range 0 to 1400;begincase sp iswhen "000"=> kinside:=0;when "001"=> kinside:=1400;when "010"=> kinside:=1200;when "011"=> kinside:=1000;when "100"=> kinside:=800;when "101"=> kinside:=600;when "110"=> kinside:=400;when "111"=> kinside:=200;end case;if(reset='1') then s_state:=s0;elsif(clk'event and clk='1') thencase s_state iswhen s0=>cnt:=0;clkout<='0';if(start='1') then s_state:=s1;else s_state:=s0;end if;when s1=>clkout<='0';if(stop='1') then s_state:=s0; --相当于无客户上车elsif(sp="000") then s_state:=s1; ---有客户上车,但车速位0,即客户刚上车还未起步elsif(cnt=kinside) then cnt:=0;clkout<='1'; s_state:=s1;else cnt:=cnt+1; s_state:=s1;end if;end case;end if;end process;end behavior;2.计程模块:由于一个clkout信号代表行进100m,故通过对clkout计数,可以获得共行进的距离kmcount。
「基于VHDL语言的出租车计费器设计」
「基于VHDL语言的出租车计费器设计」出租车计费器是一种广泛应用于出租车行业的设备,用于计算车辆的费用并实时显示给乘客。
本文将基于VHDL语言设计一个简单的出租车计费器。
设计一个出租车计费器需要考虑以下几个方面:车辆里程计算、时间计费、费用显示和控制。
首先,我们将从车辆里程计算开始设计。
假设出租车的速度传感器每隔一段时间测量一次速度,我们可以通过速度传感器数据和时间信息计算车辆的里程。
这里我们可以设计一个有限状态机来记录车辆的行驶状态和位置信息,并计算里程。
可以使用计算机存储器来存储车辆位置信息,并使用计数器来记录总里程。
接下来,我们需要设计时间计费模块。
假设每分钟的计费费率为X元,我们可以使用一个计数器来记录车辆行驶的时间,并将计数器的值与X元相乘得到计费金额。
我们还可以通过设置计数器的初始值和最大值来控制计费的时间间隔和最长计费时间。
费用显示模块是出租车计费器的核心功能之一、我们可以使用七段数码管或LCD显示屏来实时显示费用信息。
设计费用显示模块需要确定费用显示的格式,例如小数点位置、位数等。
我们还可以设计一个使费用显示模块能够显示不同运行状态下的附加信息的控制模块。
最后,我们需要设计一个控制模块来实现出租车计费器的整体控制。
这个模块可以通过读取车辆速度和时间计费器的值,并将这些值传递给里程计算器和时间计费器。
此外,控制模块还可以实现一些功能,如启动和停止计费器、调整计费费率、重置里程和时间等。
综上所述,基于VHDL语言的出租车计费器设计涉及到车辆里程计算、时间计费、费用显示和控制等多个方面。
我们可以使用VHDL语言来实现这些功能模块,并通过模块化设计方法将它们组合在一起,实现一个功能完善的出租车计费器。
这个设计不仅可以提高出租车行业的计费效率,还可以为乘客提供准确的费用信息,提升用户体验。
基于VHDL语言的多功能出租车计价器设计
2、研究更加智能的人机交互方式,如语音识别、手势控制等,提升用户的使 用体验。
3、拓展计价器的功能,如加入预约功能、在线支付功能等,满足用户的更多 需求。
4、探讨如何将云计算、大数据等技术应用于出租车计价器,以提高数据分析 和管理效率。
总之,本次演示设计的基于VHDL语言的多功能出租车计价器具有一定的实用价 值和使用价值,为出租车行业的发展提供了新的技术支持和解决方案。在未来 的研究中,我们将继续行业的发展动态和技术趋势,不断优化和完善多功能出 租车计价器的设计和功能。
3、测试界面友好性:观察计价器的显示界面,评估用户界面的友好程度,确 保用户能够轻松操作。
4、测试稳定性:长时间运行计价器,观察其是否出现死机、卡顿等问题,确 保计价器的稳定性。
经过严格的测试,我们发现本设计的多功能出租车计价器在计价准确性、界面 友好性和稳定性方面均表现出色。
创新点和优点
本设计的多功能出租车计价器具有以下创新点和优点:
基于VHDL语言的多功能出租车计价器设 计
01 引言
目录
02 研究现状
03 技术实现
04 功能测试
05 创新点和优点
06 总结与展望
引言
随着科技的不断发展,智能化和多功能化成为众多日常用品的设计趋势。出租 车计价器作为城市交通的重要组成部分,也面临着相同的发展需求。本次演示 旨在基于VHDL语言,设计一款多功能出租车计价器,以提高计价的准确性、便 捷性和智能化水平。
谢谢观看
1、界面友好:采用大屏幕液晶显示屏,使得用户能够清晰地看到计价信息, 同时支持中文和英文显示,方便不同语言用户使用。
2、操作简单:采用触摸屏操作方式,用户只需轻触屏幕即可完成操作,简单 易学,方便使用。
(整理)VHDL——出租车计价器.
该系统利用VHDL语言、PLD设计出租车计费系统,以MAX+PLUSⅡ软件作为开发平台,设计了出租车计费器系统程序并进行了程序仿真。
使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。
关键词: 出租车计费器;计数器;VHDL语言;MAX+PLUSⅡ;一、实验任务及要求1.能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。
2. 实现预置功能:能预置起步费、每公里收费、车行加费里程。
3. 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。
4. 设计动态扫描电路:将车费显示出来,有两位小数。
5. 用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
6. 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。
7. 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。
二、实验原理系统顶层框图:计费器按里程收费,每100米开始一次计费。
各模块功能如下:(1) 车速控制模块当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。
(2) 里程动态显示模块其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。
(3) 计费动态显示模块其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1元,当收费超过20时数值加1.5元。
三、出租车计费系统的实现3.1系统的总体模块图:3.2系统各功能模块的实现:(1)模块MS的实现模块MS,输入端口CK0、CK1为两个不同的时钟信号,来模拟汽车的加速和匀速,JS加速按键。
出租车自动计费器VHDL程序报告
出租车自动计费器VHDL程序报告EDA 课程设计课程 ____________题目 ____________学院 ____________专业班级学生姓名学生学号指导教师****年**月**日3、 用加法器将几项收费相加,P=P1+P2+P34、 P1为起价,P2为行车里程计费,P3为等候时间计费,用四个数码管表示总的计费结果。
四、系统设计原理及过程1、 基本原理本次设计首先在Quartus Ⅱ环境中对出租车自动计费器的各个部分利用VHDL 这一硬件描述语言予以设计,生成模块。
而整个设计的核心部分就在里程、计时、计费处理模块。
里程、计时模块完成行驶距离和等待时间的处理以及起步距离之后和等待时间的计费脉冲的产生。
计费处理模块完成起步价计费、在计费脉冲来临之际累加计费的功能。
随后运用Quartus Ⅱ中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。
待所有模块的功能正确之后,运用原理图搭建电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上综合下载检验设计的正确与否。
2、 系统框图根据设计要求,电路具有计时、计程、计费功能,用数码管显示行驶公里数、等待时间、收费金额,行车里程和等待时间的处理电路将汽车行驶的里程数、转换成与之成正比的计费脉冲,然后由计费电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,3公里以后每公里产生一个计费脉冲,一个1HZ 的脉冲用来表示等待时间,60个脉冲代表1分钟,5分钟即300个脉冲产生一个等待计费脉冲,然后用计费电路对计费脉冲进行计费。
实验箱中只有一个48MHZ 的时钟,所以需要分频之后再送给其他模块,最后将等待时间、行驶里程、计费金额经过译码电路送到数码管显示。
其设计框图如图1所示:48MHZ行驶、分八分数据计译码显图1整体系统框图3、 电路及模块分析 系统总体设计电路如图2:VCCCLKINPUT VCC START INPUT VCC WR INPUT VCCRSTINPUT led7s[7..0]OUTPUT B[7..0]OUTPUT CLK OUTY[2..0]CNT8insta[3..0]POINTled7s[7..0]decl7s inst1P0[3..0]P1[3..0]P2[3..0]K0[3..0]K1[3..0]K2[3..0]M0[3..0]M1[3..0]S[2..0]D[3..0]B[7..0]POINTMAX81inst3clkFoutpulse inst4clk Foutpulse10inst5clkFoutpulsesp inst6B START RST P0[3..0]P1[3..0]P2[3..0]JIN inst7CLK0CLK1START WR RSTB1B2KM0[3..0]KM1[3..0]KM2[3..0]MIN1[3..0]MIN0[3..0]JIFEI inst2OR2inst8图2 出租车自动计费器顶层电路原理图1)行驶里程、等待时间处理模块本模块是系统的核心模块之一,能够对外部的行驶距离脉冲、等待时间脉冲进行计数。
基于VHDL的出租车计价器的设计
目录一概述 (1)二总体设计 (2)2.1 设计要求 (2)2.2 设计思路 (2)2.3 设计流程图 (2)三系统仿真结果及分析 (4)仿真波形图分析 (4)四总结及体会 (7)参考文献 (8)附录(程序源代码) (9)一概述随着我国国民经济生产总值的增加以及人民生活水平的提高,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。
出租车计价器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。
一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。
本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。
该设计虽然功能简单,智能化水平比较低,但仍具有一定的实用性。
该设计是在VHDL的基础上对出租车计价器进行设计来实现其基本功能的,与以往的基于单片机的数模混合电路相比,FPGA具有稳定性好、抗干扰能力强、电路实现简单、程序简单等优点,且非常适合做为出租车计价器的控制核心,所以选择用VHDL来对计价器进行设计来实现其功能。
出租车计价器的实现将大大改善人们出行时因为讨价还价而带来的烦恼,从而使人们的心情比较愉悦。
本设计是对出租车计价器的四个模块进行分析的,综述如下:分频模块:分频模块是其它模块的基础,输入时钟选为32Hz,分频后的时钟频率为1Hz,为后续模块提供基本时钟。
等待时间模块:该模块针对乘客确认下车前的等待而言,比如堵车、中途下车的情况,通过1Hz脉冲计数,每一分钟计时加一,最大计时时间显示为99分钟。
路程模块:该模块是对车辆行驶路程进行计数,以1Hz时钟为基础,检测行程脉冲,路程模块中有内部变量来判断路程,当大于3公里、20公里时,分别有相应的使能信号对此作出记录,最大路程显示为99公里。
基于vhdl出租车计费器设计说明书
EDA设计论文题目基于VHDL出租车计费器设计学院专业班级学号姓名指导教师职称讲师2011年12月21日摘要:在科技高度发展的今天,集成电路和计算机应用得到了高速发展。
尤其是计算机应用的发展。
它在人们日常生活已逐渐崭露头角。
大多数电子产品多是由计算机电路组成。
而且将来的不久他们的身影将会更频繁的出现在我们身边。
本设计利用VHDL语言、CPLD设计出租车计费系统,以QuartusⅡ软件作为开发平台,设计了出租车计费器系统程序并进行了程序仿真。
使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目和路程数目。
引言:1、VHDL语言VHDL(Very High Speed Integrated Circuit Hardw are Description Language,超高集成电路硬件描叙语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics)的一种工业标准硬件描叙语言。
VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。
VHDL的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明,内部负责对模块功能和算法进行描述。
在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。
VHDL具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计。
2、QuartusⅡ6.0简介Quartus II 是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学成都学院学院指导教师张
一、实验名称
出租车计费器的设计
二、实验目的
1、了解出租车计费器的工作原理。
2、学会用V HDL 语言编写正确的七段码管显示程序。
3、数量掌握用V HDL 编写复杂功能模块。
4、进一步数量状态积在系统设计中的应用。
三、实验原理
出租车计费器一般都是按公里计费,通常是起步价 xx元(xx元可以行走x公里),然后再是x x元/公里。
所以要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。
通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。
在这个实验中,就要模拟出租车计费器的工作过程,用直流电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。
结果的显示用 8 个七段码管,前四个显示里程,后三个显示费用。
在设计VHDL程序时,首先在复位信号的作用下将所有用到的寄存器进行清零,然后开始设定到起步价记录状态,在此状态时,在起步价规定的里程里都一直显示起步价,直到路程超过起步价规定的里程时,系统转移到每公里计费状态,此时每增加一公里,计费器增加相应的费用。
为了便于显示,在编写过程中的数据用BCD码来显示,这样就不存在数据格式转换的问题。
比如表示一个三位数,那么就分别用四位二进制码来表示,当个位数字累加大于9时,将其清零,同时十位数字加1,依此类推。
四、实验内容
本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。
显示部分的七段码管扫描时钟选择时钟模块的
1KHz,电机模块的跳线选择GND端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。
另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。
直流电机用来模拟出租车的车轮子,没转动一圈认为是行走1米,所以每旋转1000 圈,认为车子前进1公里。
系统设计是需要检测电机的转动情况,每转一周,计米计数器增加 1。
七段码管显示要求为前 4个显示里程,后3个显示费用。
实验中所用端口管脚分配关系如下:
五、实验步骤
1、打开Q UARTUSII 软件,新建一个工程。
2、建完工程之后,再新建一个V HDL File,打开V HDL 编辑器对话框。
3、按照实验原理和自己的想法,在V HDL 编辑窗口编写V HDL 程序。
其
程序如下所示:
4、编写完V HDL 程序后,保存起来。
5、对自己编写的V HDL 程序进行编译,对程序的错误进行修改。
曾出现的错误有:
但当我把位选端的OUT类型改为BUFFER类型后,再编译就没出现问题。
6、编译无误后,依照拨动开关、数码管与 FPGA 的管脚连接表进行管脚分配。
本次实验管脚分配如下图所示:
7、分配完成后,再进行一次全编译,以使管脚分配生效。
8、新建波形文件,对程序进行仿真。
在仿真过程中,为了使仿真长度达
到实验中1KM以上,我将endtime设为1ms,将Rst设为高电平,将Clk设为0.1us。
而为了使Motor脉冲每次都能在八个数码管显示完成后达到,使里程加1M,故将Motor时的周期设为0.8us,占空比%1。
其仿真波形如下所示:
在上图中,可以看到当出租车开始启动,八个数码管的显示分别(000-030),当Motor脉冲到后,八个数码管的显示为(0001-030),即行程加了一米;再来一个米脉冲后显示为(0002-030)。
则起步价为3元,出租车路程未到1KM,始终显示基价3元,符合题意。
再如上图所示,最左边的八个数码管显示为(1224-032),接下来的八个数码显示管显示为(1225-032)。
则为出租车跑到1224和1225米时,显示价格为3.2元,均符合题意。
因软件原因,仿真也最多仿到里程为一千二百多米,但由前两图知仿真波形均符合题意。
9、用下载电缆通过J TAG 口将对应的s of 文件加载到F PGA 中。
观察实验
结果是否与自己的编程思想一致。
六、实验现象及结果
下载完毕后,在实验箱上的八个数码管,前四个显示里程,后三个显示费用。
当直流电机每转完一圈时,数码管的里程数加1,表示出租车行驶1米。
当里程小于1KM时,数码管显示基价3元,以每每跑100米,费用加1角。
部分结果如下图所示:
(1)出租车刚起步时,路程为0,起步价3元
(2)路程不足1千米时,费用显示基价3元
(3)路程1678米时,因路程大于1千米,又跑了600米,故费用显示为3.6元
(4)路程2310米时,费用为4.3元
七、心得体会。