自动售货机系统设计与开发.docx
《自动售货机系统设计与开发.docx》由会员分享,可在线阅读,更多相关《自动售货机系统设计与开发.docx(14页珍藏版)》请在冰豆网上搜索。
自动售货机系统设计与开发
目录
前言1
1EDA及FPGA概述2
1.1EDA技术简介2
1.1.1EDA技术的发展概况2
1.1.2EDA技术的基本特征3
1.1.3EDA开发平台MAX+PLUSII4
结束语38
参考文献39
致谢40
附录41
自动售货机系统设计与开发
台上对设计进行了验证。
最终完成的自动售货机系统具有投币处理、商品选择、购货撤销、异常退币、计算存货等主要功能,整个系统的开发体现了在MAX+PLUSII软件平台上用VHDL设计数字控制系统的实用性。
关键词:
FPGA;EDA;VHDL
Theautomatsystemdesignanddevelopment
计输入、仿真、测试和校验,直到达预期的效果。
第二章介绍VHDL语言(VHSICHardwareDescriptionLanguage),其中主要介绍了VHDL语言的特点、优点,VHDL语言的基本程序结构、语法以及主要的一些程序语句。
第三章分析了本次设计的任务、设计原则以及功能需求。
第四章阐述自动售货机系统的设计方案,介绍了自动售货机的基本功能、外观及设计流程。
第五章阐述自动售货机系统的设计实现,分析了部分波形仿真结果,并对设计的正确性进行了验证。
本文中自动售货机系统的硬件电路用2个按键电路代替2个投币孔,以LED点亮的数量显示各种币种的投入数量,再以4Hz闪烁的LED来显示退币种类与数量,采用1024Hz的系统时钟信号来控制所有买卖行为。
由于水平有限,手头资料也不是很多,文中难免有不妥和疏漏之处,欢迎批评指正。
1EDA及FPGA概述
人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。
现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者的核心就是EDA技术。
EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作:
IC设计,电子电路设计以及PCB设计。
没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。
FPGA是由用户编程来实现所需逻辑功能的数字集成电路,它不仅具有设计灵活、性能高、速度快等优势,而且上市周期短、成本低廉。
FPGA设计与ASIC前端设计十分类似,在半导体领域中FPGA应用日益普及,已成为集成电路中最具活力和前途的产业。
同时,随着设计技术和制造工艺的完善,器件性能、集成度、工作频率等指标不断提升,FPGA已越来越多地成为系统级芯片设计的首选。
FPGA作为可编程逻辑器件的典型代表,它的出现及日益完善适应了当今时代的数字化发展浪潮,它正广泛应用在现代数字系统设计中。
1.1EDA技术简介
EDA(ElectronicDesignAutomation),即电子设计自动化,是指利用计算机完成电子系统的设计。
EDA技术是以计算机和微电子技术为先导的,汇集了计算机图形学、拓扑学、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。
EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。
设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大地提高设计效率[1]。
1.1.1EDA技术的发展概况
从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。
电路理论和半导体工艺水平的提高,对EDA技术的发展起到了巨大的作用,使EDA作用范围从PCB板设计延伸到电子线路和集成电路设计,直至整个系统的设计,也使IC芯片系统应用、电路制作和整个电子生产过程都集成在一个环境之中。
根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段[2]。
一、CAD阶段
第一阶段的特点是一些单独的工具软件,主要有PCB布线设计、电路模拟、逻辑模拟、以及版图的绘制等,通过计算机的使用,从而将设计人员从大量繁重重复的计算和绘图工作中解脱出来。
20世纪80年代,随着集成电路规模的增大,EDA技术有了较快的发展。
许多软件公司等进入市场,开始供应带电路图编辑工具和逻辑模拟工具的EDA软件。
这个时期的软件产品主要针对产品开发,按照设计、分析、生产和测试等多个阶段,不同阶段分别使用不同的软件包,每个软件只能完成其中一项工作,通过顺序循环使用这些软件,可完成设计的全过程。
二、CAE阶段
这个阶段在集成电路与电子设计方法学以及设计工具集成化方面取得了许多成果。
各种设计工具,如原理图输入、编译与连接、逻辑模拟、测试码生成、版图自动布局已齐全。
由于采用了统一数据管理技术,因而能够将各个工具集成为一个CAE系统。
按照设计方法学制定的设计流程,可以实现从设计输入到版图输出的全程设计自动化。
这个阶段主要采用基于单元库的半定制设计方法,采用门阵列与标准单元设计的各种ASIC得到了极大的发展,将集成电路工业推入了ASIC时代。
三、EDA阶段
20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平达到了深亚微米级,此阶段主要出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上。
它的特征为:
第一,高层综合的理论与方法取得较大进展,将EDA设计层次由RT级提高到了系统级(又称行为级),并划分为逻辑综合和测试综合。
第二,采用硬件描述语言HDL来描述10万门以上的设计,并形成了VHDL和VerilogHDL两种标准硬件描述语言。
第三,采用平面规划技术对逻辑综合和物理版图设计进行联合管理,作到在逻辑综合早期设计阶段就考虑到物理设计信息的影响。
第四,可测性设计。
第五,为带有嵌入IP模块ASIC设计提供软硬件协同系统设计工具。
1.1.2EDA技术的基本特征
EDA技术代表了当今电子设计技术的最新发展方向,它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件[3]。
这样的设计方法被称为高层次的电子设计方法。
下面介绍与EDA基本特征有关的几个概念。
一、“自顶向下”的设计方法
10年前,电子设计的基本思路还是选择标准集成电路“自底向上”(Bottom-Up)地构造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容易出错。
二、高层次设计
高层次设计提供了一种“自顶向下”(Top-Down)的全新的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
三、硬件描述语言
硬件描述语言(HDL-HardwareDescriptionLanguage)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可,而且VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL-HDL、AHDL,是由不同的EDA厂商开发的,互相不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上缺陷,1985年美国国防部正式推出了VHDL(VeryHighSpeedICHardwareDescriptionLanguage)语言,1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD-1076)。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。
另外,VHDL还具有以下优点:
VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,只需花较少的精力用于物理实现。
VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
VHDL的设计不依赖于特定的器件,方便了工艺的转换。
VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。
1.3FPGA简介
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、FPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
1.3.1FPGA的基本特点
FPGA采用了逻辑单元阵列LCA这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分[7]。
FPGA的基本特点主要有以下几点:
一、FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
二、FPGA可做其它全定制或半定制ASIC电路中的试样片。
三、FPGA内部有丰富的触发器和I/O引脚。
四、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程即可。
当需要修改FPGA功能时,只须换一块EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA的配置模式非常灵活,它可以有多种配置方式:
平行主模式为一片FPGA加一片EPROM的方式;主从模式为多片FPGA加一片PROM;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程[8]。
1.3.2FPGA的结构及其发展
当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断的进行更新换代。
它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模的集成电路以及许多具有特定功能的专用继承电路。
但是,随着微电子技术的发展,设计与制作集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师们更愿意自己设计专用ASIC芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出适合的ASIC芯片,并且立即投入实际应用之中,于是就出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)[9]。
选择信号代入语句:
选择信号代入语句类似于CASE语句,它对表达式进行测试,当表达式取值不同时,将不同的值代入目的信号量。
并发过程调用语句:
并发过程调用语句可以出现在构造体中,而且是一种可以在进程之外执行的过程调用语句。
块(BLOCK)语句:
BLOCK语句是一个并发语句,而它所包含的一系列语句也是并发语句,而且块语句中的并发语句的执行与次序无关。
3系统需求分析
3.1任务概述
自动售货是20世纪70年代在日本、欧美发展起来的一种全新的消费方式,自动售货机又被称为24小时营业的微型自助超市,它的售货领域非常广泛,是发达国家商品零售的一种主要方式。
自动售货机作为一种先进的消费方式,已经成为城市现代文明发达程度的重要标志,其新颖、时尚的购物方式,24小时营业的特点给人们生活带来了便利,美化了城市环境,受到消费者的欢迎。
但是在我国自动售货机的普及还不及发达国家,主要原因是我国EDA技术的应用水平长期落后于发达国家。
本设计要实现自动售货机的基本功能,如投币处理、商品选择、购货撤销、异常退币、计算存货等功能。
利用Altera公司的开发软件MAX+PLUSII平台,采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,与一般的软件开发不同,VHDL编程更需要熟悉一些底层的硬件知识,特别是数字逻辑电路的设计,因此VHDL编程的方法、思路都要更多的与硬件电路联系起来。
完成系统各个功能模块的硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到实验台内的FPGA芯片以实现该系统,并在实验台上对设计进行验证。
3.2系统设计原则
为了达到自动售货机系统设计的先进性,满足用户持续增长的不同要求,系统设计一定要遵循开模块组成:
一、投入10元硬币的处理电路模块:
本模块计算10元硬币的投入数量及累计金额,并点亮对应数量的LED。
二、投入5元硬币的处理电路模块:
本模块计算5元硬币的投入数量及累计金额,并点亮对应数量的LED。
三、饮料选择处理电路模块:
本模块处理顾客对饮料的选择以及选择的饮料种类,并点亮对应种类的LED。
四、确认与取消处理电路模块:
在本模块中,如果顾客投币后按了购买确认键,系统将根据投入硬币的种类及数量执行出货、找零、退币等功能,并点亮对应的LED;如果顾客按了购买取消键,系统将退还顾客投入的所有硬币。
五、产生退币闪烁信号的电路模块:
本模块设计输出频率为4Hz的闪烁信号给对应的LED,以提醒用户退币。
六、退币处理电路模块:
本模块处理应退还顾客的硬币种类与数量。
七、出货并计算存货电路模块:
本模块计算出货后饮料的存货数量,只要还有存货,则对应种类的LED保持灯亮;否则熄灭。
八、抖动消除电路模块:
本模块的功能为过滤按键时产生的机械抖动噪声。
5自动售货机系统设计实现
5.1功能模块的实现及程序分析
cola_choice<='1';--维持选择状态
led_diet_sel<='0';
endif;
ifselect_diet='1'then--选择diet
led_cola_sel<='0';
led_diet_sel<='1';
diet_choice<='1';--维持选择状态
led_diet_sel<='1';--相应的灯亮
endif;
endif;
endprocess;
endblock;
当按下select_cola键弹回时,让cola_choice维持1,作为选定cola的指针,同时led_cola_sel灯亮,表示cola被选取。
但若随后按了select_diet键,则以后一次的选择为准,所以不但让diet_choice及led_diet_sel维持1,而且将cola_choice与led_cola_sel还原为0。
同理,下次的饮料选取按键总是可以取代前一次的选择。
5.1.5确认与取消处理电路模块(ok_or_cancel)
按了购买确认键或取消键后,系统将据此处理交易与反应。
但按键信号只是一个短脉冲,应该将其状态维持住,因此本模块需要定义并输出全局信号ok与cancel给其他模块。
同时还需要输入系统信号reset,ok_buy与cancel_buy,然后设定输出系统信号led_buy与led_cancel,用来对付显示购买或取消状态。
ok_or_cancel:
block
begin
p1:
process(reset,ok_buy)
begin
ifreset='1'thenok<='0';--复位
led_buy<='0';
elsifrising_edge(ok_buy)then--按确认按键
ok<='1';--维持状态
led_buy<='1';--确认灯亮
endif;
endprocess;
p2:
process(reset,cancel_buy)
endarch;
5.1.9抖动消除电路模块(debounce)
由于投币是计次电路,应先经过抖动消除电路处理,抖动消除电路的程序debounce是当作组件调用的,在连接合成时,必须同时附挂在vendor主程序下才能正常运行,即必须要把debounce电路模块与vendor主程序放在同一目录下编译。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitydebounceis
port(clk:
instd_logic;
升沿到来,由于上图为设计仿真,不考虑机器的反应时间,所以灯led_buy同一时刻亮起。
图6仿真图
(一)
图7所示为本次实验的部分仿真结果,包含如下两个购买过程:
一、用户投入2个10元硬币,选择的是diet饮料,led_diet_sel灯亮,按下购买确认键后退还用户1个5元硬币,led_five_return(0)灯亮,diet饮料出货,led_diet_out灯亮。
二、用户投入3个5元硬币,选择的是cola饮料,led_cola_sel灯亮,按下购买确认键后cola饮料出货,led_cola_out灯亮,由于用户投入正好15元,因此不退币。
图7仿真图
(二)
图8所示为本次实验的部分仿真结果,其购买顺序与前图正好相反,是一个先选择饮料然后在投币的购买顺序。
图9所示为本次实验的部分仿真结果,包含两个购买过程,其购买顺序分别为:
一、先投入10元硬币,然后再选择饮料,最后再投入5元硬币。
二、先选择diet饮料,然后投入15元硬币,最后重新选择cola饮料。
图8仿真图(三)
图9仿真图(四)
从仿真结果中我们可以看出,经过VHDL语言的文本编辑、编译、仿真波形编辑、仿真一系列设计步骤,设计出了符合要求的数字系统和数字逻辑电路,设计已经达到任务要求。
5.4引脚锁定并编译
对以上程序进行编译成功之后,可以直接对其锁定引脚。
这里根据实际需要,按以下方法将所设计的电路端口定义分配到FPGA器件实际的引脚:
一、点击MAX+PLUSII\FloorplanEditor进入FPGA端口分配编辑器环境。
如图10所示:
图10FPGA端口分配编辑器
二、点击Assign选择器件:
DeviceFamily选择FLEX10K
Devices选择EPF10K20TC144-3
三、点击Layout选中以下两项:
Deviceview
CurrentAssignmentsFloorplan
四、根据实验台提供的输入/输出资源,将电路使用的输入/输出端口分配至FPGA器件的I/O端口(内部节点不需分配),从而使电路端口与实验台资源连接起来。
操作方法:
双击UnassignedNodes&Pins栏中的电路端口名,将其拖动至FPGA器件的相应引脚即可。
实验台的资源的作用:
自锁按键提供输入电平,弹性按键提供脉冲,指示灯和数码管用作显示输出信号,这些器件在实验台上已与FPGA相应引脚固定连接。
(引脚号在器件的周期)
。
主时钟配合各个模块产生不同的信号,以这些信号为桥梁分别控制各个模块,这样做设计显得很流畅,每个成员都不是独立存在的。
对于本设计,自动售货机的设计应以方便用户购买为设计目标,本系统在响应用户输入的够买商品时,每次只能记录一种商品,如果用户需要一次购买多个商品,那么不得不在按下确定按键后再重复操作,因此给用户带来了不便,在考虑程序的扩展性时,在这点上的改进值得深入考虑。
本次毕业设计我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。
学习中会有更多的问题,有更多的难点,但也会有更多的收获。
由于我的水平有限,毕业设计还并不十分完善,毕业论文还有许多疏漏,恳请各位老师批评指正。
参考文献
[1]潘松、黄继业.EDA技术实用教程[M].科学出版社,2002,57-58.
[2]李志方.EDA技术简介[J].电信交换,2001,1:
45-46.
[3]张霞.VHDL在现代EDA中的应用[J].现代电子技术,2001,5:
53-54.
[14]边计年、薛宏熙.用VHDL设计电子线路[M].清华大学出版社,2000,32-33.
[15]卢毅、赖杰.VHDL与数字电路设计[M].科学出版社,2001,44-46.
致谢
在本次毕业设计中,我得到了指导老师朱理望老师的精心指导。
朱老师工作认真负责,他无论在理论上还是在实践中,都给了我很大的帮助,使我在各方面都提高了不少,这对我以后的工作和学习
二、MAX+PLUSII(V10.1)许可证的安装
(1)将光盘中的“License.dat”文件拷贝至任意一个文件夹;
(2)点击进入“Options”菜单,再点击“LicenseSetup”;
(3)点击“Browse”,找到并选定硬盘crack文件夹中“License.dat”文件;
(4)点击“OK”,将MAX+PLUSII的许可证指定为license.dat。
(许可证安装后,点击进入“Options”菜单,点击“New”,选择“FileType”为“GraphicEditorFile”,应能进入MAX+PLUSII软件的图形化设计环境。
)
三、WIN2000系统下编程器驱动程序的安装方法
(6)点击“下一步”、“下一步”、“是”和“确定”等,最后“完成”。
(在[控制面板]->[系统]->[硬件]->[设备管理器]->[声音、视频和游戏控制器]中查看应有“AlteraByteBlaster”项目)