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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于EDA技术的出租车计费器设计.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于EDA技术的出租车计费器设计.doc

1、 1 出租车计价器的设计概论 1。1 概述 计费器是以传感器为纽带,对输入信号进行分析处理,最后通过显示器显示出来。计费器出现于上世纪的六十年代,真正应用于我国出租车市场则是八十年代初期,对于我国来说,当时也是交通业发展的一个初期,而计费器的出现无疑是给出租车行业的发展起到了无可替代的推动作用,毫不夸张的说,计费器是出租车发展的一个最大动力.现在基本上全国所有的出租车都装备了计费器,据调查现在的出租车计费器大多采用一单片机为核心的计费系统,这种系统不仅价格实惠,而且制作方面也相对简单,但是它也有很多不足之处;而本次设计的一EDA技术为核心出租车计费器设计,它相对来说根据有优势,所以以

2、后的出租车计费器的发展必定有EDA的一席之地,现在的行业发展也正说明了这一点,设计者们正在不断寻找一种能克服以单片机为主导的计费器的弊端的新的出租车计费器,而EDA现在已经成为设计者们设计的首选。出租车计费器开始向数字可编程器件的方向发展。 传统的出租车计费器的不足点: 1. 产品升级时间相对较长:传统的计费器所采用的是微处理控制器,它的很多功能都是要借助单片机来实现。但单片机的程序并不能被很多芯片所接受,每种芯片的程序指令都不相同,因此对于设计者们来说开发较困难,时间也就相对拉得过长。 2。 计费方式不够灵活:当使用者每次要更改计费方式的时候都要重新烧录程序到芯片中去,这样就导致计费系

3、统不够稳定,很难适应出租车行业的发展。 现在的基于EDA的出租车计费器的优点: 1。 采用自顶向下的设计方法 2. 采用系统早期仿真 3。 多种设计描述方法 4。 高度集成化的EDA开发系统 5。 PLD在线系统编程能力 6。 可实现单片系统集成,减少产品体积,重量,综合成本 7。 提高产品可靠性 8. 提高产品的保密程度和竞争能力 9.降低电子产品的功耗 10。提高电子产品的工作速度 这次设计我们所采纳的就是以EDA技术为基础的的出租车计费器设计,它主要由Altera公司的Cyclone型系列芯片EP1C6Q240C8及一些外部控制电路所构成.我们使用的软件是VHDL

4、硬件描述语言实现的出租车计价器的所有功能,使收费标准更加灵活。使用Quartus 2软件对其进行仿真调试,来模拟出租车计费器的计费方式.EDA在电子设计领域中价格低廉,有良好的发展趋势,它的出现必定会占领大部分数字器件市场。 1.2 出租车计费器的发展及研究现状 伴随着改革开放成果的大丰收,出租车行业也迎来了它的春天.在这短短的三十年间,出租车行业由一个小产业逐步发展成为了今天交通业无可替代中流砥柱,而促进这一发展的正是计费器广泛的应用于出租车上,它不仅解决了顾客与司机之间的利益纠纷问题,而且还大大促进了电子行业的发展.从第一代的机械化计费器到第二代的半机械化半电子化计费器,最后到现在的

5、第三代电子化的计费器,计费器不断地发展与完善,功能也越来越多,除了计费功能,计程功能外,还加入了诸如时钟功能,显示功能,储存功能等等。 出租车计费器是衡量利益的标尺,是乘客与驾驶员两者之间交易的准则,它的出现标志着出租车行业的发展已经进入深水区.因次一个具有良好的性能的计费器将会更受使用者的青睐,所以,对出租车计费器的研究也将是设计者们不可忽略的一个重要课题。 现在对于我国来说正是电子行业发展的一个黄金时期,随着电子产品的不断应用于人们的生活中,越来越多的人投身于电子产品的研究中来,传统的计费器已经不能满足消费者的需要,所以要想取得突破,就必须寻找新的更全面的替代物,而数字可编程器件的出现

6、为出租车计费器的研究迎来了一个新的曙光,基于EDA技术的出租车计费器设计正是这一实践的例子,EDA技术正以它独特的魅力吸引着设计者们的眼球,EDA在电子设计领域中价格低廉,有良好的发展趋势,它的出现必定会占领大部分数字器件市场,也必将主导未来的出租车市场。 2出租车计费器的设计说明 2。1 设计背景 在我国随着经济的不断发展,人们对衣、食、住、行的质量也越来越高,其中在出行方面尤为突出,从以前的马车,到后面的脚踏车,最后到现在的出租车,无不说明人们对出行方便,快捷的追求。而在交易的过程中,公平已经成为了出租车行业发展的主导,以前的按机械式的方法计费,到后来出现的半机械半电子计

7、费器,发展到现在的电子计费器,计费的精度越来越高,计费的方式越来越简易,但是其中还是存在着很多的不足。基于以上所喘述的内容,本次所设计的出租车计费器将为解决这些问题提供一个参考的依据。 2。2 设计内容 计费器无疑就是记录费用并显示费用的一个器件,它与出租车行驶的路程,行驶期间的价格有关。出租车计费器通过与车子轮胎上的传感器相连接,传感器通过对轮胎所转的圈数进行一个相应脉冲的输出,而计费器就会对着先脉冲进行处理,最终转换为费用,并显示出来。针对这一点我们来利用EDA技术,来设计一款符合我们要求的出租车计费器,具有计费显示、计程显示等相关功能.设计要求如下: 这次设计我们所

8、采用的是以EDA技术为核心,其他为辅助来实现计费器的计费功能,以衡阳为例,出租车起步价为5元,当出租车行驶距离在3km以内时,只收取起步价5元,超过3km,则以后每公里收取2.5元,当总费用达到40元时,以后每公里收取3元,期间,乘客要求停车等待的时间超过一定时长时,按特定标准收取等待费用,可以动态显示显示里程与费用。 2。3 设计方法 在电子设计中,我们通常有两种设计方法来对电子产品进行设计,分别是自底向下和自顶向上;自底向下即是首先确定系统的最基础,最底层的模块,然后根据系统的要求设计出其他顶层的模块及结构,最终组合在一起,是他们满足高层系统的要求,这种方法在传统电子设计中应用

9、的非常广泛。而在这个电子行业尤其是EDA高度发展的今天,自底向下的方法已经不能满足设计者的要求,因此,自顶向下的设计方法逐步应用于EDA技术设计中,自顶向下的设计方法的最显著的特点在于它是集中解决系统最基本,最底层的硬件的可获得性,它更加注重细节方面的问题的解决;自顶向下的设计方法使系统被分解为各个模块之后,可以对设计的每个独立模块进行测试,最后将不同的模块集成为最终的系统模型,比对其进行综合测试与评价。 2。4 设计方案的比较 在出租车计费器的设计中,存在着多种方案的选择,而其中最为突出的方案有两种,也是用的最多的方案,方案一是以单片机为基础的出租车计费器设计,方案二是以EDA

10、技术为基础的出租车计费器设计. 方案一:在设计中,采用以单片机为中心,多种外围电路为辅助,用C语言编写功能程序,最后通过软件的仿真调试,将符合要求的程序代码下载至硬件电路中,来实现计费器所需要的功能。这种设计所带来的优点是开发与制作成本较低,在使用中也相对符合我们的使用习惯,但是有此种方法设计的出租车计费器系统不够稳定,不易实现复杂的功能设计,外围电路较多,而且消费者每次要更改计费标准时,都要重新烧写程序至单片机中,这样的话,对使用者来说就显得相当麻烦。 方案二:以EDA技术为核心,将其他的各种模块都集中在一起,采用VHAL语言来编写程序设计,最终也是通过软件的仿真调试,将

11、程序下载至硬件电路中,从而实现计费器的功能.这种设计方法的优点在于它的智能性与自动性,外围电路较少,因此对计费器的功能扩展很有利,不像单片机所采用的软件实现功能,它是采用硬件逻辑电路实现的,所以,系统稳定性有了大大的提高,但是他也有它的不足之处,就是花费成本相对过高. 以上两种方案都能对计费器实现计程,计费,显示等功能,都有其优缺点,但经过综合考虑决定,本次设计所采用的是方案二。 3 出租车计费器的总体设计 3。1 系统总体设计要求 本设计是利用VHDL语言来设计一个出租车计费器的计费系统,具体要求如下: (1)行程三公里之内,起步价5元; (2)三公里之外

12、每公里2。5元; (3)当总费用达到40元时,以后每公里按3元收费; (4)能显示行驶公里数,计费器费用; 注:出租车在等待红绿灯时不计费,当乘客要求停车等待时则按每200s收取0.7元,计入总费用。 收费的范围是0-999.9元,费用显示分辨率是0.1元,行驶的路程范围是0-999.9公里,路程显示分辨率是0。1公里。 3。2 设计思路 本设计是利用对时钟的分频来模拟出租车行驶的速度,当时钟频率越高时车速也就越快,再根据时钟来进行计程和计费,最终,在数码管上显示出总行驶路程和总费用. 出租车计费器的内部结构框图如下所示: 图1 出租车计费器的结构框图

13、 1.速度模块,接入车速表来进行工作,这里用于模拟车速度。 2。计时模块,接入车速表实现计时,当车速为零时,开始计时,当计时超过一定 时间时,输出一个脉冲到计费模块,实现停车等待费用。 3.计程模块,对速度模块所产生的脉冲进行一个计数,通过总计数次实现出租车所行使的总路程并输出总路程。 4。计费模块,对出租车所行使的路程进行一个费用的计算,并输出总费用。 5。显示模块,对输出的总费用和总路程的一个数码显示. 3.3 出租车计费器系统工作流程图 出租车计费器的工作流程如下所示: 图2 出租车计费器工作流程图 当出租车载有乘客时,计费器开始工作,首先是reset至为高电

14、平,系统进入初始化,各部分都清零,计费模块显示起步价5元,然后启动start按钮(将其至为1),计费器开始计费,在行驶过程中,对输出路程进行比较,当输出路程在3km以内时,费用保持5元起步价不变;当路程大于了3km时,则每公里按2.5元进行计费的累加,并且输出总费用;当总费用达到40元时,则计费器将按照每公里3元的价格进行计费.在行驶过程中,当乘客要求停车等待时,则计费器将会进入停车等待计费模式,超过一定时间,将收取一定的等待费用,并计入总费用。当在计程车行驶过程中出现stop有效信号时,则各计数器停止计数;当乘客下车之后,按下复位键reset键,所有计数器清零复位。 4 出租车计费器的软

15、件仿真分析 4。1 硬件描述语言的介绍 硬件描绘语言HDL是EDA技术的重要组成部分,目前常常使用的HDL主要有VHDL,Verilog HDL,system C。其中VHDL,Verilog在现在EDA设计中使用最多。本次设计中所采用的正是基于VHDL语言的出租车计费器设计。 VHDL的英文全名是VHSIC Hardware description language,于1983年由美国国防部提议创立,由IEEE进一步发展并在1987年作为“IEEE标准1076”发布.后来,VHDL成为业界以此为标准的硬件描述语言.自IEEE发布了VHDL的标准版本以后,各EDA公司相继推出了自己的V

16、HDL设计环境,或宣布自己的设计工具支持VHDL。自那时以来,VHDL已广泛应用在电子设计领域,结合Verilog逐步取代其他非标准的硬件描述语言。 VHDL作为一个规范语言和建模语言,随着VHDL语言的标准化,出现了一些支持该语言的行为仿真器,因为创立VHDL的首先目的是用于标准文档的建立和电路功能模拟,其基本思想是在高层次上描述系统和元件的行为。 1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本VHDL。 VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述能力.相对于Verilog,V

17、HDL具有以下优点: (1) 语法比Verilog严谨,通过EDA工具自动语法检测,易排除许多设计中的疏忽。 (2) 有好的行为描述的水平和能力的系统级描述能力,和Verilog建模和系统级抽象和描述能力比VHDL。 利用 VHDL 语言设计数字逻辑硬件系统还具有以下多方面的特点。 (1)VHDL不太关注具体的逻辑电路实现,设计者主要集中在电路功能的实现。 (2)语言可以用来描述逻辑设计,逻辑结构设计,如多少子逻辑,而是逻辑是如何连接。 (3)VHDL所给出的逻辑的模拟与调试功能为设计者提供了最大的空间,用户甚至不必编写任何测试向量即可进行源代码级的调试。 (4)VHDL语言描述

18、的能力非常强,它涵盖了许多领域的、合乎逻辑的设计,和许多硬件模型. (5)VHDL选用近似高级语言的语句格式实现对硬件行为的描述,所以我们就称VHDL 语言为行为描述语言。 (6)设计者可以方便地比较各种方案的优势和可行性,大大降低设计难度。 (7)VHDL语言具有良好的可读性, 用VHDL语言库的设计(图书馆),设计单位(设计单位),包(package)为设计人员提供了可重复使用的其他设计成果的技术手段。 (8)原有的硬件设计描述是非常简洁的描述,通过EDA工具进行电路描述或说明文件布局参数生产处理生成过程. 4.2 主要的模块设计 4。2。1 速度模块设计 如下图

19、所示,这是一个速度模块框图的设计,其中clk为时钟脉冲输入,通过对这个clk的一个计数,来实现出租车所行使的时间和路程,reset则表示的是复位按钮,当有复位信号输入时,所有的计数器都将进行初始化,start按钮则是一个开始开关,当start信号有效时,则速度模块进入工作状态,stop则是一个停止按钮,当其有效时,速度模块停止工作,sp[2.。0]则是一个速度控制输入端口,用它可以模拟出租车的行驶速度大小。其模块框图如下所示: 图3 速度模块框图 4。2.2 计时模块设计 速度模块主要是用来进行计程收费的,计时模块则是主要用来记录当车速为零时的时间,也就是乘客要求停车等待的时间。它通过

20、对sp信号的判断来进行工作,当sp=0(即出租车停车时),开始记录时间。当时间达到一定长度的时长,它会产生一个时间计数脉冲输出,目的是为了向乘客收取一定的等待费用,然后再重新计时,从而实现等待期间的计费,设计框图如下所示: 图4 计时模块框图 4。2.3 计费模块设计 计费模块设计主要是用于对出租车在行驶过程中所产生的总费用的一个仿真。在这个模块中,我们设计两个不同的计费进程,分别为jf1和jf2两个进程。 其中jf1是用于产生enable和price信号。当集成器所记录的路程达到3km后,enable信号将自动变为高电平,计费器开始进入每公里收费状态.当总费用超过40元时,单价pr

21、ice由原来的2。5元/km,变为3元/km。通过对速度模拟信号sp信号的判断,当速度为零时(sp=0)时,开始记录时间。当时间达到一定的时间久了,会产生一种时间计数脉冲输出,并重新启动的时间。 jf2是用来确定的时间计数和CLKOUT的值,当它是1时,总费用加0。7元。最终输出为总费用。设计框图如下所示: 图5 计费模块框图 4。2.4 计程模块设计 计程模块的设计主要是用于对出租车所行驶的路程的一个模拟仿真设计.上面我们介绍的速度模块就是当出租车每行驶100米就有一个脉冲输出,计程模块就是对这个脉冲输出的个数进行一个计数,从而达到计程的目的。其中Kmcount1为路程的十分位,k

22、mcount2为路程的个位,kmcount3为路程的十位,分别为十进制数.设计框图如下所示: 图6 计程模块框图 4。2。5 译码显示模块 译码显示模块所采用的是共阴极八段数码管,该模块经选择之后将计程数据(4位)送入译码器进行译码并且显示出来,将计费数据(4位)送入译码器进行译码并且显示在另外的4位数码管上.计程数据显示的是百十个位,十分位,精确度是0.1,计费数据显示的是百十个,十分位,精确度也是0。1。其模块设计框图如下所示: 图7 显示模块框图 该图中seg1表示的是路程十分位输出,seg2表示的是路程个位输出,seg3表示的是路程十位输出,seg4表示的是路程百位输出;

23、seg5表示的是费用十分位输出,seg6表示的是费用个位输出,seg7表示的是费用十位输出,seg8表示的是费用百位输出。 图8 显示流程框图 4.2。6 总体仿真设计 出租车计费器总体设计如下图所示,其中clk信号为输入时钟脉冲,当时钟为上升沿时有效,reset为复位信号,同样也是上升沿有效,start为计费开始信号,stop为计费停止信号,均为高电平时有效,SP[2。。0]表示出租车行驶的各种状态,模拟停止或不同形式的速度,kmcnt信号输出表示出租车行驶的里程,count信号输出表示出租车行驶的花费。 图9 总设计原理图 4。3 仿真结果 4.3.1 速度模块仿真

24、出租车在行驶的过程中,速度有快有慢.本次设计中我们对速度模块的仿真所依据的是出租车行驶过程中的不同速度,不同状态来进行仿真的,我们对出租车所行使的时钟周期进行一个计数,从而可以的计算得出出租车所行驶的路程,本次设计中我们所采用的是出租车每行驶100米就有一个脉冲clkout输出高电平。仿真波形图如下所示 图10 速度模块仿真波形图 由上波形图我们可知,当SP采用不同数值来模拟速度的快慢是,输出clkout也有一个快慢的变化,从而达到速度仿真的效果。 4。3。2 计程模块仿真 计程模块的仿真无疑就是对出租车所行驶的路程进行一个模拟仿真,仿真图如下所示: 图11 计程模块仿真波形图

25、 从以上我们可以知道,当复位信号输出有效时,所有的计数系统复位清零,否则,对输入信号clkout进行一个十进制的计数,从图中可以看出每输入一个CLKOUT信号,kmcnt1就自加1(即就是100m)。Kmcnt2表示路程的个位数,kmcnt3表示路程的十位数。 4。3.3 计时模块仿真 预设10000个时钟周期为200s,对时钟周期进行计数,每计10000个时钟周期输出高电平,指示计时200秒. 图12 计时模块仿真波形图 由上图我们可以得知,当复位reset有效时且当SP为0时,也就是出租车停车等待时,timeout每隔一段时间输出一个高电平,从而达到停车等待时间乘客所花费的费

26、用。 4.3。4 计费模块仿真 计费模块的仿真是乘客在搭乘出租车期间所用的所有花费,当reset为高电平也即是有效时,系统复位清零,否则,当计时信号的时间计数和出租车计费信号CLKOUT都是高电平时,按照特定的规则的计费.仿真波形图如下 图13 计费模块仿真功能图 由上图我们可以得知,出租车起步价为5元,当图中出现timeout信号时(乘客要求停车等待时),则每一个输入信号就相应有一个count的变化(以0。7元自加),当clkout输出有10个脉冲(代表行使一公里),则count按每公里2。5元收取费用. 4.3。5 显示模块仿真 显示模块是计费器的最后一个模块,它是将出租

27、车所行使的路程、费用直观的表达出来,方便乘客与司机两者之间的交易,显示模块采用的是八段数码管显示,一到四显示路程,五到八显示费用,仿真功能图如下所示: 图14 译码显示仿真功能图 从上图不难得出,当费用十分位为8时,数码管第五位seg5的各段二极管的代码01111111;当费用个位为7时,数码管第六位seg6的各段二极管的代码10000111,其中第一个代表小数点;当费用十位为6时,数码管第七位seg7的各段二极管的代码01111101;当费用百位为5时,数码管第八位seg8的各段二极管的代码01101101;当路程十分位为9时,数码管第一位seg1的各段二极管的代码011011

28、11;当路程个位为5时,数码管第二位seg2的各段二极管的代码11101101;当路程十位为1时,数码管第三位seg3的各段二极管的代码00000110;当路程百位为8时,数码管第四位seg4的各段二极管的代码01111111;对照共阴极数码管的显示表,可知上述仿真完全符合要求. 4。3.5 总体仿真 对电路进行总体仿真,仿真波形图如下所示。在图中,当复位信号输出有效时,系统中所有的计数器,寄存器被清零;当开始计费信号start信号有效时,启动计费系统,计费器开始显示初始费用为5元(即起步价),当行驶路程超过kmcnt2达到3km时,以后每公里2。5元,当超过40元时,以后每公里3元计费

29、然后再根据出租车行驶的速度信号SP的输出取值计算所用的花费和行驶的里程;当stop信号有效时,计费器停止工作。 图14 总体仿真波形图 总的来说,出租车计费器的设计符合本设计要求,它基本实现了出租车计费器的功能. 4。4 芯片管脚锁定 本次设计所采用的是Cyclone型可编程数字实现系统,芯片型号为EP1C6Q240C8,管脚锁定如下表: 表1 管脚锁定表 输入输出端口 任务名称 管脚值 启用 clk location Pin28 是 reset location Pin237 是 start location Pin240 是 stop

30、location Pin239 是 sp[0] location Pin233 是 sp[1] location Pin234 是 sp[2] location Pin235 是 Count1[0] location Pin13 是 Count1[1] location Pin14 是 Count1[2] location Pin15 是 Count1[3] location Pin16 是 Count2[0] location Pin17 是 Count2[1] location Pin18 是 Count2[2]

31、 location Pin19 是 Count2[3] location Pin20 是 Count3[0] location Pin21 是 Count3[1] location Pin41 是 Count3[2] location Pin128 是 Count3[3] location Pin132 是 Kmcnt1[0] location Pin161 是 Kmcnt1[1] location Pin162 是 Kmcnt1[2] location Pin163 是 Kmcnt1[3] location Pin1

32、64 是 Kmcnt2[0] location Pin137 是 Kmcnt2[1] location Pin138 是 Kmcnt2[2] location Pin139 是 Kmcnt2[3] location Pin140 是 Kmcnt3[0] location Pin141 是 Kmcnt3[1] location Pin158 是 Kmcnt3[2] location Pin159 是 Kmcnt3[3] location Pin160 是 结束语 在这次设计中,所采用的VHDL语言在Quartus软件上的仿真,

33、基本实现了我们所设计的计费器的功能要求,在第三章中我们所提到的方案的比较,使我们能更加清晰的区别单片机与EDA的优劣所在,在第四章中我们所编写的程序一开始不能编译,后面才知道程序的实体名必须与工程名一致。所以通过此次对出租车计费器的设计以及调试,让我对原本不太熟悉的EDA技术有了一个深刻的了解,EDA技术作为现代电子设计技术的核心,为提供表达和实现当代电子理论和设计的可能性做出了不可磨灭的贡献;另外在VHDL语言的设计方面,让我对设计有了一个全新的看法,以前的我只知道自底向上的设计方法,而这次所采用的自顶向下的设计方法完全打破了我的传统观点,让我对EDA这门科学技术有了更多的兴趣。同时,通过本

34、次设计我还认识到了自身的很多不足,比如在选择芯片管脚锁定方面,还有就是在仿真时对部分没用到的管脚的关闭都存在着很多的不足,导致仿真不能满足要求,芯片的负担加重。所以不管是在今后的学习中还是生活中我会更注重自己这方面能力的培养。 参考文献 [1]潘松,黄继业,《EDA技术实用教程》第四版,科学出版社,2010 [2]王振红,张常年,《综合电子设计与实践》,清华大学出版社,2005 [3]边计年,薛宏熙,《VHDL设计电子线路》,清华大学出版社,2002 [4]罗杰,谢子美,《电子线路》,电子工业出版社,2008 [5]王振红,《VHDL数字电路设计与应用实践》,机械工业出版社,200

35、3 [6]武玉华,周玉坤,出租车计价系统的FPGA设计,计算机技术与发展,2007—12—12 [7]张颖,多功能出租车计价器的设计,计算机与信息技术,2009—9—9 26 致 谢 时间过得真快,毕业论文已经接近了尾声,在这短短的几个月的设计时间里,有过太多的欢笑,也有过太多的艰难困苦,但是在老师与同学的帮助之下,我战胜了一次次挫折,从中我学到了很多的东西,有的是以前学不到的东西,所以对于此次对出租车计费器的毕业设计,首先我得最诚挚的感谢我的指导老师——肖亚丽老师。从定题,设计、开题报告,整改以及论文的撰写与成稿过程中,都离不开老师对我的悉心指导与帮助。也许有的时候老师特别的

36、忙,但是只要是我们在设计中遇到了问题,老师都会抽出时间来为我解答,肖老师以她严谨的治学之道、兢兢业业的工作作风为我树立了学习的典范,老师的每一次教导与鞭策都将是我人生中最宝贵的财富. 谢谢大家为我在这个设计提供的所有的帮助,没有你们的帮助和启发,我将很难完成本文的写作. 由于本人水平有限,论文中难免有瑕疵与不足之处,恳请各位老师和同学的批评和指正! 附 录 VHDL语言程序代码: 速度模块: library ieee; use ieee。std_logic_1164.all; use ieee.std_logic_unsigned。all; entity sd is

37、 //实体表达 port( clk :in std_logic; //端口名称 reset:in std_logic; start:in std_logic; stop :in std_logic; sp :in std_logic_vector(2 downto 0); clkout:out std_logic ); end sd; architecture rtl of sd is //结构体表达 Begin //程序主体 p

38、rocess(clk,reset,start,stop,sp) type state_type is(s0,s1); variable s_state:state_type; variable cnt:integer range 0 to 28; variable kinside:integer range 0 to 30; begin case sp is when”000"=〉kinside:=0; //赋值 when”001”=>kinside:=28; when"010”=>kinside:=24; when”011"=>ki

39、nside:=20; when”100”=〉kinside:=16; when”101”=>kinside:=12; when”110”=〉kinside:=8; when”111"=>kinside:=4; end case; if reset=’1’then s_state:=s0; elsif clk'event and clk='1’then case s_state is when s0=> cnt:=0; clkout〈='0'; if start=’1’then s_state:=s1; else s_state:=s0; end if; wh

40、en s1=> clkout〈=’0’; if stop=’1’then s_state:=s0; elsif sp=”000”then s_state:=s1; elsif cnt=kinside then cnt:=0; clkout〈=’1’; s_state:=s1; else cnt:=cnt+1; s_state:=s1; end if; end case; end if; end process; end rtl; 计时模块: library ieee; use ieee.std_logic_1164。all; use ieee。std

41、logic_unsigned。all; entity js is port( clk :in std_logic; reset:in std_logic; start:in std_logic; stop :in std_logic; sp :in std_logic_vector(2 downto 0); timecount:out std_logic ); end js; architecture rtl of js is begin process(reset,clk,sp,stop,start) type state_typ

42、e is(t0,t1,t2); variable t_state:state_type; variable waittime:integer range 0 to 10000; begin if reset=’1’then t_state:=t0; elsif(clk'event and clk=’1’)then case t_state is when t0=〉 waittime:=0; timecount<=’0'; if start='1'then t_state:=t1; else t_state:=t0; end if; when t1=> if s

43、p=”000”then t_state:=t2; else waittime:=0; t_state:=t1; end if; when t2=> waittime:=waittime+1; timecount<='0’; if waittime=10000 then timecount<=’1’; waittime:=0; elsif stop=’1’then t_state:=t0; elsif sp="000”then t_state:=t2; else timecount<=’0'; t_state:=t1; end if; end case;

44、 end if; end process; end rtl; 计程模块: library ieee; use ieee。std_logic_1164。all; use ieee.std_logic_unsigned.all; entity jc is port( clkout,reset:in std_logic; kmcnt1:out std_logic_vector(3 downto 0); kmcnt2:out std_logic_vector(3 downto 0); kmcnt3:out std_logic_vector(3 downto 0) ); e

45、nd jc; architecture rtl of jc is begin process(clkout,reset) variablekm_reg:std_logic_vector(11 downto 0); begin if reset='1'then km_reg:=”000000000000”; elsif clkout'event and clkout='1'then if km_reg(3 downto 0)=”1001”then km_reg:=km_reg+”0111"; else km_reg(3 downto 0):=km_reg(3 downto

46、 0)+”0001”; end if; end if; kmcnt1<=km_reg(3 downto 0); kmcnt2〈=km_reg(7 downto 4); kmcnt3〈=km_reg(11 downto 8); end process; end rtl; 计费模块: library ieee; use ieee.std_logic_1164.all; use ieee。std_logic_unsigned。all; entity jf is port( clk :in std_logic; reset :in std_

47、logic; timecount:in std_logic; clkout :in std_logic; kmcnt2 :in std_logic_vector(3 downto 0); kmcnt3 :in std_logic_vector(3 downto 0); count1 :out std_logic_vector(3 downto 0); count2 :out std_logic_vector(3 downto 0); count3 :out std_logic_vector(3 downto 0) ); end jf; architecture rtl

48、of jf is signal cash:std_logic_vector(11 downto 0); signal price:std_logic_vector(7downto 0); signal enable:std_logic; begin kmmoney1:PROCESS(cash,kmcnt2) begin if cash〉="010000000000"then price<="00110000"; else price〈=”00100101”; end if; if(kmcnt2〉="0011”)OR(kmcnt3〉="0001”)then enable

49、〈=’1'; else enable〈='0’; end if; end process; kmmoney2:process(reset,clkout,clk,enable,price,kmcnt2) variable reg2:std_logic_vector(11 downto 0); variable clkout_cnt:integer range 0 to 10; begin ifreset='1'then cash〈=”000000010000”; elsif clk'event and clk='1'then if timecount=’1'then r

50、eg2:=cash; reg2(7 downto 0):=reg2(7 downto 0)+”00000001”; else cash<=reg2; end if; else cash<=reg2+"0110"; end if; elsif clkout=’1’ and enable='1’then if clkout_cnt=9 then clkout_cnt:=0; reg2:=cash; if ”0000”&reg2(3 downto 0)+price(3 downto 0)>"00001001”then reg2(7 downto 0):= reg2(7 d

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服