自动售货机课程设计.docx
- 文档编号:25005495
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:40
- 大小:1.48MB
自动售货机课程设计.docx
《自动售货机课程设计.docx》由会员分享,可在线阅读,更多相关《自动售货机课程设计.docx(40页珍藏版)》请在冰豆网上搜索。
自动售货机课程设计
自动售货机课程设计
唐山学院
《EDA技术》课程设计
题目自动售货机控制器设计
系(部)
班级
姓名
学号
指导教师
年月日至月日共周
年月日
《EDA技术》课程设计任务书
一、设计题目、内容及要求
设计题目:
《自动售货机控制器设计》
设计内容:
(1)设计一个自动售货机,此机能出售1元、5元、10元三种商品。
出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;
(2)顾客投入硬(纸)币的钱数也是有1元、5元、10元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来;
(3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒。
如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;
(4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;
(5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。
此累加器只有商家可以控制清零;(选作内容)
(6)此售货机要设有一个由商家控制的整体复位控制;
设计要求:
(1)根据任务要求确定状态关系,画出状态转换图;
(2)写出设计程序;
(3)给出时序仿真结果;
(4)最后要有设计总结;
二、设计原始资料
QuartusⅡ软件,EDA实验箱
三、要求的设计成果(课程设计说明书、设计实物、图纸等)
课程设计说明书
四、进程安排
第一周:
周1-周5查阅资料并编写程序,
第二周:
周1-周4上机调试程序并撰写课程设计说明书
第二周:
周5下午课程设计答辩并交设计说明书
五、主要参考资料
[1].VokneiA.Pedroni.《VHDL数字电路设计教程》.电子工业出版社,2008.5
[2].潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2
[3].焦素敏.《EDA应用技术》.清华大学出版社,2002.4
指导教师(签名):
教研室主任(签名):
课程设计成绩评定表
出勤
情况
出勤天数
缺勤天数
成
绩
评
定
出勤情况及设计过程表现(20分)
课设答辩(20分)
设计成果(60分)
总成绩(100分)
提问
(答辩)
问题
情况
综
合
评
定
指导教师签名:
年月日
1引言
VHDL的英文全名是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptiongLanguage,翻译成中文就是超高速集成电路硬件描述语言,诞生于1982年。
1987年底,VHDL被美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。
利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。
利用VHDL语言设计自动售货机,使其实现自动售货,找零钱等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。
此程序通过下载到特定芯片后,可应用于实际的自动售货机系统中。
本文基于FPGA开发系统,在QuartusII7.2软件平台上,完成了自动售货机控制器的设计和与仿真,并下载到试验箱进行硬件实现。
首先,本文介绍了QuartusII7.2软件的基本使用方法和VHDL硬件描述语言的特点,采用VHDL硬件描述语言描述自动售货机控制器,完成对电路的功能仿真;在设计过程中,重点探讨了自动售货机控制器的设计思路和功能模块划分;然后,初步探讨了电路逻辑综合的原理,该软件对自动售货机控制器电路进行了逻辑综合;最后,使用EDA实验开发系统进行电路的下载和验证,验证结果表明设计的自动售货机控制器完成了预期的功能。
2VHDL介绍
2.1硬件描述语言VHDL
VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述。
硬件描述语言(VHDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEE-STD-1076)。
传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。
采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。
为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,简称HDL)。
但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。
因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。
于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,简称VHDL。
这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。
设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用PLD实现其功能。
VHDL是一种全方位的硬件描述语言,包括系统行为级。
寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件语言的功能,整个自顶向下或由下向上的电路设计过程都可以用VHDL来完成。
VHDL还具有以下优点:
(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。
(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。
(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。
关于VHDL语言,最后需要说明的是:
与常规的顺序执行的计算机程序不同,VHDL从根本上讲是并发执行的。
因此,,我们通常称之为代码,而不是程序。
在VHDL中,只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。
2.2VHDL语言的特点
具有良好的可读性,即容易被计算机接受,也容易被读者理解。
使用期长,不会因工艺变化而使描述过时。
因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。
当电路系统采用VHDL语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:
第一层次是行为描述。
所谓行为描述,实质上就是对整个系统的数学模型的描述。
一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。
在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。
第二层次是RTL方式描述。
这一层次称为寄存器传输描述(又称数据流描述)。
如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。
要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。
也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。
第三层次是逻辑综合。
即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。
此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。
此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。
由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计周期。
由于目前众多制造PLD芯片的厂家,其工具软件均支持VHDL语言的编程。
所以利用VHDL语言设计数字系统时,可以根据硬件电路的设计需要,自行利用PLD设计自用的ASIC芯片,而无需受通用元器件的限制。
3QuartusII介绍
3.1QuartusII软件介绍
QuartusII是Altera公司单芯片可编程系统(SOPC)设计的综合性环境,也是适合SOPC的最全面的设计环境。
拥有现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)设计的所有解决方案。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台,该平台支持一个工作组环境下的设计要求,其中包括支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII也支持第三方的仿真工具,对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
QuartusII还支持层次化设计,可以在一个新的编辑环境中对使用不同输入设计方式完成的模块进行调用,从而解决了原理图与HDL混合输入设计的问题,并且在输入之后,QuartusII的编译器将给出设计输入的错误报告。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
Altera公司的QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
3.2QuartusII软件界面介绍
代码输入界面
新建一个工程,选择File→NewProjectWizard,在出现的对话框中输入工作路径和工程名称(应与实体名称相同),新建完工程后,选择File→New→VHDLFile,然后新出现的空白窗口中输入代码,代码输入界面如图3-1所示:
图3-1代码输入界面
编译界面
代码输入完毕后,选择Processing→StartCompilation或直接单击
(StartCompilation)进行编译,编译界面如图3-2所示:
图3-2编译界面
波形仿真界面
编译没有错误后,选择File→New→VectorWaveformFile,自己设置输入的值,设置好后单击
进行波形仿真,仿真前界面如图3-3所示:
图3-3波形仿真前界面
仿真后界面如图3-4所示:
图3-4波形仿真后界面
4自动售货机控制器设计与仿真
4.1设计内容
(1)设计一个自动售货机,此机能出售1元、5元、10元三种商品,出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;
(2)顾客投入硬(纸)币的钱数也是有1元、5元、10元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并用数码管将投币额显示出来;
(3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒。
如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;
(4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;
(5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。
此累加器只有商家可以控制清零;
(6)此售货机要设有一个由商家控制的整体复位控制。
4.2输入与输出说明
(1)输入:
price1、price5、price10分别控制选择1元、5元、10元三种商品;
put1、put5、put10分别是顾客投入硬(纸)币的钱数1元、5元、10元;
ok是确认输入,rst是由商家控制的整体复位控制输入。
(2)输出:
warning是警告输出(当按下“确认”后,若投入金额低于商品价格,则输出警告);
out1、out,out10分别是1元、5元、10元三种商品输出指示;
digitprice用于显示商品价格,digitput用于显示用户投入金额,digitback用于显示找回给用户的金额;
sumhigh表示累加的卖货额的高位,sumlow表示累加的卖货额的低位,累加的卖货额最高显示到99。
4.3状态转换图
状态转换图如图4-1所示:
图4-1状态转换图
4.4程序及仿真波形分析
(1)S0为初始状态,当顾客选择1元、5元或10元三种商品时分别跳转至S1、S2、S3状态,否则停留在S0状态,选择货物的钱数在数码管上显示出来,程序代码如下所示:
whens0=>warning<='0';out1<='0';out5<='0';out10<='0';
digitprice<=0;digitput<=0;digitback<=0;
if(price1='1'andprice5='0'andprice10='0')then
nx<=s1;
elsif(price1='0'andprice5='1'andprice10='0')then
nx<=s2;
elsif(price1='0'andprice5='0'andprice10='1')then
nx<=s3;
else
nx<=s0;
endif;
(2)当顾客投币为1元、5元或10元时,若当前为S1状态,则分别跳转至S4、S5、S6三种状态,投币钱数显示在数码管上,否则停留在S1状态,程序如下所示:
whens1=>digitprice<=1;digitput<=0;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s4;
elsif(put1='0'andput5='1'andput10='0')then
nx<=s5;
elsifput1='0'andput5='0'andput10='1'then
nx<=s6;
else
nx<=s1;
endif;
whens4=>digitprice<=1;digitput<=1;digitback<=0;
if(ok='1')then
nx<=s13;
else
nx<=s4;
endif;
whens5=>digitprice<=1;digitput<=5;digitback<=0;
if(ok='1')then
nx<=s14;
else
nx<=s5;
endif;
whens6=>digitprice<=1;digitput<=10;digitback<=0;
if(ok='1')then
nx<=s15;
else
nx<=s6;
endif;
此种情况下的仿真波形如图4-2所示:
图4-2仿真波形图
由图可知,当选中1元商品时,数码管digitprice显示1,其他数码管显示0,若顾客投入1元钱时,数码管digitput显示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状态,程序如下所示:
whens7=>digitprice<=5;digitput<=1;digitback<=0;
if(ok='1')then
nx<=s16;
elsif(put1='1'andput5='0'andput10='0')then
nx<=s22;
else
nx<=s7;
endif;
whens22=>digitprice<=5;digitput<=2;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s23;
else
nx<=s22;
endif;
whens23=>digitprice<=5;digitput<=3;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s24;
else
nx<=s23;
endif;
whens24=>digitprice<=5;digitput<=4;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s25;
else
nx<=s24;
endif;
whens25=>digitprice<=5;digitput<=5;digitback<=0;
if(ok='1')then
nx<=s17;
else
nx<=s25;
endif;
此种情况下的仿真波形如图4-3和图4-4所示,由图4-3可知,当选中5元商品时,数码管digitprice显示5,若顾客投入1元钱时,数码管digitput显示1,按下ok后,out5为“0”,数码管digitback显示1,warning为“1”,三个上升沿即3秒后复位;若顾客投入5元钱时,数码管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三种状态,投币钱数显示在数码管上,否则停留在S3状态,程序如下所示:
whens3=>digitprice<=10;digitput<=0;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s10;
elsif(put1='0'andput5='1'andput10='0')then
nx<=s11;
elsif(put1='0'andput5='0'andput10='1')then
nx<=s12;
else
nx<=s3;
endif;
whens10=>digitprice<=10;digitput<=1;digitback<=0;
if(ok='1')then
nx<=s19;
elsif(put1='1'andput5='0'andput10='0')then
nx<=s26;
else
nx<=s10;
endif;
whens26=>digitprice<=10;digitput<=2;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s27;
else
nx<=s26;
endif;
whens27=>digitprice<=10;digitput<=3;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s28;
else
nx<=s27;
endif;
whens28=>digitprice<=10;digitput<=4;digitback<=0;
if(put1='1'andput5='0'andput10='0')then
nx<=s29;
else
nx<=s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 售货 课程设计