




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(设计)( 2013 届 ) 题 目: 基于VHDL的自动售票机设计与仿真 学 院: 机电与信息工程学院 专 业: 电子信息工程 学生姓名: 刘方方 学号: 20906021033 指导教师: 赵年顺 职称(学位): 助教 合作导师: 职称(学位): 完成时间: 2013 年 月 日 成 绩: 黄山学院教务处制7学位论文原创性声明兹呈交的学位论文,是本人在指导老师指导下独立完成的研究成果。本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明确方式标明。本人依法享有和承担由此论文而产生的权利和责任。声明人(签名):年 月 日目 录摘要1英文摘要21 引言3 1.1 EDA介绍3 1.2 VHDL简介42 设计要求和分析5 2.1 设计要求5 2.2 设计分析5 2.3 购票系统流程分析63 自动售票机设计7 3.1 maxplus软件工具介绍7 3.2 课题设计过程84 波形仿真11 4.1 硬币购票仿真11 4.2 纸币购票仿真13结束语14参考文献14致谢14附录16基于VHDL的自动售票机设计与仿真机电与信息工程学院 电子信息工程 刘方方(20906021033) 指导老师:赵年顺(助教)摘要:课题设计是用VHDL语言编写自动售票机的运行控制系统,该售票机具有票物信息存储,进程控制,硬币处理,余额计算,显示等功能。在系统的初始化时开始输入车票的品种、价格和数量,然后进行自动存储。售票机可以识别的硬币币种为五毛和一元的面额;纸币币种为一元、二元、五元、十元的面额。当用户投入硬币时,系统将会自动累计数量,然后去对比地铁票的单价和数量,扣除价格,最后计算余额,找出所得零钱。本设计不考虑硬件的实现,只是进行了功能的相应仿真,为实验性质的课程设计。关键词:VHDL语言描述;自动售货机;MXAPLUS;系统仿真Design and Simulation of Automatic Ticket Vending Machine Based on VHDLLiu FangFang Director:Zhao NianShun (Assistant)(School of Mechanical Electronic & Information Engineering ,HuangShan university,HuangShan China 245041) Abstract: This article design a vending machine control system bass on VHDL language, the vending machine have the functions to storage the goods information, process control, coin handling, balance calculation, display and other functions. The ticket type , price and quantity in the initialization to be input when introduce the system, and then automatic stored. The vending machine can identify the coins of five cents and one dollar denominations. Paper currency is one yuan,two yuan,five yuan,ten yuan denomination.When the user input coins, the system will automatically account sum, and then to compare the ticket price and quantity ,after deducting price, finally calculated balance, find out the change.This design did not consider the hardware implementation, only the corresponding simulation function, experimental nature of the curriculum design.Key words:VHDL description language;vending machines;MXAPLUS ; system simulation1 引言1.1 EDA介绍在电子设计以及研究领域世界个各国都在进行研究和开发。许多电子水平发达的国家长期以来都在进行研究和探索,从而他们在行业内得到了更大的市场和发展空间1。经过长时间的积累,他们在设计方法和研究手段上高于世界其他国家。在电子产品设计中,随着可编程器件的诞生与使用,得到了外界共同的认可并得到了快速的发展。提高了电子开发水平,在设计中增加了设计的灵活性。而这些器件又可以通过软件程序来重组硬件结构实现不同的功能,这就使这些硬件可以方便的适应设计的需要。这一设计同时也改变了传统的系统设计方法和理念,在一定程度上促使了EDA技术使用的发展。在EDA的应用领域或空间来说,主要使用在集成电路和应用电子产品上。在半导体、微电子等行业主要使用到EDA的集成电路方面的应用,而这些集成电路设计一般都有专门的公司进行单独的设计,对于一般从事电子开发的人员来说无需过问集成电路领域,在日常开发中涉及的也会很少2。只需要对其有一个了解、有一定的认识和见解即可而不需要过多的去研究。随着计算机水平的不断提高,软硬件水平的不断强化。EDA的产生也是势必而成的。EDA的出现可以说是依赖于计算机技术的快速发展,而同时EDA的出现有进一步推动了计算机水平的提高3。二者之间相互依存、共同促进,是一个整体。其在发展上也是共同促进的。即在不与半导体设计制造厂商沟通,一切由电子系统设计者本身就可以完成的工作。EDA的发展趋势,其一、高度综合和优化,EDA支持系统级的综合与优化。优化是利用一定的优化手段使系统性能进一步提高。其二、并行设计即在相应的开发环境下进行并行作业,支持多人同时进行设计和使用,提高开发和使用的效率。其三、发展过程中实行的开放和标准化。在EDA设计中要符合相应的设计标准,在开放的基础上保证设计的标准不失真。在我国EDA技术逐渐的发展并成熟,但对于市场上许多的开发者都集中小型的ASIC领域研究,只有少数部分的设计者开发较为复杂的系统器件。在国际上为了能够有实力与其他国家形成竞争力,国内许多的设计者开始引进和学习EDA设计技术。EDA技术就是使用VHDL语言来进行硬件描述完成产品的设计与仿真4。完成后在计算机上进行编译、仿真、简化、优化、布局等一系列的工作,直到对特定芯片进行编译、映射、仿真等工作。EDA技术的发展使得在电子设计中的使用范围和频率越来越高。同时在设计中使用EDA能够带来更高的效率,为开发者带来极大的方便和支持。而在使用EDA进行VHDL语言编程时,开发者可以根据自己的设计思想对硬件功能进行赋予,在开发产品上有很大的自由性。而通过EDA设计,大部分的工作都由软件来完成无需人工去解决,减少了设计中的不少工作量以及提高了工作的效率。发展到现在EDA技术的适用范围进一步扩大,在各大领域以及设计中都有所使用。主要集中在电子、通信、机械制造、工业控制等领域。EDA在各大高校、各大公司等都有所使用。例如,街头常见的贩卖机、售票机、售货机等,都有EDA设计的产品。在一个产品的设计、性能测试、设计成果仿真模拟都有可能用到EDA技术。EDA技术是利用计算机作为平台,使用硬件语言来编程控制,最终实现设计的一门现代技术。使用EDA工具,开发者可以进行产品的设计、测试以及成果仿真。全程提高工作效率,开发过程中实现很多工作的智能化,由计算机来处理。这样不仅使得效率有所提高,更重要的是通过计算机处理这样准确性也得到了保证。1.2 VHDL简介VHDL语言从功能上来说非常强大,作为硬件描述语言其在设计上可以完成对硬件的编程,同时使用起来不复杂易于使用。设计中模块化结构分明,简洁易读易懂,绝对可以说是一门很成功的编程语言5。同时,VHDL语言具有易于修改、支持范围广泛等特点,并且其已经被IEEE定位为标准硬件描述语言。这使得EDA以及VHDL语言的未来一片光明,发展前景非常可观。因其模块化的编程结构思想使得程序易于修改并且可读性较强。在硬件控制能能力上来说,VHDL语言能基本实现我们所能使用到的硬件控制功能。并且语言描述完成后,其支持很多的硬件结构,可以通过选择不同的硬件结构来对其进行仿真。从另一个侧面来说,也就是该硬件描述语言VHDL的移植性较强,可以使用在不同的硬件结构上。设计人员不同考虑设计后我们所要完成的器件,只要考虑设计即可进行。这些都是得益于其超强的移植能力。而模块化编程思想更是一大进步和优点,这使得设计模块时我们可以使用之前设计好的模块以及本次设计模块也可以供以后设计时使用。从而极大程度的来节省了重复开发的时间和精力。同时,模块化的编程易于管理和日后修改6-7。在当今的社会背景下,信息化、智能化是未来的发展方向,随着科技水平的提高许多需要人力解决的事情逐渐的将会被及其所取代。而本设计实现的售票机也是社会发展的产物,同样也是人工转变成机器化的体现。而在当今时代下,使用售票机购票已经成为当今的一大时尚亮点。也是人们对于现代化购票机制以及设计人员开发成果的一种体验和享受。同时,使用售票机可以方便的购票,特别是不用人人都去车站排队买票一样。简单的操作即可获得,逐渐的深受广大人民的喜爱8。目前,在许多大城市,以及一些大型商场、学校、以及发达人多的地方都有售票机的摆放。解决人流量大,需求量大的购票问题。这些文明成果已经成为城市的必需品和常用品了。而这些售票机方便大家,同时也提高了效率,目前已在全国各大城市普及,尤其是在发达城市的地铁站内。在生活节奏快的时代里,解决了人多排队长、上班迟到、上学匆忙买票不方便等一系列的因素。同时也减少了人工售票花费的工作人力,提高了工作效率,也方便了人们。因为市场对这样产品的极力需求,使得其市场一片广阔,此设计的意义也就在此处。VHDL语言的各种有点使得我们不得不信VHDL的前景很好,而各种基于VHDL的设计也必将得到广泛的推广和使用9。2 设计要求和分析2.1 设计要求此设计是使用EDA技术设计地铁售票机,完成其各种售票功能的仿真。按照预定功能使用VHDL语言进行设计,再使用maxplus软件进行设计产品功能的仿真与验证。最后并进行系统的语言描述组织,完成论文设计的编写10。本设计要求售票机设计出两个投币口,其一为硬币的投入口,其二为纸币的识别口。而其中硬币的识别范围本设计中可以识别5角和1元硬币的投入。而纸币的设计识别范围为1元、5元、10元。当乘客按下开始购票按钮进行购票,此时只能选择一个出站口,根据选站的不同票价不同。设计中共设有16站,乘坐1-8站为2元票,8-16站位4元票。乘客购票时可以一次够几张票,设计中最多可以支持3张。投入钱币时可以连续投入钱币,也可以纸币硬币一起投入等。系统会计算投入钱币的数量。当投入金额大于所需时,找出余额,结束本次交易,系统恢复初始状态等待下次购票。在购票过程中乘客可以在出票之前按取消按钮来对其进行取消操作,取消购票后系统会自动退出之前投入的钱币,并且系统自动恢复到初始化状态等待再次使用。2.2 设计分析经过分析本自动售票机,其主要实现以下功能:站位站点的选择、购票数量的选取、投币的处理、出票和余额找零的处理以及输入出错时的取消返回和恢复初始状态的处理。售票简介:在购买车票时,乘客按“开始选择”按钮,然后选择出站口接着选择购票的数量(根据提示,一次购票的票数限制在3张以内);然后按“开始投币”按钮,开始投入钱币;当投入钱币到达所需钱币时系统会自动打开出票口进行出票。如果需要找零此时系统也会自动找零。考虑到设计的复杂性,本设计就不过多的去研究,在找零时全部以5角硬币形式给出。取消购票:在乘客进行购票操作在未出票前,乘客按取消按钮进行购票的取消,此时系统会自动退回投入钱币并恢复系统等待下次操作。取消购票分取消的时间段有着不同的设计和系统操作。但每次取消系统都会回到原始等待购票状态。票价计算:乘客购票只能选择一个出站口,根据其选择的出站口和当前所在站来计算所需要的票价。本设计全程共有16个站位,即乘客最多可以乘坐15站。而这15站使用4位二进制来表示,即1站用0001表示,15站用1111表示。如果乘坐站位在8站之内则票价为2元。如果乘坐的站位超过8站,则票价为4元。钱币设计表示方法:售票机有两个投币口,一个为硬币口,一个为纸币口。硬币口可以使用5角和1元的硬币而纸币口可以识别1元、5元、10元的人民币。硬币采用两位的二进制表示即10表示1元硬币,01表示5角硬币。而纸币采用4位二进制表示,例如:1元使用0001表示,5元采用0100表示。购票状态的表示:别用00、01、10表示。退币时,拉开将乘客投入钱币自动给出。设计中暂存杆设计为3种状态:即等待状态、退币状态、进币状态。暂存杆在不同状态下有不同的作用。暂存杆一般情况下主要用来挡住缓存投入钱币,只有在进币状态下,暂存杆才会将钱币推入购票机内部。2.3 购票系统流程分析首先当对自动售票机无操作时要在初始化状态下,即为等待购票时售票机的状态,在初始化状态下按下“开始购票”后系统开始进入购票模式。在此模式下用户可使用所有的购票功能。接着必须要选择的是需要乘坐到达的站位,再选择需要购票的数目。系统会根据选择的站位和购票的数目来判定所需要的投币金额,根据系统提示所需的投币金额进行投币。当投入的钱币达到所需的数目时,系统会自动从出票口出票,并将投入的钱币入库。当投入金额大于所需金额时,系统会自动出票并及时找零。购票过程中若有选择错误,可选择取消。如:在选择目的地、选择够票数时出错,可选择取消来恢复到初始化状态;当在投入钱币但不到所需金额时如有特殊情况可选择取消,系统会自动退回投入的钱币并恢复到初始化状态等待下一次购票。具体的购票流程图如图2-1。初始状态开始选择目的地选择够票数开始投币投入钱币取消取消退回钱币投币足够出票找零图2-1 购票流程图3 自动售票机设计3.1 maxplus软件工具介绍Max+plus是由Altera公司开发,并提供集成开发环境的EDA仿真软件。其界面设计不仅友好,而且使用方便、对于初学者也是易于使用的一种设计类软件。而Altera也是世界上有名的可编程器件的供应商。在此软件上可以完成很多操作,大大节约了人力的劳动时间。是设计者更加易于进行设计的输入、处理和元器件编程。设计处理操作简单且具有高效率,人机环境友善的开发工具,特别适合初学者使用12。其软件打开界面如图3-1所示。图3-1 软件打开界面Max+plus的特点:1、界面开放Max+plus支持由其它公司提供的EDA工具接口。如:Mentor Graphics,Cadence,Viewlogic,Synplicty13。2、结构与设计无关Max+plus设计中无需考虑设计后需要支持和使用何种硬件结构,只需要设计好我们的产品设计以及VHDL语言的硬件描述即可。其支持很多的硬件结构,故其可编程环境与硬件结构无关。3、高度集成化在一个软件的一个开发环境下,可以实现从设计、测试、功能仿真等操作,在一个环境下集成了很多功能。这样可以使开发方便、便于使用,缩短开发的时间。4、VHDL硬件描述语言此语言在使用上易于修改与编写,且该语言支持的硬件环境广泛。同时该语言还被IEEE批准为标准的硬件描述语言。5、模块化工具设计中硬件描述语言的设计成模块化设计,这样设计可以使用之前的模块。当前的模块也可供以后的设计使用。3.2 课题设计过程1、设计流程简介使用Max+plus来设计和仿真一个项目主要有几个部分,本设计的流程图如图3-2所示。此图即为此设计的整体流程与设计走向。下面的说明仅针对本论文设计所述。设计输入在本论文中主要使用VHDL语言输入。语言输入正确完成,最后以其实体名来保存,编译验证程序是否有问题。如没有问题则可进行波形时序仿真。如果其中有任何的不正确或者不适当的地方要及时加以修正。设计输入仿真编译测试编程修改设计图3-2 软件设计流程2、设计操作步骤创建工程设计,打开软件Max+plus,点击菜单“FILE”下拉菜单选中新建“NEW”,如下图3-3所示:图3-3 新建工程文件然后在新建的HDL语言输入框中输入程序并保存起来,保存的文件名必须为程序中的实体名,此处则为subway。此文中代码可实现硬币和纸币等投入不同币种的购票方式。其相应的代码分别为:coin:in std_logic_vector(1 downto 0);-硬币入口entity subway isport(clk:in std_logic; -系统时钟select_start:in std_logic; -“开始选择”按钮insert_start:in std_logic; -“开始投币”按钮note:in std_logic_vector(3 downto 0); -纸币入口cancel:in std_logic; -“取消”按钮ticket_stop:in std_logic_vector(3 downto 0); -出站口编号ticket_account:in std_logic_vector(1 downto 0);-购票张数money_gate:out std_logic_vector(1 downto 0); -钱币“暂存杆”ticket_out:out std_logic_vector(4 downto 0);-购买的车票ticket_gate:out std_logic;-出票口change_gate:out std_logic-找零口); end subway;当投入硬币时其代码为:case coin is-硬币识别 when 01=total_insert:=total_insert+00000101; -5角硬币when 10=total_insert:=total_insert+00001010; -1元硬币when others=null;end case;当投入纸币时代码为:case note is-纸币识别 when 0001=-1元纸币total_insert:=total_insert+00001010; -重新计算投币总额when 0010=total_insert:=total_insert+00010100; -2元纸币when 0100=total_insert:=total_insert+00110010; -5元纸币when 1000=total_insert:=total_insert+01100100; -10元纸币 when others=null; end case;接着就是将设计项目设计成工程文件。对于当前工作工程的切换,需要我们在设计中使用软件时进行设置。把我们需要设置的project设置为当前的project。其设置可在菜单栏中单击“FILE”下拉菜单中选“project”,再选择“set project to current file”,如下图3-4所示。设置为当前工程后就要对其进行编译检查文件工程是否存在设计中的异常,也就是检查程序设计是否可以通过编译器的检查。如无异常则程序OK,反之则需要重新修改程序。通过菜单栏的“Max+plus”中的“compiler”即可开始编译,出现选择开始的编译选项框,如下图3-5所示。 图3-4 设置工程文件 图3-5 编译开始选择点击“start”即可完成编译,得到编译结果(如图3-6)。图3-6 编译结果编译完成后,点击“File”下拉菜单中的“Edit symbol”进行硬件脚位仿真和验证。再新建图形编译文件工程,在编辑框中右键点击加载“Edit symbol”。具体脚位图如图3-7所示。从仿真得到的脚位图可以知道,此脚位图中有8个输入端口和4个输出端口。每个端口起不同的作用。从程序设计中也可以看出此脚位设计为8个输入端口和4个输出端口,从端口数目和名称等各个信息上看,仿真结果都与设计程序相一致。图3-7 仿真脚位图4 波形仿真4.1 硬币购票仿真此段仿真验证投入硬币购票且无需找零情况下的处理,波形仿真步骤与思路如下所述,在上面仿真的基础上选菜单“File”下拉菜单中选”New”,此时出现的选择图与图3-3一样,然后再新建的HDL语言框中选择“Waveform Editor file”,点击“OK”(如图4-1所示)。图4-1 新建仿真图文档点击“OK”后进入波形仿真界面。在此界面中鼠标右键点击选择“Enter Node from SNF”即加载波形仿真文件的输入引脚,输出引脚。根据自己所要仿真的功能选择所需要的引脚进行功能仿真。此处仿真选择的输入输出引脚依据前面生成的仿真脚位图进行选取如图4-2为仿真脚位选取。图4-2 仿真脚位选取仿真脚位选取好后,点击确定“OK”按钮进入仿真波形界面。再进行相应的调整和设置,依据设计的实际情况进行。在本设计仿真中,点击菜单栏“File”选中“End Time”设置仿真时间为34us。再进行波形时间间距以及引脚的上下位置进行调整,使得接下来波形的视觉效果更佳。如图4-3所示。图4-3 仿真界面界面调整好后,接下来就是要依据仿真的实际情况进行时钟和输入引脚波形的设计。本仿真主要是使用硬币购票时的功能仿真。选择clk对时钟进行设置,此处设置时钟周期为0.1us(主要是为了易于仿真图形的解读)。然后按照模拟购票步骤进行开始、选票、投币等设置。如:触发购票开始(select_start置一高电平进行触发)、到达站位选择(ticket_stop选择3站)、够票数选择(ticket_account选取1张)、投入钱币(coin投入一元硬币一枚、五角硬币两枚)。设置如图4-4所示。图4-4 仿真设置图仿真输入引脚的信息设置完成后就是要进行仿真验证输出了。此处先进行保存和当前工程文件的设置。然后点击“Max+plus”选择“simulator”进行功能仿真。此处得出的仿真图形如图4-5所示。图4-5 仿真图形通过此仿真图可以得出如下信息:(1) 仿真中乘客约在7.5us时进行开始购票选择。(2) 此乘客选择乘坐3站,故得出票价为2元,且选择购票一张,得出购票总金额为2元。(3) 乘客在8us时开始进行投币。且乘客依次投入1元硬币、5角硬币、5角硬币,系统实时计算投入的总金额。(4) 系统计算投入的总金额是否已经达到票价总额。若达到系统进入出票状态:系统准备好2元的票1张,出票口打开出票。(5) 出票口出票约在9us左右,出票完成后系统自动回到初始原状态,从仿真图来看大约在9.3us之后系统恢复到原来初始化时一样。通过此仿真和仿真波形中可以看出,系统购票成功,各端口波形变化都符合设计思想要求,此仿真完全达到预期的售票功能。故售票机的售票无找零情况下购票功能是正常的。4.2 纸币购票仿真纸币购票仿真步骤与上面的硬币购票仿真步骤一致,不同之处在于此处投入的是纸币,此次仿真中投入的是5元纸币,在程序中使用二进制“0100”表示。也就是在输入波形设置时不选coin而在note上选择5元投币0100。然后按照上面硬币仿真进行。得到仿真图如下图4-6所示。图4-6 仿真图形通过仿真图可知实现的购票功能如下:(1) 乘客大概在6.3us时按下开始购票。系统进入选择状态。(2) 乘客选择的乘坐站位为9站,超过8站则票价为4元,该乘客够票数为1张,总金额为4元。(3) 从仿真图中可以看出该乘客在7.5秒左右开始投币,此乘客购票采用5元纸币投币。(4) 系统比对投币是否达到票价金额,从该仿真图中可以看出系统大概在9us左右,进行金币、找零和出票工作。(5) 出票完成后,从仿真图中看出大概在10us后系统恢复到之前状态。等待下一次使用。从以上仿真中可以看出在使用纸币购票过程中,选择购票、站位选择、购票数、投入钱币等都正常。且系统输出一张4元(10100)的票,出票口打开出票功能正常。故可验证此仿真完全符合预先制定的设计功能计划。从仿真结果中可以知道本设计已完成论文任务要求的基本功能验证。结束语对于本论文基本实现了课题所要求的自动售票机的功能,例如:纸币和硬币的两个进币口,可识别的纸币、硬币的范围。连续投币问题,出票和找零问题,同时还填充了在购票时的各种取消购票问题的处理。本设计还是存在一些优点:第一、在设计时考虑到选站问题,在本设计中把站位共分16站。选择不同站位出现不同票价,这样设计的好处是更能贴近实际生活中的自动售票机。第二、在乘客投币不足或遇什么特殊情况无需购票时,乘客可以自己取消购票并能及时的退回投入的钱币。取消操作进行后,系统自动恢复到选站状态。第三、本设计利用Max+plus仿真,更能直观的体会设计的优越性。本设计只是给出了波形仿真结果,但在EDA设计过程中,这仅仅只是理论的设计和研究。最后还是需要把理论研究运用起来,即下载程序了FPGA中,这也是EDA设计的步骤,本论文的研究不是完整的。此外存在一些不足,如代码结构有些不合理,扩展性不强等等。参考文献1 王雯隽.基于Verilong-HDL自动售货机的设计与实现M.北京:北京航空航天大学出版社.2005:33-45.2 陆运华.EDA技术及发展趋势J.家电科技.2004(3):6-11. 3 王晓峰.电子设计的EDA技术应用J.长春师范学院报:自然科学版,2005,24(5):19-25.4 ZHANG W J.VHDL tutorial learn by exampleM.2007:25-36.5 Harness The Power of VHDL for PLD Design Electronic DesignM.1994:19-26.6 辛春艳.VHDL硬件描述语言M.北京国防工业出版社,2002(1):4-18.7 赵世霞.VHDL与微机接口设计M.北京清华大学出版社,2004:24-38.8 曾繁泰.VHDL程序设计M,第一版.清华大学出版社,2000:11-29.9 甘历.VHDL应用于开发实践J.科学出版社,2008(5):17-29.10 赵淑范,王宪伟.电子技术实验与课程设计M北京:清华大学出版社,2006(1):12-33.11 陈光明,施金鸿.电子技术课程设计与综合试训M.北京:北京航空航天大学出版社,2007:10-15.12 赖义汉.自动售货机控制系统VHDL有限机状态实现北京M科学出版社,2007:45-56.13 DOULOS A.The designers guide to VHDLJ.2007:12-25.致谢 行文至此,我的这篇论文已接近尾声;岁月如梭,我四年的大学时光也即将敲响结束的钟声。离别在即,站在人生的又一个转折点上,心中难免思绪万千,一种感恩之情油然而生。 终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师-赵老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。在此向帮助和指导过我的各位老师表示最中心的感谢! 感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我很多的素材,还在论文的撰写和排版灯过程中提供热情的帮助。 由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正。谢谢!附录程序源代码及注释:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subway isport(clk:in std_logic;-系统时钟select_start:in std_logic;-“开始选择”按钮insert_start:in std_logic;-“开始投币”按钮coin:in std_logic_vector(1 downto 0);-硬币入口note:in std_logic_vector(3 downto 0);-纸币入口cancel:in std_logic;-“取消”按钮ticket_stop:in std_logic_vector(3 downto 0);-出站口编号ticket_account:in std_logic_vector(1 downto 0);-购票张数money_gate:out std_logic_vector(1 downto 0);-钱币“暂存杆”ticket_out:out std_logic_vector(4 downto 0);-购买的车票ticket_gate:out std_logic;-出票口change_gate:out std_logic-找零口);end subway;architecture behave of subway istype state_type is (initialize_state,select_state,insert_state,ticket_state,change_state);-状态变量申明signal state:state_type;-状态信号申明beginprocess(clk)variable type_temp:std_logic;-记录是否已选择出站口的变量variable account_temp:std_logic;-记录是否已选择购票张数的变量variable temp_type:std_logic_vector(4 downto 0);-记录票种的中间变量variable temp_account:std_logic_vector(4 downto 0); -记录票数的中间变量variable price:std_logic_vector(7 downto 0);-记录单张票价的变量variable number:std_logic_vector(1 downto 0);-记录票数的变量variable total_price:std_logic_vector(7 downto 0);-记录总票价的变量variable total_insert:std_logic_vector(7 downto 0);- 记录投入钱币总额的变量variable change:std_logic_vector(7 downto 0);-记录应找零金额的变量variable sign:std_logic;-记录系统是否已经过初始化的变量variable temp:std_logic;-记录投入钱币金额达到总票价的变量beginif (clkevent and clk=1) then-时钟信号上升沿触发case state iswhen initialize_state=-初始状态if(sign=0)then-表示系统未经过初始化 money_gate=00;-钱币“暂存杆”退出钱币ticket_out=00000;-购票记录清零ticket_gate=0;-出票口关闭change_gate=0;-找零口关闭temp_type:=00000;-票种记录清零temp_account:=00000;-票数记录清零type_temp:=0;account_temp:=0;price:=00000000;-单张票价记录清零number:=00;-购票张数记录清零total_price:=00000000;-票价总额记录清零total_insert:=00000000;-投入钱币总额记录清零change:=00000000;-应找零金额记录清零sign:=1;-记录已完成系统初始化temp:=0;-投入达到总票价记录清零else-表示系统已经过初始化money_gate=01;-钱币“暂存杆”归为等待状态if (select_start=1) then-按下“开始选择”按钮sign:=0;state-选择状态if(type_temp=0)then-表示尚未选择出站口if(ticket_stop=0001)and(ticket_stop=1001)and(ticket_stop-选择3张票temp_account:=00100;-表示3张票number:=11;-购票张数为3total_price:=price+price+price; -计算总票价account_temp:=1; -记录已选择购票张数 when 10=-选择2张票temp_account:=00010;number:=10;total_price:=price+price;account_temp:=1; when 01=-选择1张票temp_account:=00001;number:=01;total_price:=price;account_temp:=1; when others=null; end case;end if;if(type_temp=1)and(account_temp=1)then-表示已选择出站口且已选择购票张数if(insert_start=1) then-按下“开始投币”按钮state=insert_state;-系统进入投币状态end if;end if; if(cancel=1) then-按下“取消”按钮state-投币状态 case note is-纸币识别 when 0001=-1元纸币total_insert:=total_insert+00001010;-重新计算投币总额 when 0010=total_insert:=total_insert+00010100;-2元纸币 wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学基础知识考核试卷及答案
- 2025-2030中国洗洁精行业市场全景调研及投资价值评估咨询报告
- 2024药剂类考试准备材料试题及答案
- 心理咨询中的心理教育功能分析试题及答案
- 学习动机激发试题及答案建议
- 精确突破2024年系统规划与管理师考试试题及答案
- 教师资格考试备考指南试题及答案
- 提供支持2025年育婴师考试试题及答案
- 2025年乡村全科执业医师考试备考策略试题及答案
- 甘肃省临洮县第二中学2025年高三第四次模拟考试物理试题
- 江苏省苏州市2024-2025学年高二化学下学期期中试题含解析
- DG-TJ 08-2407-2022 城市道路交通安全评价标准
- 人教A版(新教材)高中数学选择性必修第二册综合检测
- 2024汽车行业社媒营销趋势【微播易CAA中国广告协会】-2024-数字化
- 打印复印服务合同
- 作业人员触电一般B类事故案例 (1)课件讲解
- 2024年福建省中考化学试卷附答案
- 钢质模锻件金属流线取样要求及评定
- GIS分析-第3章-空间量测与计箣
- 叙事护理学智慧树知到期末考试答案章节答案2024年中国人民解放军海军军医大学
- 煤矿各岗位应知应会明白卡集合
评论
0/150
提交评论