出租车计费系统设计Word格式.docx
《出租车计费系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《出租车计费系统设计Word格式.docx(26页珍藏版)》请在冰点文库上搜索。
里程单价+等候时间×
等候单价
2、能够实现显示功能:
1显示汽车行驶里程:
用四位数字显示,显示方式为“XXXX〞,单位为km。
计程围为0~99km,计程分辨率为1km。
2显示等候时间:
用两位数字显示分钟,显示方式为“XX〞。
计时围为0~59min,计时分辨率为1min。
3显示总费用:
用四位数字显示,显示方式为“XXX.X〞,单位为元。
计价围为999.9元,计价分辨率为0.1元。
三、时间进度安排
1周:
(1)完成设计准备,确定实施方案;
(2)完成电路文件的输入和编译;
(3)完成功能仿真。
2周:
〔
(1)完成文件至器件的下载,并进展硬件验证;
(2)撰写设计说明书。
四、主要参考文献
(1)谭会生、瞿遂春,?
EDA技术综合应用实例与分析?
,电子科技大学,2004
(2)昕燕、周凤臣等,?
EDA技术实验与课程设计?
,清华大学,2006
指导教师签字:
2015年6月15日
专业:
电子信息科学与技术系指导教师:
摘要:
本次课程设计应用EDA技术来实现出租车计费系统的设计。
EDA是电子设计自动化〔Electronic
Design
Automation〕的缩写,EDA技术是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
本文采用的就是用VHDL语言设计的基于FPGA的出租车计费系统设计,
FPGA是英文Field-Programmable
Gate
Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的根底上进一步开展的产物。
它是作为专用集成电路〔ASIC〕领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又克制了原有可编程器件门电路数有限的缺点。
出租车是人们在生活中和工作中不可缺少的交通工具,出租车行业的效劳水平与电子信息的开展密切相关,乘客坐出租车必须要有一个合理的价格,因此,出租车上必须要有一个计价器,计价器的设计合格与否直接相关着乘客和司机的经济利益。
关键词:
VHDL语言;
FPGA;
仿真;
出租车。
Taxibillingsystemdesign
Professional:
ElectronicInformationScienceandTechnology
Author:
zhangzhenkInstructor:
zhangleimingliubo
Abstract:
ThiscourseisdesignedtouseEDAtechnologytoachievedesigntaxibillingsystem.EDAisanelectronicdesignautomation(ElectronicDesignAutomation)abbreviation,EDAtechnologyisbasedonaputerasatooldesignerintheEDAsoftwareplatform,pletewithhardwaredescriptionlanguageHDLdesignfiles,thenautomaticallydonebyputerlogicpilation,simplification,segmentation,integration,optimization,placement,routingandsimulationworkuntilaspecifictargetforthepileradapterchips,logicmappingandprogramdownloads.ThispaperistouseVHDLlanguagedesigntaxibillingsystembasedonFPGAdesign,FPGAistheEnglishField-ProgrammableGateArrayabbreviationofthefieldprogrammablegatearray,whichisinPAL,GAL,CPLDandotherprogrammabledevicesBasedonthefurtherdevelopmentoftheproduct.Itisimplementedasapplicationspecificintegratedcircuit(ASIC)inthefieldofasemi-customcircuitandemerged,whichaddressesthelackofcustomcircuits,butalsooverethelimitednumberofgatesofprogrammabledevicesexistingshortings.Taxisarepeopleinthelifeandworkanindispensablemeansoftransport,theservicelevelofthetaxiindustryandthedevelopmentofelectronicinformationiscloselyrelatedtotaxipassengersmusthaveareasonableprice,andtherefore,theremustbeataxiameter,themeterisdesignedqualifiedornotdirectlyrelatedtotheeconomicinterestsofpassengersanddrivers.
Keywords:
VHDLlanguage;
FPGA;
simulation;
taxi..
1任务解析
1.1里程计费
设出租车的起价为5.00元,当里程小于3km时,按起价计算收费;
此模块可用VHD语言编写设计一个100进制计数器,每计一次数里程增加1KM。
当计数器计数到4时,费用按每计一次数,费用加1.3元。
否那么,费用按起价费算。
1.2等待计费
等待计费也可以用VHDL设计一个60进制计数器,每计一次数等待时间增加1min。
当计数器计到3时,费用按每计一次数费用加1.5元,否那么费用不增加。
1.3显示功能
4显示汽车行驶里程:
显示里程可用液晶显示,也可用用数码管显示,由于本次设计在GW48实验教学系统上验证,数码管直接用4位BCD码就可以显示,所以本次设计采用数码管来显示里程,计程围为0~99km,即用两个数码管就可以显示里程。
5显示等候时间:
等待时间显示也用数码管来显示,由于是两位数字显示分钟,那么用两个数码管既可以来显示等待的时间。
6显示总费用:
四位数字的显示可以用4个数码管来显示,小数点可以用一个发光二极管来显示即可。
2系统方案设计
2.1系统根本方案
根据题目要求第一节的任务解析,系统可划分为计量程模块,计时模块,控制模块,计费模块,显示模块。
系统框图如图2-1-1所示。
2.2系统设计原理
根据设计的要求,系统的输入信号有:
系统时钟信号CLK,计价开场信号START,等待信号STOP,里程脉冲信号FIN。
系统的输出信号有:
总的费用MON0~MON3,行驶距离〔km数〕RUN0~RUN1,等待时间〔min〕TIME0~TIME3。
系统的原件框图如图2-2-1所示。
端口定义类型为:
ENTITYjiliangIS
PORT(clk1:
INSTD_LOGIC;
--时钟信号
fin:
--里程脉冲信号
start:
--计价开场信号--
stop:
--等待时间信号
run1,run0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
time1,time0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
mon3,mon2,mon1,mon0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjiliang;
整个系统的控制为:
系统有两个脉冲信号CLK和里程脉冲信号FIN,两个控制开关START和STOP。
当出租车没有行驶时,没有里程脉冲信号FIN,计价开场信号START为低电平,等待信号STOP为低电平,系统停顿工作;
当有乘客上车并开场行驶时,里程脉冲信号FIN到来,即里程开场计数,这时计价开场信号START置为高电平,开场计里程价,等待信号STOP为低电平;
如果乘客需要停车等待,那么没有了里程脉冲信号FIN,开关将等待信号STOP置为高电平,开场等待计时;
当乘客等待完毕,开关将等待信号STOP置为低电平,里程脉冲信号FIN到来,里程继续开场计数;
当乘客到目的地下车,计价开场信号START置为低电平,系统停顿工作。
2.3系统流程图
有了流程图,才能更好的完本钱次的课程设计,本次的设计是从底层到顶层的设计过程,从底层的VHDL程序代码到顶层的例化原理图设计。
对系统的总体框图进展更全面,更小的模块来分化设计便可得到设计的流程图。
如图2-3-1所示为出租车价器的流程图。
3模块设计及仿真
3.1计量模块
计量模块是在出租车在行驶的过程中对量程的计数,每计一次数即行驶了1km。
当行驶里程大于3km,即计数大于3时,使能信号SIG0为高电平。
当计数计到99时,计数从0重新开场计数。
计量模块原理图如图3-1-1所示。
PORT(start,fin,clk1:
sig0:
OUTSTD_LOGIC;
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));
计量模块的仿真波形如图3-1-2所示。
由图可以看出当START为低电平时,系统停顿工作,当START为高电平,里程脉冲信号FIN到来时,里程run开场计数,当run0大于9时,run0从0重新开场计数,run1加1,一直计到99时,重新从0开场计数,实现了100进制的计数器。
当计数器计数大于3时,使能信号SIG0输出高电平〔当里程大于3km时每公里按1.3元计费〕。
3.2计时模块
计时模块是当乘客中途有事需要等待时,对时间的计数,每计一次数即等待了1min。
当等待时间大于2min,即计数大于2时,使能信号SIG1为高电平。
当计数计到59时,计数从0重新开场计数。
计时模块原理图如图3-2-1所示。
ENTITYjishiIS
PORT(start,STOP,clk2:
Sig1:
OUTSTD_LOGIC;
time1,time0:
计时模块的仿真波形图如图3-2-2所示。
由图可以看出当START为低电平时,系统停顿工作,当START为高电平,STOP为低电平时,系统不计时,当STOP变为高电平,当CLK2脉冲到来时,系统开场进入等待计时,当time0大于9时,time0重新开场计时,time1加1,一直计到59,重新从0开场计数。
当等待时间计时大于2时,使能信号SIG1输出高电平。
3.3控制模块
控制模块主要通过计量模块的使能输出信号SIG0和计时模块的使能输出信号SIG1来控制费用的计算,当SIG0为高电平时,即里程大于3km时,每公里按1.3元计费,当里程小于3km时,按起价计算收费,出租车的起价为5.00元。
当SIG1为高电平时,即等待累计时间超过2min时,按每分钟1.5元计费,当等待时间没有超过2min,费用不增加。
控制模块原理图如图3-3-1所示。
PORT(start:
INSTD_LOGIC;
sig1,sig0:
INSTD_LOGIC;
run1,run0,time1,time0:
INSTD_LOGIC_VECTOR(3DOWNTO0);
cost:
OUTINTEGERRANGE0TO999);
ENDctl;
控制模块的输入信号来自计量模块与计时模块的输出信号,所以单独仿真很复杂,要与计量模块和计时模块连在一起来做仿真。
如图3-3-2所示为计量模块,计时模块及控制模块的原理图。
计量
模块的输入信号START,FIN,CLK1是系统的输入信号,输出信号SIG0,RUN1,RUN0作为控制模块的输入信号;
计时模块的输入信号START,STOP,CLK2是系统的输入信号,输出信号SIG1,TIME1,TIME0作为控制模块的输输入信号,START也作为控制模块的输入信号,COST为控制模块的输出信号。
PORT(clk:
start,STOP:
计量模块,计时模块及控制模块的波形仿真图如图3-3-3所示。
由仿真图可以看出当START为
电平,FIN里程脉冲信号到来时,此时STOP为低电平,里程开场由0计数,当大于3kn时,使能信号SIG0变为高电平,费用按每行驶1km,费用增加1.3元。
当STOP为高电平时,开场进入等待计数,当等待时间大于2min时,费用按每等待1min,费用增加1.5元。
由于计费模块已在控制模块中实现,所以下面不在单独讨论计费模块。
3.4显示模块
显示模块主要显示汽车行驶里程,等待时间,总的费用。
行驶里程用四位数字显示,显示方式为“XXXX〞,单位为km。
里程用run1和run0输出,由于在系统中run和run0的类型为STD_LOGIC_VECTOR(3DOWNTO0)类型,所以直接用数码管输出。
等待时间用两位数字显示分钟,显示方式为“XX〞。
等待时间用time1和time0输出,time1和time0的类型为STD_LOGIC_VECTOR(3DOWNTO0)类型,所以直接用数码管输出。
总的费用用四位数字显示,显示方式为“XXX.X〞,单位为元。
在控制模块中输出的费用为十进制数,不能直接用数码管输出,对十进制输出可以有两种方法,如下进展讨论。
方案一:
把每一个十进制数用8位BCD码表示,然后用数码管输出。
由于此次统统需要的计价围为999.9元,因此需要对9999个数进展BCD的编码,数量比拟大,程序代码较长,所以不易采用。
方案二:
本次系统需要显示的最大围是0到9999,总共四位数,可以把每一位数字先求出来,在把每位数转化为4位二进制,就可以用数码管直接输出,此方法简单,代码较短。
每位数求法如下所示。
其中Ch0为个位数,ch1为十位数,ch2为百位数,ch3位千位数。
在个位与十位之间加一个发光二极管,那么可以实现小数点。
ch0<
=costrem10;
ch1<
=cost/10;
ch2<
=0;
ch3<
---两位数求个位,十位的算法
=(costrem100)rem10;
ch1<
=(costrem100)/10;
=cost/100;
---三位数求个位,十位,百位的算法
=((costrem1000)rem100)rem10;
=((costrem1000)rem100)/10;
=(costrem1000)/100;
=cost/1000;
---四位数求个位,十位,百位,千位的算法
十进制数转化为4位二进制数的程序如下所示。
mon0<
=conv_std_logic_vector(ch0,4);
--个位数转化为4位二进制数
mon1<
=conv_std_logic_vector(ch1,4);
--十位数转化为4位二进制数
mon2<
=conv_std_logic_vector(ch2,4);
--百位数转化为4位二进制数
mon3<
=conv_std_logic_vector(ch3,4);
--千位数转化为4位二进制数
4系统顶层原理图及仿真
4.1系统顶层原理图
根据题目要求,该系统的原理图有计量程模块,计时模块,控制模块,计费模块,显示模块组成。
计费模块在控制模块中实现。
系统有四个输入端口,两个脉冲信号和两个开关;
八个输出端口,八个输出信号用八个数码管显示结果,两个数码管显示里程,两个数码管显示等待时间,四个数码管显示总的费用。
系统顶层原理图如图4-1-1所示。
4.2系统顶层仿真
如图4-2-2所示为系统顶层仿真波形图。
由波形图可以看出,当START为低电平时,系统停顿工作;
当START为高电平,FIN里程脉冲到来时,里程run〔run1为高四位,run0为低四位〕开场计数,当大于3km时,每行驶1km,费用mon〔mon3为千位,mon2为百位,mon1为十位,mon为个位〕增加1.3元,起价费为5.0元;
当STOP为高电平时,time进入等待计时,当大于2min时,每等待1min,费用mon增加1.5元,不超过2min,费用mon不增加。
5硬件验证
5.1引脚锁定
引脚锁定需要与目标芯片型号及具体的硬件开发环境相结合。
本次设计所使用的试验箱在EDA实验系统GW48-PK2上完成。
芯片选用“cyclone〞系列的“EP1C6Q240C8〞。
本设计选择模式0,按键3和按键4分别作为START和STOP的输入按钮,按键5可作为里程FIN脉冲信号,CLOCK0作为clk的时钟信号,八个数码管作为里程、等待时间、总费用的的输出显示。
在确定了设计电路的输入/输出与目标芯片引脚的关系后,即可进展引脚确实定。
引脚锁定如图5-1-1所示。
5.2验证结果
完成管脚锁定后,对设计文件进展重新编译,产生设计电路的下载文件〔.Sof〕。
在GW48实验教学系统上下载.sof文件验证结果。
在所有按键都没有按下时,系统停顿工作,费用显示起价费5.00元。
当START为高电平,FIN也为高电平时,里程开场计数,当没有超过3km时,显示起价费5.00元。
当大于3km时,每行驶1km,费用增加1.3元,当按下STOP时,并且没有FIN时,开场等待计时,当大于2min时,每等待1min,费用增加1.5元。
如图5-2-1所示为系统停顿工作时的验证结果,图5-2-2为里程小于3km时的验证结果,图5-2-3为里程大于3km时的验证结果,图5-2-4为等待时的验证结果。
6总结与心得
本以为这次的课程设计三周的时间很长,没想到在做的过程中才发现并不简单,因为在做的前期遇到了很多的困难,比方模块的选择,功能的实现,当确定一个模块之后,在写程序的时候会有很多的想法来实现功能,但是验证结果并不能满足要求,需要的反复的来调试验证。
这次的课程设计是课程名称是EDA综合设计,题目是出租车计费系统设计,所以要用上学期学的FPGA的知识来设计本次课程设计,也就是用VHDL语言在Quartus工具上来编写程序来实现课程设计的功能。
出租车的计费系统设计,要能够显示所行驶的里程,等待的时间和总的费用,行驶的里程和等待的时间比拟容易实现,用VHDL写两个计数器即可实现,但是,总的费用不好实现,因为当里程大于3km时,才按每行驶1km,费用增加1.3元,当等待时间超过2min时,每等待1min,费用增加1.5元,我在做的过程中,总的费用的计算,这个模块所用的周期最长,有时候实现了里程的计费,但是,等待时间的时间不能够正确的计算,实现了等待时间的费用的功能,里程的费用又会出现偏差。
所以在这一模块的调试用了很长的时间,不过,最终还是通过查阅资料,通过教师的指导和同学的帮助,所有功能都可以很好的实现。
通过这次的课程设计,我发现自己对EDA掌握还有很大的欠缺,对VHDL的语法不熟练,想一些对一个数的取余及取模,在未做课设之前都不知道如何用。
不过,通过这次的课程设计,我已经学会了关于FPGA更多的知识,了解到VHDL语言和C语言还是有很大的区别的,知道了FPGA有很多的优点。
通过设计使自己懂得了理论知识是要和实际结合使用才能感觉到理论知识的价值,没有实际的操作,没理论的知识的时候感觉学了没啥大的用处,但是当与实际结合的时候,才发现没有理论知识时无法完成一项设计的,所以不管是不是理论知识对我们有没有用,学了总归是对我们有好处的。
综合运用EDA技术,加强了独立完成一个课题的设计,通过运用所学的知识,解决实际问题的能力;
结合理论知识,稳固了阅读参考资料、文献、手册的能力;
进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用的技巧。
最后还要感我们的教师和教师,教师循循善诱的教诲和不拘一格的思路的给予我无尽的启迪。
他门渊博的知识,耐心的指导,以及务实的研究态度,使我深受感动,并且顺利的完成了本次的课程设计。
同时还要感帮助过我的同学,你们队对我的帮助和支持。
7参考文献
[1]松黄继业
附录一
计量模块VHDL源程序
LIBRARYIEEE;
USEIEE