EDA实习报告(自动售卖机)_第1页
EDA实习报告(自动售卖机)_第2页
EDA实习报告(自动售卖机)_第3页
EDA实习报告(自动售卖机)_第4页
EDA实习报告(自动售卖机)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术及应用实习报告自动售卖机信息13-2班06号GMH北华大学电气信息工程学院 目 录一、设计任务功能简介31、设计任务32、主要功能3二、原理、方案、框图及任务分解31、原理32、方案43、框图44、任务分解5三、关键任务的设计代码及注释5四、调试中出现的问题及解决方案71、问题一72、问题二7五、产业化市场分析及预测7六、测试及运行结果8七、参考文献10一、设计任务功能简介1、设计任务 自动售货机设计。利用软件QuartusII软件,使用VHDL语言结合硬件要求对本题目设计功能进行编程,并在完成整个硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到DE2-70实

2、验板上实现上述所有功能并验证程序的可行性。2、主要功能本设计主要实现的功能为:货物信息存储功能、商品选择功能、输入钱数处理功能、货架商品更换功能、语音提示功能、信息显示等功能。二、原理、方案、框图及任务分解1、原理自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按 扭

3、输入信号使控制器启动相关位置的机械装置完成规定动作,将货物输出。2、方案根据题目要求机器设有2个投币孔,机器可以接受1元和5元的纸币,分别有八种商品,价格分别为1元,4元,2元,3元,6元, 7元,5元,8元,机器采用拨码开关模拟机器的复位键、确认购买键和商品选择,并且通过开发板上的LED等分别显示购买的不同情况,数码管实时显示购买金额,包括投入的价钱,找零的价钱。此设计按照EDA课程设计 的流程进行源代码的编写、仿真。本设计主要利用Quartus等设计软件进行设计。3、框图依题目要求设计流程框图如下所示:图2-1 程序流程图4、任务分解本设计主要包括按键模块、显示模块、语音提示模块

4、。设计程序任务如下图:图2-2 程序任务图任务一:存储商品信息。商品名称及商品价格等信息。任务二:响应用户选择商品的操作。用户用过按键选择商品,售卖机要实时显示商品名称及价格信息。任务三:货币处理。待用户选择商品结束,售卖机要接收用户投币,包括判断纸币的面额、总金额、是否投币结束等信息。任务四:人性化设计。售卖机要有良好的人性化交互界面,以及必要的文字、语音等提示信息。三、关键任务的设计代码及注释12商品选择进程设计:data:process(START,sel_add)begin if START='1' then f sel_add'event and sel_ad

5、d='1' then item<=item+1;if item ="000" then item_dis <="11000000"money_dis<="10011001"elsif item ="001" then item_dis <="11111001"money_dis<="11111000"elsif item ="010" then item_dis <="10100100"

6、;money_dis<="10100100"elsif item ="011" then item_dis <="10110000"money_dis<="10110000"elsif item ="100" then item_dis <="10011001"money_dis<="11111001"elsif item ="101" then item_dis <="10010010&q

7、uot;money_dis<="10011001"elsif item ="110" then item_dis <="10000010"money_dis<="10110000"elsif item ="111" then item_dis <="11111000"money_dis<="10000000"end if;end if;else item_dis<="11111111"money_di

8、s<="11111111"price <="0000" end if; end process data;-付钱进程设计:pay:process(finish ,one,five)begin if finish='1' then if one'event and one ='1' then pay_money_one<=pay_money_one+1; if five'event and five ='1' then pay_money_five<=pay_money

9、_five+5; end if;pay_money <= pay_money_five+pay_money_one;case pay_money iswhen "0000" => pay_money_dis_g <= "11000000"pay_money_dis_s <= "11000000"when "0001" => pay_money_dis_g <= "11111001"pay_money_dis_s <= "11000000&quo

10、t;when "0010" => pay_money_dis_g <= "10100100"pay_money_dis_s <= "11000000"when "0011" => pay_money_dis_g <= "10110000"pay_money_dis_s <= "11000000"when "0100" => pay_money_dis_g <= "10011001"pay_

11、money_dis_s <= "11000000"when "0101" => pay_money_dis_g <= "10010010"pay_money_dis_s <= "11000000"when "0110" => pay_money_dis_g <= "10000010"pay_money_dis_s <= "11000000"when "0111" => pay_money_

12、dis_g <= "11111000"pay_money_dis_s <= "11000000"when "1000" => pay_money_dis_g <= "10000000"pay_money_dis_s <= "11000000"when "1001" => pay_money_dis_g <= "10010000"pay_money_dis_s <= "11000000"wh

13、en "1010" => pay_money_dis_g <= "11000000"pay_money_dis_s <= "11111001"when "1011" => pay_money_dis_g <= "11111001"pay_money_dis_s <= "11111001"when "1100" => pay_money_dis_g <= "10100100"pay_mone

14、y_dis_s <= "11111001"when "1101" => pay_money_dis_g <= "10110000"pay_money_dis_s <= "11111001"when "1110" => pay_money_dis_g <= "10011001"pay_money_dis_s <= "11111001"when "1111" => pay_money_dis_

15、g <= "10010010"pay_money_dis_s <= "11111001"when others => pay_money_dis_g <="11000000"pay_money_dis_s <= "11000000"end case;if pay_money >= price then back <= pay_money-price;case back iswhen "0000" => money_back_dis <= &q

16、uot;11000000"when "0001" => money_back_dis <= "11111001"when "0010" => money_back_dis <= "10100100"when "0011" => money_back_dis <= "10110000"when "0100" => money_back_dis <= "10011001"when &

17、quot;0101" => money_back_dis <= "10010010"when "0110" => money_back_dis <= "10000010"when "0111" => money_back_dis <= "11111000"when "1000" => money_back_dis <= "10000000"when "1001" => mo

18、ney_back_dis <= "10010000"when others => money_back_dis <="11000000"-声音提示进程设计:int:process(START,finish)begin if START ='1' and finish = '0' then sound<="01"elsif START ='1' and finish = '1' then sound<="10"elsif S

19、TART ='0' and finish = '0' then sound<="11"end if;end process int;-end architecture behav;四、调试中出现的问题及解决方案1、问题一问题描述:本设计语音芯片采用LJ600,选择扬声器输出模式,可存储6段语音片段,对应6个引脚下降沿触发且低电平至少维持1ms,语音触发之后必须处于高电平状态,否则影响其他语音输出。综上描述,触发信号应为一个门信号。由于系统未引入时钟,且在同一进程中不可对输出信号重复赋值,产生问题。 解决办法:代码如下图,在if语句中实现状态跳转。2、问题二变量初始化状态必须明确定义高低电平。即状态输出时,必须考虑高低电平两种状态,不可以出现不确定状态。完

温馨提示

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

评论

0/150

提交评论