自动售货机课程设计_第1页
自动售货机课程设计_第2页
自动售货机课程设计_第3页
自动售货机课程设计_第4页
自动售货机课程设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、唐 山 学 院 EDA技术 课 程 设 计 题 目 自动售货机控制器设计 系 (部) 班 级 姓 名 学 号 指导教师 年 月 日至 月 日 共 周 年 月 日 EDA技术 课程设计任务书一、设计题目、内容及要求设计题目:自动售货机控制器设计设计内容:(1)设计一个自动售货机,此机能出售1元、5元、10元三种商品。出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;(2)顾客投入硬(纸)币的钱数也是有1元、5元、10元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来;(3)顾客投币后,按一次确认键,如果投币额不足时则

2、报警,报警时间3秒。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;(4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;(5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。此累加器只有商家可以控制清零;(选作内容)(6)此售货机要设有一个由商家控制的整体复位控制;设计要求:(1)根据任务要求确定状态关系,画出状态转换图; (2)写出设计程序;(3)给出时序仿真结果; (4)最后要有设计总结;二、设计原始资料Quartus软件,EDA实验箱

3、三、要求的设计成果(课程设计说明书、设计实物、图纸等)课程设计说明书四、进程安排第一周:周1-周5 查阅资料并编写程序,第二周:周1-周4 上机调试程序并撰写课程设计说明书第二周:周5下午 课程设计答辩并交设计说明书五、主要参考资料1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52.潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23.焦素敏.EDA应用技术.清华大学出版社,2002.4指导教师(签名):教研室主任(签名):课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果

4、(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日目 录1 引言12 VHDL介绍22.1硬件描述语言VHDL22.2VHDL语言的特点33 Quartus II介绍43.1 Quartus II软件介绍43.2 Quartus II软件界面介绍43.2.1代码输入界面43.2.2编译界面53.2.3波形仿真界面54自动售货机控制器设计与仿真74.1设计内容74.2输入与输出说明74.3状态转换图84.4程序及仿真波形分析85引脚设定及下载分析185.1引脚设定185.2程序下载185.3结果分析196设计总结20参考文献21附录22课程设计说明书课程设计说明

5、书- 31 -1 引言VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻译成中文就是超高速集成电路硬件描述语言,诞生于1982年。1987年底,VHDL被美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1

6、993版本。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLDFPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。利用VHDL语言设计自动

7、售货机,使其实现自动售货,找零钱等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。此程序通过下载到特定芯片后,可应用于实际的自动售货机系统中。本文基于FPGA开发系统,在QuartusII 7.2软件平台上,完成了自动售货机控制器的设计和与仿真,并下载到试验箱进行硬件实现。首先,本文介绍了QuartusII 7.2软件的基本使用方法和VHDL硬件描述语言的特点,采用VHDL 硬件描述语言描述自动售货机控制器,完成对电路的功能仿真;在设计过程中,重点探讨了自动售货机控制器的设计思路和功能模块划分;然后,初步探讨了电路逻辑综合的原理,该软件对自动售货机控制器电路进行了逻辑综合

8、;最后,使用EDA实验开发系统进行电路的下载和验证,验证结果表明设计的自动售货机控制器完成了预期的功能。2 VHDL介绍2.1硬件描述语言VHDLVHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述。硬件描述语言(VHDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。VHDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985年美国

9、国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEE-STD-1076)。传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修

10、改也给设计者带来诸多的不便。为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(Hardware Description Language,简称HDL)。但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(Very High Speed Integrated Circuit) Hardware Description

11、 Language,简称VHDL。这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用PLD实现其功能。VHDL是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件语言的功能,整个自顶向下或由下向上的电路设计过程都可以用VHDL来完成。VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力

12、于物理实现。(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方便,而且也便于设计结果的交流、保存和重用。(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。关于VHDL语言,最后需要说明的是:与常规的顺序执行的计算机程序不同,VHDL从根本上讲是并发执行的。因此,我们通常称之为代码,而不是程序。在VHDL中,只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。2.2VHDL语言的特点具有良好的可读性,即容易被计算机接受,也容易被读者理解。使用期长

13、,不会因工艺变化而使描述过时。因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。当电路系统采用VHDL语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。第二层次是RTL方式描述。这一层次称为寄存器传输描述(又称数据流描述)。如前所述,用行为方式描述的系

14、统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。第三层次是逻辑综合。即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大

15、缩短系统的设计周期。由于目前众多制造PLD芯片的厂家,其工具软件均支持VHDL语言的编程。所以利用VHDL语言设计数字系统时,可以根据硬件电路的设计需要,自行利用PLD设计自用的ASIC芯片,而无需受通用元器件的限制。3 Quartus II介绍3.1 Quartus II软件介绍Quartus II 是Altera公司单芯片可编程系统(SOPC)设计的综合性环境,也是适合SOPC的最全面的设计环境。拥有现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)设计的所有解决方案。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台,该平台支持一个工作组环境下的设计要求,

16、其中包括支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II也支持第三方的仿真工具,对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。Quartus II还支持层次化设计,可以在一个新的编辑环境中对使用不同输入设计方式完成的模块进行调用,从而解决了原理图与HDL混合输入设计的问题,并且在输入之后,Quartus II的编译器将给出设计输入的错误报告。Quartus

17、 II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartu

18、s II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera 公司的Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。3.2 Quartus II软件界面介绍3.2.1代码输入界面新建一个工程,选择FileNew Project Wizard,在出现的对话框中输入工作路径和工程名称(应与实体名称相同),新建完工程后,选择FileNewVHDL File

19、,然后新出现的空白窗口中输入代码,代码输入界面如图3-1所示:图3-1 代码输入界面3.2.2编译界面代码输入完毕后,选择ProcessingStart Compilation或直接单击(Start Compilation)进行编译,编译界面如图3-2所示:图3-2 编译界面3.2.3波形仿真界面编译没有错误后,选择FileNewVector Waveform File,自己设置输入的值,设置好后单击进行波形仿真,仿真前界面如图3-3所示:图3-3波形仿真前界面仿真后界面如图3-4所示:图3-4波形仿真后界面4 自动售货机控制器设计与仿真4.1设计内容(1)设计一个自动售货机,此机能出售1元、

20、5元、10元三种商品,出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;(2)顾客投入硬(纸)币的钱数也是有1元、5元、10元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并用数码管将投币额显示出来;(3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;(4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;(5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱

21、数要用数码管显示,显示2位即可。此累加器只有商家可以控制清零;(6)此售货机要设有一个由商家控制的整体复位控制。4.2输入与输出说明(1)输入:price1、price5、price 10分别控制选择1元、5元、10元三种商品;put1、put5、put10分别是顾客投入硬(纸)币的钱数1元、5元、10元;ok是确认输入,rst是由商家控制的整体复位控制输入。(2)输出:warning是警告输出(当按下“确认”后,若投入金额低于商品价格,则输出警告);out1、out,out10分别是1元、5元、10元三种商品输出指示;digitprice用于显示商品价格,digitput用于显示用户投入金额

22、,digitback用于显示找回给用户的金额;sumhigh表示累加的卖货额的高位,sumlow表示累加的卖货额的低位,累加的卖货额最高显示到99。4.3状态转换图状态转换图如图4-1所示:图4-1状态转换图4.4程序及仿真波形分析(1) S0为初始状态,当顾客选择1元、5元或10元三种商品时分别跳转至S1、S2、S3状态,否则停留在S0状态,选择货物的钱数在数码管上显示出来,程序代码如下所示:when s0=>warning<='0'out1<='0'out5<='0'out10<='0' digi

23、tprice<=0;digitput<=0;digitback<=0; if (price1='1' and price5='0' and price10='0') then nx<=s1; elsif (price1='0' and price5='1' and price10='0') then nx<=s2; elsif (price1='0' and price5='0' and price10='1') then

24、 nx<=s3; else nx<=s0; end if;(2)当顾客投币为1元、5元或10元时,若当前为S1状态,则分别跳转至S4、S5、S6三种状态,投币钱数显示在数码管上,否则停留在S1状态,程序如下所示:when s1=> digitprice<=1;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s4; elsif (put1='0' and put5='1'

25、and put10='0') then nx<=s5; elsif put1='0' and put5='0' and put10='1' then nx<=s6; else nx<=s1; end if;when s4=> digitprice<=1;digitput<=1;digitback<=0; if (ok='1') then nx<=s13; else nx<=s4; end if; when s5=> digitprice<=1;dig

26、itput<=5;digitback<=0; if (ok='1') then nx<=s14; else nx<=s5; end if;when s6=> digitprice<=1;digitput<=10;digitback<=0; if (ok='1') then nx<=s15; else nx<=s6; end if;此种情况下的仿真波形如图4-2所示:图4-2仿真波形图由图可知,当选中1元商品时,数码管digitprice显示1,其他数码管显示0,若顾客投入1元钱时,数码管digitput

27、显示1,按下ok后,out1为“1”,数码管digitback显示0;若顾客投入5元钱时,数码管digitput显示5,按下ok后,out1为“1”,数码管digitback显示4;若顾客投入10元钱时,数码管digitput显示10,按下ok后,out1为“1”,数码管digitback显示9。(3)当顾客投币为1元、5元或10元时,若当前为S2状态,则分别跳转至S7、S8、S9三种状态,投币钱数显示在数码管上,否则停留在S2状态,程序如下所示:when s7=>digitprice<=5;digitput<=1;digitback<=0; if (ok='1

28、') then nx<=s16; elsif(put1='1' and put5='0' and put10='0')then nx<=s22; else nx<=s7; end if; when s22=>digitprice<=5;digitput<=2;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s23; else nx<=s22; end if; wh

29、en s23=>digitprice<=5;digitput<=3;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s24; else nx<=s23; end if; when s24=>digitprice<=5;digitput<=4;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<

30、;=s25; else nx<=s24; end if; when s25=>digitprice<=5;digitput<=5;digitback<=0; if(ok='1') then nx<=s17; else nx<=s25; end if;此种情况下的仿真波形如图4-3和图4-4所示,由图4-3可知,当选中5元商品时,数码管digitprice显示5,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out5为“0”,数码管digitback显示1,warning为“1”,三个上升沿即3秒后复位;若顾客投入5元钱时

31、,数码管digitput显示5,按下ok后,out5为“1”,数码管digitback显示0;若顾客投入10元钱时,数码管digitput显示10,按下ok后,out5为“1”,数码管digitback显示5。图4-3仿真波形图由于此售货机具有累加投币功能,所以若选中5元商品,投入5个1元的,也可以买到一个5元商品, 数码管digitprice显示5,数码管digitput显示由1到5, 按下ok后,out5为“1”,数码管digitback显示0,其仿真波形图如图4-4所示:图4-4仿真波形图 (4)当顾客投币为1元、5元或10元时,若当前为S3状态,则分别跳转至S10、S11、S12三种状

32、态,投币钱数显示在数码管上,否则停留在S3状态,程序如下所示:when s3=>digitprice<=10;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s10; elsif (put1='0' and put5='1' and put10='0') then nx<=s11; elsif (put1='0' and put5='0&

33、#39; and put10='1') then nx<=s12; else nx<=s3; end if; when s10=>digitprice<=10;digitput<=1;digitback<=0; if(ok='1') then nx<=s19; elsif(put1='1' and put5='0' and put10='0')then nx<=s26; else nx<=s10; end if; when s26=>digitprice&

34、lt;=10;digitput<=2;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s27; else nx<=s26; end if; when s27=>digitprice<=10;digitput<=3;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s28; else nx<=s

35、27; end if; when s28=>digitprice<=10;digitput<=4;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s29; else nx<=s28; end if; when s29=>digitprice<=10;digitput<=5;digitback<=0; if(put1='1' and put5='0' and put10='0

36、')then nx<=s30; else nx<=s29; end if; when s30=>digitprice<=10;digitput<=6;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s31; else nx<=s30; end if; when s31=>digitprice<=10;digitput<=7;digitback<=0; if(put1='1' a

37、nd put5='0' and put10='0')then nx<=s32; else nx<=s31; end if; when s32=>digitprice<=10;digitput<=8;digitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s33; else nx<=s32; end if; when s33=>digitprice<=10;digitput<=9;di

38、gitback<=0; if(put1='1' and put5='0' and put10='0')then nx<=s34; else nx<=s33; end if; when s34=>digitprice<=10;digitput<=10;digitback<=0; if(ok='1') then nx<=s21; else nx<=s34; end if; when s11=>digitprice<=10;digitput<=5;digitback

39、<=0; if(ok='1') then nx<=s20; elsif(put1='0' and put5='1' and put10='0')then nx<=s35; else nx<=s11; end if; when s35=>digitprice<=10;digitput<=10;digitback<=0; if(ok='1')then nx<=s21; else nx<=s35; end if; when s12=>digitprice&

40、lt;=10;digitput<=10;digitback<=0; if (ok='1') then nx<=s21; else nx<=s12; end if;此种情况下的仿真波形如下图,由4-5图可知,当选中10元商品时,数码管digitprice显示10,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out10为“0”,数码管digitback显示1,warning为“1”,三个上升沿即3秒后复位;若顾客投入5元钱时,数码管digitput显示5,按下ok后,out10为“0”,数码管digitback显示5,warning为 “1

41、”,三个上升沿即3秒后复位;若顾客投入10元钱时,数码管digitput显示10,按下ok后,out10为“1”,数码管digitback显示0。图4-5仿真波形图由于此售货机具有累加投币功能,所以若想买10元的商品,顾客可以投入两个5元的或投入10个1元的,其仿真波形分别如图4-6和图4-7所示:图4-6投两个5元仿真波形图图4-7投10个1元仿真波形图(5)延时子程序如下所示: if(a='1') then temp:=temp+1; if(temp=3)then b<='1' else b<='0' end if; end if

42、;3个上升沿即表示3秒的延时,当按下ok后经过3个上升沿自动售货机将复位进入S0状态。(6)累加售货额程序process(out1,out5,out10,clk)variable t:integer range 0 to 3;variable temp3,temp4:integer range 0 to 9;beginif(rst='1')thentemp3:=0;temp4:=0;elsif(clk'event and clk='1'and(out1='1' or out5='1' or out10='1'

43、;)thent:=t+1;if(t=3 and out1='1')thentemp3:=temp3+1;end if;if(t=3 and out5='1')thentemp3:=temp3+5;end if;if(t=3 and out10='1')thentemp4:=temp4+1;end if;if(temp3>9)thentemp4:=temp4+1;temp3:=temp3-10;end if;if(t=4)then t:=0;end if;end if;sumlow<=temp3;sumhigh<=temp4;en

44、d process;程序中t表示延时,当上升沿到来并且有商品输出时,t开始加1,当加到4时在重新计数。当延时3秒并且有商品输出时,累加售货额将开始累加钱数并显示在数码管上,当累加的售货额低于10元时,sumhigh不变,sumlow加数,当累加售货额不低于10元时,sumlow显示的结果为sumlow-10的结果,sumhigh进行加数。例如,若先卖出了一个5元的商品,则sumlow显示5,sumhigh显示0;若再卖出一个10元的商品,则低位sumlow显示仍为5,高位sumhigh会显示1。5 引脚设定及下载分析5.1引脚设定选择AssignmentsPins然后设定引脚,引脚设定界面如图

45、5-1所示:图5-1引脚设定界面5.2程序下载引脚设定好后,将下载盒子插到USB接口,点击,选择Hardward和start当下载到100%时,就可以通过试验箱进行验证,下载验证如图5-2所示:图5-2程序下载验证图5-2显示的是卖了两个10元的商品和一个5元的商品,累加的金额为25元。5.3结果分析通过上面的步骤将程序代码下载到实验箱的FPGA芯片中,并验证了在仿真中的结果的正确性。自动售货机能出售1元、5元、10元三种商品,出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;顾客投入硬(纸)币的钱数也是有1元、5元、10元三种,但每次只能投入其中的一种币,此操作通

46、过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来;顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;此售货机设有一个由商家控制的整体复位控制,当整体复位信号有效时,所有输出均为零。例如,当选中1元商品时,数码管digitprice显示1,其他数码管显示0,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out1为“1”,数码管digitback显

47、示0;若顾客投入5元钱时,数码管digitput显示5,按下ok后,out1为“1”,数码管digitback显示4;若顾客投入10元钱时,数码管digitput显示10,按下ok后,out1为“1”,数码管digitback显示9。当选中5元商品时,数码管digitprice显示5,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out5为“0”,数码管digitback显示1,warning为“1”,三个上升沿即3秒后复位;若顾客投入5元钱时,数码管digitput显示5,按下ok后,out5为“1”,数码管digitback显示0;若顾客投入10元钱时,数码管digitpu

48、t显示10,按下ok后,out5为“1”,数码管digitback显示5。当选中10元商品时,数码管digitprice显示10,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out10为“0”,数码管digitback显示1,warning为“1”,三个上升沿即3秒后复位;若顾客投入5元钱时,数码管digitput显示5,按下ok后,out10为“0”,数码管digitback显示5,warning为 “1”,三个上升沿即3秒后复位;若顾客投入10元钱时,数码管digitput显示10,按下ok后,out10为“1”,数码管digitback显示0。6 设计总结通过这两周的课

49、程设计,我深深的体会到了课程设计的重要性,课程设计不仅可以让我们将这学期的理论知识运用到实际设计中,而且在设计期间可以考察我们独立思考的能力和动手操作的能力,加深了对课本知识的理解。做课程设计需要我们自己编程序,自己仿真,自己下载到试验箱上并验证结果的正确与否。在进行下载验证的时候,我遇到了关于如何用数码管显示的问题,我以前只会用七段译码管去显示数字,而不知道如何用普通的数码管显示,后来经过向同学请教,终于弄明白了普通数码管的使用原理。还有一个实现起来比较困难的功能就是如何用10个1元的钱币去买1个10元商品,后来经过不断的修改程序、添加状态、仿真调试,最终出现了正确的仿真波形,将管脚对应好并

50、下载成功后,实现了预期的功能,这使我非常高兴。通过这次的课程设计,我已经可以熟练地使用QuartusII软件完成程序的编写、编译、仿真、下载等操作步骤,并且当编译出现错误后,能够找到错误原因,并且可以自己调试将问题解决,实现了预期所要求的自动售货、找零、警告、复位等功能,这更加深了我对EDA这门课程的兴趣。总之,这次的课程设计使我得到了很多,学到了很多在课本上学不到的知识,我觉得这对以后我们找工作是非常有用的,所以我非常感谢学校能给我们这么一个机会,同时也非常感谢我们的指导老师,谢谢她们这两周对我们的耐心指导。参考文献1 Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版

51、社,2008.5 2 潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23 焦素敏.EDA应用技术.清华大学出版社,2002.44 曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,20015 张昌凡等.可编程逻辑器件及VHDL设计技术M.广州:华南理工大学出版社,2001附录library ieee;use ieee.std_logic_1164.all;entity sell is port(price1,price5,price10,put1,put5,put10,ok,clk,rst:in std_logic; warning,out1,out5,out10:

52、buffer std_logic; digitprice,digitput,digitback:out integer range 0 to 15; sumhigh,sumlow:buffer integer range 0 to 9);end sell;architecture sell of sell istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,

53、s35);signal pr,nx:state;signal a,b:std_logic;beginprocess(clk,rst)variable temp:integer range 0 to 3;begin if (rst='1')then pr<=s0; elsif (clk'event and clk='1') then pr<=nx; if(a='1') then temp:=temp+1; if(temp=3)then b<='1' else b<='0' end if

54、; -else - temp:=0; end if; end if;end process;process(price1,price5,price10,put1,put5,put10,ok,b,pr)beginif(pr=s0)or(pr=s1)or(pr=s2)or(pr=s3)or(pr=s4)or(pr=s5)or(pr=s6) or(pr=s7)or(pr=s8)or(pr=s9)or(pr=s10)or(pr=s11)or(pr=s12) then a<='0' else a<='1' end if; case pr is when s0=

55、>warning<='0'out1<='0'out5<='0'out10<='0'digitprice<=0;digitput<=0;digitback<=0; if (price1='1' and price5='0' and price10='0') then nx<=s1; elsif (price1='0' and price5='1' and price10='0') th

56、en nx<=s2; elsif (price1='0' and price5='0' and price10='1') then nx<=s3; else nx<=s0; end if; when s1=>digitprice<=1;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s4; elsif (put1='0' and pu

57、t5='1' and put10='0') then nx<=s5; elsif put1='0' and put5='0' and put10='1' then nx<=s6; else nx<=s1; end if; when s4=>digitprice<=1;digitput<=1;digitback<=0; if (ok='1') then nx<=s13; else nx<=s4; end if; when s5=>digitp

58、rice<=1;digitput<=5;digitback<=0; if (ok='1') then nx<=s14; else nx<=s5; end if; when s6=>digitprice<=1;digitput<=10;digitback<=0; if (ok='1') then nx<=s15; else nx<=s6; end if; when s2=>digitprice<=5;digitput<=0;digitback<=0; if (put1='1' and put5='0' and put10='0') then nx<=s7; el

温馨提示

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

评论

0/150

提交评论