首页 EDA实验报告---自动售货机

EDA实验报告---自动售货机

举报
开通vip

EDA实验报告---自动售货机EDA实验报告---自动售货机 EDA技术综合能力培训--- 自动售货机的设计 姓名:邵继洋、宋雪 班级:电信A1 一.实验内容: 本自动售货机系统,结合EDA技术,采用ALTERA公司可编程逻辑器件(CPLD)EPM7128SLC84-15芯片作为控制核心,再配以必要的外围电路从而实现只销售两种饮料,售价均为15元,可以找零和退币等功能的EDA应用系统。芯片的设计是以MAX_PLUS II 作为开发平台,VHDL语言作为开发语言,使用掌宇公司CIC_310 CPLD/FPGA数字开发系统完成软件测试。自己制作下载...

EDA实验报告---自动售货机
EDA实验报告---自动售货机 EDA技术综合能力 培训 焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载 --- 自动售货机的设计 姓名:邵继洋、宋雪 班级:电信A1 一.实验内容: 本自动售货机系统,结合EDA技术,采用ALTERA公司可编程逻辑器件(CPLD)EPM7128SLC84-15芯片作为控制核心,再配以必要的外围电路从而实现只销售两种饮料,售价均为15元,可以找零和退币等功能的EDA应用系统。芯片的设计是以MAX_PLUS II 作为开发平台,VHDL语言作为开发语言,使用掌宇公司CIC_310 CPLD/FPGA数字开发系统完成软件测试。自己制作下载板与外围电路。 二.实验 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 : 本自动售货机只销售两种罐装饮料。售价均为15元。顾客可以由两个不同投币孔分别投入3个5元硬币或2个10元硬币。一次交易只能买一罐,且自动找零。只要按下取消键就会马上无条件退币。本设计的硬件电路用2个按键电路代替2个投币孔,以LED点亮的数量显示各币种的投入数量,在以4Hz闪烁的LED来显示退币种类与数量。因为投币是计次电路,应先经过抖动消除电路处理。本设计采用1000Hz的系统时钟信号来控制所有买卖行为。系统中设计的复位键为管理人员所用,并未在用户界面中设计。 三.系统设计流程图: 四.自动售货机外观图:( 为指示灯) 五.电路原理图 六.PCB图: 根据PROTEL99画的系统原理图,成生PCB图。然后进行布局与布线。 注意:布线时将晶振这种易产生噪声的器件的输出端与芯片时钟输入端的连线尽量布为直线;将电源与地线的宽度定为30mil到100mil之间。本系统的电流不是很大,所以不用将板子的两面分别布成电源与地。 七.系统实物图 : 八.软件系统框图 九.源程序: 1.产生系统频率和退币信号电路 首先要根据硬件电路的晶振频率确定分频系数,先产生系统频率,在进一步分频产生退币信号。由于掌宇公司的开发系统上的晶振频率为20MHz,所以要分频系数分别为20000(COUNT)和250(COUNT1)。(注:由于在自制的下载板上使用了1MHz的有源晶振,所以把程序中的COUNT的范围改为0到1000即可。详见下面括号内部分) return_clock: block --input:reset and clk ,output:return_clk signal count : integer range 1 to 20000; (1 to 1000) signal count1 : integer range 1 to 250;---000; signal f1hz : std_logic; begin process (clk) begin if rising_edge(clk) then count<=count+1; if count<=10000 then (count<=500) f1hz<='0'; elsif (count>10000 and count<=20000) then (count>500 and count<=1000) f1hz<='1'; else f1hz<='0'; count<=0; end if; end if; end process; process (f1hz) begin if rising_edge(f1hz) then count1<=count1+1; if count1<=125 then return_clk<='0'; elsif (count1>125 and count1<=250) then return_clk<='1'; else return_clk<='0'; count1<=0; end if; end if; end process; end block return_clock; 2.投入10或5元硬币处理电路 先对按键信号进行去抖动处理。然后在投币信号到来时,先计算投币总量与总面值。再对投币总量进行显示。程序中用CASE语句将投币数量进行显示。此处以10元硬币处理电路为例。 coin_10_counting: block --input:clk,reset,coin_10 , output:led_ten,total_amount_10 signal coin10: std_logic;--cleared coin_10 signal signal no_coin_ten: integer range 0 to 2; begin u1:debounce port map(clk=>clk,touch=>coin_10,push_out=>coin10); process(reset,coin10) begin if reset ='1' then total_amount_ten<=0; no_coin_ten<=0; led_ten<="00"; elsif rising_edge(coin10) then total_amount_ten<=total_amount_ten+10; no_coin_ten<=no_coin_ten + 1; end if; case no_coin_ten is when 0 =>led_ten<="00"; when 1 =>led_ten<="01"; when 2 =>led_ten<="11"; end case; end process; end block coin_10_counting; 3.退币处理电路 此模块先要判断局部信号total_amount是否为 15,若大于等于15则输出全局信号money_ok。在出货信号为1时,程序才开始判断应该退出何种硬币与数量。如果按了取消键,必须立即执行退币处理。此程序在投币后,但未按下确认键时,而是按下取消键,也可以实现退出何种货币与种数的精确显示。另外,在按下确认键后,找零的硬币已经退出后,再按取消键,则又把原来投入的硬币退出。导致退出的硬币比投入的还要多。为了避免此情况发生,通过增加IF语句来把此中情况排除。此处的不足是无法对退货进行管理。 coin_returned: block --input:clk,reset,total_amount_ten,total_amount_five,return_clk,cancel,cola_out,diet_out --output:money_ok,led_five_return,led_ten_return,cola_choice,diet_choice signal total_amount:integer range 0 to 35; begin process(reset,clk) begin if reset ='1' then total_amount<=0; money_ok<='0'; led_five_return<= (others=>'0'); led_ten_return<= (others=>'0'); elsif rising_edge(clk) then total_amount<=total_amount_ten + total_amount_five; if total_amount>=15 then money_ok<='1'; else money_ok<='0'; end if; if (cancel='1') then if no_coin_five=3 then led_five_return(2)<=return_clk; led_five_return(1)<=return_clk; led_five_return(0)<=return_clk; elsif no_coin_five=2 then led_five_return(1)<=return_clk; led_five_return(0)<=return_clk; elsif no_coin_five=1 then led_five_return(0)<=return_clk; end if; if no_coin_ten=2 then led_ten_return(1)<=return_clk; led_ten_return(0)<=return_clk; elsif no_coin_ten=1 then led_ten_return(0)<=return_clk; end if; elsif (diet_out='1' or cola_out='1') then case total_amount is when 0 =>null; when 5 => led_five_return(2)<=return_clk; when 10 => led_ten_return(1)<=return_clk; when 15 =>null; when 20 =>led_five_return(2)<=return_clk; when 25 =>led_ten_return(0)<=return_clk; when 30 =>led_five_return(1)<=return_clk; led_ten_return(1)<=return_clk; when others =>led_ten_return(0)<=return_clk; led_ten_return(1)<=return_clk; end case; elsif((diet_out='1' or cola_out='1')and cancel='1') then case total_amount is when 20=> led_five_return(0)<=return_clk; led_ten_return(0)<=return_clk; when 25=> led_ten_return(1)<=return_clk; led_ten_return(0)<=return_clk; when 30=> led_ten_return(1)<=return_clk; led_ten_return(0)<=return_clk; led_five_return(0)<=return_clk; when others=>null; end case; end if; end if; end process; end block coin_returned; 4.出货并计算存货处理电路 当money_ok,ok,饮料选择都同时为1时,才进行出货处理。先假定两种存货量分别为20。当发生出货时进行递减计数处理。为了节省硬件资源与功耗,此系统并未采用数码管实时的显示存货量。而且初始货存由软件设定。为了使系统更加的人性化。所以在货存不足2时加以显示,以提醒顾客作出其他选择。所编程序为: give_check: block --input:money_ok,ok,cola_choice,diet_choice,reset --output:cola_out,diet_out,led_cola_out,led_diet_out,led_cola_ok,led_diet signal no_cola: integer range 0 to 20; signal no_diet: integer range 0 to 20; begin cola_out<='1' when (money_ok='1' and ok='1' and cola_choice='1') else '0'; led_cola_out<=cola_out; diet_out<='1' when (money_ok='1' and ok='1' and diet_choice='1') else '0'; led_diet_out<=diet_out; cola: process(reset,cola_out) begin if reset ='1' then no_cola<=2;--cola store amount led_cola_ok<='1'; elsif rising_edge(cola_out) then no_cola<=no_cola-1; else null; end if; if no_cola=0 then led_cola_ok<='0'; elsif no_cola=1 then led_cola_ok<=return_clk; else led_cola_ok<='1'; end if; end process cola; diet: process(reset,diet_out) begin if reset ='1' then no_diet<=20;--diet store amount led_diet_ok<='1'; elsif rising_edge(diet_out) then no_diet<=no_diet-1; else null; end if; if no_diet=0 then led_diet_ok<='0'; elsif no_diet=1 then led_diet_ok<=return_clk; else led_diet_ok<='1'; end if; end process diet; end block give_check; (完整程序在软盘上) 十.仿真管脚分配图: 十一.结束语 通过软件的设计调试,硬件电路的制作。最后软硬相结合,制作出了自动售货机系统的核心电路。它不仅完成了设计之初的基本要求,而且还增加了精确退币,存货报警,以及接受退货服务等功能。但是,由于受到学习时间和芯片逻辑单元的限制,在退货和复位上面还有待完善,还无法达到成为产品的要求。 这次实验使我对EDA技术有了更加深刻的理解。对电路板的设计和制作,及对Protel 99的使用也更加熟练。通过对设计中遇到困难的排除,我学到了很多书本上学不到的知识,也知道自己还有很大差距。自己要多学习,更要勇于实践,争取有更大的进步。 这次实验是在老师的耐心指导下完成的。她们在授课中,对我们所遇到的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 都做了耐心细致的讲解,并提出许多宝贵的建议,使我们受益匪浅。在此,感谢老师的关心指导。
本文档为【EDA实验报告---自动售货机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
管理咨询2022
暂无简介~
格式:doc
大小:383KB
软件:Word
页数:12
分类:企业经营
上传时间:2011-09-04
浏览量:44