EDA技术课程设计-出租车自动计费系统(2).doc_第1页
EDA技术课程设计-出租车自动计费系统(2).doc_第2页
EDA技术课程设计-出租车自动计费系统(2).doc_第3页
EDA技术课程设计-出租车自动计费系统(2).doc_第4页
EDA技术课程设计-出租车自动计费系统(2).doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北石油大学课程设计任务书课程 eda技术课程设计题目 出租车自动计费系统专业 电子信息工程 姓名 学号 0主要内容、基本要求、主要参考资料等主要内容:设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。基本要求:1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;2、行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用bcd码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。4、用led显示行驶公里数,两个数码管显示收费金额。主要参考资料:1 潘松著.eda技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限 2011.3.11 指导教师 专业负责人 2011年 3月7日一、总体设计思想1.基本原理本次设计首先在quartus环境中对出租车自动计费器的各个部分利用vhdl这一硬件描述语言予以设计,生成模块。而整个设计的核心部分就在分频/计量模块,该模块完成的功能主要包括计费脉冲的产生,等待计时、计价、计程功能。随后运用quartus中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。待所有模块的功能正确之后,运用原理图搭建电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上检验设计的正确与否。2.设计框图根据设计要求,电路具有计时、计程、计费功能,用led显示行驶公里数,数码管显示收费金额,行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用bcd码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。其设计框图如图1所示:bcd码比例乘法器bcd码比例乘法器行车里程等车时间等车单价里程单价脉冲数求和脉冲电路计数器起步价译码器显示器图1 出租车自动计费系统设计框图二、设计步骤和调试过程1、总体设计电路计程模块是2个100进制计数器,输入的每10米一次脉冲经一次100进制计数获得每km一次的脉冲,由100进制计数输出为2个4位2进制bcd码。接显示模块,得到计程(0-99km)。计时部分:计算乘客的等待累计时间。等候时间计费需将等候时间转换成脉冲个数,用每个脉冲表示的金额与脉冲数相乘即得计费数,例如100个脉冲表示10分钟,而10分钟收费0.5元,则脉冲当量为0.05元/脉冲,如果将脉冲当量设置成与行车里程计费相同(0.01元/脉冲),则10分钟内的脉冲数应为500个。计程部分:计算乘客所行驶的公里数。计程器的量程为99km,满量程后自动归零。显示模块输入计费、计时,计程数据总线通过扫描脉冲选择一个bcd码进行译码,每扫描一次进行一位显示。所以扫描脉冲适当取高一点。考虑视觉暂留25帧乘8得200hz以上为好。实际实验中使用了5859hz。其他rst信号,每10米,1hz,74ls138三位八线选择器,八位七段数码管由外围设备和电路提供。总体设计电路图如图2所示:图2 出租车自动计费器顶层电路原理图2、模块设计和相应模块程序(1)计程模块原理使用4位十进制计数器封装成为8位一百进制计数器。对于外部每10米的里程脉冲,经计数可以每km输出进位脉冲一次。再用一百进制计数器对其进行计数。通过对计数输出信号的译码可以得到里程在led上的显示。算乘客所行驶的公里数。计程器的量程为99km,满量程后自动归零。(2)计时模块原理使用1hz的外部脉冲信号,使用5位60进制计数器。可以得到每分钟一次的脉冲输出。再使用一百进制计数器对其进行计数。通过对计数输出信号的译码可以得到时间显示。计算乘客的等待累计时间。计时器的量程为59min,满量程后自动归零。(3)计费模块原理使用前两模块中的分钟信号作为时间输入,千米信号作为路程输入。编写两个十进制计数器对时间和里程计数。并且在里程计数设置ent输出,行程在3公里内,起步费为3元;3公里外以每公里按1元计费,等待累计时间每10min按0.5元计费。(4)显示模块原理行驶费用通过使用74ls138和七段数码管进行显示。这要求输出使用3位输出为位选,对其译码得到数码管地址,7位数据在相应数码管上显示相应的数据。使用led显示行驶里程数。编写vhdl源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity taxi is port(clk:in std_logic; start:in std_logic; stop:in std_logic; fin:in std_logic; cha3,cha2,cha1,cha0: out std_logic_vector(3 downto 0); km1,km0: out std_logic_vector(3 downto 0); min1,min0: out std_logic_vector(3 downto 0);end taxi;architecture behave of chuzuche is signal q_1:integer range 0 to 99; signal w:integer range 0 to 59; signal c3,c2,c1,c0:std_logic_vector(3 downto 0); signal k1,k0 :std_logic_vector(3 downto 0); signal m1:std_logic_vector(3 downto 0); signal m0:std_logic_vector(3 downto 0); signal temp0,temp1 :std_logic_vector(3 downto 0); signal f_1:std_logic; signal en0,en1:std_logic; begin feipin:process(clk,start) begin if clkevent and clk=1 then if start=0 then f_1=0; q_1=0; else if q_1=99 then q_1=0; f_1=1; else q_1=q_1+1; f_1=0; end if; end if; end if;end process;process(fin) begin if finevent and fin=1 then if start =0 then k1=0000; k0=0000; elsif stop =0 then if k0=1001 then k0=0000; if k1=1001 then k1=0000; else k1=k1+1; end if; else k0=k0+1; end if; end if; end if;end process;process(f_1)beginif f_1event and f_1=1 thenif start =0 then w=0; m1=0000; m0=0000; elsif stop =1 then if w=59 then w=0; if m0=1001 then m0=0000; if m1=0101 then m1=0000; else m1=m1+1; end if; else m0=m0+1; end if; else w=w+1; end if; end if; end if;end process;process(clk)beginif clkevent and clk=1 then if start =0 then en0=0; en1=0; elsif stop =0 then en000000011 then en0=1; else en0=0; end if; elsif stop =1 then en000000010 then en1=1; else en1=0; end if; end if;end if;end process;process(clk,start) variable c13,c15:integer; begin if start=0 then c3=0000; c2=0000; c1=0101; c0=0000; c13:=0; c15:=0; temp0=0000;temp1=0000; elsif clkevent and clk=1 then if (en0=1) then if (c1313) then c13:=c13+1; if (c13=1) then temp0=k0; end if; if c0=1001 then c0=0000; if c1=1001 then c1=0000; if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+1; end if; else c2=c2+1; end if; else c1=c1+1; end if; else c0=c0+1; end if; elsif(k0/=temp0) then c13:=0; end if;elsif(en1=1) then if(c1515) then c15:=c15+1; if(c15=1) then temp1=m0; end if;if c0=1001 thenc0=0000; if c1=1001 then c1=0000;if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+1;end if;elsec2=c2+1;end if;elsec1=c1+1;end if;elsec0=c0+1;end if;elsif(m0/=temp1) then c15:=0;end if;end if;end if;end process;process(f_1)beginif f_1 event and f_1=1 thenif start =0 then min1=0000; min0=0000; km1=0000; km0=0000;cha3=0000;cha2=0000;cha1=0000;cha0=0000; else min1=m1;min0=m0; km1=k1;km0=k0; cha3=c3;cha2=c2;cha1=c1;cha0=c0; end if; end if; end process;end behave;3、仿真及仿真结果分析仿真图1仿真图2图中显示为出租车总行驶里程为8km,累计等待时间为3min,费用为8.5元。4、实验调试结果验证所设计程序是否正确,将程序下载进行硬件测试。在quartus开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件中。经过多次数据测试,显示正常,基本实现本实验的要求。三、结论及心得体会在这个星期的设计过程中收获颇丰。设计的核心内容就是利用vhdl语言设计出租车自动计费系统。在整个设计过程中,首先对eda这门课程有了更深的了解,因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去,在电路的设计过程中,加深了对数字电路的了解及运用能力,对课本以及以前学过的知识有了一个更好的总结与理解;以前的数字实验只是针对某一个小的功能设计,而此次的eda课程设计是对我们的设计总体电路的能力考核,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计,其次,在电路仿真的过程中总会出现一些问题,需要我们细心解决,我会在今后的学习中更加努力,增强自己的设计能力,不断完善设计思路,达到学以致用的目的。参考资料1 潘松著.eda技术实用教程(第二版). 北京:科学出版社,2005.2 宋嘉玉,孙丽霞著eda实用技术北京:人民邮电出版社,2006.12 3 齐洪喜,陆颖著vhdl电路设计实用技术北京:清华大学出版社,2004.54 刘艳萍,高振斌著,李志军eda实用技术及应用北京:国防工业出版社,2006.15 章彬宏著eda应用技术北京:北京理工大学出版社,2007.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论