




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VHDL的自动售货机的设计姓名班级:学号:指导老师:摘要:1)EDA:EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。 2)售货机简介:一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。钱币装置是售货机的核心分选钱币的种类,计算金额。如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。3)现状及发展趋势:从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。 从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约1015%的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。 关键字:EDA技术 广泛使用 自动售货机目录1、引言 3 1.1设计的目的 3 1.2设计的基本内容 32、EDA 和VHDL简介 42.1 EDA的简介 42.2VHDL语言的特点 53、基于VHDL的智力竞赛抢答器的模块设计 63.1智力竞赛抢答器的组成原理 63.2抢答器模块的设计 63.2.1抢答鉴别模块的设计 73.2.2倒计时模块的设计 83.2.3计分模块的设计 103.2.4数码管显示选择模块的设计 163.2.5译码显示模块的设计 173.2.6蜂鸣器控制模块的设计 20附表 22参考文献 231、引言1.1 设计的目的本次设计是基于“学以致用”四字。首先,在学习了VHDL语言之后,必须有一个较为完整的设计才能更为深刻和透彻地了解学习这门语言的意义及使用方法,纠正在以往设计中存在的问题并大致对设计有一定的认识,逐步建立正确设计思想。其次,本设计可以将所有的相关学科的知识,如模拟电路,数字电路,单片机原理等等课程融会贯通,由点及面得学习。与此同时,在题目的选择上将其确定为“自动售货机”是因为这个题目的实际效益较为明显,最贴近于生活。而我们设计者就应该选择那些和生活息息相关的题材来进行学习和研究,这样才能有助于专业知识的生活化,普及化。让更多的人意识到自己的生活充满了电子设计,也让电子设计。最后,可以通过自动售货机的设计巩固和综合运用所学课程,加强动手能力,提高分析、解决计算机技术实际问题的独立工作能力,本设计以拨码开关信号来控制商品选择及价格投入,应用二极管和数码显示管为主要部件来模拟真实的自动售货机。通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。1.2设计的基本内容设计一个有四样商品的自动售货机,其价格分别为0.5,1.0,1.5,2.0。利用拨码开关对商品进行任意选择,小于等于四个即可。选择完后,对应货品的灯亮,数码管上会显示出所选货品总共的价格。同样用四个拨码开关代表投入的钱数,分别为0.5,1.0,2.0,2.0,拨码选择投入的钱数之后,数码管上同时显示所投钱数,而另外两个数码管则显示出了应该找回的钱。在交易成功之时(即投币数大于购买价格)蜂鸣器响起,否则指示灯亮。2、EDA 和VHDL简介2.1 EDA的简介EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。VHDL 的英文全名是 Very-High-Speed Integrated Circuit HardwareDescription Language,VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。2.2VHDL语言的特点VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点:(1) VHDL 语言功能强大,设计方式多样VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。(2) VHDL 语言具有强大的硬件描述能力VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。(3) VHDL 语言具有很强的移植能力VHDL 语言很强的移植能力主要体现在:对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。(4) VHDL 语言的设计描述与器件无关采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。(5) VHDL 语言程序易于共享和复用VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。3、基于VHDL的自动售货机的设计3.1总体设计1 原理图:投钱数选商品依次显示:售价 投钱数 找零数扬声器交易是否成功是运算电路信号输出信号鉴别,锁存指示灯亮否 2 设计思想:1本次设计题目要求为:可以对4种商品进行售货,价格分别为0.5元,1.0元,1.5元,2.0元;售货机可以接受1元,5角硬币;根据入的硬币出货和找零;需显示状态,以及金额可通过拨码开关或按键代表金额输入; 2根据题目要求可以将设计过程大概分为商品的选择,投币以及数码管显示三块。商品选择利用拨码开关实现,在选定商品的时候,代表对应商品的提示灯亮起,且选择的商品可以多余一样而少于四样;投币可以设计两个模块,第一个是利用拨码开关实现,另外一种则可以利用键盘实现;数码管显示要求可以同时、依次显示选择物品的总价格、所投钱数以及应找零数;是内容直观可靠。 3.2设计过程:3.2.1枚举法设计:本次要求的自动售货机所售物品的种类并不多,数值也并不大,数码管的位数够多,而所用的芯片引脚也够多,所以设计者最先萌生出的念头就是利用枚举法将运算提前做好,整个程序只需负责数码显示,且运用大规模的枚举法。大致程序如下:-choose what you want (no more than 4)- process(shift) begin if (clkevent and clk=1) then case shift iswhen 0000 = led = 0000 ;led0=0000;led1 led = 0001 ;led0=0101;led1 led = 0010 ;led0=0000;led1 led = 0011 ;led0=0101;led1 led = 0100 ;led0=0101;led1 led = 0101 ;led0=0101;led1 led = 0110 ;led0=0000;led1 led = 0111 ;led0=0101;led1 led = 1000 ;led0=0000;led1 led = 1001 ;led0=0101;led1 led = 1010 ;led0=0000;led1 led = 1011 ;led0=0101;led1 led = 1100 ;led0=0101;led1 led = 1101 ;led0=0000;led1 led = 1110 ;led0=0101;led1 led = 1111 ;led0=0000;led1 NULL ;end case ; end if ;end process;PROCESS(CNT8)beginCASE CNT8 ISWHEN 000 =sign=000;Asign=001;Asign=010;Asign=011;A NULL ;end CASE;end process;process(clk1) begin if(clk1event and clk1=1) then CNT8 eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 NULL;end case; elsif A=1 then CASE led0 IS WHEN 0000 = eight0 eight0 NULL;END CASE; elsif A=2 then case led3 is WHEN 0000 = eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 eight0 NULL;end case; elsif A=3 then CASE led4 IS WHEN 0000 = eight0 eight0 NULL;END CASE; end if ;end process ;上述程序并未成功,编译时出现了“逻辑门超出了该芯片的范围”,故难以实现设计功能。由此可见枚举法并不可取,毕竟将所有的逻辑门都用在数码管现实上并不是一个明智的选择,而这无疑是将简单的问题复杂化了。所以应当将数码管显示程序进行修正。3.2.2扫描法:鉴于上述方案,修改数码管显示模块应该讲所需要的内容,如商品实际价格的元、角,投入钱数的元、角及所需找的零钱的元、角均赋给一个值,让此值通过数码管的位选按位显示,则可以省去枚举法显示的逻辑门数。修改后的显示程序:process (clk)-扫描位选信号 begin if(clkevent and clk=1) then dcount=dcount+1; end if;end process; process (clk)-位选 begin if(clkevent and clk=1) then s0=dcount(0);-s0 s1=dcount(1); s2A_disA_disA_disA_disA_disA_dis A_disledsledsledsledsledsledsledsledsledsledsleds=0000000; end case; end process; process(clk) -In this process, a,b,c,d,e,f,g will output begin if(clkevent and clk=1) then a=leds(0); b=leds(1); c=leds(2); d=leds(3); e=leds(4); f=leds(5); g led = 0000 ; by=0000;bj led = 0001 ; by=0000;bj led = 0010 ; by=0001;bj led = 0011 ; by=0001;bj led = 0100 ; by=0001;bj led = 0101 ; by=0010;bj led = 0110 ; by=0010;bj led = 0111 ; by=0011;bj led = 1000 ; by=0010;bj led = 1001 ; by=0010;bj led = 1010 ; by=0011;bj led = 1011 ; by=0011;bj led = 1100 ; by=0011;bj led = 1101 ; by=0100;bj led = 1110 ; by=0100;bj led = 1111 ; by=0101;bj NULL ;end case ;end if ;end process;end behave;2,钱币投入及找钱:1) 利用键盘控制投入钱数:键盘上的1表示5角,2表示一元,这两个数字按一下则表示投入相应的钱数,同时做出计算应该找的钱数;coin0代表五角,coin1代表一元:process(clk) -In this process, two counts will accumulate begin if(clkevent and clk=1) then dcount=dcount+1; kcount=kcount+1; end if; end process; process(clk) -In this process, the main task is to scan keyboard begin if(clkevent and clk=1) then if(kcount=0) then kr=1111; kc=0000; elsif(kcount=1) then keyr=kr; kr=ZZZZ; elsif(kcount=2) then kr=0000; kc=1111; elsif(kcount=3) then keyc=kc;kc=ZZZZ; end if; end if; end process; process(clk) - change the key flags begin if(clkevent and clk=1) then if(kcount=4 and keyr=1111) then kflag1=0; elsif(kcount=4) then kflag1=1; end if; kflag2coin0coin0coin1coin1=coin1; end case; end if; coin=coin0*5+coin1*10; C=coin; yuan=coin/10; jiao yuan=0000;jiao yuan=0000;jiao yuan=0001;jiao yuan=0001;jiao yuan=0010;jiao yuan=0010;jiao yuan=0011;jiao yuan=0011;jiao yuan=0010;jiao yuan=0010;jiao yuan=0011;jiao yuan=0011;jiao yuan=0100;jiao yuan=0100;jiao yuan=0101;jiao yuan=0101;jiao NULL ;end case ;-get money back- if(jiao=0101) then rej=jiao-bj; rey=yuan-by; else if(bj=0000) then rej=0000; rey=yuan-by; else rej=0101; reyby)or(yuan=by)and(jiaobj)or(yuan=by)and(jiao=bj)and(yuan/=0)and(jiao/=0) then beep=1; light=0; else beep=0; light=1; end if; end if ;end process ;end behave;4)显示函数:数码管显示是本设计的一个难题,因为要同时显示六位数字且不可以出现位数上的颠倒。由于开始尝试的枚举法的静态显示出现了逻辑门超出的错误,所以只能选择按位显示,并将频率提高到人眼难以察觉。将商品总价格的元角by,bj;投入钱数的yuan,Jiao;以及算出的应该找的零钱数目rey,rej,都复制给一个中间变量A_dis,再根据脉冲count自加,从”000”到“111”进行位选,按位显示上述的值,再通过数码管a到f的七位段选,最终可以在数码管上清晰地呈现出价格,投币和找零: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity display is port( clk :in std_logic; -Clock Signals0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东公考真题2025
- 零售药店医疗器械各岗位培训考核试题及答案
- 度继续教育公需科目知识产权考试试题及答案(版)
- 药品管理法和药品网络销售管理办法培训试题及答案
- 事业单位招聘考试公共基础知识复习题库及答案
- 高血压健康管理试题-高血压知识
- 工程力学期末考试试卷测试题A与答案
- 2025年度安全培训中心保安人员服务合同下载
- 2025版车展期间展商洽谈与商务对接服务合同
- 2025年智能机器人研发与市场推广合作协议
- 安全伴我行-大学生安全教育知到智慧树章节测试课后答案2024年秋哈尔滨工程大学
- 有害物质过程管理系统HSPM培训教材
- 2025年蛇年年会汇报年终总结大会模板
- 存款代持协议书范文模板
- DB3301T 0374-2022 疗休养基地评价规范
- 胖东来企业文化指导手册
- 北师大版八年级物理(上册)期末复习题及答案
- 【历年真题合集+答案解析】2024年教资高中历史
- 委托别人找工作的协议
- 医技三基三严知识模拟习题含参考答案
- Y -S-T 732-2023 一般工业用铝及铝合金挤压型材截面图册 (正式版)
评论
0/150
提交评论