ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:88KB ,
资源ID:2490806      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2490806.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA出租车计费器设计报告(verilog).doc)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、 出租车计费器一 实验任务及要求1. 能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。2. 实现预置功能:能预置起步费、每公里收费、车行加费里程。3. 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。4. 设计动态扫描电路:将车费显示出来,有两位小数。5. 用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。6. 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。7. 完成电路全部设计后,通过系统实验箱

2、下载验证设计的正确性。计费器按里程收费,每100米开始一次计费。各模块功能如下:(1) 车速控制模块当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。(2) 里程动态显示模块其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。(3) 计费动态显示模块其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值

3、加1元,当收费超过20时数值加1.5元。三 实验报告要求1. 画出顶层原理图;2. 用VHDL语言设计各子模块;3. 叙述各子模块和顶层原理图的工作原理;4. 给出各模块和顶层原理图的仿真波形图;5. 给出硬件测试流程和结果。四:设计说明:实际设计共五个模块,分别为分频模块(每一百米送一个脉冲以方便计数)、计算里程模块、里程取整模块(不足一公里的按一公里算)、计费模块、显示模块。详细功能如下:1、 分频模块:假设车轮每转一圈为2米,送一个脉冲,则需要50分频(共100米),同理,若知道车轮直径,即可算出分频比2、 里程模块:每一百米记一次数,最大可以计999.9公里,精确到0.1公里。3、 取

4、整模块:现实中出租车的精确度为0.1公里,计算价格的时候不足一公里的按一公里算,所以加了这一个模块,输出的是计算价格时的里程数。4、 计费模块:按行驶里程收费,起步费为11.00元(包括1元得燃油附加费),并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(20元)时,每公里加收50%的车费,车停止不计费。5、 显示模块:通过动态扫描显示车费和里程数,将十进制数转化为四位十进制数(如将9999转化为四个9)以方便显示设计流程图如下50分频器里程计算模块计费模块取整模块显示模块脉冲输入流程说明:车轮每转一圈送一个脉冲波,假设每转一圈为2米,则经过50分频器后是每100米送一个脉冲到里

5、程计算模块,里程计算模块可以精确到0.1公里,将计算的里程数送至取整模块进行判断,若小数部分不为零则整数部分加1,即不足一公里的部分按一公里计算,取整后的里程送至计费模块计费,同时和计算的费用用过显示模块进行转化和显示顶层原理图如下:五、实验结果:通过maxplusII将sof文件下载到试验箱上,运行正常,与实验目的一致,可以通过调整输入的脉冲频率来调整计费的速度。初始价格为11元,超过3公里每公里加收2元,价格超过20每公里3元。六、一些问题和改进:总的来说本次试验是顺利的,过程中主要遇到了这几点问题:1、刚开始没有完全想好要用几个模块做,没画好流程图,所以模块数量显得有点多,许多模块显得有

6、些不必要,如取整模块完全可以合并到计费模块中。2、对其中的管脚定义太过于随意,造成很大空间的浪费,而且在使用较早的芯片时出现管脚不足的现象,这和模块过多也有很大关系 。一些改进的想法:1、在本次设计中,假设车轮每转一圈为2米,刚好50分频,但是显然现实中不会刚好每圈2米,极可能出现有小数的分频,所以分频器需要改进,或者使用其他模块使得没100送一个脉冲。2、将里程数送到显示模块时,已经是经过取整,所以没有小数部分,但是里程模块的小数部分又不能和整数部分一起送到显示模块进行转化,所以需要想办法将小数和整数部分合并且不影响取整。3、可以再加上按时间收费的模块以便出租车在较长时间等待的过程中也能计费

7、附:程序清单1、module FDIV ( CLK, K);/分频器设计input CLK ;output K ;reg12:0 count ;reg M1 ;parameter ratio=50 ;/定义分频比为50,若是不同规格的轮胎,调整此参数always (posedge CLK)beginif (count=ratio-1) count=0 ;else count= count+1 ;if (count=0)M1 = M1;else if (count=ratio/2)M1 = M1 ;endassign K=M1 ;endmodule 2、module Mileage ( CLK,

8、RST,Mile_int,Mile_dec ) ; /里程模块input CLK,RST ;output 12:0 Mile_int ;output3:0 Mile_dec ;/定义小数和整数的里程以便取整reg 3:0 count1 ; reg 12:0 count2 ;always (posedge CLK or posedge RST)beginif(RST)begincount1=0 ; count2=0 ; end/里程清零else if (count1=9) begin count1=0 ;count2=count2+1 ;endelsecount1 = count1+1 ;/每一

9、个脉冲小数里程加1,满十后整数部分加1endassign Mile_dec=count1 ;assign Mile_int=count2 ;endmodule3、module quzheng ( M_int,M_dec,Mile ) ;/取整模块input 12:0 M_int ; /输入的里程整数input 3:0 M_dec ;/输入的里程小数output 12:0 Mile ;reg 12:0 Mile ;always ( M_int,M_dec )beginif (M_dec !=0)Mile = M_int+1 ;/不满一公里的,按一公里计算,即整数部分加一else Mile = M

10、_int ;/为零则整数不变endendmodule4、module Fare ( CLK,RST,Mile,T_fare ) ;/计费模块parameter S_price=10 , Fuel=1;/起步价10元,燃油附加费1元input CLK,RST ;input 12:0Mile ;/取整后的里程输入output 12:0 T_fare ;/总的车费reg 12:0 Q1 ;always (posedge CLK or posedge RST)begin if(RST)Q1=0 ;else if(Mile=3) Q1 = S_price+Fuel ;/小于3公里,起步价11元else

11、if(Q120)Q1 = S_price+Fuel+2*(Mile-3) ;/大于11小于20元每公里加收2元elseQ1 = S_price+Fuel+3*(Mile-3) ;/大于20元每公里加收3元endassign T_fare = Q1 ;endmodule5、显示模块 module deceder (scan,seg7,dp,clk20mhz,money_in,distance_in); output7:0 scan; /数码管地址选择信号output6:0 seg7; /7段显示控制信号 output dp; /小数点input clk20mhz; /系统时钟20MHZinput

12、 12:0 money_in; /车费input 12:0 distance_in; /路程reg7:0scan;reg6:0seg7;reg dp;reg clk1khz; /1KHZ分频时钟,用于扫描数码管地址reg3:0 data;reg3:0 m_one,m_ten,m_hun,m_tho; /车费钱数的4位十进制表示reg3:0 d_one,d_ten,d_hun,d_tho; /路程的4位十进制表示reg15:0 count ;reg15:0comb1;reg3:0comb1_a,comb1_b,comb1_c,comb1_d;reg15:0 comb2;reg3:0comb2_a

13、,comb2_b,comb2_c,comb2_d;reg2:0 cnt;/1khz分频,用于扫描数码管地址 always(posedge clk20mhz) beginif(count=1d10000)begin clk1khz=clk1khz;count=d0;endelse begin count=count+1;end/将车费转化为4位十进制数 if(comb1money_in) begin if (comb1_a=d9&comb1_b=d9&comb1_c=d9)begin comb1_a=b0000; comb1_b=b0000; comb1_c=b0000; comb1_d=comb1_d+1; comb1=comb1+1; end else if(comb1_a=d9&comb1_b=d9) begin comb1_a=b0000; comb1_b=b0000; comb1_c=comb1_c+1; comb1=comb1+1; end else if(comb1_a=d9) begin comb1_a=b0000; comb1_b=comb1_b+1; comb1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1