基于VHDL的地铁售票系统设计与实现_第1页
基于VHDL的地铁售票系统设计与实现_第2页
基于VHDL的地铁售票系统设计与实现_第3页
基于VHDL的地铁售票系统设计与实现_第4页
基于VHDL的地铁售票系统设计与实现_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

沈阳大学毕业设计(论文)基于VHDL的地铁售票系统设计与实现专业电子信息科学与技术班级2011级姓名王发展沈阳大学毕业设计(论文)目录引言31EDA技术和VHDL语言介绍511EDA技术介绍512VHDL语言介绍513VHDL语言的特点614VHDL语言结构框架715VHDL软件设计简介142利用VHDL语言设计地铁售票系统1521地铁售票系统功能分析1522地铁售票系统的总体设计分析1523地铁售票系统的系统流程设计1624地铁售票系统的系统状态设计173系统程序模块化设计2131选站模块设计2132选票模块设计2133投币模块设计2234出票模块设计2335余额找零模块设计244系统程序的编译和仿真2641MAXPLUS的介绍2642系统程序编译2743系统程序仿真305仿真结果验证3651选票状态“取消键”验证3652投币状态下“取消键”验证3753余额找零验证39结论41致谢42参考文献43附录源程序45沈阳大学毕业设计(论文)NO1摘要VHDL语言是一种很高级的硬件描述语言,它主要应用于复杂的数字系统设计领域。它具有很强的硬件描述能力,能够轻易的描述出硬件的结构和功能,能够很好的描述复杂数字系统的行为、结构、接口和功能。在本文中实现地铁售票系统的设计,就是利用VHDL语言来设计地体售票系统的核心功能,在设计系统时加入了有限状态机的思想来完善售票系统,对整个系统程序进行分模块处理,逐个实现单个功能,最后将各个模块完整的组合起来构成完整的系统程序。同时,以MAXPLUSII软件作为开发平台,完成地铁售票系统程序的仿真调试工作。使其实现地铁售票系统的选站、选票、投币、出票、找零等功能。本文主要体现VHDL在实际生活中的应用,随着数字化的进步,VHDL在逐步深入到各个领域的应用。在地铁售票系统中,采用VHDL很好的实现了需要实现的功能,在这里,只是在VHDL中实现了地铁售票系统的理论化进程,并且在MAXPLUS软件环境下顺利仿真运行,并且得到了预想的结果。如果还想得到在硬件上的体现,那么,这里我们还要用到VHDL的硬件设计功能,实现系统程序在VHDL中的硬件描述。关键词地铁;售票;状态机;模块沈阳大学毕业设计(论文)NO2ABSTRACTVHDLLANGUAGEISAHANDWAREDESCRIPTIONLANGUAGEWITHHIGHLEVEL,WHICHISMAINLYUSEDINCOMPLEXDIGITALSYSTEMDESIGNINGITHASAGREATABILITYOFHANDWAREDESCRIPTION,DESCRIBINGTHESTRUCTUREANDFUNCTIONOFHANDWAREEASILYITALSOCANBEAGOODDESCRIPTIONOFTHEBEHAVIOROFCOMPLEXDIGITALSYSTEMS,STRUCTURE,INTERFACES,ANDFUNCTIONSINTHISTHESIS,THEREALIANCEOFTHEDESIGNOFSUBWAYTICKETINGSYSTEMSISTOTHATUSETHEVHDLLANGUAGETODESIGNTHECOREFUNCTIONSOFTHEBODYTICKETINGSYSTEMFIRST,WITHTHEADDITIONOFIDEAOFAFINITESTATEMACHINEINTHEDESIGNOFTHESYSTEM,THETICKETINGSYSTEMPROVEDALOTNEXT,DIVIDETHEWHOLESYSTEMPROJECTSINTOSEVERALMODULESOTHATEACHFUNCTIONCANBEREALIZEDGRADUALLYFINALLY,COMBINEEACHMODULETOGETHERCOMPLETELYTOFORMACOMPLETESYSTEMPROCESSMEANWHILE,WITHTHEBASEOFTHEMAXPLUSSOFTASADEVELOPMENTPLATFORM,FINISHTHESIMULATIONDEBUGGINGSUBWAYTICKEINGSYSTEMPROGRAMTHUSTHEFUNCTIONOFSTATIONSELECTING,TICKETCHOOSING,TICKETGIVINGANDCHANGEGIVINGCANBEREALIZEDTHISPAPERMAINLYSHOWEDTHEVHDLSAPPLICATIONINTHEREALLIFEWITHTHEADVANCEMENTOFTHEDIGITALIZATION,VHDLGRADUALLYGODEEPINTOTHEAPPLICATIONOFVARIOUSFIELDSINTHESUBWAYTICKINGSYSTEM,VHDLSUSINGHAVEREALIZEDTHEFUNCTIONGREATLYWHICHISNEEDEDINTHISPAPER,THETHEORIZINGPROCESSOFTHESUBWAYTICKETINGSYSTEMISJUSTREALIZEDINTHEVHDLANDITCANREALIZEEMULATIONALRUNUNDERMAXPLUSSOFTWAREENVIRONMENTITHASGAINEDTHEDESIREDRESULTIFWEWANTTOGETTHEREFLECTIONINTHEHARDWARE,WEHAVETOUSETHECAPABILITIESOFVHDLHARDWAREDESIGNTOREALIZETHEHARDWAREDESCRIPTIONINVHDLOFTHESYSTEMPROGRAMKEYWORDSTHESUBWAYTHETICKTTHESTATEMACHINEMODEL沈阳大学毕业设计(论文)NO3引言随着电子科学技术的发展,技术的发展需要更加先进的硬件电路设计,因此就出现了另外一种新兴的,能够很好地完成设计的一种硬件描述语言,这将会是电子设计自动化领域的一次重大的变革。目前,我们在广泛使用的硬件描述语言分为VHDL语言和VERILOGHDL语言,它们先后被规定为国际标准语言。据不完全统计,目前在世界各地几乎所有的ASIC和FPGA都是采用硬件描述语言进行设计的,VHDL的应用在EDA解决方案中所起到的作用越来的重要,由此,它也逐渐的成为复杂数字系统设计中的重要核心。VHDL语言之所以使用最频繁,是因为它有非常强的行为描述能力。它有很多功能,比如描述复杂数字系统的行为、结构等,在应用设计上很常用。它抛开具体的器件结构,从逻辑行为上来展开描述和设计大规模电子系统。从当前比较经常使用的EDA工具和VHDL综合器来说,它们能够很快速的,方便的完成对程序硬件的设计构造1。VHDL语言在硬件设计方面的作用,在众多的数字系统设计中,它具有自己的特点,简单易懂,会让人们更加易学一些,这也就注定这种语言将会流行。在应用VHDL语言时,我们会惊奇的发现它不同于其他的描述语言,它内部的辅助设计功能要比其他描述语言的使用起来简单、方便、快速等其他描述语言不能实现的功能。在新时代的科学进步中,我们追求的往往是引领本领域尖端的科技成果,其实VHDL语言就相当于硬件描述语言当中的以中间段语言,他不仅方便了工作人员在该领域的设计工作,更给电子科技领域带来了一个划时代的变化。VHDL语言和可编程逻辑器件的结合将会出现一种新的科技创新,为更多的设计提供更多的方便与快速。这将成为硬件设沈阳大学毕业设计(论文)NO4计领域一个划时代的创造。在地铁售票系统中,采用VHDL语言来设计售票过程中各个部分的功能语句,能够很好地实现功能。由于VHDL语言的硬件描述功能性比较强,它被广泛的应用于电子电路的设计中,不仅可以方便设计者快速、准确的完成设计项目,还能够高效的优化设计工作,这就体现的VHDL语言的强大功能。在今后的科学技术发展中,VHDL语言肯定会随着科学的进步继续更新发展。在电子电路系统的设计中,不止存在一种设计语言,但是最常使用的是VHDL语言。在这次的地铁售票系统的设计过程中就很直接的体现,每个模块的程序文件体现出VHDL的特点。VHDL语言在电子电路系统领域是一个不可替代的核心。地铁售票系统最基本的几个功能是实现选站、选票、投币、出票、退钱2。在实现这些功能时,可以采用模块化设计,把每个模块当做是一个单个实体,单独拿出来分析解剖,使用VHDL语言中特定的功能语句编写单独模块的源程序文件,在所有模块源程序编写结束后,把所有模块组合起来,组成一个连续的过程实现售票功能3。再设计地铁售票系统的过程中,要考虑到实际连续使用的问题,这里就会用到状态机的部分问题。在VHDL语言的设计中,能够很好的设计这些基本功能4。在VHDL设计好地铁售票系统的源程序文件后,需要验证程序的正确性。MAXPLUSII软件平台用来验证源程序文件的正确性,它源程序文件输入到该平台上,通过编译仿真得出结果判断是否实现5。沈阳大学毕业设计(论文)NO51EDA技术和VHDL语言介绍11EDA技术介绍EDA即是电子设计自动化,我们用简单的语言描述就是,通过电子计算机自动完成复杂的电子电路系统的设计工作。在这当中,最重要的就是使用到电子计算机,它是其中的核心,在电子计算机上完成电路设计的工作,不仅需要电路方面的知识,还要用到计算机方面的知识,综合EDA技术在计算机当中的应用,它涵盖了计算机图形学、拓扑等与电路系统设计相关联的多种先进的计算机应用技术6。EDA技术的发展共经历三个阶段CAD阶段、CAE阶段、EDA阶段7。EDA技术具有强大的系统建模和电路仿真功能,采用硬件描述语言进行设计。电子设计方法随着电子和计算机的发展在不断地进步,不断地更新,在共同的发展促进下电子产品的性能也会越来越高,更新速度也会越来越快,由此,EDA技术的应用也就会越来越广。12VHDL语言介绍在80年代后期,美国国防部开发了VHDL语言。它是用于电路设计的一种很高级的硬件描述语言。在当时,美国政府的本意并不是着重发展电子电路的设计工作,它是由于某个小的方面的使用才开发出来了VHDL语言。在不断地发展中,VHDL语言在逐渐演变到电子发展领域而成为一种超高速集成电路硬件描述语言,在数字逻辑设计领域主要应用。但是它的应用是很广泛的。比如FPGA/CPLD/EPLD/ASIC的设计当中。VHDL语言主要用于描述数字系统的功能、接口、结构和行为8。VHDL的语言和一般的计算机高级语言相比,形式、描述风格以及语法在某种程度上是很相似的。VHDL语言是将设计实体分为两部分,这两部分是外部和内部。当然这个实体可以有很多沈阳大学毕业设计(论文)NO6形式表现出来,比如电路模块,系统等。其中为可视部分及端口为外部,而内部又称为不可视部分。怎样才可以直接调用实体,就是开发内部,定义实体外部,听上去相当简单,只要按照这个程序,就可以调用了所以VHDL语言设计的基本特点就是将实体分为两部分9。13VHDL语言的特点VHDL语言主要用于描述数字系统的结构、行为、功能和接口,与其他硬件描述语言相比,VHDL语言有如下优越之处(1)VHDL语言具有很强的行为描述能力,使它成为被经常用的语言。具体行为和逻辑行为都是描述电路器件结构的表现形式,而VHDL不同于其他的语言结构,它是避开具体行为从逻辑行为上描述、设计大规模电子电路系统的。逻辑行为的描述是他最大的特点10;(2)VHDL语言有很多功能语句和库函数,不管在什么样的系统中,都能够进行验证,它是分不同的具体过程来完成的,首先对程序语言编译,需要程序无错误后才能进行下一步执行,编译无误后就可以进行仿真验证,整个过程就被完成;(3)VHDL语言有自己的特点,功能很强大,它拥强大的分解和组合功能,其实就是说,在遇到庞大的系统文件时,为了能够很好地完成设计分析工作,需要将文件分解处理,而分解后的个体实际上仍然可以单独执行;组合也就是在VHDL中存在已有的可用模块,在设计中遇到可用模块时,不需要设计者在花时间单独设计,直接从设计库中调用使用即完成目的。当然,它根据不同的情况解决不同的问题,支持大规模设计的分解与组合,不仅可以提高系统的效率,还能更好地帮助设计者完成设计工作11;沈阳大学毕业设计(论文)NO7(4)在使用VHDL语言完成设计的同时,当然我们也可以巧妙地利用EDA工具对系统进行逻辑综合和优化,这样就可以出现多种解决方案,处理起来问题就会比较快速便捷,同时还可以自动的把VHDL描述设计转变成门级网表以方便使用;(5)VHDL语言还有一个非常大的特点,就是它对于设计系统具有相对独立性,能够进行独立的设计工作,工作人员不需要了解很多,几乎是可以不需要知道电路元件的具体结构框架,只需要知道我们要设计什么系统即能够很好的完成设计工作。综上所述,这种语言的优点,使得这种语言应用广泛,简单易懂,容易学会,可能零基础的也可以很快学会。14VHDL语言结构框架一个完整的VHDL程序由实体ENTITY、结构体ARCHITECTURE、配置CONFIGURATION、包PACKAGE和库LIBRARY5个部分组成12。什么是实体所设计的系统的外部接口信号用实体定义;系统内部的结构和行为用结构体描述;配置用于从库中选取所需单元来组成系统设计的不同版本,对于比较简单只存在一个结构单元的设计,配置部分可以省略;包中存放各设计模块能共享的数据类型、常数和子程序等;库存放已经编译的实体、结构体、包集合和配置。库、包、实体和结构体是一个硬件实体的VHDL描述中必不可少的部分。VHDL结构框架如图1所示沈阳大学毕业设计(论文)NO8图1VHDL程序结构框图图1中是VHDL的全部结构,但实际上我们并不需要全部的结构,就像在许多设计项目中,大部分工程师只用到VHDL其中的30的语法。其中,最常用到的有USE定义区、PACKAGE定义区、ENTITY定义区、ARCHITECTURE定义区,其他的根据不同的需要会得到不同的应用。VHDL程序基本结构如图2所示图2VHDL程序基本结构141实体(ENTITY)实体ENTITY是VHDL程序设计中最基本的单元结构,它表示的电路可沈阳大学毕业设计(论文)NO9以非常的复杂,也可以是单个逻辑门那样非常简单。实体定义部分用于定义实体的名称、输入接口、输出接口等实体与外部对象相连接的信息。实体定义是一个初级设计单元,可以单独编译,也可以被并入设计库中,它给实体命名并给实体定义一个接口,接口信息用来和其它模块通信连接13。实体定义部分描述了器件的外部视图,其实我们在外部看元件的外在特性,可以看到比较重要的参数,比如器件的名称,端口等。当在实体定义时也可以定义元件参数。这样也就实现了把参数从元件外部传送到模块内部的功能。实体结构语句格式如下ENTITY实体名ISGENERIC(类属参数说明);常数名数据类型设定值;PORT(端口说明)端口名端口模式数据类型;ENDENTITY实体名;142结构体(ARCHITECTURE)结构体是次级设计单元,在结构体之前的单元实体部分编译后,将其并入到设计库中,之后结构体就可以单独编译,编译后再加入到设计库中14。结构体就是主要建立设计的输入输出关系,描述一个设计的结构或行为。一个设计实体当中可以有多个结构体。在一个完整可以执行的VHDL程序文件中,结构体时必须存在的一部分,它在程序文件中最大的作用就是描述程序的行为功能。在一个程序文件中,可能会有多种结构体表述形式。按照结构体对结构描述的层次来分,VHDL对结构体的描述有以下3种层次。其语句沈阳大学毕业设计(论文)NO10格式如下ARCHITECTURE结构体名;说明语句BEGIN功能描述语句ENDARCHITECTURE结构体名;结构体的基本结构框架如图3所示图3结构体构造图图3中的五种语句结构的基本组成和功能分别是(1)一系列并行执行语句组合成块语句,块语句最突出的特点是它对并沈阳大学毕业设计(论文)NO11行语句的组合功能。有关的并行语句组成一个或者很多模块,能够很好地表述程序模块的功能。这就使得我们会经常用到块语句;(2)进程语句通俗的来讲它就是顺序语句的一种,进程语句的功能就是从外部对内部的信号进行赋值,实现外部内部的转换传递工作。同时,进程语句是分状态完成的,它具有很强的顺序逻辑性,这样不会使系统内部出错,来完成系统的设计工作;(3)信号赋值语句是对已经定义好的信号等用内部的处理信号赋值,这样可以很方便的传递数据,方便系统的设计工作;(4)子程序调用语句是当然指的是它具有调用的功能,在程序中能被调用的只有用函数和过程,具体的就是实现端口之间的对接,从而方便系统程序的执行。143进程语句(PROCESS)进程(PROCESS)语句是众多语句中最具VHDL语言特点的语句,它提供的方法是用一种用算法来描述硬件行为15。进程事实上描述顺序,就是讲述一个事件的过程,发生的顺序。进程语句结构包含了一个进程,进程语句是用来描述程序文件中逻辑行为和独立语句的。我们已经知道在一个结构体中能够同时存在多个并行运行的进程结构,而这些进程语句的内部结构就是一个顺序语句的样式,也就是说进程语句它实际上是顺序语句的一种。进程语句有它自己的特点,比如顺序执行、多进程、逻辑描述等。我们必须知道,进程语句结构中的顺序语句和普通的顺序语句在执行的过程中不同是相对于计算机过程而言,它实际上就是顺序执行过程,这个顺序执行过程不能简单地等同于硬件结构的逻辑行为,他们之间存在着本质上沈阳大学毕业设计(论文)NO12的不同。在进程语句结构中存在着时序逻辑和组合逻辑之分,它们都采用顺序描述语句进行描述程序结构。但是,硬件中的组合逻辑具有非常典型的并行逻辑功能,而硬件中的时序逻辑也并不都是以顺序方式工作的。进程语句的表达格式如下PROCESS(敏感信号参数表)IS进程说明部分;BEGIN顺序描述语句;ENDPROCESS进程标号;所谓的进程结构本身是并行语句,一个结构体中可以同时包含有多个并行进程结构,而每一进程结构的每一个敏感参数的变化都是相对于自身的敏感信号参数表中定义的,每个进程都可以在任意时刻被启动,所有被启动的进程都是并行执行的。144元件例化语句元件例化就是将设计实体看做一个元件,然后将元件与所指定的端口连接,其中用一些指定的功能语句即可,最后就是引入一个设计层次结构,当然要低一级12。在这种情况下,设计实体本身在电路系统中可以单独作用,它可以是一个比较大的电路系统,被例化的元件与设计实体端口之间是一种对接关系,它们是可以嵌合在一起的,好比插头与插座的关系。元件例化其实就是使VHDL在设计实体时构成自上而下层次化设计16。其实在结构体中调用子程序和元例化过程是非常非常相似的。只不过在调用时,会有些不同,系统会增加一个模块,这个模块是类似于元件的功能沈阳大学毕业设计(论文)NO13模块。这样的调用是不可以越级的,只能在同一个层次内调用,其实这个过程是非常简单的,因为它没有增加额外的层次模块。整个过程都是和例化十分接近,只有一点小的区别。当然,元件例化不只是可以在同层次间进行,还可以在不同层次中进行,在一个设计实体中元件,它可以例化后调用其他元件,因为它本身也可以是一个当前被调用的低层次的设计实体,这样就可以构成更加低层次的结构,这就可以看出元件例化就是在当前的结构再构建一个新的层次用来设计。这个设计层次的总称就是元件,但它可以以不同的形式出现元件例化语句分为两个部分,第一部分是将一个已经完成的设计实体定义为一个简单元件的语句,第二部分则是元件与设计实体的连接说明。元件例化语句格式如下17第一部分COMPONENT例化元件名ISGENERIC(类属表);PORT(例化元件端口名表);ENDCOMPONENT例化元件名;第二部分元件例化名例化元件名PORTMAP(例化元件端口名连接实体端口名,);这两部分在元件例化过程中缺一不可,缺少任何一个都不能完成任务。前者语句是例化元件的定义语句,后者是原价例化的功能语句。元件例化的第一部分是类属参数,它的类属表包含了端口的数据类型和参数,例化元件沈阳大学毕业设计(论文)NO14的端口名列表同时也包含了对外连接的各个端口名。元件例化的第二部分是元件例化生成语句,结构中的的元件例化名是必须要存在的,它相当于在当前系统中已知的一个代名词,例化元件名就是准备与之相连接的、已定义好的元件名。PORTMAP是端口映射的意思,在元件定义语句中的端口名表中,例化元件端口名是已经定义好的例化元件端口的名称,剩下的一一对应,按照顺序连接起来即可。15VHDL软件设计简介系统电路的软件设计可以采用的工具软件有MAXPLUS和QUTERS,在本文中使用的是MAXPLUS,使用这个软件平台是因为他的硬件环境,对于输入的每一个应用程序都必须首先进行编译,编译没有错误后才可以进行下一步。要想进行分析,仿真,调试等必须做足一定的工作之后才能实现。首先设计制作单个器件,然后生成文库,当然同时产生相对应的电路符号,最后将每一个生成的文库与各个端口对应连接在一起,这样基本完成相应的软件结构与系统电路对应。其中还会有一些问题,所以中间的过程要格外细心。连接每个器件的端口,采用图形输入的方式,在图形输入界面可以调用已经完成的库文件。最后的工作就是用导线将每个器件符号的各个端口连接起来这样就全部完成,构成系统主电路的电路图18。沈阳大学毕业设计(论文)NO152利用VHDL语言设计地铁售票系统21地铁售票系统功能分析地铁售票机的进币口总共有两个,分为硬币输入口和纸币输入口,系统只能识别5角和1元的硬币,其他的硬币系统概不识别;系统只能识别1元、5元和10元这三种面值的纸币,其他面值的纸币系统是不能是别的。乘客在购票时可以连续多次投入钱币,但是不能同时投入硬币和纸币,因为它们之间是顺序过程而非并行。在购买车票时,乘客一次只能选择一个出站口,根据流程,乘客先选择出站口名称,然后选择所需要购买的车票数量,之后再进行投币,投入的钱币达到所购买的总票价时,售票机会由系统控制自动出票,出票结束后,系统会根据票价计算自动退出余额,余额全部退出后系统会自动跳回选站状态,等待乘客再次进行新的操作。在选票和投币期间,乘客可以按取消键取消本次操作,选票状态按下“取消键”,则系统自动回到选站状态,投币状态选择“取消键”,钱币自动退出,回到选站状态。22地铁售票系统的总体设计分析(1)在购买车票时,乘客点击“开始选择”按钮,紧接着选择出站口的名称,再接着选择购买车票的数量数量,这里规定乘客每次购买的车票不允许超过3张,然后点击“开始投币”按钮,投入可以大于等于车票总额的钱币;当投入的钱币满足系统所需金额时,售票机会自动出票,同时找出余额;(2)在选择出站口或投币过程中,乘客都可以随时选择“取消”按钮取消该次操作。在选择出站口的过程中,如果点击“取消”按钮,则售票系统会直接回到选站状态;在投币过程中,如果点击“取消”按钮,则售票系统会将乘客已经投入的钱币全部退回,并且回到选站状态;沈阳大学毕业设计(论文)NO16(3)这里规定乘客每次只能选择一个出站口,系统会根据乘客乘坐的站数来确定票价。我们假设地铁线路从起点站到终点站总共有15个站。如果选择乘坐范围为18站之间,则每张票的单价为2元张;如果乘坐范围为916站之间,则每张票的单价为4元张。这16个站采用4位二进制向量编码来进行表示,分别为0001表示乘坐1站,0010表示乘坐2站,依次类推表示,1111表示乘坐15站即到达终点站;(4)售票机总共有2个进币口。硬币口和纸币口,硬币口可识别5角和1元2种硬币,这里采用长度为2的一比特热位编码方式进行表示,即01表示5角,10表示1元。纸币口同样采取这种方式,用长度为4的一比特热位编码方式进行表示,它们是类似的。乘客可以连续多次投入钱币,并且可以以任意顺序投入硬币和纸币,但是,不可以同时投入硬币和纸币。23地铁售票系统的系统流程设计(1)在仿真调试售票系统时候,必须先对系统进行上电复位,此系统为高电平复位,系统复位操作后就会停留在选站状态等待乘客的购票操作;(2)乘客在确定自己的出站名以后,根据内部系统设定,自动完成票价计算,票价有两种,2元和4元票价;(3)在上个操作完成后,进入选票状态,系统读取乘客的购买票数后,会根据已经设定好的票价计算总购票金额;(4)选站选票结束后系统会自动进入到投币状态,此时,乘客需要根据系统提示投入系统会能够识别的钱币,有硬币和纸币,硬币有5角和1元,纸币有1元,5元和10元,在投币过程中,系统会按照乘客的投币进程不断累加乘客多次的投币金额,在乘客投币结束后系统会自动判乘客投入的钱币沈阳大学毕业设计(论文)NO17是否达到系统计算的车票总额,如果没有达到,则系统会继续停留在投币状态并提醒乘客需要继续投币;(5)当乘客投入的钱币达到系统计算的车票总额后,系统会自动的进入到出票状态,由于避免同时出票会出现出票口卡票问题,要求系统每个周期只能出一张票,在乘客购买的所有车票都出完后系统会自动进入到余额找零状态,根据系统的比对计算,找出剩余的钱币;(6)余额找零是会涉及到多种钱币的选择问题,那就需要一个算法来设定一个钱币选择顺序,比如根据面值从大到小或者从小到大均可,只要有顺序即可,等找完零钱后会自动返回到初始界面,方便下一位乘客购票;(7)在购买车票的过程中,乘客在选票状态和投币状态都可以结束本次操作,这就需要设置一个取消键的发挥作用,它是由高电平出发的。在选票过程中,当乘客按下取消键是,系统就会很快的回到初始状态,即选站状态,这样就可以重新购票。假如遇到这种情况,乘客的钱已经投入,但是不足以买票,这样顾客可以按下取消键,任意时刻均可,投入的钱可以返出,系统自动回到初始界面,这样下一个顾客可以继续进行购票,这样会很方便,而且可以节省很多时间。24地铁售票系统的系统状态设计地铁售票系统可以分为以下五个状态选站状态;选票状态;投币状态;出票状态;余额找零状态,系统每个状态完成以下功能。系统流程如图4所示沈阳大学毕业设计(论文)NO18图4系统流程图(1)选站状态选站状态是乘客根据需求选择乘坐站数的界面,乘客在确定乘坐站数以后,系统会自动进入到选票状态。同时,选站状态还是售票机的默认状态,也就是当没有人使用售票机时,系统依然会停留在这个状态下,等待乘客使用操作;(2)选票状态选票状态下乘客在选站后需要选择自己购买车票张数的沈阳大学毕业设计(论文)NO19界面,乘客在确定票数以后,系统会自动进入到投币状态。同时乘客也可以在这个状态下按下取消键来取消本次操作,此时,系统会回到选站状态等待乘客下一次的操作;(3)投币状态在投币状态下乘客可以根据自己的购票状况进行投币,并且可以连续多次投币。乘客投币结束后,系统内部会自动完成计算投币的总额,同时将计算结果跟系统计算的票价总额进行比较,如果所投钱币不够,系统就会保留在投币状态并提醒乘客需要继续投入钱币,同时,乘客也可以选择取消键将所投钱币退回结束操作;如果所投入的钱币正好或者多于系统计算的总票价,则会进入到出票状态。在出票结束后,如果所投钱币还有剩余,则系统会自动进入到余额找零状态找回余额;(4)出票状态在出票状态下完成出票功能,每个周期出只能出一张票,直到所有的票出完为止。当顾客所买的票售完之后,系统会自动回到初始界面或者进入找零状态,提醒顾客相应票已经售完;(5)余额找零状态余额状态是把购票结束后把余额退回给乘客,在出票完毕后,系统会判断是否有余额,如果余额不为零,则系统会继续停留在找零状态,直到退回所有钱币,如果余额已经为零,系统就会回到初始状态等待乘客下一次操作。在这里,系统中给出TP,TMONEY,PMONEY,NUM,EN几个变量,同时系统会控制这几个状态之间的转移。它们分别表示判断选站操作、判断乘选票操作、判断投币操作、判断出票操作、判断余额找零操作。在系统设计中的输入变量有CLK,RESET,STATION,TN,LETTUCE,COIN,CANCELKEY等。其中变量CLK表示的是时钟周期信号,变量RESET指的是系统复位信号,沈阳大学毕业设计(论文)NO20变量STATION指的是乘客所选择的出站数量,在程序设计中总共设置了16个站点,不同站数对应不同的票价,有2元和4元之分。0代表起始站,110站的票价为2元,1115站的票价为4元。变量TN指的是乘客所选的车票的数量,为了方便操作,乘客每次允许购买的车票数量不可以超过3张票。变量LETTUCE指的是乘客总共投入的纸币的钱数,变量COIN表示的是乘客总共投入的硬币的钱数,变量CANCELKEY指的是乘客可以在选票和投币状态下放弃本次操作。在系统设计中的输出变量有TOUT,MOUT,MONEYINPUTALARM,STATE等。它们所代表的是出票、找零、余额不足提醒、状态转换。系统状态转换如图5所示图5系统状态转化图沈阳大学毕业设计(论文)NO213系统程序模块化设计31选站模块设计在购票系统中,首先要实现的就是选站。在这里,假设共有16站,为了实现表示这16站,采用4位二进制码表示,0000表示初始站,1111表示第15站,在描述选站的同时,还需要规定对应站所需票价,在这里我们规定110站的票价为2元,1115站的票价为4元,在乘客选完站后,系统会自动显示票价,乘客确定后就可以进行选票操作,如果乘客没有选站,则系统一直会停留在选站状态等待乘客选站,不会进入下一模块选择。选站模块主要源程序CASESTATIONISWHEN“0000“TP0;WHEN“0001“TP2;WHEN“0010“TP2;WHEN“0011“TP2;WHEN“0100“TP2;WHEN“0101“TP2;WHEN“0110“TP2;WHEN“0111“TP2;WHEN“1000“TP2;WHEN“1001“TP2;WHEN“1010“TP2;WHEN“1011“TP4;WHEN“1100“TP4;WHEN“1101“TP4;WHEN“1110“TP4;WHEN“1111“TP4;WHENOTHERSNULL;32选票模块设计选站之后,就需要乘客进行选票,由于在日常生活中,乘客基本上都是自己购票,当然也有可能一人购买多张去同一个站的多张票,为了减少不必要的麻烦和方便乘客购票,将每次购票的张数限制在3张以内。选完票之后,沈阳大学毕业设计(论文)NO22系统会根据选择的站数和购买的票数自动计算票价,结束后,会自动出现投币界面。在选票过程中,由于不同的原因,乘客可能会选择重新回到选站或选票界面,在这里就必须设计一个取消键,取消键采用高电平控制,在按下取消键后,系统自动回到选站状态,让乘客重新选择。在没有问题时,乘客可以进入投币界面进行投币操作。选票模块源程序WHENSELTICKETSTATETMONEYTMONEY1TP;NUM1;WHEN“10“TMONEYTMONEY2TP;NUM2;WHEN“11“TMONEYTMONEY3TP;NUM3;WHENOTHERSNULL;ENDCASE;IFTMONEY/0THENNEXT_STATEINPUTCOIN;ELSENEXT_STATESELTICKET;ENDIF;ENDIF;33投币模块设计进入投币状态后,在生活中,钱币分为硬币和纸币,硬币的面值有五角和一元,纸币的面只有1元、5元、10元等,由于票价及方便的原因,在系统中采用三种纸币的面值,即1元、5元、10元。纸币和硬币分为两个不同的过程,它们之间是一个顺态过程,即它们不能同时进行,但它们使用同一个累加过程。在这里使用4位二进制码表示纸币面额,即0001表示1元,0101表示5沈阳大学毕业设计(论文)NO23元,1010表示10元。乘客可以进行连续投币,同时钱币进行累加。当投入的金额达到票价时,系统就会自动进入出票状态。在投币过程中,若乘客按下取消键,系统会自动退回所投入钱币,并自动转回选站状态。投币模块源程序WHENINPUTCOINSTATEPMONEYPMONEY1;WHEN“0101“PMONEYPMONEY5;WHEN“1010“PMONEYPMONEY10;WHENOTHERSNULL;ENDCASE;CASECOINISWHEN“01“HALFHALF1;IFHALF2THENPMONEYPMONEY1;HALF0;ENDIF;WHEN“10“PMONEYPMONEY1;WHENOTHERSNULL;ENDCASE;34出票模块设计在出票状态下,考虑实际问题,在乘客购买多张车票时,车票是一张一张的出来的,那么就需要设计系统控制出票,通过时钟周期来实现控制出票。其实,只需要两个变量就可以实现,TOUT和NUM,当TOUT不为零的时候,系统就一直通过NUM的递减来实现出票,这实际是一个有限循环过程,每个时钟周期出一张票。事实上,在选票模块中已经提到,票数最多可以选择三张,在这里也就最多循环三次,来完成出票口出票。在出票结束后,系统会出现两沈阳大学毕业设计(论文)NO24个选择,一个是继续选票,一个是余额找零,如果乘客需要继续选票,则点击继续选票,系统会跳转到选票状态;如果乘客选择余额找零则系统会自动进入到余额找零状态。出票模块源程序WHENTICKETOUTSTATENULL;WHEN1TOUTNUMNUM1;TOUTNUMNUM1;TOUTSTATE10THENRMONEYRMONEY10;MOUT5THENRMONEYRMONEY5;MOUT1THENRMONEYRMONEY1;MOUTNEXT_STATESELSTATION;ENDCASE;沈阳大学毕业设计(论文)NO264系统程序的编译和仿真41MAXPLUS的介绍MAXPLUSII是ALTERA公司推出的的第三代PLD开发系统,ALTERA是的世界上最大可编程逻辑器件的供应商之一。如果没有它,人类至少还要多费好多年来研究,而且使用MAXPLUSII非常简单,不需精通器件内部的复杂结构,不需掌握所有的内部结构,非常好理解,简单易上手,当然,设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAXPLUSII把这些设计转自动换成最终使用者所需的格,其设计速度又快又准19。411MAXPLUSII界面MAXPLUSII界面如图6所示图6MAXPLUS界面沈阳大学毕业设计(论文)NO27412MAXPLUS的特点(1)具有面向全过程的界面,为用户提供的EDA工具接口,方便硬件结构的设计;(2)与器件结构无关的逻辑描述。这个系统有很强大的内部功能系统,可以脱离元器件的具体结构完成量化设计,几乎大部分的的电路系统都可以通过这个系统平台来综合完成设计,设计者也不必深究,按照自己的系统即可;(3)具有多平台结构;(4)实现电路系统高度集成化。这个软件的所有动态均在统一的开发环境中,比如设计输入、处理与校验功能等,由此可以快速的完成电路系统的运行;(5)具有强大的设计库。在MAXPLUS系统平台中,内部实际上已经定义好丰富的设计库单元,基本上都能够满足设计者的需求,利用设计库单元的资源,就能够大大减少工作量,提高工作效率;(6)系统必备模块化设计工具;(7)支持多种硬件描述语言。42系统程序编译(1)打开MAXPLUS运行环境,在FLIE项目中选择新建一个文本编辑文件,即是按照界面“FILE”“NEW”“TEXTEDITORFILE”“OK”顺序完成操作,这就可以建立一个文本编辑文件。新建文件对话框如图7所示沈阳大学毕业设计(论文)NO28图7新建文件对话框(2)当点击“OK”按钮时出现一个空白页面,将已编辑好的程序输入空白页中。程序输入对话框如图8所示沈阳大学毕业设计(论文)NO29图8程序输入对话框(3)在输入程序后,保存程序文件,之后会出现图9所示的对话框界面,点击“OK”按钮后即完成保存此文档,如图9所示图9保存文档对话框沈阳大学毕业设计(论文)NO30(4)选择菜单中的“MAXPLUS”“COMPILER”,及是对编辑文件进行编译,如果程序没有错误,就会出现如下对话框如图10所示图10编译成功43系统程序仿真(1)首先建立一个仿真波形文件。即是按照“FILE”“NEW”“WAVEFORMEDITORFILE”“OK”顺序操作完成,之后将出现波形编辑器子窗口。建立和保存仿真波形文件如图11和图12所示沈阳大学毕业设计(论文)NO31图11建立仿真波形文件图12保存仿真波形文件(2)设置结束时间。选择菜单中的“FILE”“ENDTIME”,之后将会出现设沈阳大学毕业设计(论文)NO32置仿真时间对话框。把其中的TIME项设置为100US,点击“OK”按钮,如图13所示图13设置结束时间(3)设置信号结点。选择菜单中的“NODE”“ENTERNODESFROMSNF”,出现选择信号结点对话框。点击对话框中右上侧的“LIST”按钮,左边的列表框将会列出所有可以选择的信号结点,然后点击导入按钮,将左边列表框中的所有结点全部导入到右边的列表框中。点击“OK”按钮,被选中的所有信号将会出现在波形编辑器当中。结点设置图如图14所示沈阳大学毕业设计(论文)NO33图14设置结点(4)设置输入信号参数。在波形观察窗中,连接点在右边的按钮是用于设置输入信号的,使用的时候需要用鼠标在输入波形上的周期上拖拽一个区域,该区域会变成黑色区域,然后点击相应的信号节点按钮完成参数设置。其中,“0”,“1”,“X”,“Z”,“INV”,“G”参数,它们分别代表低电平、高电平、任意、高电阻、反相和总线数据,是用于设置不同频率的脉冲输入信号。假设乘客需要乘坐11站,购买2张票,投入10元纸币。信号参数设置图如图15所示沈阳大学毕业设计(论文)NO34图15仿真参数设置(5)运行仿真器进行仿真。顶层文件还要设置为此文件,选择主菜单“MAXPLUS”“SIMULATOR”,之后会出现仿真启动窗如图16,点击该窗口中的“START”按钮,就开始了对程序文件的仿真。在仿真运算结束后,显示“0ERRORS,0仿真结果如图16所示沈阳大学毕业设计(论文)NO35图16仿真启动图17仿真结果沈阳大学毕业设计(论文)NO365仿真结果验证在不同的购票阶段会出现不同的状况,需要从多个方面来验证各项功能的实现,最主要的就是取消键的实现和余额找零的实现,现在从这两个方面来验证仿真结果。51选票状态“取消键”验证现三位乘客需要乘坐11站,购买三张车票,但发现他需要在前一站下车,这就需要重新选站,这就需要使用取消键来解决回到选站状态。选票状态下按下“取消键”设置参数如图18所示图18参数设置沈阳大学毕业设计(论文)NO37按下“取消键”后,系统仿真结果如图19所示图19仿真结果从上面两张图可以看出,在选票状态时,按下“取消键”后,系统会自动回到初始状态,停留在选站状态。“取消键”在选票状态下的作用得以验证。52投币状态下“取消键”验证现两位乘客需要乘坐11站,购买两张车票,按照售票系统程序,进入投币状态,在投入5元纸币后,发现没有售票机可以识别的钱币了,只能选择其它交通方式,这时就要退回所投钱币。使用“取消键”可以实现退币功能。投币状态下参数设置如图20所示沈阳大学毕业设计(论文)NO38图20参数设置按下“取消键”后,系统仿真结果如图21所示图21仿真结果由图21可以得出,在按下取消键后,MOUT一项中出现余额找零5元,从沈阳大学毕业设计(论文)NO39仿真结果可以知道,乘客在投币状态时要想放弃购票退回自己已投钱币,可以通过“取消键”来完成操作。53余额找零验证乘客购买车票后,肯定不能正好完全投入系统需要的钱币,假如乘客都买3张票价为4元的车票,那么所买车票总额为12元,乘客投入两张面值为10元的钱币,这是系统会根据面值从大到小的钱币进行找零,也即是找零为1张5元和3张1元。购买车票参数设置如图22所示图22参数设置仿真结果验证如图23所示沈阳大学毕业设计(论文)NO40图23仿真结果由图23可以得出,验证了余额找零的正确性,和预想的想要达到的目的是一致的,系统会按照规定好的程序进行余额找零功能的执行。在MOUT一项中能够清楚的看到找零为1张5元和3张1元,这就证明的余额找零程序的正确性。沈阳大学毕业设计(论文)NO41结论本论文基本实现了地铁售票系统的整个售票过程。主要实现乘客在选站、选票、投币、出票、余额找零这几个状态的操作。其中有一个比较重要的问题是投币问题,投币口可识别的纸币和硬币都是有不同面值的,如何设置钱币累加过程,如何设置余额找零的顺序,以及出票过程和取消键的功能设置,都是售票系统中必须要解决的问题。在设计售票系统时,考虑到实际生活交通状况问题,把站台分为了不同的站点,在实际生活中可能会有更多的站,只需更改程序中的二进制码即可实现。不同的站数阶段内需要设置合理的票价段,规定不同站对应不同的单价,这样就能更贴近现实生活中的地铁售票系统。另外,在乘客提供的金额没有达到系统计算票价总额时,系统会提示乘客所投入的钱币不足,请乘客继续投币达到所需金额,此时乘客可以选择继续投币,也可以选择退钱放弃购票;继续投币,满足票价总额时系统会自动出票找零,放弃购票可以选择取消键,这样乘客提供的的钱币会全部退出,此次操作被取消,系统自动回到选站状态。在实现这些功能时本程序是采用状态机的原理进行编程的。本文主要体现VHDL在实际生活中的应用,随着数字化的进步,VHDL在逐步深入到各个领域的应用。沈阳大学毕业设计(论文)NO42致谢时光飞逝,光阴似箭。眨眼间,四年的大学生活就要结束了。回顾这四年的时间在沈大的求学经历,欢笑与泪水同在,成功与失败并存。借助此次论文的方式,截稿的机会,我谨向尊敬的老师,亲爱的同学以及始终支持我的亲人和朋友致以最诚挚的感谢。首先特别感谢我的导师吴琼老师。在与恩师朝夕相处的时光里,恩师不仅在学习和科研上耐心指导,并且在生活等方面给我很多帮助和教导,尤其在做人做事上对我的影响巨大。本论文是在吴琼老师的精心指导下完成的,在论文的选题、结构、内容和设计上,恩师都提出很多珍贵的意见和建议,给予我大量的鼓励与支持,使我圆满的完成了硕士阶段的学习。老师渊博的知识、认真的态度、风趣幽默的性格、严谨踏实的作风让我学习到了很多。在此,谨向吴琼老师致以最衷心的感谢此外,衷心感谢曾经指导过我的信息工程学院的各位老师,因为他们在这四年教给我的专业知识的基础和更深入的专业知识,感谢他们在我求学阶段给予的悉心教导和培养。另外,衷心感谢和我一起学习的朋友以及和我并肩学习过的同学们。他们认真的态度和严谨的作风值得我学习,能够和他们一起学习真的让我学到很多很多,非常感谢他们。最后,特别感谢我的父母和家人,在我人生的求学期间始终默默的支持与奉献,感谢他们给予我的爱和支持。多年来,如果不是父母在思想以及经济上的鼎力支持,我不可能坚持到今天。养育之恩无以为报,我只有不断的努力,不断地超越自我才是对他们最好的报答。沈阳大学毕业设计(论文)NO43参考文献1张霞VHDL在现代EDA中的应用J现代电子技术,2011,543522吕乐地铁自动售票系统设计研究J数字化用户,2013,1168873陈虹地铁自动售票系统交互设计J城市轨道交通研究,2012,756984刘楚生地铁售票系统控制设计J机械工程师,2012,856675林敏,方颖立VHDL数字系统设计与高层次综合M电子工业出版社,201211242416焦素敏E

温馨提示

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

评论

0/150

提交评论