VHDL描述的自动售货机系统毕业论文

上传人:s**** 文档编号:70405864 上传时间:2022-04-06 格式:DOC 页数:36 大小:505KB
收藏 版权申诉 举报 下载
VHDL描述的自动售货机系统毕业论文_第1页
第1页 / 共36页
VHDL描述的自动售货机系统毕业论文_第2页
第2页 / 共36页
VHDL描述的自动售货机系统毕业论文_第3页
第3页 / 共36页
资源描述:

《VHDL描述的自动售货机系统毕业论文》由会员分享,可在线阅读,更多相关《VHDL描述的自动售货机系统毕业论文(36页珍藏版)》请在装配图网上搜索。

1、 . . . 毕业设计(论文)题 目:基于FPGA的自动售货机控制系统设计 专业:应用电子技术班级:10222学 号:39号姓 名:伊嵘指导老师:肖菊兰工业学院二一三年五月32 / 36论 文 摘 要随着电子技术的发展,当今数字系统的设计正朝着速度快,容量大,体积小,重量轻的方向发展,推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术,AISC芯片具有价格低,体积小,可靠性高等优点,目前在电子产品中已有广泛的应用,VHDL是一种用来描述数字逻辑系统的“编程语言”,它通过对硬件行为的直接描述来实现对硬件的物理实现,代表了当今硬件设计的发展方向。本文是在VHDL的基础上对自动售货机进行设

2、计来实现其基本功能的,采用了Altera的开发软件Quarts II。通过在该软件平台上进行数字电路设计和仿真的方法,阐述了VHDL(Very High Speed Integrated Circuit Hardware Description Language)超高速集成电路硬件描述语言的一些特点与语法结构,介绍了自动售货机的基本原理、系统组成和主要功能,并分析讨论了用VHDL语言开发自动售货机系统的设计流程。本设计采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,在Quartus II软件平台上进行编译和仿真。 文章首先简述了自动售货机系统的意义和发展现状以与VHDL语言的

3、特点,然后介绍了自动售货机的设计要求、设计思路,并给出了总体设计框图,通过分析设计写出VHDL程序源代码,将代码在Quartus II软件平台上进行编译仿真,波形基本符合设计要求。最终完成的自动售货机系统具有商品选择,投币处理、出货找零、异常退币等主要功能,整个系统的开发体现了在Quartus II软件平台上用VHDL设计数字控制系统的实用性。关键词:自动售货机,硬件描述语言VHDL, Quarts II,FPGAAbstractWith the development of electronic technology, todays digital system design is movi

4、ng fast, large capacity, small size, light weight and direction of development, and promote the rapid development of the trend is increasingly the engine of progress and improvement of the ASIC design techniques, AISC chip has a low price, small size, high reliability, and is currently in electronic

5、 products has been widely used, VHDL is a digital logic system used to describe the programming language, which acts by direct description of the hardware to the physical implementation of the hardware, the hardware design represents the current direction of development. This article is based on the

6、 VHDL design for vending machines to achieve its basic functions, using Alteras development software Quarts II. By the software platform for the digital circuit design and simulation method, elaborated VHDL (Very High Speed Integrated Circuit Hardware Description Language) high-speed integrated circ

7、uit hardware description language, some characteristics and grammatical structures introduced the basic principles of automatic vending machine , system components and major functions, and analyzed and discussed using VHDL language development vending machine system design flow. The design uses VHDL

8、 hardware description language design methods core of the system hardware circuit procedures, the Quartus II software platform to compile and simulation.The article first outlines the vending machine system development status as well as the meaning and characteristics of the VHDL language, then intr

9、oduces the vending machine design requirements, design ideas, and gives the overall design diagram, through analysis and design to write VHDL source code , the code in the Quartus II software platforms compiled simulation, waveform basically meet the design requirements. The finished product selecti

10、on system has a vending machine, coin handling, shipping give change, unusual coin and other major features, reflects the development of the entire system in the Quartus II software platform design of digital control systems using VHDL practicality.Key Words: Vending machines, VHDL, FPGA, The Quartu

11、s II目录论文摘要Abstract第1章绪论11.1题目背景与选题意义:11.2设计方案比较与选择:21.3自动售货机控制电路的性能要求:2第二章自动售货机控制电路总体设计3第三章自动售货机控制电路各模块信号分析51.主分频器模块52.主控制器模块63.选择定时模块64.商品金额计算模块65.给钱处理模块76.找零出货模块7第四章自动售货机控制电路的算法状态机图描述81.主控制器模块81.1商品种类选择控制状态机图81.2.商品数量选择控制状态机图81.3.启动/取消控制算法状态机图描述122. 选择定时模块12第五章自动售货机控制电路各模块仿真结果与分析151.主分频器模块仿真波形:152

12、.主控制器模块仿真波形:153.选择的定时模块仿真波形:164.商品金额计算仿真波形:165.给钱处理模块仿真波形:166.找零出货模块仿真波形:177.顶层模块仿真波形:17第六章自动售货机控制电路的具体VHDL描述181.主分频器模块182.主控制器模块193.选择的定时模块234,商品金额计算模块255,给钱处理模块276,找零出货模块287顶层文件29结束语32致33参考文献33第1章 绪论1.1题目背景与选题意义:随着电子技术的发展,当今数字系统的设计正朝着速度快,容量大,体积小,重量轻的方向发展,推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术。本数字系统的设计可以直接

13、面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述,综合,优化,仿真与验证,直到生成器件。上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自动地完成,也就是人们所谓的电子设计自动化,这样大缩短了系统的设计周期,以适应当今品种多,批量小的电子市场的需求,提高产品的竞争能力。VHDL是一种用来描述数字逻辑系统的“编程语言”,它通过对硬件行为的直接描述来实现对硬件的物理实现,代表了当今硬件设计的发展方向。第一,VHDL功能强大,灵活性强:VHDL具有功能强大的语言结构,可用简洁明确的代码描述来进行复杂控制逻辑的设计,并且它为了有效控制设计的实现,它还具

14、有多层次的设计描述功能,支持设计库和可重复使用的元件生成,它还支持阶层设计,并提供模块设计的创建,VHDL是一种设计,模拟,综合的标准硬件描述语言。第二,VHDL不依赖于器件设计:VHDL允许设计者生成一个设计,而并不需要首先选择一个用来实现设计的器件,对于同一个设计描述,可以采用多种不同的器件结构来实现其功能,若需要对设计进行资源利用和性能方面的优化,也并不是要求设计者非常熟悉器件的结构才行。第三,VHDL可移植性:VHDL的可移植性允许设计者对需要综合的设计描述进行模拟,在综合前对一个数千门的设计描述进行模拟,可以节约设计者可观的时间,在这时发现设计上的瑕疵,就能够在设计之前给予纠正,因为

15、VHDL是一个标准语言,故VHDL的设计 描述可以被不同的工具所支持,可以从一个模拟工具移植到另一个模拟工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台去执行。第四,VHDL性能评估能力:非依赖器件的设计和可移植能力允许设计者采用不同的器件结构和不同的综合工具来评估设计,在设计者开始设计之前,无需了解将采用何种器件,设计者可以进行一个完整的设计描述,并且对其进行综合,生成选定的器件结构的逻辑功能,然后评估结果,选用最合适你设计需求的器件,为了衡量综合的质量,同样可以用不同的综合工具所得到的综合结果来进行分析和评估。第五,VHDL开发的产品上市时间快,成本低:VHDL

16、语言的设计将大大提高数字单片化的设计实现速度,它使设计描述快捷,方便,使设计的快速复制简便易行,VHDL和可编程逻辑的组合作为一类强有力的现场集成设计方式,将为设计者产品的上市带来创纪录的速度。鉴于VHDL具有以上诸多优点,只要开发者具备一定的高级语言程序设计基础,拥有Pascal、C等计算机高级语言的基础,同时又了解一些基本数字电路的设计方法,在此基础上来学习VHDL程序设计应该是比较容易的,可以轻松地掌握VHDL使硬件工作软件化。现代电子系统设计人员应该把VHDL语言作为一种基础知识来学习,并要求能够熟练地使用EDA的设计工具。1.2设计方案比较与选择:本文是在VHDL的基础上对自动售货机

17、进行设计来实现其基本功能的。由于以往的设计主要是通过两种方式:通过数字电路和模拟电路设计、基于单片机的设计。第一种方式的缺点既所设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;而基于单片机的设计,虽然其有着开发与制作成本低,能较大程度的利用资源,但其外围电路较多,且调试复杂,抗干扰能力差,且对设计者的要求比较高,设计者对软硬件都必须非常熟悉,由于主要是软件运作,容易出错,造成系统不稳定,可能会出现投入钱币却不出售货物的情况,导致计价器不够准确;而本文采用VHDL硬件描述语言将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,易

18、于进行功能扩展,外围电路较少,采用硬件逻辑电路实现,其最大的优点是稳定性好,抗干扰能力强,非常适合作为自动售货机系统的控制核心,所以选择用VHDL来对自动售货机进行设计来实现其控制功能。1.3自动售货机控制电路的性能要求:1自动售货机能出售三种不同单价的货物,并且能对商品数量进行1,2,3个/瓶选择。2自动售货机给出30秒的选择时间,时间倒计时到系统进入停止状态,放弃购买操作。3系统上电复位后默认选择商品1,数量1,通过商品种类选择按键和商品数量选择按键来满足购买需要。每按一次按键转换一次,可多次进行循环选择。当购买结束后,自动返回初始设定状态,等待再次启动。4. 通过启动/取消复合按键,来启

19、动购买和取消购买,每按一次状态转换一次。5. 能识别1元,5元,10元纸币(本系统希望一次性投入大于选择商品金额的纸币,不给连续投币的机会)。第二章 自动售货机控制电路总体设计根据上述对自动售货机控制电路的性能要求,可以画出自动售货机总体结构框图和系统操作流程图,见下图。该控制器由六大模块组成:主分频器模块(sysclk_div):产生秒信号,用于选择的倒计时,当倒计时时间到,系统认为放弃选择操作,使系统能自动复位;只有在倒计时未到之的选择有效。主控制器模块(main_control):它是自动售货机的主控制电路,控制商品种类选择,商品数量选择,启动/取消操作,和确认购买操作,以与对其它模块的

20、工作控制。选择的定时模块(timer_count):用于选择倒计时时间计算,当启动系统时,到计时开始计时,当取消或确认购买时,倒计时终止并且计时值清零,等待再次启动,又初始倒计时。商品金额计算模块(money_count):根据对商品的种类和数量的选择,计算出商品的总金额,它是在倒计时未到,系统启动并且确认购买的条件下工作的。给钱处理模块(give_money):处理顾客投入的金额,它也是在倒计时未到,系统启动并且确认购买的条件下工作的。找零出货模块(change_deliver):在对商品的实际金额和顾客投入的金额比较,判断投入金额是否大于商品实际金额后,若大于则出货并找零;若小于则推出顾客

21、投入的金额。自动售货机控制电路的结构框图:自动售货机总体结构框图自动售货机操作流程:系统先上电进入初始化状态,当顾客启动系统与开始购买时,系统进入倒计时选择商品状态,选择商品种类和商品数量,当对商品选择好了确认购买以后,系统进入投币状态,之后系统进入比较币价状态,与将顾客投入的金额与商品实际的金额进行比较,当大于商品价格时,系统进入出货商品状态,同时找零和退币;当小于商品价格时,系统直接进入找零,退币状态,退出顾客已投入的金额,之后系统结束自动购买等待系统再次启动。:系统操作流程图第三章 自动售货机控制电路各模块信号分析1.主分频器模块主分频器用来产生1秒的时钟供主控制器使用,本设计使用民用的

22、石英晶体,其振荡频率为76.8kHz。这样主分频器的分频系数为76800,现采用4个分频器构成主分频器的分频电路,分别是一个256分频器,2个10分频器和一个3分频器,主分频器结构如下:2.主控制器模块主控制器的功能是根据各输入按键的状态,输出对应的控制信号,控制选择定时模块,商品金额计算模块,给钱处理模块和找零出货模块的工作。主控制器的输入信号和输出信号如上述的结构框图,分别叙述如下:(1)输入信号: reset:上电复位输入; sysclk:系统时钟输入; start_cancel:启动与取消按键输入; quantity_sel:商品数量选择按键输入; type_sel:商品种类选择按键输

23、入; timer_down:选择定时到信号输入。(2)输出信号: start_out:启动与取消同步信号输出; type1_out:商品种类1的选择信号输出; type2_out:商品种类2的选择信号输出; type3_out:商品种类3的选择信号输出; quan1_out:商品数量1的选择信号输出; quan1_out:商品数量2的选择信号输出; quan1_out:商品数量3的选择信号输出;3.选择定时模块选择定时模块的功能是根据主控制器送来的start_in启动与取消信号,启动与取消定时,这个时间用与商品种类与数量的选择倒计时,当倒计时时间到系统复位与默认顾客放弃选购商品,且当倒计时到后

24、其它的模块不工作,如不用商品金额计算,给钱处理和找零出货。(1)输入信号:clk:秒脉冲输入信号; sysclk:系统时钟输入信号; start_in:启动与取消定时输入信号; ok_buy:确认购买商品按键输入信号。(2)输出信号: timer_down_out:选择倒计时到输出信号。4.商品金额计算模块商品金额计算模块是根据主控制器输出的商品种类和商品数量信号,来计算选购商品的总金额,其输入和输出信号分别如下:(1)输入信号: ok_buy:确定购买商品按键输入信号; reset:复位信号; sysclk:系统时钟输入信号; start_in:启动与取消操作信号; timer_down:选

25、择倒计时到输入信号; type1_in:商品种类1的输入信号; type2_in:商品种类2的输入信号; type3_in:商品种类1的输入信号; quan1_in:商品数量1的输入信号; quan2_in:商品数量2的输入信号; quan3_in:商品数量3的输入信号。.(2)输出信号: money_1:选择商品总金额输出信号。5.给钱处理模块给钱处理模块主要是根据顾客在确认购买商品后,计算并输出顾客投入的总金额,其输入和输出信号分别如下:(1)输入信号: reset:复位信号; sysclk:系统时钟输入信号; start_in:启动与取消操作信号; timer_down:选择倒计时到输入

26、信号; ok_buy:确定购买商品按键输入信号; give_1yuan:1元纸币输入信号; give_5yuan:5元纸币输入信号; give_10yuan:10元纸币输入信号;(2)输出信号: money_2:顾客投入的纸币金额输出信号。6.找零出货模块找零出货是对顾客投入的金额与选购商品金额比较后的找零出货动作,其输入和输出信号分别如下:(1)输入信号: reset:复位信号; sysclk:系统时钟输入信号; start_in:启动与取消操作信号; timer_down:选择倒计时到输入信号; ok_buy:确定购买商品按键输入信号; money_1:选择商品总金额输入信号; money

27、_2:顾客投入的纸币金额输入信号。(2)输出信号: deliver:出货信号; change:找零金额输出信号。第四章 自动售货机控制电路的算法状态机图描述由系统的分析可知,自动售货机控制电路主要是控制电路和计数电路,因此直接用算法状态机图描述比较简洁。本次设计的自动售货机能销售3种不同单价的商品,且能对商品的数量进行1,2,3的选择,这样主控制器共有9种状态,如果用这9种状态的算法状态机图来描述,则其状态转换将会变得复杂而难以处理,当考虑到商品种类和商品数量的选择是相对独立的,没有很强的关联性,因此,可以用3个算法状态机图来描述。1.主控制器模块1.1商品种类选择控制状态机图系统复位后进入默

28、认的商品种类1状态,并输出默认状态的控制信号set_type1,并判断定时倒计时信号timer_down是否有效,如果有效,则表明放弃继续购买,set_type1置0回到系统默认状态;如果无效则判断商品种类选择按键是否按下,如果未按下,则仍处在默认状态,如果已按下,则进入商品种类2状态与set_type2置1。通过类似的操作和判断,该状态机可在商品1,商品2,商品3三种状态下循环选择和工作,并送出相应的状态信号,具体的VHDL代码框图如下图中的图(一)。1.2.商品数量选择控制状态机图商品数量选择控制状态机图如上所示,其结构与商品种类选择控制状态机图一致,所不同的仅仅是状态名,状态输出信号和引

29、起状态转换的按键信号,VHDL代码框图如图(二)。1.3.启动/取消控制算法状态机图描述本设计的自动售货系统用了一个多功能启动/取消按键,来启动系统和在购买过程中随时取消的操作,如此系统有2种工作状态:取消状态(停止状态)和启动状态,系统复位是进入停止状态,当start_cancel按键按下时,状态转移至启动状态,并输出启动控制信号start_out。再按下start_cancel键时,是取消购买操作,系统又回到停止状态,这样可以人为的进行系统的取消购买行为,具体VHDL代码程序框图如启动/取消多功能按键流程图。启动/取消多功能按键流程图2. 选择定时模块选择定时模块有23种状态:停止状态(I

30、DLE),和计时状态(INCCOUNT),VHDL代码框图如倒计时程序框图。系统复位后就进入停止状态(IDLE),在停止状态下不断判断启动信号start_in是否为1,如果为1,则表明启动键已按下,定时器开始工作,转移的下一个状态为计数状态;否则仍停留在停止状态。在计数状态(INCCOUNT)下,先要判断启动信号是否仍为1,因为启动/取消按键是一个多功能按钮,按一次状态转换一次,如果复位后按一下启动/取消按键,使start_in=1,则定时器开始计数。如果再按一次启动/取消按键,使start_in=0,则定时器处于等待再次启动状态。系统中确认按键也能影响定时器的计数,所以也要判断它的状态,当确

31、认后,定时器计数值清零,定时器也回到等待再次启动状态。在计数状态下,如果start_in=1,接着判断秒clk_1s上升沿是否到来,如果未到来,则仍停留在计数状态,若秒时钟的上升沿已到来,则秒计数器就进行减1倒计时操作,接着判断时间是否减到了0,如果到0了则发出倒计时时间到信号(timer_down),如果没减到0则仍处于计数状态。倒计时程序框图通过以上对VHDL代码框图的分析,更加容易的完成了VHDL代码的编写,后面的的几个模块由于程序比较简单,只要看看VHDL代码就能看出它的程序框图的流程,所以这里就没有在画其他模块的VHDL代码框图,具体分析见VHDL代码。第五章 自动售货机控制电路各模

32、块仿真结果与分析1.主分频器模块仿真波形:通过对系统时钟的计数来分频,每一位相当于一个2分频,div17为2的8次方分频,div23为2的4次方分频,系统中当div23中计到10时清零,所以div23实际完成的是10分频,同理div33也为10分频,div41为2的2次方分频,系统中div41中计到3时清零,所以div41实际完成的是3分频,通过这样的分频便得到了秒信号。2.主控制器模块仿真波形:Type_sel为商品种类选择按键,复位时系统默认type1与type1_out为高电平,type_sel每按一次种类的选择转换一次;quantity_sel为商品数量选择,它的分析与type_sel

33、一致;start_out为启动/取消同步输出信号,当启动时start_out输出高电平,当取消时start_out输出低电平;timer_down为倒计时时间,时间到系统复位,等待再次启动。3.选择的定时模块仿真波形:系统启动时与start_in为高电平时,倒计时开始计数,当确认购买时与ok_buy为高电平时计数值清零,系统从新开始倒计时,这里以计时4秒来替代30秒的选择倒计时,方便仿真。4.商品金额计算仿真波形:系统在启动状态,倒计时未到且确认购买时,根据顾客对商品的选择,计算出商品的金额,这里type1的单价为1元,type2的单价为2元,type3的单价为3元;quan1指选择一个商品,

34、quan2指选择2个商品,quan3指选择3个商品。单价*商品数量即为商品总金额。5.给钱处理模块仿真波形:系统在启动状态,倒计时未到且确认购买时,系统根据输入的投币信号,输出顾客投入的金额。这里give_1yuan指顾客投入的是1元,give_5yuan指顾客投入的是5元,give_10yuan指顾客投入的是10元,这样就能识别1元,5元和10的纸币。6.找零出货模块仿真波形:系统在启动状态,倒计时未到且确认购买时,系统将商品的实际金额和顾客投入的金额进行比较,当顾客投入的金额大于商品实际金额时,系统找出相应的钱数并出货;当小于时,系统退出顾客已投入的钱数。7.顶层模块仿真波形:Start_

35、cancel启动系统,倒计时开始计时,顾客在此期间选择商品种类与type_sel按键输入,和商品数量选择与quantity_sel按键输入,它们的状态均为每按一次状态转换一次,商品选择好了,确认购买与ok_buy为高电平后,顾客投币,系统比较后进行找零和出货操作。第六章 自动售货机控制电路的具体VHDL描述1.主分频器模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sysclk_div ISPORT(sysclk:IN STD_LOGIC; clk :OUT STD_LOGIC);E

36、ND ENTITY sysclk_div;ARCHITECTURE rtl OF sysclk_div ISSIGNAL div1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL div2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL div3:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL div4:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL clk1,clk2,clk3:std_logic;BEGINdiv_256:PROCESS(sysclk)ISBEGINIF(sysclkEVENT

37、AND sysclk=1)THENdiv1=div1+1;END IF;END PROCESS;clk1=div1(7);div10:PROCESS(clk1)ISBEGINIF(clk1EVENT AND clk1=1)THENIF(div2=1001)THENdiv2=0000;ELSEdiv2=div2+1;END IF;END IF;END PROCESS;clk2=div2(3);div_10:PROCESS(clk2)ISBEGINIF(clk2EVENT AND clk2=1)THENIF(div3=1001)THENdiv3=0000;ELSEdiv3=div3+1;END I

38、F;END IF;END PROCESS;clk3=div3(3);div_3:PROCESS(clk3)ISBEGINIF(clk3EVENT AND clk3=1)THENIF(div4=10)THENdiv4=00;ELSEdiv4=div4+1;END IF;END IF;END PROCESS;clk=div4(1);END ARCHITECTURE rtl;2.主控制器模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY

39、 main_control ISPORT(reset,sysclk,start_cancel,type_sel,quantity_sel,timer_down:IN STD_LOGIC; type1_out,type2_out,type3_out,start_out:OUT STD_LOGIC; quan1_out,quan2_out,quan3_out:OUT STD_LOGIC);END ENTITY;ARCHITECTURE rtl OF main_control ISTYPE state1TYPE IS(s_type1,s_type2,s_type3);TYPE state2TYPE

40、IS(s_quan1,s_quan2,s_quan3);TYPE state3TYPE IS(s_start,s_cancel);SIGNAL state1,nextstate1:state1TYPE;SIGNAL state2,nextstate2:state2TYPE;SIGNAL state3,nextstate3:state3TYPE;SIGNAL start_cancel_rising,start_cancel_dlayed,setstart,clrstart:STD_LOGIC;SIGNAL type_sel_dlayed,typesel_rising,quantity_sel_d

41、layed,quantitysel_rising:STD_LOGIC;SIGNAL timer_down_rising,timer_down_dlayed:STD_LOGIC;SIGNAL set_type1,set_type2,set_type3,start,set_quan1,set_quan2,set_quan3:STD_LOGIC;BEGINtypesel_rising=type_sel AND (NOT type_sel_dlayed);quantitysel_rising=quantity_sel AND (NOT quantity_sel_dlayed);start_cancel

42、_rising=start_cancel AND (NOT start_cancel_dlayed);timer_down_rising=timer_down AND (NOT timer_down_dlayed);type_ctr:PROCESS(typesel_rising,state1,timer_down)ISBEGINset_type1=0;set_type2=0;set_type3set_type1=1; IF(timer_down=1)THEN set_type1=0;nextstate1=s_type1; ELSIF(typesel_rising=0)THEN nextstat

43、e1=s_type1; ELSEset_type1=0;nextstate1set_type2=1; IF(timer_down=1)THEN set_type2=0;nextstate1=s_type1; ELSIF(typesel_rising=0)THEN nextstate1=s_type2; ELSEset_type2=0;nextstate1set_type3=1; IF(timer_down=1)THEN set_type3=0;nextstate1=s_type1; ELSIF(typesel_rising=0)THEN nextstate1=s_type3; ELSEset_

44、type3=0;nextstate1=s_type1; END IF;END CASE;END PROCESS;quantity_ctr:PROCESS(quantitysel_rising,state2,timer_down)ISBEGINset_quan1=0;set_quan2=0;set_quan3set_quan1=1; IF(timer_down=1)THEN set_quan1=0;nextstate2=s_quan1; ELSIF(quantitysel_rising=0)THEN nextstate2=s_quan1; ELSEset_quan1=0;nextstate2se

45、t_quan2=1; IF(timer_down=1)THEN set_quan2=0;nextstate2=s_quan1; ELSIF(quantitysel_rising=0)THEN nextstate2=s_quan2; ELSEset_quan2=0;nextstate2set_quan3=1; IF(timer_down=1)THEN set_quan3=0;nextstate2=s_quan1; ELSIF(quantitysel_rising=0)THEN nextstate2=s_quan3; ELSEset_quan3=0;nextstate2=s_quan1; END

46、IF;END CASE;END PROCESS;start_ctr:PROCESS(start_cancel_rising,state3,timer_down)ISBEGINsetstart=0;clrstart IF(start_cancel_rising=1)THEN nextstate3=s_start;setstart=1; ELSEnextstate3=s_cancel;clrstart IF(timer_down_rising=1)THEN clrstart=1;nextstate3=s_cancel; ELSIF(start_cancel_rising=1)THEN nextst

47、ate3=s_cancel;clrstart=1; ELSEnextstate3=s_start; END IF;END CASE;END PROCESS;main_control_update:PROCESS(reset,sysclk,timer_down_rising)ISBEGINIF(reset=0)THENstate1=s_type1;state2=s_quan1;state3=s_cancel;ELSIF(sysclkEVENT AND sysclk=1)THENstate1=nextstate1;state2=nextstate2;state3=nextstate3;IF(set

48、_type1=1)THEN type1_out=1;ELSE type1_out=0;END IF;IF(set_type2=1)THEN type2_out=1;ELSE type2_out=0;END IF;IF(set_type3=1)THEN type3_out=1;ELSE type3_out=0;END IF;IF(set_quan1=1)THEN quan1_out=1;ELSE quan1_out=0;END IF;IF(set_quan2=1)THEN quan2_out=1;ELSE quan2_out=0;END IF;IF(set_quan3=1)THEN quan3_

49、out=1;ELSE quan3_out=0;END IF;IF(timer_down_rising=1)THEN start_out=0;ELSIF(clrstart=1)THEN start_out=0;ELSIF(setstart=1)THEN start_out=1; END IF;type_sel_dlayed=type_sel;quantity_sel_dlayed=quantity_sel;start_cancel_dlayed=start_cancel;timer_down_dlayed=timer_down; END IF;END PROCESS;END ARCHITECTU

50、RE rtl;3.选择的定时模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY timer_count ISPORT(reset,sysclk,clk,start_in,ok_buy:IN STD_LOGIC; timer_down_out:OUT STD_LOGIC);END ENTITY;ARCHITECTURE rtl OF timer_count ISTYPE stateTYPE IS(idle,incount);SIGN

51、AL state,nextstate:stateTYPE;SIGNAL count_inc,count_clr,setdown,clrdown:STD_LOGIC;SIGNAL timer_down,ok_buy_rising,ok_buy_dlayed:STD_LOGIC;SIGNAL count,count_u:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL timerdown_rising,timerdown_dlayed,clk_rising,clk_dlayed:STD_LOGIC;BEGINtimerdown_rising=timer_down AND (N

52、OT timerdown_dlayed);ok_buy_rising=ok_buy AND (NOT ok_buy_dlayed);clk_rising=clk AND (NOT clk_dlayed);count1:PROCESS(clk_rising,state,start_in,count,ok_buy_rising)ISBEGINsetdown=0;clrdown=0;count_inc=0;count_clrclrdown=1;count_clr=1; IF(start_in=1 AND timerdown_rising=0)THEN nextstate=incount; ELSE

53、nextstate IF(start_in=0 OR ok_buy_rising=1)THENnextstate=idle; ELSEIF(clk_rising=1 AND start_in=1)THENIF(count/=count_u)THENcount_inc=1;nextstate=incount;ELSEclrdown=0;setdown=1;count_clr=1;nextstate=idle;END IF;END IF; END IF;END CASE;END PROCESS;timer_count_update:PROCESS(reset,sysclk)ISBEGINIF(re

54、set=0 AND (NOT timerdown_rising)=0)THENstate=idle;clk_dlayed=0;count_u=0000;count=0100;ELSIF(sysclkEVENT AND sysclk=1)THENstate=nextstate;IF(clrdown=1)THEN timer_down=0;ELSIF(setdown=1)THEN timer_down=1;END IF;IF(count_inc=1)THENcount=count-1;ELSIF(count_clr=1)THEN count=0100;END IF;timerdown_dlayed

55、=timer_down;ok_buy_dlayed=ok_buy;clk_dlayed=clk;END IF;timer_down_out=timer_down;END PROCESS;END ARCHITECTURE rtl;4,商品金额计算模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY money_count ISPORT(reset,sysclk,start_in,timer_down,ok_buy:IN STD_LOG

56、IC; type1_in,type2_in,type3_in,quan1_in,quan2_in,quan3_in:IN STD_LOGIC; money_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY;ARCHITECTURE rtl OF money_count ISSIGNAL ok_buy_rising,ok_buy_dlayed:STD_LOGIC;SIGNAL timer_down_rising,timer_down_dlayed:STD_LOGIC;BEGINok_buy_rising=ok_buy AND (NOT ok_buy_dl

57、ayed);timer_down_rising=timer_down AND (NOT timer_down_dlayed);money_count_update:PROCESS(reset,sysclk,timer_down_rising,ok_buy_rising)ISVARIABLE money_sum_tmpe:INTEGER;VARIABLE uu:STD_LOGIC;BEGINIF(reset=0 OR timer_down_rising=1)THENmoney_sum_tmpe:=0;uu:=0;ELSIF(sysclkEVENT AND sysclk=1)THENIF(ok_b

58、uy_rising=0 AND uu=0)THENmoney_sum_tmpe:=0;ELSEuu:=1;IF(start_in=0)THENmoney_sum_tmpe:=0;ELSIF(type1_in=1 AND quan1_in=1)THENmoney_sum_tmpe:=1*1;ELSIF(type1_in=1 AND quan2_in=1)THENmoney_sum_tmpe:=1*2;ELSIF(type1_in=1 AND quan3_in=1)THENmoney_sum_tmpe:=1*3;ELSIF(type2_in=1 AND quan1_in=1)THENmoney_sum_tmpe:=2*1;ELSIF(type2_in=1 AND quan2_in=1)THENmoney_sum_tmpe:=2*2;ELSIF(type2_in=1 AND quan3_in=1)THENmoney_sum_tmpe:=2*3;ELSIF(type3_in=1 AND quan1_in=1)THENmoney_sum_tmpe:=3*1;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!