基于FPGA出租车计费器设计报告(verilog).doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA出租车计费器设计报告(verilog)

出租车计费器 一 实验任务及要求 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元。 三 实验报告要求 1. 画出顶层原理图; 2. 用VHDL语言设计各子模块; 3. 叙述各子模块和顶层原理图的工作原理; 4. 给出各模块和顶层原理图的仿真波形图; 5. 给出硬件测试流程和结果。 四:设计说明: 实际设计共五个模块,分别为分频模块(每一百米送一个脉冲以方便计数)、计算里程模块、里程取整模块(不足一公里的按一公里算)、计费模块、显示模块。 详细功能如下: 分频模块:假设车轮每转一圈为2米,送一个脉冲,则需要50分频(共100米),同理,若知道车轮直径,即可算出分频比 里程模块:每一百米记一次数,最大可以计999.9公里,精确到0.1公里。 取整模块:现实中出租车的精确度为0.1公里,计算价格的时候不足一公里的按一公里算,所以加了这一个模块,输出的是计算价格时的里程数。 计费模块:按行驶里程收费,起步费为11.00元(包括1元得燃油附加费),并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(20元)时,每公里加收50%的车费,车停止不计费。 显示模块:通过动态扫描显示车费和里程数,将十进制数转化为四位十进制数(如将9999转化为四个9)以方便显示 设计流程图如下 流程说明:车轮每转一圈送一个脉冲波,假设每转一圈为2米,则经过50分频器后是每100米送一个脉冲到里程计算模块,里程计算模块可以精确到0.1公里,将计算的里程数送至取整模块进行判断,若小数部分不为零则整数部分加1,即不足一公里的部分按一公里计算,取整后的里程送至计费模块计费,同时和计算的费用用过显示模块进行转化和显示 顶层原理图如下: 五、实验结果:通过maxplusII将sof文件下载到试验箱上,运行正常,与实验目的一致,可以通过调整输入的脉冲频率来调整计费的速度。初始价格为11元,超过3公里每公里加收2元,价格超过20每公里3元。 六、一些问题和改进: 总的来说本次试验是顺利的,过程中主要遇到了这几点问题:1、刚开始没有完全想好要用几个模块做,没画好流程图,所以模块数量显得有点多,许多模块显得有些不必要,如取整模块完全可以合并到计费模块中。2、对其中的管脚定义太过于随意,造成很大空间的浪费,而且在使用较早的芯片时出现管脚不足的现象,这和模块过多也有很大关系 。 一些改进的想法:1、在本次设计中,假设车轮每转一圈为2米,刚好50分频,但是显然现实中不会刚好每圈2米,极可能出现有小数的分频,所以分频器需要改进,或者使用其他模块使得没100送一个脉冲。2、将里程数送到显示模块时,已经是经过取整,所以没有小数部分,但是里程模块的小数部分又不能和整数部分一起送到显示模块进行转化,所以需要想办法将小数和整数部分合并且不影响取整。3、可以再加上按时间收费的模块以便出租车在较长时间等待的过程中也能计费 附:程序清单 1、 module FDIV ( CLK, K); //分频器设计 input CLK ; output K ; reg[12:0] count ; reg M1 ; parameter ratio=50 ; //定义分频比为50,若是不同规格的轮胎,调整此参数 always @(posedge CLK) begin if (count==ratio-1)

您可能关注的文档

文档评论(0)

allap + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档