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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数电课程设计出租车计费.docx

1、数电课程设计出租车计费江苏科技大学数电课程设计报告题 目:出租车简易计价器设计 院 系: 电子信息学院 专业班级: 11电子信息工程(张) 学生姓名: 徐胜 老师姓名: 陈迅 起止时间: 2014.02.24 至 2014.03.092014年 03月05 日基于FPGA的出租车简易计价器设计一功能要求:(1) 设计一个出租车自动计费器,具有行车里程计费、等候时 间计费、及起价三部分;(2) 用五位数码管显示 总金额,最大值为 999.99 元; (3) 行车里程单价 2元/公里,等候时间单价1元/10分钟,起价 8 元(3 公里);(4) 行车里程的计费电路将汽车行驶的里程数转换成与之成正

2、比的脉冲数,一个脉冲模拟汽车前进十米,则每 100 个脉 冲表示 1 公里,以100米为最小计费单位;(5) 根据需要自行确定需要的功能按键,显示可通过按键切换 分别显示乘坐里程数、等候时间长度、等候时间费用,行 驶里程费用和总金额 。二方案论证:根据设计要求可以把出租车计费器分为四种模式:启动模式(计量路程)、暂停模式(计量等待时间)、停止模式(停止一切计数)、复位模式(所有数字清零)。同时题目要求要能够可通过按键切换分别显示乘坐里程数、等候时间长度、等候时间费用,行驶里程费用和总金额五种数字,那么可知要设计五种显示模式。由上可知此出租车计数器设计有许多种模式组成,那么就要涉及到模式之间的切

3、换问题。在这里有些同学选择了一个按键控制所有的模式切换,这样由于模式众多操作不够方便。也有同学选择了每个按键控制一种状态,这样虽然操作简单但是需要多个按键,有些浪费资源。在这里我选择了独立按键与状态机相结合的方法既减少了按键的个数又方便操作。根据题目要求可知在行驶过程中既要对行驶路程进行计数又要对等待时间进行计数。有些同学在设计过程中只采用了一路脉冲作为参考时钟,这样虽然设计简单,但是由于路程和等待时间不在同一个计量单位上,所以不能够使用同一个参考时钟。在这里我设计了两路时钟输入CLK和CLK1,一路为时间参考时钟,一路是车辆行驶过程中传送回来的速度脉冲。由于时间计数最小单位为一分钟,路程计数

4、最小单位为一百米,而模拟脉冲一个脉冲代表十米,所以都要对参考时钟进行相应的分频处理,然后再将分频后的时钟作为计数时钟。设计要求能够显示数字,数字最大量为999.99,试验箱上的数码管已经进行译码,只需要将每个数字用四位二进制输出即可。在这里由于牵扯的数字比较多有些同学为了方便输出将每个数字拆分成五位独立的数字来表示,这样虽然操作简单,但是数字计算变得复杂,中间变量众多。我在这里采用了取余和取整的C语言编程思想,这样是计算变得方便,但是由于FPGA计算能力有限,处理比较占用资源。设计要求显示小数,FPGA处理浮点数比较困难,所以我在这里统一将所有数字放大一百倍用整数表示,由于小数位数是固定的单独

5、将小数点点亮即可。计价系统原理:出租车载客后,启动计费器,整个系统开始运行,里程计数器和从0开始计数,费用计数器从8开始计算,如果路程小于三公里,路程计费和总计费等于8,如果路程计数大于三公里每次相应的加上0.2元。在行驶过程中如果停止行驶等待,那么启动等待模式,等待时间、时间计费和总计费进行相应的处理。最终停止,那么选择停止显示模式,这时可以通过按键对乘坐里程数、等候时间长度、等候时间费用,行驶里程费用和总金额进行查看。最后在下一次启动前进行清零即可开始下一次操作。根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统结构图如下所示。三系统描述:(1)系统结构:状态检测 启

6、动模式清零模式停止显示模式等待模式时间计费时间计量路车计费 路程计量数字清零 显示模式选择费用相加,计算总费用显示等待费用显示等待时间显示路程费用显示行驶路程显示总的费用(2)输入输出信号描述信号输入/输出目标/源功能描述clkinputpin时间参考时钟(100HZ)clk1inputpin速度采集脉冲(模拟100HZ)resetinputpin异步清零,高电平有效startinputpin起始标志,默认开始计量路程start1inputpin状态切换,切换为计量等待时间stopinputpin停止与显示切换,分为五种显示S1outputpin显示数字第二位小数S2outputpin显示数字

7、第一位小数S3outputpin显示个位上的数字S4 output pin显示十位上的数字S5 output pin显示百位上的数字四模块代码 分频模块:module div1(clk,clk_1); /输入clk,输出clk_1,分频由full控制 input clk; output clk_1; reg c,clk_1; reg12:0full;always(posedge clk)begin if(full10) /改变这里的数值,即可改变分频数 begin full=full+1; c=1; end else begin full=0; c=0; endendalways(posedg

8、e c) /将分频过后的时钟信号变为标准的50%的脉冲信号begin clk_1=clk_1;endEndmodule仿真结果:状态机模块:module seqdet(clk,stop,stop1,stop2,stop3,stop4,stop5);input clk;input stop;output stop1,stop2,stop3,stop4,stop5;reg lock,stop1,stop2,stop3,stop4,stop5;reg2:0courrent_state,next_state;parameter2:0IDLE=3b000, / /状态分配 A=3b010, B=3b00

9、1, C=3b100, D=3b101, E=3b110;/*/always(posedge clk ) /按键消抖处理begin lock=stop;end/*/always(posedge lock) /状态初始化begin courrent_state=next_state;endalways(courrent_state) /状态转化begin case(courrent_state) IDLE:begin next_state=A;end B:begin next_state=C;end A:begin next_state=B;end C:begin next_state=D;en

10、d D:begin next_state=E;end E:begin next_state=A;end default:next_state=IDLE; endcaseendalways(next_state) /将状态转化为stop的输出 begin case(next_state) IDLE:begin stop1=0;stop2=0;stop3=0;stop4=0;stop5=0;end A:begin stop1=1;stop2=0;stop3=0;stop4=0;stop5=0;end B:begin stop1=0;stop2=1;stop3=0;stop4=0;stop5=0;e

11、nd C:begin stop1=0;stop2=0;stop3=1;stop4=0;stop5=0;end D:begin stop1=0;stop2=0;stop3=0;stop4=1;stop5=0;end E:begin stop1=0;stop2=0;stop3=0;stop4=0;stop5=1;end default:begin stop1=0;stop2=0;stop3=0;stop4=0;stop5=0;end endcase end/*/ endmodule 仿真结果:由上图可以看出根据状态机对按键stop的检测可以将stop按下的次数转换为stop1-stop5的值输出。

12、总的程序模块:endmodulemodule texi(clk,clk1,start,start1,stop,reset,s1,s2,s3,s4,s5); input clk,clk1,start,stop,reset,start1; output3:0 s1,s2,s3,s4,s5; reg start_1,start1_1,stop_1,reset1; reg3:0s1,s2,s3,s4,s5; reg2:0 A; reg9:0s,t,cost_s,cost_t,cost; reg9:0s_1,t1,cost_s1,cost_t1,cost1; /用来存放中间变量/*/initial /数

13、据初始化begin s1=0; s2=0; s3=0; s4=0; s5=0; s=0; t=0; cost_s=0; cost_t=0; cost=0; A=3b111;end/*/always(posedge clk ) /按键消抖begin start_1=start; start1_1=start1; stop_1=stop; reset1=reset;end/*/always(negedge clk) /状态判断begin if(start_1) A=3b000; if(start1_1) A=3b001; if(reset1) A=3b111; if(stop_1) /在stop键

14、按下的情况下对显示状态进行选择 begin if(stop1)A=3b110; if(stop2)A=3b010; if(stop3)A=3b011; if(stop4)A=3b100; if(stop5)A=3b101; endend/*/seqdet(clk,stop,stop1,stop2,stop3,stop4,stop5); /状态机调用/*/div1(clk,clk1_1); /f对时钟做分频处理div2(clk1,clk2_1);/*/always(posedge clk2_1) /路程计费程序beginif(A=3b000) begin s=s+1; if(s31) cost_

15、s=80; else cost_s=cost_s+2; endif(A=3b111) begin s=0; cost_s=0; endend/*/always(posedge clk1_1) /时间计费程序beginif(A=3b001) begin t=t+10; cost_t=cost_t+1; endif(A=3b111) begin t=0; cost_t=0; endend/*/always(posedge clk) /状态判断,现实选择模块begin cost=cost_s+cost_t;case(A) 3b011: /显示走过的路程 begin s_1=s; s1=0; s2=s

16、_1%4b1010; s_1=s_1/4b1010; s3=s_1%4b1010; s_1=s_1/4b1010; s4=s_1%4b1010; s5=s_1/4b1010; end 3b100: /显示路程收费 begin cost_s1=cost_s; s1=0; s2=cost_s1%4b1010; cost_s1=cost_s1/4b1010; s3=cost_s1%4b1010; cost_s1=cost_s1/4b1010; s4=cost_s1%4b1010; s5=cost_s1/4b1010; end 3b101: /显示等待时间 begin t1=t; s1=0; s2=t

17、1%4b1010; t1=t1/4b1010; s3=t1%4b1010; t1=t1/4b1010; s4=t1%4b1010; s5=t1/4b1010; end 3b110: /显示时间计费 begin cost_t1=cost_t; s1=0; s2=cost_t1%4b1010; cost_t1=cost_t1/4b1010; s3=cost_t1%4b1010; cost_t1=cost_t1/4b1010; s4=cost_t1%4b1010; s5=cost_t1/4b1010; end 3b111: /数据清零 begin cost=0; s1=0; s2=0; s3=0;

18、s4=0; s5=0; end default: /其他情况均显示总费用 begin cost1=cost; s1=0; s2=cost1%4b1010; cost1=cost1/4b1010; s3=cost1%4b1010; cost1=cost1/4b1010; s4=cost1%4b1010; s5=cost1/4b1010; endendcase endendmodule 仿真结果:五实验心得:此次数电课程设计我们做的是出租车计费器系统,通过查阅参考资料明白了具体实现步骤,在老师的指导下进行编程、仿真、以及硬件连接显示,最终实现了出租车计费器系统的功能。刚开始编程时由于整体放在一块编

19、,结果很繁琐并且编译出现了很多错误,后来同学建议把程序分成几个模块编写,这样不容易出错,这样编写果然容易多了并且终于编译仿真通过。通过在Quartus软件下进行的模拟仿真,并进行相应的硬件下载调试,证明所设计的系统完成了出租车计费器的功能,各项技术指标符合预定标准,具有一定实用性。如果将该设计再结合到实际应用中,那么,只需改变设计中计费要求,就可以应用到出租车上。另外,如果再任意输入该出租车计价器的计费标准,那么,它的适用范围可能就更广泛了。本次课程设计还是比较有成就感的,因为遇到一些很棘手的问题,最终解决之后感觉很好,还学到一些之前没学到的东西。通过这次数电课程设计,我们对verilog语言有了更深层次的认识,增加了自己的编程实践经验,在编程中发现问题并且解决问题的过程中,我们学到了很多新知识,我们的编程以及实践水平得到了很大提高。这次的课程设计对于我来说是毕业前的一次演练,从选题到画出流程图,再到写出程序,不停的编不停的改不停的查资料直至最后完成,有问题大家都坐在一起讨论,一起努力,一起攻克问题。我想我们享受的就是这个过程,而不仅仅只是结果。通过这次的设计,我知道了,在任何问题面前,只要我们努力,只要我们勇敢,我想,它们都不是问题,都不是困难。

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

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