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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于FPGA的出租车计费系统设计.docx

1、基于FPGA的出租车计费系统设计基于FPGA的出租车计费系统设计 摘要随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。本文介绍了一种基于FPGA出租车计费系统的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用FPGA的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费器的体积更小功能更强大。本设计不仅实现了出租车计费器所需的一些基本功能,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路

2、加入到设计中。主要包括采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品升级。关键字:出租车计费器,FPGA,Quartus II,VHDL语言Based on FPGA taxi billing system designABSTRACT With the rapid development of EDA technology, electronic system design techniques and tools have been profound changes in large-scale programmable logic device CPL

3、D / FPGA emergence of designers to bring a lot of convenience. Use it for product development, not only low cost, short cycle, high reliability and full intellectual property rights.This article presents a method of how to use FPGA to design a taxi meter,and how to replace traditional electrical des

4、ign with burgeoning EDA parts.The develop period can be short because of the programmable FPGA and the design method which is simple and variable.It can also make the taxi count meter smaller and more functional.Besides the basic functions of taxi count meter,some new ideas are added concerning abou

5、t the particularity of this calling.It becomes more transplantable and easier to upgrade by using of the FPGA and programming with VHDL language. Key Words:Taxi meter,FPGA,Quartus II,VHDL第一章 引言1.1 课题研究背景及目的随着中国城市化进程的快速发展,人们出行选择的交通工具也越来越多样化,出租车作为一种重要的交通工具,也越来越多的被人们所选用。虽然在一些大城市出租车已相当普及,但是在一些小城市,出租车行业也

6、因为城市化进程的加快而快速发展。出租车行业在我国是八十年兴起的一项新兴行业,目前,出租车已成为城市公共交通的重要组成部分。由于电子技术的不断发展与进步,集成电路的设计方法也在不断地更新。时至今日,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所代替。以硬件描述语言和逻辑综合为基础的自顶向下的电路设计方法能满足日趋复杂的集成电路系统设计需求。在这种情形下,传统的出租车计费器设计方法已不能跟上现在的节奏,以往的出租车计费器在功能上也远不能满足现实的需要。以往的出租车计费器的不稳定性,功能少等缺点使得大家开始寻找更新的,功能更强大,性能更稳定,价钱更低廉的新型出租车计费器。而大规模可编程

7、逻辑器件的出现,VHDL硬件描述语言的出现,使得这一切成为可能。本设计拟在QuartusII软件中结合VHDL硬件描述语言的方案设计一套出租车计费系统,使之实现基本计费功能、预制功能、模拟功能、显示功能等其他附加功能。通过硬件描述语言VHDL设计出租车计费系统,会加强学生对电子设计自动化(EDA)工具、FPGA、电子技术等相关课程专业知识综合能力的应用,为以后的开发及科研工作打下基础。FPGA是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字器件。本设计的研究目标和意义也就是要使用价钱低廉、性能稳定的大规模逻辑器件,用VHDL硬件描述语言进行编程,设计出一款功能强大、性

8、能稳定、价钱低廉、可扩展性强、适应目前出租车市场需求的出租车计费器,以解决目前出租车计费器存在的一系列问题。1.2 国内外研究状况从国内外的各种研究方法来看,实现出租车计费系统总共有三种方案。利用大规模的数字逻辑器件来实现,利用 89C51 实现,利用 CPLD/FPGA 来实现。二十世纪后半期, 数字系统得到了飞速发展,同时为了提高系统的可靠性与通用性,微处理器和专业集成 电路逐渐取代了通用全硬件电路。目前,业界大量可编程逻辑器件,尤其是现场可编程 器件被大量地应用在集成电路的制作当中。理想的可编程逻辑开发系统能符合大量的设计要求:它能支持不同结构的器件。在多种平台运行,提供易于使用的界面,

9、并且有广泛的特征。可编程器件的逻辑功能描述 一般分为原理图描述和硬件语言描述,原理图描述是一种直观简便的方法,它可以讲现有的小规模集成电路实现的功能直接用可编程器件来实现,而不必去将现有的电路用语言来描述,但电路图描述方法无法做到简练。而语言描述可以精确和简练地表示电路的逻辑功能,现在可编程器件的设计过程中广泛使用。常用的硬件描述语言有 ABEL、VHDL 语言等,其中 VHDL 语言是一种行为描述语言,其编程结构类似于计算机中的 C 语言,在描述复杂逻辑设计时,非常简洁,具有很强的逻辑描述和仿真能力,是未来硬件设计语言的主流。1.3 课题主要安排及研究内容1.设计内容用VHDL语言设计一个出

10、租车计费系统,使之可以实现对出租车进行计费的功能。2.要求运用FPGA技术,在QuartusII软件中结合VHDL硬件描述语言的方案设计一套出租车计费系统,使之实现基本计费功能、预制功能、模拟功能、显示功能等其他附加功能。3.任务 (1)熟悉设计的题目以及学习应用软件程序。 (2)独立设计完成系统各个模块的编程。 (3)能够通过软件完成自己所编制的程序的仿真。4.内容结构安排本设计从出租车计费系统的发展背景、国内外现状、研究的目标和意义、研究的思想和主要工作开始进行了全局的研究设计,第二章接着介绍了设计出租车计费系统所用到的可编程逻辑器件FPGA和VHDL硬件描述语言做了简介,还有介绍了系统的

11、方案论证及其设计原理。第三章对出租车计费系统的设计用到的各个功能模块及其电路的设计进行了详细的介绍。第四章对所编写的各个模块的程序进行仿真,并验证仿真结果。最后对本设计进行总结与展望。第二章 系统的设计方案2.1方案论证2.1.1传统出租车计费器缺陷传统计费器不足可以体现在以下几个方面:1.产品更新周期长。传统出租车计费器利用89C51单片机作为MCU来实现。但由于不同的芯片有不同的指令集,单片机程序往往是不通用的,因此设计研发周期长,灵活度不够,不易实现功能复杂设计。2.计价方式不灵活。每次计价标准修改都需要将芯片重新烧录,费时费力。3.显示方式不灵活。由于传统计费器采用LED显示,看似简单

12、、方便,但是这种方式要求计费器外形设计固定化,如果需要改变显示内容,甚至需要整个设备的更换,不利于产品的理想升级。这些都体现了目前对出租车计费器市场更新换代的需求。2.1.2解决方案 考虑到目前出租车行业迅猛发展的趋势以及对计费器更高的灵活性要求,本设计希望尝试一些新的方法来予以解决。 1.利用FPGA取代MCU。 利用FPGA设计出租车计费器,可行性高,电路简单,灵活度高,通用性强。 2.增加计价标准设定功能。 通过设计此功能模块可以使得计价标准设计更加灵活,体现目前出租车行业发展的需要,使运价、油价联动成为可能。 3.利用LCD取代LED。 由于液晶的显示内容的可编程性,使其具有LED不可

13、替代的灵活性和完善的升级能力,出租车计费器在需要改变显示方式和内容时不需过多考虑外形设计,只需在FPGA程序中改动即可。同时液晶价格的持续走低,都使LCD取代LED成为可能。2.2 FPGA简介FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块

14、CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: (1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 (2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 (3)FPGA内部有丰富的触发器和IO引脚。 (4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 (5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳

15、选择之一。 目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编

16、程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。2.3硬件描述语言VHDL简介VHDL全名是Very-High-Speed Integrated Circuit Hardware Description Language(超高速集成电路硬件描述语言),诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL

17、的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大

18、部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点5。利用VHDL语言设计数字逻辑硬件系统具有多方面的优点。1VHDL可以用来描述逻辑

19、设计的结构,比如逻辑设计中有多少个子逻辑,而这些子逻辑是如何连接的。2VHDL并不十分关心一个具体逻辑是靠何种电路实现的,设计者主要把精力集中电路所能实现的功能上。3VHDL采用类似于高级语言的语句格式完成对硬件行为的描述,所以我们称VHDL为行为描述语言。4VHDL所给出的逻辑的模拟与调试为设计者提供了最大的空间,用户甚至不必编写任何测试向量便可进行源代码级的调试。5设计者可以非常方便地比较各种方案的可行性和优劣,大大降低了设计的难度。并且设计者的原始描述是非常简练的硬件描述,经过EDA工具处理最终生成付诸生产的电路描述或版图参数描述的工艺文件。6VHDL语言具有良好的可读性,VHDL语言中

20、的设计尸体(Design Entity)、程序包(Package)、设计库(Library)为设计人员重复利用别人的设计成果提供了技术手段。 2.4设计原理2.4.1系统的计费方式某城市的出租车计费标准如下所述:出租车白天的起步价为2km范围内6元,晚上(22时至次日5时)的起步价为2km范围7元。白天2km以上续程单价每公里为1.8元,按化零为整的等价计费方式跳表,即每计满1元跳表一次。当所计费用等于或超过50元时,不管白天或晚上,超出部分按每公里2.5元计费。出租车在行驶过程中,当遇到红灯或乘客需要暂停行驶时,则按时间计费,累计每满1min计费1元。当按下复位键时,出租车计费器恢复为初始状

21、态,若为白天则显示的费用为6元,晚上显示的费用为7元,同时其他计数器,寄存器全部清零。当按下开始键时,出租车将按上述收费标准进行计费。出租车计费器能够显示车费与行驶里程。2.4.2总体框架设计根据出租车计费系统的要求可知,整个出租车计费系统可由车型调换模块,速度模块、计程模块、计时模块、计费模块和显示模块等部分电路构成,采用Quartus设计各个功能模块,使用文本输入VHDL设计各个功能模块,然后在顶层设计出组件,从而实现一个完整的出租车计费系统。如图2.1所示。图2.1 出租车计费器结构框图Fig.2.1 taxi the message accounting device structur

22、e diagram系统接收到reset信号后,总费用变为6元,同时其他计数器、寄存器等全部清零。系统接收到start信号后,首先把部分寄存器赋值,总费用不变,单价price寄存器通过对总费用的判断后赋为1.8元。其他寄存器和计数器等继续保持为0。速度模块:通过对速度信号sp的判断,决定变量kinside的值。Kinside即是行进100m所需要的时钟周期数,然后每行进100m,则产生一个脉冲clkout。计程模块:由于一个clkout信号代表行进100m,故通过对clkout计数,可以获得共行进的距离kmcount。计时模块:在汽车启动后,当遇到顾客等人或红灯时,出租车采用计时收费的方式。通过

23、对速度信号sp的判断决定是否开始记录时间。当sp=0时,开始记录时间。当时间达到足够长时产生timecount脉冲,并重新计时。一个timecount脉冲相当于等待的时间达到了时间计费的长度。计费模块由两个进程组成。其中,一个进程根据条件对enable和price赋值:当记录的距离达到3公里后enable变为1,开始进行每公里收费,当总费用大于50元后,则单价price由原来的2元每公里编程2.5元每公里;第二个进程在每个时钟周期判断timeout和clkout的值。当其为1时,则在总费用上加上相应的费用。2.5本章小结本章主要介绍了出租车计费系统的设计方案,首先对方案论证,通过说明传统出租车

24、计费器的缺陷,然后提出解决方案;其次对FPGA和硬件描述语言VHDL进行简介;最后介绍了系统的设计原理,包括系统计费方式和总体框架设计。通过简单的介绍让大家了解我的设计思路和方法,为下面的总体设计做铺垫。第三章 系统功能模块及电路设计3.1 各个功能模块设计3.1.1车型调换模块出租车车型并不是单一的,各个车型的轮胎直径也是不同的。据调查统计,现行的出租车轮胎直径大致有4种,直径分别为520mm,540mm,560mm和580mm。若要使不同车型的出租车每行驶100m均送出一个脉冲,可以通过设置“可预置分频器”的系数来完成。根据上述车轮直径计算分频系数如下:100/(0.52*3.14)=61

25、.244487996100/(0.54*3.14)=58.976173626100/(0.56*3.14)=56.869881711100/(0.58*3.14)=54.908851307分别取整得到车轮直径520mm,540mm,560mm和580mm的出租车的分频系数为61,59,57,55。用车型设置开关来控制预置数据,两位开关状态与车轮直径对应关系如表3.1所示。表3.1 开关状态与车轮直径对应表Table 3.1 switch state and wheel diameter mapping table车轮直径/mm520540560580开关(2位)00011011计数器分频系数6

26、15957553.1.2速度模块 速度模块是通过对速度信号SP的判断以决定出租车每行驶100m需要的时间值,然后判断出租车行驶的时间是否等于所设定的时间值,若二者相等,则产生一个100m的CLKOUT信号,程序流程如图3.2所示。 编写程序时,可使用两个进程(U1和U2)来描述程序功能。在U1中用CASE语句描述SP档位选择,以确定每行驶100m需要的时间值。在U2中先用IF语句判断RESET信号是否有效,若有效,将状态复位为S0,否则每来一个CLK上升沿时,根据当前状态进行相应操作。图3.1 速度模块的程序流程图Fig.3.1 speed module program flow chart3

27、.1.3 计时模块 计时模块主要用于计时收费,记录出租车在启动后,由于红灯或乘客要求出租车暂停(SP为“000”)等待的时间。若记录的时间等于1min时,将输出1个计费脉冲。程序流程如图3.2所示。图3.2计时模块的程序流程图Fig.3.2 timer modules of the program flow chart3.1.4 计程模块 计程模块主要用于记录出租车行驶的距离。通过对CLKOUT信号的计数,可以计算行驶的距离。1个CLKOUT脉冲相当于行进100m,因此只要记录CLKOUT的脉冲数就确定出租车所行驶的距离。 编写程序时,在实体中定义KM_CNT0KM_CNT3为里程输出。在结构

28、体的功能说明语句中,定义CNT0CNT3信号用于计数过程暂存里程数。 在结构体的功能描述语句中,先判断系统复位信号RESET是否有效。若RESET有效,将CNT0CNT3清零,否则对CLKOUT脉冲进行加1计数。3.1.5计费模块 计费模块主要用于记录出租车启动后所产生总的费用。在编写程序时,可使用两个进程(U1和U2)来完成该功能的描述。U1主要是用来产生ENABLE和PRICE信号,U2用于判断TIMECOUNT和CLKOUT的值,进行费用的统计。程序流程如图3.3所示。图3.3 计费模块的程序流程图Fig. 3.3 pricing module program flow chart3.1

29、.6显示模块译码显示输出模块是建立在内部系统和观测人之间的桥梁,通过显示模块,人们才能得到重要的信息,可见该模块是系统中必不缺少的。该模块首先要将计程模块和计费模块输出的费用和里程转换成BCD码。然后再进行7段译码。用4个共阴极LED七段数码管输出显示,两位显示路程,两位显示费用。因此,显示模块包含两部分:change和DECL7S。3.1.7 去除按键抖动模块图3.4 去除按键抖动模块Fig. 3.4 remove buttons dither module去除按键抖动办法很多,本设计采用的是数字去抖动方法,即对按键进行扫描,去除抖动不确定状态,提高按键的可靠性。图3.5 去除按键抖动原理图

30、Fig.3.5 remove buttons dither principle diagram3.2整体电路设计3.2.1 出租车计费器的内部电路clk为时钟周期信号,由试验箱产生,start/stop是启动停止按键电路,reset为自动清零电路。电源又AD-DC开关电源供电。图3.6 出租车电路内部构成Fig.3.6 taxi circuit internal components3.2 .2电源电路电源采用了是比较流行的开关电源,AD-DC开关电源,输入115VAC到230VAC,输出+5V(4A)。使用开关电源的好处就是比较节省能源,它的转换效率很高,可达85%以上,稳压范围宽,除此之外

31、,还具有稳压精度高、不使用电源变压器等特点。3.2.3启动/停止按键电路如图3.7所示,采用双刀双路开关,一路开关用于清零部分,由于显示部分特殊要求,即计费停止后屏幕上荏苒要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。另外两路开关,其中一路用于启动指示和启动/停止输出信号给FPGA芯片的I/O口。当按下键后,清零部分和启动计费部分同时进行,但清零只是瞬间的,计费指示灯两起。再次按下键后,开关换到另外的两路,空车指示灯亮起。图3.7启动/停止按键电路Fig.3.7 start/stop button circuit3.2.4 自动清零部分由于显示部分的特殊要求,即计费停止后屏幕上仍然要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。VHDL语言的特殊性,不能在一个结构中用两个不同的动作使其赋值。所以必须要有一个瞬间清零的信号,当FPGA的清零I/O端口为“1”时就自动清零。使用电容的充放电功能来实现,按键断开时清零输出端为接地,按键闭合时电容充电清零端为高电平,充完电后清零端输出又为低电平,当按键断开后,通过一个2k欧姆的电阻放电,为下次充电做好准备。如图3.8所示。图3.8 自动清零电路Fig. 3.8 to be automatic reset circuit3.3本章小结本章主要研究了出租车计费系统各个功能模块设

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

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