山东建筑大学EDA课程设计 出租车计价器
- 格式:doc
- 大小:178.50 KB
- 文档页数:17
EDA课程设计报告--出租车计价器课程设计课程设计名称:出租车计价器专业班级学生姓名:学号:指导教师:课程设计时间:1 设计任务及要求出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。
从起步开始,行程3公里内,且等待累计时间2分钟内,起步费10元;3公里以外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。
并能显示行驶公里数、等待累计时间、总费用。
设计的主要技术指标:(1)计价范围:0—999.9元计价分辨率:0.1元(2)计程范围:0—99公里计程分辨率:1公里(3)计时范围:0—59分计时分辨率:1分本次设计中假设出租车的速度传感器具有出租车每行驶1Km提供1000个脉冲信号的特性。
当行驶速度小于等于6KM/h时为等待。
本设计的最终任务是显示出租车的等待时间和行驶里程,并计算出所需费用。
根据要求需要进行如下分工,首先要有一个分频模块(FPQ)产生系统工作用的基准信号1HZ,供系统中的有关模块计时用。
其次要有一个判断等待与否的模块(DDPB),再者就是要有计时和计程模块(DDSJ和LCJS),最后要有计费模块和显示译码模块(JFZ和YIMA)。
2设计原理及总体框图(1)设计总体框图图1总设计框图(2)设计总原理图图2设计总原理图设计总原理:测控FPGA芯片通过采集速度传感器脉冲信号WCLK进行行驶里程计算,利用外部脉冲信号CLK1产生标准时钟信号,用来计算等待时间,最后根据行驶里程、等待时间来计算计价值。
并用译码电路显示行驶里程、等待时间和计价值。
3 程序设计1.VHDL语言简单介绍VHDL语言(VHSIC Hardware Description Language,甚高速集成电路硬件描述语言)是一种设计、仿真、综合的标准硬件描述语言,是对可编程逻辑器件进行开发与设计的重要工具,其优点是:支持自上而下和基于库的设计,支持范围广,具有多层次描述系统硬件功能的能力。
eda课程设计出租车计费器计程车计费器近年来,随着出行需求的增加,计程车成为现代都市生活中不可或缺的交通工具。
然而,随之而来的问题是如何准确计算乘客的乘车费用,以避免价格争议和不公平的情况发生。
因此,设计一个高效准确的出租车计费器成为了必备的需求。
本文将介绍一个EDA课程设计的出租车计费器,并详细阐述其功能和设计理念。
首先,出租车计费器需要具备自动计算乘车时间和里程的功能。
乘客上车后,计费起始点记录下当前的时间和里程数,当乘客下车时,计费器会根据乘车时间和里程数自动计算出乘车费用。
这样的设计方案使得计费过程更加便捷,无需司机或乘客自行计算费用,提升了计费的准确性和公正性。
其次,出租车计费器还需要考虑不同的计费规则和策略。
在不同地区和国家,计费规则可能会有所不同。
例如,在某些地方,计费可能以里程为主,而在另一些地方,计费可能以时间为主。
因此,计费器需要能够灵活调整计费策略,以适应不同的地区和客户需求。
除了基本的计费功能,出租车计费器还可以增加一些附加功能,以提升用户体验。
例如,可以添加语音导航功能,为乘客提供实时导航路线,让乘客更加便捷地到达目的地。
同时,也可以添加多种支付方式,如现金、刷卡、移动支付等,以满足不同乘客的支付需求。
这些附加功能的添加可以为乘客提供更加便利的乘车体验,提升出租车的竞争力。
此外,出租车计费器还需要注重安全性和可靠性。
计费器需要具备防伪造和防篡改功能,以防止不法分子通过篡改计费器数据来进行欺诈行为。
同时,计费器需要保证数据的准确性和可靠性,以便相关部门对出租车运营情况进行监管和统计。
这些安全性和可靠性的保障是出租车计费器设计的重要组成部分。
总之,EDA课程设计的出租车计费器是一个非常重要的工具,它能够准确计算乘车费用,提升用户体验,保证计费的公正性和准确性。
设计一个高效准确的出租车计费器是一个复杂的过程,需要考虑到不同地区和国家的计费规则,同时也需要注重安全性和可靠性。
希望通过持续的研发和创新,能够设计出更加先进的出租车计费器,为乘客提供更好的出行体验。
燕山大学EDA课程设计报告书题目:出租车计价器(注:此文件应以同学学号为文件名)一、设计题目及要求题目名称:出租车计价器**要求:1.2 Km 起计价,起始价5 元,每公里1.2 元;2.传感器输出脉冲为0.5m/个(用适当频率的时钟信号代替即可);3.每0.5km 改变一次显示,且钱数提前显示(例如运行到2Km 时,应显示5.6 元);4. 分别用三位数码管显示公里数和钱数,另可设置其他必要的按钮。
二、设计过程及内容(包括○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)○1总体设计:分析题目可知,我们的题目可抽象成外界输入的计数脉冲计数以及对脉冲计数值的处理。
首先,对于原始脉冲我们搭建了一个计数器,分别由4000进制计数器和1000进制计数器构成。
其中4000进制计数器是对于前2Km的脉冲计数,而1000进制计数器是对于2公里后的每0.5km的脉冲响应。
当我们得到4000进制的脉冲的时候,关闭4000进制计数器。
开启1000进制计数器;然后就是公里数和钱数的显示,分析得知钱数是处于0、6、2、8、4之间构成循环,于是我们采用了JK触发器构成的计数器;而对于公里数就没有那么复杂,0、5之间循环的话我们之间采用了一个JK触发器构成的取反电路,即每个下降沿改变信号的电位(0000->4000),然后在每个5-0切换的周期输出进位信号;有了上面两个电路之后,我们做的工作就只有将数据显示出来。
我们做了一个6进制计数器,对应输入刷新频率,再将数据信号送入即可显示数据,不过由于输出的是BCD码,所以增加了一个译码器。
○2主要模块1、计数器模块计数器模块如图所示,当然我在后面电路用到的只有OUT05口,其他口我只是为了检测电路是否正常使用而设置。
电路由十一个74160计数器构成,其中前四个构成了一个四千进制计数器,在最后一级QC端我引出加上反相器后与时钟信号做与运算,这样就可以在达到4000的时候锁定该4000进制计数器,同时使QC端一直为1,同时,该信号还作为中间四个1000进制计数器的LDN端输入,即只有在4000个脉冲之后1000进制计数器才会正常工作。
1。
所选题目:出租车计费器2.设计要求:设计一个出租车计费器,能按路程计费,具体要求如下:(1)实现计费功能,计费标准为:按行驶里程计费,起步价为6。
00元,并在汽车行驶2km后按1.2元/km计费,当里程数达到15km后,没千米加收50%的空驶费,车辆停止和暂停时不计费。
(2)现场模拟汽车的启动、停止、暂停和换挡等状态。
(3)设计数码管显示电路,将车费和路程显示出来,各有1位小数。
3。
设计原理:设计该出租车有启动键、停止键、暂停键和档位键。
启动键为脉冲触发信号,当其为一个脉冲时,表示汽车已启动,并根据车速的选择和基本车速发出相应频率的脉冲(计费脉冲)以此来实现车费和路程的计数,同时车费显示起步价;当停止键为高电平时,表示汽车熄火,同时停止发出脉冲,此时车费和路程计数清零;当暂停键为高电平时,表示汽车暂停并停止发出脉冲,此时车费和路程计数暂停;档位键用于改变车速,不同的档位对应着不同的车速,同时路程计数的速度也不同。
4.模块设计:出租车计费器可分为两大模块,即控制模块和译码显示模块.系统框图如下:5。
电路符号:出租车计费器的输入信号有:计费时钟脉冲clk;汽车启动键start;汽车停止键stop;档位speedup.输出信号:7段显示控制信号seg7;小数点dp。
6.具体设计流程:(1)根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。
①计数器A完成车费百位。
②计数器B完成车费十位和个位.③计数器C完成车费角和分(显示时只显示角)。
④计数器D完成计数到20(完成车费的起步价)。
⑤计数器E完成模拟实现车行驶100 m的功能。
(2)当超出起步价时就自动在起步价的基础上每增加一个100m脉冲就增加相应的费用,而当总里程达到或超过一定的数值时,能按新的收费标准进行收费。
(3)译码/动态扫描电路模块将路程与费用的数值译码后用动态扫描的方式驱动6只数码管,即所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示.(4)数码管显示将千米数和计费金额均用3位LED数码管显示(2位整数,1位小数)。
1.出租车计费器的总体设计1.1 出租车计费设计该出租车计费器按下开关S1后开始计费和计里程数,分为白天和夜晚。
当拨动开关K2为0时,系统使用程序设置的起步价,白天起步价是3元,准行2公里,以后2元/公里;夜晚起步价是9元,准行2公里,以后3元/公里。
当拨动开关K2为1时,可由矩阵键盘输入起步价0~9元。
当路程大于200公里时,价格会在原来的基础上加50元。
1.2 基本设计思想时钟输入为一个1KHz的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块的S1 来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。
直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1 米,所以每旋转1000 圈,认为车子前进1 公里。
系统设计是需要检测电机的转动情况,每转1000圈,分频模块输出一个下降沿信号。
车费和里程数在一个8位7段数码管上显示,前4位显示里程,后4位显示费用。
路程的单价由16*16点阵显示,拨动开关K1为0时,2元/公里,点阵显示2;拨动开关K2为1时,3元/公里,点阵显示3。
2.出租车计费器的总体实现2.1 系统总体框图该出租车计费器由一个VHDL程序构成,不同功能的实现分别是多个进程控制,主要进程有:分频模块进程:将每1000个电机脉冲转化为1个输出脉冲;计程模块进程:记录已行里程;计费模块进程:计算应付车费;4*4矩阵键盘进程:设置起步价;数码管显示进程:将已行里程和应付车费显示在数码管上; 16*16点阵显示进程:显示当前状态的每公里单价。
图2-1 系统框图2.2 程序流程图(2)计程模块图2-3 计程模块(3) 计费模块图2-4 计费模块2.3 出租车计费器各功能的实现(1)分频模块:直流电机motor每输出1000个脉冲,分频器glclk输出一个下降沿脉冲,表示电机已走1公里,meter1加1.if rst='0' thencount<=0;temp<='0';elsif (motor'event and motor='1') thenif count>499 thencount<=0;temp<=not temp;elsecount<=count+1;end if;end if;glclk<=temp;(2)计程模块:glclk的下降沿来临时,路程的个位加1,满9往高位进一,同时低位归0。
燕山大学EDA课程设计报告书题目:出租车计价器姓名:班级: 12级通信工程1班学号:成绩:一、设计题目及要求要求:1.2 Km起计价,起始价5元,每公里1.2元;2.传感器输出脉冲为0.5m/个(用适当频率的时钟信号代替即可);3.每0.5km改变一次显示,且钱数提前显示(例如运行到2Km时,应显示5.6元);4. 分别用三位数码管显示公里数和钱数,另可设置其他必要的按钮。
二、设计过程及内容1.题目分析该题模拟出租车计价器,显示路程及对应价格,要求每经0.5km更新显示,传感器输出脉冲为0.5m/个,即每经过1000个脉冲,路程增加了0.5km,价格增加0.6元。
其中,价格起始价5元,即需要价格在路程2km 之前显示固定值5元。
二者分别用三位数码管显示,分析可知,路程的小数位显示0或5,在5→0时,向个位进位;价格的小数位依次显示6、2、4、8、0,在6→2,8→4,4→0的转变中,产生进位,价格的个位从起始价5开始计数。
2.设计总述依据设计要求出租车计价器型可分为四个模块:分频模块,路程计数模块,价格计数模块和二者的显示模块。
①分频模块分频模块功能是每经过1000个脉冲,即0.5km,输出一个脉冲信号,并且产生一控制输出,该控制信号在2km前,输出为0,而在2km处及2km之后输出1,该控制信号控制价格计数器从2km处开始累加钱数。
②路程计数模块路程计数模块的功能是显示路程,路程包含了十位,个位和小数位,其中,小数位显示0或5,并在固定位置5→0处向个位进位,十位个位为常规0~99计数器。
③价格计数模块价格计数模块的功能是显示与路程对应的价格,且价格提前显示。
价格同样包含十位,个位和小数位,其中小数位依次显示6、2、8、4、0,并在6→2,8→4,4→0时,向个位产生进位,价格的个位为从5开始计数的10进制计数器,在9→0时产生向十位的进位,十位是常规的0~9计数器。
④路程、价格显示模块路程、价格显示模块的功能是使用试验箱中的6个数码管(编号为1~6的数码管)显示路程和价格,使用编号为3、2、1的数码管显示路程,使用编号为6、5、4的数码管显示价格。
--目录1引言1ﻩ2Quartus II介绍 (2)3出租车计价器设计3ﻩ3.1出租车计价器的设计原理 (3)3.2各模块功能模块设计ﻩ33.2.1分频模块4ﻩ3.2.2计量模块4ﻩ3.2.3控制模块 (4)3.2.4计费模块4ﻩ3.2.5译码显示模块 (5)3.2.6顶层模块5ﻩ3.3硬件仿真6ﻩ4总结7ﻩ参考文献8ﻩ附录 (9)1引言本设计是一个简易的出租车计费系统,实现计价功能,计费标准为按行程里程收费,起步价为6.00元,当里程小于3公里时,按照起价计费,车行超过3公里后在按1.2元/公里收费,等待累积时间超过2min,按照每分钟1.5元计费。
能模拟汽车的启动,停止,暂停等状态。
并用LED数码管实时显示车费和汽车行驶里程,用两位数字显示汽车行驶里程,显示方式为“XX”,单位为km。
计程范围为0—99km,计程分辨率为1km;用五位数字显示总费用,显示方式为“XXX.X”,单价为元。
计价范围为0—999.9元,计价分辨率为0.1元。
此计费器要设有一个由司机控制的整体复位控制。
本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。
本次课程设计可以熟练掌握了课本上的一些理论知识,课程设计也是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。
加深我们对VHDL数字电路设计教程的理解。
2Quartus II介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
出租车计费器eda课程设计一、教学目标本课程旨在通过学习出租车计费器的设计与实现,使学生掌握以下知识目标:1.理解出租车计费器的原理和结构;2.学习相关的电子技术和电路知识;3.掌握编程语言和嵌入式系统的基本应用。
4.能够独立设计和搭建出租车计费器的电路;5.能够编写程序实现计费器的功能;6.能够进行实验操作,并对实验结果进行分析。
情感态度价值观目标:1.培养学生对科学研究的兴趣和热情;2.培养学生团队合作意识和沟通能力;3.培养学生对工程实践的责任感和安全意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.出租车计费器的原理和结构;2.相关的电子技术和电路知识;3.编程语言和嵌入式系统的基本应用;4.出租车计费器的实验操作和结果分析。
具体安排如下:第1-2周:介绍出租车计费器的原理和结构,学习相关的电子技术和电路知识;第3-4周:学习编程语言和嵌入式系统的基本应用;第5-6周:进行出租车计费器的实验操作,并对实验结果进行分析。
三、教学方法为了更好地实现教学目标,我们将采用以下教学方法:1.讲授法:通过讲解出租车计费器的原理和结构,相关的电子技术和电路知识,以及编程语言和嵌入式系统的基本应用;2.实验法:让学生亲自动手进行出租车计费器的实验操作,培养学生的实践能力;3.讨论法:在课堂上引导学生进行思考和讨论,激发学生的学习兴趣和主动性。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材和参考书:为学生提供系统的理论知识;2.多媒体资料:通过视频、图片等形式,为学生提供丰富的学习材料;3.实验设备:为学生提供实践操作的机会,培养学生的实践能力。
五、教学评估本课程的评估方式将包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解能力;2.作业:布置相关的编程练习和实验报告,评估学生的掌握程度和实践能力;3.考试:通过期末考试,全面评估学生对课程知识的掌握情况。
出租车计费器eda课程设计一、课程目标知识目标:1. 学生理解出租车计费器的基本工作原理,掌握其计费算法。
2. 学生掌握EDA(电子设计自动化)的基本概念,学会使用相关软件工具进行简单电路设计和仿真。
3. 学生了解出租车计费器在实际生活中的应用,掌握相关电子元件的功能和连接方式。
技能目标:1. 学生能够运用所学知识,设计并搭建一个简单的出租车计费器电路。
2. 学生能够运用EDA软件进行电路仿真,验证计费器的功能。
3. 学生能够通过小组合作,解决实际设计过程中遇到的问题,提高团队协作能力。
情感态度价值观目标:1. 学生培养对电子技术学科的兴趣,激发学习热情。
2. 学生培养创新意识和动手能力,提高自信心和成就感。
3. 学生学会关注生活中的实际问题,培养学以致用的价值观。
课程性质:本课程为电子技术学科的课程设计,旨在让学生通过实际操作,掌握出租车计费器的工作原理和设计方法,提高学生的动手能力和团队协作能力。
学生特点:学生具备基本的电子技术知识,对实际操作和设计有一定兴趣,喜欢探索新事物。
教学要求:教师需引导学生主动参与,注重理论与实践相结合,关注学生的个体差异,提高学生的自主学习能力。
同时,注重培养学生的团队协作能力和创新意识。
通过本课程的学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容根据课程目标,本章节教学内容如下:1. 出租车计费器原理介绍- 计费器的基本工作原理- 计费算法及其实现2. EDA软件工具使用- EDA软件的安装与基本操作- 电路设计原理及仿真方法3. 电子元件及其功能- 常用电子元件的识别与使用- 元件连接方式及其在出租车计费器中的应用4. 出租车计费器电路设计- 设计要求与电路框图- 电路搭建与调试5. 小组合作与问题解决- 团队协作能力的培养- 实际设计过程中问题的发现与解决教学大纲安排:第一课时:出租车计费器原理介绍第二课时:EDA软件工具使用第三课时:电子元件及其功能第四课时:出租车计费器电路设计第五课时:小组合作与问题解决教材章节关联:本教学内容与教材中“电子技术应用”章节相关,涉及计费器原理、EDA软件应用、电子元件使用等方面的内容。
摘要随着我国经济社会的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。
出租车计价器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。
一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。
本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。
该设计虽然功能简单,智能化水平比较低,但仍具有一定的实用性。
该设计是在VHDL的基础上对出租车计价器进行设计来实现其基本功能的,与以往的基于单片机的数模混合电路相比,FPGA具有稳定性好,抗干扰能力强等优点,且非常适合做为出租车计价器的控制核心,所以选择用VHDL来对计价器进行设计来实现其功能。
关键词: 计价器QuartusⅡ数码管一、设计目的和要求设计一个出租车计价器,该计价器计费系统技术参数和设计要求:(1)实现计费功能,计费标准为:起步均价6元,并在车行驶3公里后以每公里1.6元计费,当计费器达到或超过20元时,每公里加收50%的车费,车辆停止和暂停时不收费。
计价范围:0—999.9元,计价分辨率:0.01元;计程范围:0—99公里,计程分辨率:0.01公里。
(2)数码管动态显示功能,能显示行驶公里数、总费用。
(3)汽车具有启动、停止、暂停和换挡等状态。
二、设计原理1设计模块本设计是对出租车计价器的四个模块进行分析的,综述如下:分频模块:分频模块是其它模块的基础,输入时钟选为32Hz,分频后的时钟频率为1Hz,为后续模块提供基本时钟。
路程模块:该模块是对车辆行驶路程进行计数,以1Hz时钟为基础,检测行程脉冲,路程模块中有内部变量来判断路程,当大于3公里、20公里时,分别有相应的使能信号对此作出记录,最大路程显示为99公里。
计费模块:该模块是基于等待时间模块和路程模块对费用进行控制的。
通过内部使能信号分别计算3公里以内、3-20公里以及20公里以后的费用。
译码显示模块:该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD 码)、计程数据(2位BCD码)动态选择输出。
本设计是基于VHDL进行编程,然后在QuartusⅡ进行波形仿真,实现出租车计价器的基本功能。
2原理描述根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图6-63所示,各模块功能如下:图6-63出租车自动计费器系统框图2.1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。
该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,10HZ信号为1元的计费控制,16Hz信号为1.6元计费控制。
2.2 路程和计费模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。
其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。
计程器的量程为99公里,满量程自动归零。
2.3 译码显示模块该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。
其中计费数据jifei4~ jifei1~送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
三、设计内容1设计思路输入2个时钟信号,分别模拟时间和路程。
对等待时间、路程计数,进而统计费用。
系统结构框图如图2-1。
图2-1自动计价器的系统方框图2 设计流程图图2 系统设计流程图乘客上车后,按下启动按钮,计价器开始工作,首先进入初始化状态,即计程从0开始,计费从6开始。
再根据单程信号判断是否为单程,进而确定计费方式。
单程:里程计数器开始计数,当路程超过3公里时,计费开始累加,按1.6元每公里计算,路程超过20公里时每公里2.4元。
乘客下车后,按下复位键,则所有计数器进入初始状态。
3总体设计封装图总体设计封装图如下图所示。
4模块设计4.1分频模块秒分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和1Hz的三种频率。
该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,15HZ信号为1.5元的计费控制,16Hz信号为1.6元计费控制。
4.2计费模块控制模块是系统的核心部分,对计价器的状态进行控制。
行程3公里内,起步费为8元;3公里外以每公里1元计费,等待累计时间1分钟外以每分钟1元计费。
20公里外以每公里1.5元计费,等待累计时间1分钟外以每分钟1.5元计费。
计费数据送入显示译码模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示。
4.3译码显示模块译码显示模块完成计价、计时、计程数据显示。
该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD 码)、计程数据(2位BCD码)动态选择输出。
其中计费数据送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为99分钟;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
5系统仿真结果及分析仿真波形图分析各信号说明:输入信号:clk:系统时钟信号,频率32Hz;mile:车速时钟,频率8Hz;start::启动信号,当start=1时,出租车启动,计数器开始计数;否则计数器停止计数;rst:复位信号,当rst=1时,各计数器清0;当rst=0时,计数器可以开始计数,start=1表示计数开始;one_way:单程信号,单程时由司机输入;输出信号:km0,km1:里程,单位为公里;cost0,cost1,cost2,cost3:费用,单位为元,其中cost0表示小数位。
图3 单程行驶示意图启动键、单程键有效,由图可知,3公里之内计费显示为6元;3-20公里之间每公里1.6元累计;超过20公里每公里2.4元累计。
启动键、单程键有效,乘客下车时显示费用25元,复位信号有效,计数器清零,当启动信号有效时重新计数。
图5 单程行驶复位示意图四、总结与致谢通过为期两周的课程设计,出租车计价器系统的设计已基本完成,能按预期的效果模拟汽车启动、等待、停止、复位等功能,并显示车费数目等待时间及行驶路程。
出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及CPLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。
在本次设计中还存在很多不足,可以改进的地方目前有以下几点:一、该设计虽然实现了基本的计费和计程,但是很多问题并没有解决,如本设计只实了一种车速的计费。
若要实现出租车的不同档位下的计程计费,还需要进一步讨论。
二、该设计智能化水平较低,启动、等待、复位等信号需要人为输入,若在实际中出现操作偏差,会导致计费不准确。
同时,感谢课程设计过程中杨红娟老师的耐心指导,感谢同学们的相互纠正。
五、参考文献[1] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006[2] 潘松,黄继业.EDA技术与VHDL.北京:清华大学出版社,2009[3] 江国强编著.EDA技术与应用(第三版)..北京:电子工业出版社,2010[4] 夏宇闻编著.Verilog HDL数字系统设计教程..北京:北京航空航天大学出版社,2008[5] 周祖成,程晓军,马卓钊编著.数字电路与系统教学实验教程.北京:科学出版社,2010[6] 周润景,苏良碧.基于Quartus II 的数字系统Verilog HDL设计实例详解.北京:电子工业出版社,2010[7] (美国)Sanir Palnitkar 译者:夏宇闻胡燕祥刁岚松.Verilog HDL数字设计与综合(第2版).北京:电子工业出版社,2009[8] 云创工作室.Verilog HDL程序设计与实践.北京:人民邮电出版社,2009[9] 刘福奇,刘波.Verilog HDL应用程序设计实例精讲.北京:电子工业出版社,2009[10] 张延伟,杨金岩,葛爱学.verilog hdl程序设计实例详解.北京:人民邮电出版社,2008附录(程序源代码)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity taxi isport(clk:in std_logic;start:in std_logic;wait_signal:in std_logic;mile:in std_logic;one_way:in std_logic;rst:in std_logic;cost0,cost1,cost2,cost3:out std_logic_vector(3 downto 0);min0,min1:out std_logic_vector(3 downto 0);km0,km1:out std_logic_vector(3 downto 0));end;architecture bhv of taxi issignal mile_r1,mile_r2,mile_clk,start_r,clk1hz:std_logic;signal count:integer range 0 to 29;signal sec:integer range 0 to 59;signal c0,c1,c2,c3:std_logic_vector(3 downto 0);signal k0,k1,m0,m1:std_logic_vector(3 downto 0);signal en0,en1:std_logic;signal wait_clk,cost_clk:std_logic;beginU1:process( rst,clk)beginif rst='0' thenif clk'event and clk='1' thenif count=5 thencount<=0;clk1hz<='1';elsecount<=count+1;clk1hz<='0';end if;end if;end if;end process;U2:process(rst,clk1hz,start,wait_signal) beginif rst='1' thenm0<="0000";m1<="0000";elsif start='0'thenwait_clk<='0';elsif clk1hz'event and clk1hz='1' then if wait_signal='1'thenif sec=5 thensec<=0;wait_clk<='1';if m0="1001"thenm0<="0000";if m1="0101"thenm1<="0000";elsem1<=m1+'1';end if;elsem0<=m0+'1';end if;elsewait_clk<='0';sec<=sec+1;end if;elsewait_clk<='0';end if;end if;end process;U3:process( rst,clk1hz,mile,start)beginif rst='0' thenif clk1hz'event and clk1hz='1'thenmile_r2<=mile_r1;mile_r1<=mile;start_r<=start; end if;end if;end process;mile_clk<=mile_r1 and not(mile_r2);cost_clk<= wait_clk when wait_signal='1'else mile_clk when en0='1' or en1 ='1'else '0';U4:process(rst,start,mile_clk)beginif rst='1' thenk0<="0000"; k1<="0000";elsif start='0' thenk0<="0000"; k1<="0000"; en0<='0';en1<='0';elsif mile_clk'event and mile_clk='1' thenif k1 & k0>="00100000" and one_way='1' thenen1<='1';en0<='0';end if;if k1 & k0="00000011" thenen0<='1';end if;if k0="1001" thenk0<="0000";if k1="1001" thenk1<="0000";elsek1<=k1+'1';end if;elsek0<=k0+'1';end if;end if;end process;U5:process( rst,start,cost_clk,start_r)beginif rst='1' thenc0<="0000";c1<="0000"; c2<="0000";c3<="0000"; elsif start='1' and start_r='0' thenc0<="0000";c1<="1000";c2<="0000"; c3<="0000"; elsif cost_clk'event and cost_clk='1'thenif en1='0' and en0='1'thenif c1="1001"thenc1<="0000";if c2="1001"thenc2<="0000";if c3="1001"thenc3<="0000";elsec3<=c3+'1';end if;elsec2<=c2+'1';end if;elsec1<=c1+'1'; c0<="0000";end if;elseif (c0="0101" and c1="1000")or c1="1001"thenif c1="1001" and c0="0101" thenc0<="0000"; c1<="0001";elsif c1="1001" and c0="0000" thenc0<="0101";c1<="0000";elsif c1="1000" and c0="0101" then c0<="0000";c1<="0000";end if;if c2="1001" thenc2<="0000";if c3="1001"thenc3<="0000";elsec3<=c3+'1';end if;elsec2<=c2+'1';end if;elsif c0="0000"thenc0<="0101";c1<=c1+'1';elsec0<="0000";c1<=c1+"0010";end if;end if;end if;end process;min0<=m0;min1<=m1;km0<=k0;km1<=k1;cost0<=c0;cost1<=c1;cost2<=c2;cost3<=c3;end;摘要 (1)一、设计目的和要求 (2)二、设计原理 (3)1设计模块 (3)2原理描述 (3)2.1分频模块 (3)2.2 路程和计费模块 (4)2.3 译码显示模块 (4)三、设计内容 (5)1设计思路 (5)2 设计流程图 (6)3总体设计封装图 (6)4模块设计 (7)4.1分频模块 (7)4.2计费模块 (7)4.3译码显示模块 (7)5系统仿真结果及分析 (8)四、总结与致谢 (10)五、参考文献 (11)附录(程序源代码) (12)。