出租车计费系统VHDL.doc

上传人:豆**** 文档编号:17496477 上传时间:2022-05-24 格式:DOC 页数:12 大小:187KB
返回 下载 相关 举报
出租车计费系统VHDL.doc_第1页
第1页 / 共12页
出租车计费系统VHDL.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《出租车计费系统VHDL.doc》由会员分享,可在线阅读,更多相关《出租车计费系统VHDL.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流出租车计费系统VHDL.精品文档.EDA课程设计:出租车计费系统学生姓名:所在班级:指导老师:完成时间:一、课程设计目的 1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力; 2、结合理论知识,考察阅读参考资料、文献、手册的能力; 3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;二、课程设计要求 实际中出租车的计费工作原理一般分成3个阶段: (1)车起步开始计费。首先显示起步价(本次设计起步费为7.00元),车在行驶3 km以内,只收起步价7.00元。 (2)

2、车行驶超过3 km后,按每公里2.2元计费(在7.00元基础上每行驶1 km车费加2.2元),车费依次累加。 (3)行驶路程达到或超过9 km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始三、基本设计思想 1、 根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。计数器A完成车费百位。计数器B完成车费十位和个位。计数器C完成车费角和分。计数器D完成计数到30(完成车

3、费的起步价)。计数器E完成模拟实现车行驶100 m的功能。 2、行驶过程中车费附加50%的功能:由比较器实现。 3、车费的显示:由动态扫描电路来完成。用专用模块来实现,完成数据的输入即动态数据的显示。 4、通过分析可以设计出系统的顶层框图如图3.1所示:图3.1 系统的顶层框图四、出租车计费系统的实现 1、 系统的总体框图图4.1 系统总体框图 2、 程序流程图车开始启动里程不计数里程计数里程显示计费器计数车费显示车跑完一次后车费、里程清零YESYESYESNONO图4.2程序流程图3、系统各功能模块的实现 (1)模块JIFEI的实现: 图4.3 模块JIFEI模块JIFEI见图4.3。输入端

4、口START、STOP、PAUSE、JS分别为汽车起动、停止、暂停、加速按键。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jifei is port (clk,start,stop,pause,js:in std_logic;chefei,luc:out integer range 0 to 8000);end jifei;architecture rtl of jifei isbeginprocess(clk,start,stop,pause,js)variable a,b:s

5、td_logic;variable aa:integer range 0 to 100;variable chf,lc:integer range 0 to 8000;variable num:integer range 0 to 9; beginif(clkevent and clk=1)thenif(stop=0)thenchf:=0;num:=0;b:=1;aa:=0;lc:=0;elsif(start=0)thenb:=0;chf:=700;lc:=0;elsif(start=1 and js=1and pause=1)thenif(b=0)thennum:=num+1;end if;

6、if(num=9)thenlc:=lc+5;num:=0;aa:=aa+5;end if; elsif(start=1and js=0and pause=1)thenlc:=lc+1;aa:=aa+1;end if;if(aa=100)thena:=1;aa:=0;elsea:=0;end if;if(lc300)thennull;elsif(chf=2000 and a=1)then chf:=chf+330; end if;end if;chefei=chf;luc=lc;end process;end rtl;(2)模块X的实现:模块X见图4.4。该模块把车费和路程转化为4位十进制数,d

7、aclk的频率要比clk快得多图4.4 模块Xlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity x is port(daclk:in std_logic;ascore,bscore:in integer range 0 to 8000;age,ashi,abai,aqian,bge,bshi,bbai,dqian:out std_logic_vector(3 downto 0);end x ;architecture rtl of x isbegin process(daclk,asc

8、ore) variable comb1:integer range 0 to 8000;variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);begin if(daclkevent and daclk=1)then if(comb1ascore)thenif(comb1a=9 and comb1b=9 and comb1c=9)thencomb1a:=0000;comb1b:=0000;comb1c:=0000;comb1d:=comb1d+1;comb1:=comb1+1;elsif(comb1a=9 and co

9、mb1b=9)thencomb1a:=0000;comb1b:=0000;comb1:=comb1+1;comb1c:=comb1c+1;elsif(comb1a=9)thencomb1a:=0000;comb1b:= comb1b+1;comb1:= comb1+1;elsecomb1a:= comb1a+1;comb1:= comb1+1;end if;elseashi= comb1b;age= comb1a;abai= comb1c;aqian= comb1d;comb1:=0;comb1a:=0000;comb1b:=0000;comb1c:=0000;comb1d:=0000;end

10、 if;end if;end process;process(daclk,bscore)variable comb2:integer range 0 to 8000;variable comb2a,comb2b, comb2c,comb2d:std_logic_vector(3 downto 0);beginif(daclkevent and daclk=1)thenif(comb2bscore)thenif(comb2a=9 and comb2b=9 and comb2c=9)thencomb2a:=0000;comb2b:=0000;comb2c:=0000;comb2d:=comb2d+

11、1;comb2:=comb2+1;elsif(comb2a=9 and comb2b=9)thencomb2a:=0000;comb2b:=0000;comb2:= comb2+1;comb2c:= comb2c+1;elsif(comb2a=9)thencomb2a:=0000;comb2b:=comb2b+1;comb2:=comb2+1; elsecomb2a:= comb2a+1;comb2:= comb2+1;end if;elsebshi=comb2b;bge=comb2a;bbai=comb2c;bqiand=a1; dpd=a2; dpd=a3; dpd=a4;dpd=b1;d

12、pd=b2;dpd=b3;dpd=b4;dpnull;end case;end process;end rtl;(4)模块SE的实现:模块SE见图4.6图4.6 模块SElibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity se isport(clk:in std_logic;a:out std_logic_vector(2 downto 0);end se;architecture rtl of se isbeginprocess(clk)variable b:std_logic_vec

13、tor(2 downto 0);begin if(clkevent and clk=1)thenif(b=111)thenb:=000;elseb:=b+1;end if;end if;aqqqqqqqqqq=1101111;end case;end process;end rtl;4、系统仿真 (1)模块X的仿真结果:将车费和路程转换成4位的十进制如图4.8所示:输入端为:Daclk, ascore, bscore 输出端为:Age, ashi, aqian, abai, bge, bshi, bqian, bbai; 图4.8 模块X仿真波形图 (2)模块JIFEI的仿真结果:该模块是模拟

14、汽车的启动、停止、暂停、加速按键,如图4.9所示: 输入端口为:stop, start, pause, js; 输出端口为:clk, b;图4.9 模块JIFEI仿真波形图 (3)模块XXX1的仿真结果:该模块是将车费和路程显示出来如图4.10所示输入端为:c, a1,a2,a3,a4,b1,b2,b3,b4;输出端为:dp,d;图4.10 模块XXX1仿真波形图 (4)模块SE的结果验证:模块SE仿真如图4.11所示:输入端为:clk输出端为:a图4.11模块SE仿真波形图 (5)模块DI的结果验证:模块DI仿真的结果如图4.12所示 输入端为:d 输出端为:q图4.12 模块DI仿真波形图

15、五、 结论出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。在出租车计费系统的5个模块中 ,重点在于JIFEI模块,X模块、XXX1模块。JIFEI模块主要有汽车的启动、停止、暂停、加速按键;X模块主要是把车费和路程转化为4位十进制;X模块是将车费和路程显示出来。各模块完成后,在将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。出租车计费系统的设计中体现了覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD

16、器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。六、实验心得体会 本次课程设计,感受颇深。在这次实验中,我收获很多。首先是态度方面的认识。实验需要事实考证,我们要秉着诚实,认真的态度,并且要有细心和耐心。实验过程中不免会出现很多的问题,特别是EDA这门课程已学了很久,知识点很多都陌生了,需要踏实的复习。实验过程中细节不能放过,对实验结果和时序仿真图分析时,要特别认真,有时可能会有0.1元的误差,如果你忽视了,那实验后面的误差将会逐渐增大。其次是方法。对于本次EDA实验,我个人认识最深的是软件分析具有很大的作用。我们到实验室做的最多的是进行下载和结果观测。但是在之前的源代码编写和时序仿真却不能总跑到实验室去。所以个人电脑利用软件进行开发是很重要的。本次实验我查错的主要方法还是通过时序图。 再次就是对本实验的不断修改,不断改进。在此过程中得到了陈老师和班级部分同学的指导、指点,在此一并表示感谢!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁