基于VHDL的地铁自动售票机系统设计.docx

上传人:b****8 文档编号:30542912 上传时间:2023-08-16 格式:DOCX 页数:37 大小:308.34KB
下载 相关 举报
基于VHDL的地铁自动售票机系统设计.docx_第1页
第1页 / 共37页
基于VHDL的地铁自动售票机系统设计.docx_第2页
第2页 / 共37页
基于VHDL的地铁自动售票机系统设计.docx_第3页
第3页 / 共37页
基于VHDL的地铁自动售票机系统设计.docx_第4页
第4页 / 共37页
基于VHDL的地铁自动售票机系统设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于VHDL的地铁自动售票机系统设计.docx

《基于VHDL的地铁自动售票机系统设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的地铁自动售票机系统设计.docx(37页珍藏版)》请在冰豆网上搜索。

基于VHDL的地铁自动售票机系统设计.docx

基于VHDL的地铁自动售票机系统设计

毕业设计说明书(论文)

 

作者:

学号:

系:

专业:

题目:

基于VHDL的地铁自动售票机系统设计

 

 

指导者:

(姓名)(专业技术职务)

评阅者:

(姓名)(专业技术职务)

 

2014年5月

毕业设计(论文)评语

学生姓名:

班级、学号:

题目:

综合成绩:

指导者评语:

 

指导者(签字):

年月日

毕业设计(论文)评语

评阅者评语:

 

评阅者(签字):

年月日

答辩委员会(小组)评语:

 

答辩委员会(小组)负责人(签字):

年月日

毕业设计说明书(论文)中文摘要

由于社会的进步,人口都向城市流动,交通也越来越拥挤。

为此,出现了地铁。

随着科技的发展,人们对出行的要求越来越高,地铁自动售票机就应运而生了。

自动售票机实现了乘客自助购票,大大加快了出行速度。

本文主要讨论了用VHDL语言设计地铁自动售票系统。

VHDL语言有较强的描述能力,可以分模块编写程序再合并,所以能设计复杂、多层次的系统。

编写的程序可用Altera公司的QuartsII软件进行调试和仿真。

设计的地铁自动售票机最终要实现票价选择、投币状态、余额计算、自动出票、自动找零等功能。

 

关键词VHDL自动售票系统模块QuartsII仿真

 

毕业设计说明书(论文)外文摘要

TitleDesignofautomaticticketvendingmachinesystem

basedonVHDL

Abstract

Duetotheprogressofthesociety,thepopulationflowtocities,trafficisbecomingmoreandmorecrowded.Becauseofthis,thesubwayemerged.Withthedevelopmentofscienceandtechnology,people'sdemandfortravelishigherandhigher,sothesubwayticketmachinesisdeveloped.Automaticmachinestorealizethepassengerself-serviceticketing,greatlyacceleratethespeedoftravel.ThisarticlemainlydiscussedthedesignofmetroticketingsystemwithVHDLlanguage.VHDLlanguagehasastrongabilityofdescription,canwriteaprogramtomergemodule,socandesigncomplex,multi-layeredsystem.CodingcanuseAlteracorporation'sQuartsIIsoftwarecarriesonthedebuggingandsimulation.Thesubwayticketmachinescanachieveselectionofticketprice,insert_state,balancecalculation,automaticticket,automaticchangeandsoon.

 

KeywordsVHDLMetroticketingsystemModuleQuartsIISimulation

 

 

目次

1引言

自动售票机主要的控制模块可以用多种语言设计完成。

但这些语言有较大的差异,不利于后期的修改和使用者之间的交流。

而VHDL语言是一种功能强大、标准化的硬件描述语言。

用VHDL语言设计程序时可以先分块编写再合并,所以能够编写出多层次的程序,与此同时,VHDL语言编写的程序避免了其他语言只能在各自环境中使用的缺陷。

本章主要讨论了地铁的起源、发展,以及随着社会的发展,为了简化购票流程,从而设计出了自动售票机来代替人工售票等。

1.1研究意义

近年来,国民经济快速发展,城市的各项设施也越来越好,进而人们对交通的要求也不断增加。

因此,安全又快捷的地铁就出现了。

地铁的速度较快,且在行驶过程的载客数较多,这是公交所不具备的,而且它的出现增加了乘客的选择,也可以很好的缓解交通拥挤的情况。

如今,我国的地铁都实行售票制,而越来越多的乘客选择地铁出行也增加了售票工作的困难。

这也给自动售票机的诞生和创新提供了一个很好的市场潜力和发展空间[1]。

自动售票机系统是可以解决各类轨道交通系统的各个终端设备协同工作的平台[2],是基于计算机技术、网络技术、自动控制技术、大型数据库技术、机电一体化技术、模式识别技术、传感技术、精密机械技术等多项高新技术于一体的大型系统[3]。

乘客可以根据自动售票机显示屏上的操作指示选择要到达的地点以及购票张数,并投币完成购票。

它能够实现自主购票,可以减少地铁站的工作员工人数,人工售票的工作强度以及地铁站不必要的售票窗口的花费,同时它还能避免人工售票带来的一些失误,大大提高售票的正确率。

1.2研究背景

1863年,地铁在伦敦建成,是世界上第一条地铁,也是最长的地铁,至今已有一百多年的历史,。

而提出要建造这个条地铁的人确是英国的一个律师,叫查尔斯.皮尔逊。

他生活的那个年代路上的车辆已经很多,交通也比较拥挤,总是发生车祸,查尔斯暗暗发觉随着车辆的增多,这种情况发生的概率会越来越高,就在他发愁的时候,他发现才出现没多久的铁路时速快,载客量大。

于是,他向当地政府提出了将铁路建造在城市街道下面的想法,经过岁月的验证,最后被英国政府采纳,就有了地铁。

地铁出现后,由于它的轨道不与地面上的车辆以及建筑发生冲突,并且它的行驶速度非常快,没有地面上车辆的车轮滚动的声音和鸣笛声,噪声很小,行驶过程比较平坦,一次性可以容纳的人数又是公交车的7-8倍,并且它使用电力驱动,不会污染环境,所以赢得了人们的青睐,经过不断改进,一直运行到现在。

地铁自从1863年在英国伦敦建成后到如今,随着城乡一体化的构建,大量农民涌入城市。

城市人口迅速膨胀,城市交通也越来越拥挤,而人们的生活节奏却越来越快,对售票系统的要求也越来越高,所以,人工售票被渐渐淘汰,取而代之的是高效快速的自动售票系统。

在国外,有一部分城市已经采用了自动售检票系统,并且已经有相当高的技术含量。

而中国的这项技术最初是从国外流传而来的,经过不断的研究创新,已开发出了很多新的产品,而这项技术也一直都在提高。

到目前为止,国内轨道交通AFC的技术已与城市一卡通接轨,实现城市甚至城市区间的一卡通[4]。

1.3研究任务

⑴查阅相关资料,认真学习数字逻辑电路,要了解计时器、触发器等原理并会编写售票机程序中用到的逻辑电路。

⑵分析自动售票机要实现的功能,选择设计方案,并说明其工作原理。

⑶根据课题要求,学习VHDL语言和FPGA的基本知识,利用VHDL语言设计地铁自动售票机系统并对相关的软件程序进行说明。

⑷对地铁自动售票机系统进行仿真。

仿真结果要求:

①票价选择;②投币系统;③余额计算;④出票;⑤自动找零。

⑸将编写好的地铁自动售票机系统上箱进行验证。

1.4研究内容

⑴首先学习此课题设计需要用到的VHDL语言,对它的结构特点、设计流程、基本语言、描述方式及主要描述语句有一定的了解。

⑵其次学习Altera公司的QuartusⅡ软件的系统特点、设计流程、设计方法以及基本操作。

⑶在学习了VHDL语言和QuartusⅡ软件的基础上用VHDL语言编写地铁自动售票机的程序,完成程序后再用QuartusⅡ软件对编写的程序进行调试和仿真,使其能够实现票价选择,投币系统,余额计算,自动出票,自动找零等功能。

2理论基础

2.1FPGA

2.1.1FPGA介绍

FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物[5]。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点[6]。

FPGA的编程语言有两种,一种是VHDL语言另一种则是Verilog语言,它们都是用于FPGA,也都比较常用。

而VHDL语言是由美国国防部创建的,并在1987年正式成为IEEE的标准硬件描述语言;而Verilog语言是从一家软件开发企业的开发成果中转移过来的,由于它各方面的特点都比较突出,在1995年终于成为了IEEE的标准硬件描述语言。

用VHDL或是Verilog语言编写的程序经过编译综合、仿真验证、引脚锁定之后将配置好的数据烧录至FPGA上进行测试。

在IC设计、验证方面常用到这种方法。

它既可以用来设计一些比较基础的电路模块,比如:

门电路、加法器等;也可以设计一些微复杂的时序逻辑电路,比如:

移位寄存器、计数器等;还可以设计一些更复杂的组合电路,比如:

解码器、编码器等。

FPGA的开发应用与个人计算机和单片机的差别较大,FPGA主要是通过并行运算和VHDL语言或是Verilog语言完成的,而个人计算机和单片机是用顺序运算的,这也加大了它开发的难度。

它的开发涉及顶层设计、模块分层、逻辑实现、软硬件调试等方面,再次说明它的开发并不容易。

2.1.2FPGA特点

FPGA器件是由Xilinx公司开发并推出的,在推出后它们一直都在不断更新中,长期以来,在FPGA领域保持着领先。

FPGA有以下几个特点:

⑴FPGA芯片内部的触发器数量比较多,所以更适合于结构复杂的时序逻辑电路。

⑵FPGA芯片的规模比较大,布线结构相对比较复杂,新型器件高达千万门级,所以常用它来完成复杂电路的设计[7]。

⑶FPGA芯片在出厂之前全部都要经过测试,所以有安全保障。

此外,开发FPGA所需的资金与普通的ASIC芯片相比较要少许多,可以节省一部分开发消费。

⑷FPGA芯片编写的程序信息在每次断电时会丢失,重新通电之后无法自行回复,需要从外部导入。

虽然有诸多不变,但使用者可以反复地编程、擦除、使用,实现任意次的编程。

还能使软、硬件协同操作使用。

2.2VHDL语言

2.2.1VHDL语言的简介

在开发软件的初期,各个生产商为了减少开发周期,提高效率,开发出了各种不同的具有各自代表性的硬件描述语言,但由于差别大,只能适用于各开发商自己开发软件的环境,这给后期的修改和使用者之间的交流造成了一定的障碍。

所以人们想要制定出统一的硬件描述语言。

于是,在1981年的时候,美国成立了VHDL工作小组,并提出了一种比较标准的语言,简称VHDL。

1983年的时候,TI公司、IBM公司联合Intermetic公司组建小组,共同开发VHDL语言版本和软件开发环境。

到了1986年,VHDL语言开始趋于标准化。

一年后,IEEE组织正式宣布此语言版本为硬件描述语言的标准。

但并没有因此结束,在确定之后的的一年左右时间里,美国国防部对其进行强制性的推广及使用。

之后的多年时间里,IEEE对其进行过修订,使其涉及范围更广、功能更加强大。

并且把修订后的VHDL语言定为新的标准。

在VHDL语言产生并成为标准的过程中,它一直都在前进,它用它强大的语言结构适应了EDA技术的发展的同时还促进了它的进步。

所以不得不承认它是适用于电路设计的功能强大的硬件语言。

VHDL语言的全称是超高速集成电路硬件描述语言(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)[8]。

常用于数字电路的设计。

VHDL语言的语言格式、语法和描述方式与一般的计算机编程语言有许多相似的地方。

VHDL语言的程序包括实体、结构体、配置、程序包和库5个部分[9]。

其基本结构如图2.1所示。

 

图2.1VHDL程序基本结构

其中实体还分成外部和内部。

当某个实体定义了外部界面以后,只要完成内部功能的编程,其他部分能够直接使用它,简化了设计过程,体现出了它的优越性。

VHDL语言在欧洲使用较为广泛,而Verilog语言则在中国、美国、日本、台湾等地方用的比较多。

两种语言相比而言,Verilog语言学起来较容易一些,它跟C语言比较类似,如果有C语言基础的话,不需要花太多的时间就能掌握它。

但是VHDL语言比较抽象,不容易学,需要的时间比较长。

一旦掌握之后,它的优势就凸显出来了,其设计效率比Verilog语言高很多。

2.2.2VHDL语言的特点

⑴VHDL语言已经是标准的硬件描述语言,它涉及的范围广,有很强的描述能力,并且可以先分模块进行设计,最后再把各个模块合并起来组成一个完整的程序,所以此语言可以设计结构复杂,层次较多的结构电路。

⑵VHDL语言的描述能力和它本身的程序结构使得它能够分解大规模程序的设计,还能重新利用之前的设计。

设计者无法独立设计一个大规模程序,所以这样的程序通常是多人合作完成的。

VHDL语句的再利用设计与分解大型程序的功能使共同完成设计成了可能。

⑶VHDL语言有很多仿真语句和库函数,能实现综合仿真,所以在设计系统的过程中能及时进行仿真,检验程序的进展或是发现程序的错误,并进行相应的修改,保证程序的顺利运行。

设计者通过这种方法不需做出实际的模型就能比较出各种方案的可行性及它们之间的优劣,并作出取舍,大大降低了整个设计的开发成本。

⑷VHDL语言的硬件有相对的独立性,它与制作工艺无关,不会随其而改变,所以使用时间长。

一个设计可以在其他的硬件结构中使用,使用过程中也不需要对其结构有深入的了解,总而言之,使用起来比较简单。

2.2.3VHDL语言的设计流程

⑴设计规范的定义

首先设计者要知道设计目的和要求,然后制定整个系统设计的总体方案。

这一步是整个系统设计的铺垫,是十分关键的。

⑵采用VHDL进行设计描述

设计者先要根据系统设计的要求选择方式,考虑是否要分模块来编写。

通常,设计者采用“自顶向下”的设计方法。

在划分模块的时候一定要仔细划分,确保这样的划分是最好的,不然会直接影响到电路的设计。

规划完成后,设计者可以此为依据编写每个模块相应的VHDL程序,再将每个部分程序组装起来,这样就成了一个完整的程序。

⑶VHDL程序仿真

程序仿真是编写程序过程中不可或缺的。

如果编写好的程序不进行仿真,直接布局布线,若此时发生错误,则需要修改VHDL语言再重新布局布线,十分耗时。

若每编写一个程序就对其仿真,可以及时发现错误,节省设计者的时间和金钱。

⑷综合、优化和装配(或布局布线)

综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程[10];优化是为了缩小时间延迟,更好的利用资源来提高程序的执行效率;装配就是对特定资源进行分配。

而布局布线是将每个模块的程序编译以后生成的元器件重新定位,然后再进行布线。

⑸仿真

这是在程序编写完毕,并且装配完成之后进行的仿真,是对整个程序是否符合其要实现的功能的验证。

2.3QuartusⅡ软件

2.3.1QuartusⅡ软件简介

MAX+plusⅡ软件是美国Altera公司推出的一种EDA工具,在开发出来后的几年时间里,Altera公司在推出两种设计芯片同时也在不断改进开发软件,一共经历了四代:

第一代A+plus、第二代MAX+plus、第三代MAX+plusII和第四代Quartus。

QuartusⅡ软件不但包含了MAX+plusII软件的优势,在面对新技术时同样可以使用。

QuartusⅡ是一款针对FPGA芯片的综合性的开发软件,它有多种输入方式,例如:

原理图输入、AHDL语言输入、VHDL语言输入、Tclscript输入以及SystemverilogHDL语言输入等。

同时,它的内部有自己的编译综合器和仿真器,能够进行与程序相对应的输入输出管脚的波形仿真,最后对器件的各个引脚进行分配,是设计器件用的比较完整的一个软件。

QuartusⅡ软件适用于多种系统,像个人电脑的MicrosoftWindowsXP、MicrosoftWindows7系统,Linux系统以及Unix系统等都支持这款软件。

除此之外,这款软件还支持LPM宏功能模块库,设计者可以使用已存在的模块,无需重新编写,简化了设计过程,提高了设计效率。

它也支持第三方软件工具的运行,除了自身可以对程序进行波形仿真之外,其他的仿真工具它也能使用。

另外,QuartusⅡ支持多种可编程逻辑器件的开发、集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,它的软件设计功能强大且容易操作,是一种综合性的开发平台[11]。

2.3.2QuartusⅡ软件的特点

该软件对Altera公司之前开发的几代软件去其糟粕,取其精华,再在功能上加以改进才开发出的新产品。

所以,之前几代软件的功能它都具备,同时简化了使用者的操作,使用户能很快的入手。

在整个逻辑器件设计的过程中,从程序各模块的编写到程序的编译到设计功能的仿真再到编程下载都有这款软件提供,可以说这是一款功能十分强大的软件。

该软件支持公司多款MAX系列的器件,与很多EDA供应商开发的软件工具兼容,改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进网络编辑性能,提升了调试能力[12]。

2.3.3QuartusⅡ软件的设计流程

QuartusⅡ软件开发的设计流程图如图2.2所示。

 

图2.3QuartusⅡ软件的设计流程

⑴设计输入

设计者根据程序要实现的功能着手,考虑好思路并设计好各模块的划分,再用VHDL语言或原理图等的形式输入。

⑵综合

设计者将之前输入的设计根据软件本身的要求进行编译、优化、配置与综合,生成了网表文件,供下一阶段使用。

⑶布局布线

设计者用适配器将上一阶段综合得到的网表文件对应到FPGA器件上。

将分开的模块重新定位,之后组合到一起,给其分配引脚,再布局。

⑷时序分析

网表的布局布线完成后,即可得到相应的供此阶段用的编程文件。

设计者可以看到整个编程文件的时序信息,也可以分析它的时序性能。

⑸仿真

它有两种形式,一种是在不考虑外界环境及器件因素的情况下的对电路的直接仿真;另一种是在接近实际环境中对生成的器件的仿真。

⑹器件编程与配置

设计者在编译成功之后将编译的程序下载到实际的试验箱上进行进一步验证。

⑺在线校验

对配制好的器件在网上测试,看其是否符合原先器件设计要达到的功能。

 

3课题设计

3.1设计要求

设计一个程序并对它进行仿真验证使它能够模拟地铁站自动售票机的功能。

主要内容如下:

该自动售票机的主控模块控制其他几个模块,当主控模块的start=1的时候,使能端en0和en1为1,此时车票选择模块与纸、硬币处理模块工作,分别输出总价cost和总票数quantity以及投入总钱数money_insert。

当主控模块的start=0的时候,使能端en2为1,此时自动找零、出票模块工作,根据使能端bi为1或0来选择自动售票机是找零出票呢还是退钱不出票。

自动售票机的整个功能如下所述:

自动售票机有两处可以投币,一处接受硬币另一处接受纸币。

硬币接受孔只能识别一元硬币,纸币接受孔可以接受5元和10元的纸币。

根据站点的远近,将车站均等的分成三组,第一组的票价为2元,第二组的票价为3元,第三组的票价为4元。

乘客一次只能选择一个价位的票,但每次最多可以选择购买三张车票。

当选好出站口和购买的车票数以后,乘客就要开始投币,投币过程中可以投入硬币可以投入纸币,也可以两种混投,只要投入的钱数满足本次购票需要的钱数即可。

若投入的钱数不够需要的钱数,售票机会显示钱数不够,要求继续投币,直到达到所需金额为止。

投币结束后,自动售票机自动出票并进行找零,交易结束,跳回主界面等代下位乘客。

若是乘客在购票过程取消了购票操作,则自动售票机立即结束购票进程,并返还已投的钱币。

3.2系统分析与设计方案

3.2.1系统的框架结构

根据课题要实现的功能,选择按模块来编写程序,本设计大概分成四个模块,分别是自动售票机主控模块,车票选择模块,纸、硬币处理模块,自动找零、出票模块。

总的框架图如图3.1所示。

 

 

⑴自动售票机主控模块:

当此模块的start为1的时候,使能端en0和en1为1,en2为0,此时车票选择模块与纸、硬币处理模块工作。

当此模块的start为0的时候,使能端en2为1,en0和en1为0,此时自动找零、出票模块工作。

若投入的总钱数大于等于总价的话,使能端bi为1,自动售票机输出票数quantity,并输出对应的找钱df为money_insert-cost。

若投入的总钱数小于总价的话,使能端bi为0,自动售票机不出票,并退出乘客负的总钱数,此时df为money_insert。

⑵车票选择模块:

受控于主控模块,乘客先启动rest让售票机进入初始状态,然后根据自己的需要选择票价,有2元,3元,4元的可供选择,选定票价后再选择购买张数,乘客一次性至多只能购买3张,选择完毕后输出总价cost和总票数quantity。

⑶纸、硬币处理模块:

受控于主控模块,乘客先让rest为0让售票机进入初始状态,等时钟脉冲的上升沿到来时,投入钱币数,有1元硬币,5元和10元纸币,若投入的钱数不足于总票价,则继续投币,否则输出投入总钱数。

⑷自动找零、出票模块:

受控于主控模块,乘客先让rest为0让售票机进入初始状态,等时钟脉冲的上升沿到来时,若是使能端bi为1,则输出票数为车票选择模块输出的票数quantity,并且输出找零为df。

若是使能端bi为0,则不出票,退回投入的总钱数money_insert。

整个操作流程图如图3.2所示。

3.2.2各模块功能分析

⒈自动售票机主控模块

该模块是自动售票机的核心,它通过控制其余模块的使能端来控制其他几个模块的运行。

主控模块的原理图如图3.3所示。

图3.3车票模块原理图

⑴输入端口:

1rest:

复位信号,当rest为0时,所有输出为零,定义为初始状态。

2clk:

时钟脉冲,定义为上升沿时有效。

3start:

选择功能使能端,start为1时,车票选择模块与纸、硬币处理模块工作,start为0时,自动找零、出票模块工作。

4money_insert:

乘客投入的总钱数。

5cost:

乘客选择的总票价。

⑵输出端口:

1en0:

使能端,控制车票选择模块工作。

2en1:

使能端,控制纸、硬币处理模块工作。

3en2:

使能端,控制自动找零、出票模块工作。

4bi:

使能端,控制是否出票找零或是退钱。

5df:

根据bi的状态决定退出的钱数。

⒉车票选择模块

此模块共有三种票价的车票可供选择,乘客可以根据自己的需要选择票价及票数(不超过3张)。

车票选择模块的原理图如图3.4所示。

图3.4车票选择模块原理图

1输入端口:

①rest:

复位信号,当rest为0时,所有输出为零,定义为初始状态。

②clk:

时钟脉冲,定义为上升沿时有效。

③jia_2,jia_3,jia_4:

分别代表2元,3元和4元的票价,当其中一个为1时,代表该票价被选中。

4shu_1,shu_2,shu_3:

分别代表1张,2张和3张的票数,当其中一个为1时,代表该票数被选中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育

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

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