欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于VHDL语言出租车计价器设计.docx

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

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

    基于VHDL语言出租车计价器设计.docx

    1、基于VHDL语言出租车计价器设计1.设计背景汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车最重要的工具。它关系着双方的利益。具有良好的性能的计价器无疑是对广大出租车司机朋友还是乘客来说都是很重要的。因此,汽车计价器的研究也是十分有应用价值的。随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买卖纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。用更加精良的计价器来为乘客提供更加方便快捷的服务。我国在70年代开始出现出租车,但那时的计费系统

    2、大都是国外进口的,不但不不够准确,而且价格还十分昂贵。随着改革开放的日益深入,出租车行业的发展势头已十分突出,国各机械厂纷纷推出国产计价器。刚开始出租车计价器的功能从刚才开始的只显示路程,到能够自主计费,以及现在能够打印发票和语音提示、按时间自主变动单价等功能。随着旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。本设计就是采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到出租车计价系统的硬件结构,通过Quartus II 7.2软件下进行设计、仿真,再在EDA试验箱进行硬件仿真,使各项指标符合设计要求,具有一定的实用性。虽然以前有基于数字电路、单片机进行的出

    3、租车计价器的设计,但用数字电路设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;而基于单片机的设计,虽然开发成本降低,但其外围电路较多,而且调试复杂,抗干扰能力差,从而也导致计价器不够准确。而基于VHDL语言的FPGA芯片稳定性好,抗干扰能力强,外围电路少,执行速度快,适合像出租车计价器的这种较复杂的电路设计。2.设计原理2.1设计要求设计一种出租车计价器,计费标准如下:(1) 起步价8.00元,起步公里为3公里;(2) 超过三公里,每公里按1.00元收费;(3) 单程行驶里程超过20公里。每公里租价加收50%;(4) 等候时间累积一分钟,每分钟1.00元;要求显示里程

    4、、计费及等候时间。乘客上车后,按下启动键,开始计费,除非同一个乘客往返用哪个车,否则按下单程键,这样行驶里程超过20公里时,每公里加收50%,即每公里租费1.5元;计费显示为3位整数,一位小数。2.2 设计模块2.2.1总体设计本出租车计价器的设计共分4个模块:判断模块、时间模块、里程模块、计费模块。总的设计图如图1所示:2.2.2判断模块判断模块主要通过对秒脉冲和里程脉冲进行计数,判断出租车是否停下,然后输出片选信号,选择时间计费还是里程计费。判断模块的模块图如图2所示:2.2.3时间模块时间模块是当出租车停下时,对秒脉冲进行计数,从而计算出出租车停下的累积时间,并输出累积时间和计费脉冲。时

    5、间模块的模块图如图3所示:2.2.4里程模块里程模块是当出租车行驶的时候,对里程脉冲进行计数,从而算出出租车所行驶的里程,通过对单双程的控制进行不同的计费标准,最后输出行驶里程和计费脉冲。里程模块的模块图如图4所示:2.2.5计费模块计费模块通过对里程计费脉冲和时间计费脉冲分别进行计数,将其换算成价钱并对进行价钱输出。计费模块的模块图如图5所示:3. 仿真结果分析3.1 判断模块的仿真判断模块的仿真结果如图6所示:图6 判断模块的仿真结果3.2 时间模块的仿真时间模块的仿真结果如图7所示:图7 时间模块的仿真结果3.3 里程模块的仿真里程模块的仿真结果如图8所示:图8 里程模块的仿真结果3.4

    6、计费模块的仿真计费模块的仿真结果如图9所示:图9 计费模块的仿真结果3.5元件例化后的仿真元件例化后的仿真结果如图10所示:图10 元件例化后的仿真结果6.模块的引脚锁定图11 模块的引脚锁定引脚锁定图如图11所示:4. 设计总结在这次对出租车计价器的课程设计实习中,我们充分的应用了所学的知识,通过去图书馆查阅相关资料和上网搜索相关知识,我们颇有收获。由于这次设计比往常设计要复杂,如果将所有功能设计到一个模块中,对于设计和编程都有不小的困难,所以最后我们采用模块化设计,将某些功能设计成一个模块,最后用元件例化将各个模块连接起来,形成一个完整的系统,这种设计方法不仅降低了编程难度,而且使我们的设

    7、计更有条理。通过这次设计,我们对模块化设计有了更深的了解。在这次设计中,我们也遇到了许多困难。有些设计虽然在逻辑上成立,但FPGA的硬件结构不能实现这种设计,比如多值驱动问题,上升下降沿问题,像我在设计计费模块的时候,预想的是时间计费脉冲和里程计费脉冲共同来驱动计费计数器,实现计费功能,这种设计很简单,但这种设计会报错。最后只能时间、里程分别计费,然后将费用分别相加,这种设计虽然有点复杂,但并没有报错,而且仿真结果正确。通过这次设计我们更加了解了FPGA的硬件结构,以后设计的时候要注意使用能实现的设计方式。这次设计让我们更加了解了EDA的设计方法,熟悉了模块化的设计思路,对于以后的设计很有帮助

    8、。总之,这次设计很有意义。参考文献1 松,黄继业. EDA技术使用教程. 科学,2010.62 江海. EDA技术课程设计. 华中科技大学,2009.5附录参考程序: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

    9、 sta=1 then if lclkevent and lclk=1 then a:=a+1; end if; if sclkevent and sclk=1 then if a=0 then dge=0;-shijian process else dge=1;-licheng process end if; end if; if sclk=1 then a:=0; end if;else dge=Z;end if;end process;end;2.时间模块library ieee;use ieee.std_logic_1164.all;-entity time_count isport(

    10、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 isbeginprocess(sta,sclk,dge)variable count: integer range 0 to 60;variable ge: integer range 0 to 10;variable shi: integer range 0 to 10;variab

    11、le t_c: std_logic;beginif sta=1 thenif dge=0 then if sclkevent and sclk=1 then count:=count+1; if count=1 then t_c:=0; end if; if count=60 then count:=0; ge:=ge+1; t_c:=1; if ge=10 then ge:=0; shi:=shi+1; if shi=10 then shi:=0; end if; end if; end if; end if;end if;else ge:=0; shi:=0; t_c:=0;end if;

    12、minge=ge;minshi=shi;t_count per150-+1-1.50yuan/km- per100-+1library ieee;use ieee.std_logic_1164.all;-entity distance_count isport( sta,lclk,doub,dge: in std_logic; kmfen,kmge,kmshi: out integer range 0 to 10; d_count: out std_logic);end;-architecture beh of distance_count isbeginprocess(sta,lclk,do

    13、ub,dge)variable fen,ge,shi: integer range 0 to 10;variable count: integer range 0 to 150;variable ct: integer range 0 to 150;variable d_c: std_logic;beginif sta=1 thenif dge=1 then if lclkevent and lclk=1 then ct:=ct+1; count:=count+1; if doub=0 and shi=2 then -single and licheng=20km if ct=1 then d

    14、_c:=0; end if; if ct=100 then ct:=0; d_c:=1; end if; elsif ge=3 or shi/=0 then -double or licheng3 if ct=1 then d_c:=0; end if; if ct=150 then ct:=0; d_c:=1; end if; else ct:=0; end if; if count=150 then count:=0; fen:=fen+1; if fen=10 then fen:=0; ge:=ge+1; if ge=10 then ge:=0; shi:=shi+1; if shi=1

    15、0 then shi:=0; end if; end if; end if; end if; end if;end if; else fen:=0; ge:=0; shi:=0; d_c:=0;end if; kmfen=fen;kmge=ge;kmshi=shi;d_count=d_c;end process;end;4.计费模块library ieee;use ieee.std_logic_1164.all;-entity price_count isport(sta,t_count,d_count: in std_logic; mjiao,mge,mshi,mbai: out integ

    16、er range 0 to 10);end;-architecture beh of price_count issignal t_ge,t_shi,t_bai: integer range 0 to 10;signal d_ge,d_shi,d_bai: integer range 0 to 10;begin-process(sta,t_count)variable tshi,tbai: integer range 0 to 10;variable tge: integer range 0 to 10:=8;beginif sta=1 then if t_countevent and t_c

    17、ount=1 then tge:=tge+1; if tge=10 then tge:=0; tshi:=tshi+1; if tshi=10 then tshi:=0; tbai:=tbai+1; if tbai=10 then tbai:=0; end if; end if; end if; end if;else tge:=8; tshi:=0; tbai:=0;end if;t_ge=tge;t_shi=tshi;t_bai=tbai;end process;-process(sta,d_count)variable djiao: integer range 0 to 10;varia

    18、ble dge,dshi,dbai: integer range 0 to 10;beginif sta=1 then if d_countevent and d_count=1 then djiao:=djiao+1; if djiao=10 then djiao:=0; dge:=dge+1; if dge=10 then dge:=0; dshi:=dshi+1; if dshi=10 then dshi:=0; dbai:=dbai+1; if dbai=10 then dbai:=0; end if; end if; end if; end if; end if;else djiao

    19、:=0; dge:=0; dshi:=0; dbai:=0;end if;mjiao=djiao;d_ge=dge;d_shi=dshi;d_bai=10 then ge:=ge-10; cge:=1; else cge:=0; end if; shi:=d_shi+t_shi+cge; if shi=10 then shi:=shi-10; cshi:=1; else cshi:=0; end if; bai:=d_bai+t_bai+cshi; if bai=10 then bai:=bai-10; cbai:=1; else cbai:=0; end if;mge=ge;mshi=shi

    20、;mbaista,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,doub=doub,lclk=lclk,dge=w,d_count=y,kmfen=dis_fen,kmge=dis_ge,kmshi=dis_shi); U4: price_count port map(sta=sta,t_count=x,d_count=y,mjiao=pri_jiao,mge=pri_ge,mshi=pri_shi,mbai=pri_bai);end;


    注意事项

    本文(基于VHDL语言出租车计价器设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开