欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    出租车计费系统VHDL.doc

    • 资源ID:17496477       资源大小:187KB        全文页数:12页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    出租车计费系统VHDL.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流出租车计费系统VHDL.精品文档.EDA课程设计:出租车计费系统学生姓名:所在班级:指导老师:完成时间:一、课程设计目的 1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力; 2、结合理论知识,考察阅读参考资料、文献、手册的能力; 3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;二、课程设计要求 实际中出租车的计费工作原理一般分成3个阶段: (1)车起步开始计费。首先显示起步价(本次设计起步费为7.00元),车在行驶3 km以内,只收起步价7.00元。 (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(完成车费的起步价)。计数器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。输入端口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:std_logic;variable aa:integer range 0 to 100;variable chf,lc:integer range 0 to 8000;variable num:integer range 0 to 9; beginif(clk'event 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='1'and pause='1')thenif(b='0')thennum:=num+1;end if;if(num=9)thenlc:=lc+5;num:=0;aa:=aa+5;end if; elsif(start='1'and js='0'and pause='1')thenlc:=lc+1;aa:=aa+1;end if;if(aa>=100)thena:='1'aa:=0;elsea:='0'end if;if(lc<300)thennull;elsif(chf<2000 and a='1')thenchf:=chf+220;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位十进制数,daclk的频率要比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,ascore) variable comb1:integer range 0 to 8000;variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);begin if(daclk'event and daclk='1')then if(comb1<ascore)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 comb1b=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 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(daclk'event and daclk='1')thenif(comb2<bscore)thenif(comb2a=9 and comb2b=9 and comb2c=9)thencomb2a:="0000"comb2b:="0000"comb2c:="0000"comb2d:=comb2d+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;bqian<=comb2d;comb2:=0;comb2a:="0000"comb2b:="0000"comb2c:="0000"comb2d:="0000" end if;end if;end process; end rtl;(3)模块XXX1的实现:模块XXX1见图4.5。经过该八进制模块将车费和路程显示出来。 图4.5 模块XXX1 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity XXX1 isport(c:in std_logic_vector(2 downto 0);dp:out std_logic;a1,a2,a3,a4,b1,b2,b3,b4:in std_logic_vector(3 downto 0);d:out std_logic_vector(3 downto 0);end XXX1;architecture rtl of xxx1 isbegin process(c,a1,a2,a3,a4,b1,b2,b3,b4)variable comb:std_logic_vector(2 downto 0);begin comb:=c; case comb is When"000"=>d<=a1; dp<='0' When"001"=>d<=a2; dp<='0'When"010"=>d<=a3; dp<='1'when"011"=>d<=a4;dp<='0' When"100"=>d<=b1;dp<='0' when"101"=>d<=b2;dp<='0' when"110"=>d<=b3;dp<='1'when"111"=>d<=b4;dp<='0'when others=>null;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_vector(2 downto 0);begin if(clk'event and clk='1')thenif(b="111")thenb:="000"elseb:=b+1;end if;end if;a<=b;end process;end rtl;(5) 模块DI的实现:模块DI见图4.7图4.7 模块DElibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity di isport(d:in std_logic_vector(3 downto 0);q:out std_logic_vector(6 downto 0);end di;architecture rtl of di isbeginprocess(d)begincase d isWhen"0000"=>q<="0111111"when"0001"=>q<="0000110"when"0010"=>q<="1011011"when"0011"=>q<="1001111"when"0100"=>q<="1100110"when"0101"=>q<="1101101"when"0110"=>q<="1111101"when"0111"=>q<="0100111"when"1000"=>q<="1101111"when others=>q<="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的仿真结果:该模块是模拟汽车的启动、停止、暂停、加速按键,如图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仿真波形图五、 结论出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。在出租车计费系统的5个模块中 ,重点在于JIFEI模块,X模块、XXX1模块。JIFEI模块主要有汽车的启动、停止、暂停、加速按键;X模块主要是把车费和路程转化为4位十进制;X模块是将车费和路程显示出来。各模块完成后,在将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。出租车计费系统的设计中体现了覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。六、实验心得体会 本次课程设计,感受颇深。在这次实验中,我收获很多。首先是态度方面的认识。实验需要事实考证,我们要秉着诚实,认真的态度,并且要有细心和耐心。实验过程中不免会出现很多的问题,特别是EDA这门课程已学了很久,知识点很多都陌生了,需要踏实的复习。实验过程中细节不能放过,对实验结果和时序仿真图分析时,要特别认真,有时可能会有0.1元的误差,如果你忽视了,那实验后面的误差将会逐渐增大。其次是方法。对于本次EDA实验,我个人认识最深的是软件分析具有很大的作用。我们到实验室做的最多的是进行下载和结果观测。但是在之前的源代码编写和时序仿真却不能总跑到实验室去。所以个人电脑利用软件进行开发是很重要的。本次实验我查错的主要方法还是通过时序图。 再次就是对本实验的不断修改,不断改进。在此过程中得到了陈老师和班级部分同学的指导、指点,在此一并表示感谢!

    注意事项

    本文(出租车计费系统VHDL.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开