EDA课程设计--自动售货机.doc_第1页
EDA课程设计--自动售货机.doc_第2页
EDA课程设计--自动售货机.doc_第3页
EDA课程设计--自动售货机.doc_第4页
EDA课程设计--自动售货机.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

太原科技大学:名字起个什么 目 录一 设计任务与要求 3 二 总体框图 3 三 模块分析 4 1自动售货机系统框图4 2自动售货机工作流程4 3自动售货机源程序和仿真4四 电路总体设计 8 1总体电路原理图8 2时序仿真9 3管脚分配图11五 心得体会 12 自动售货机一 设计任务与要求能够完成对货物信息的存取、硬币的处理、余额计算与显示等功能。 自动售货机可以出售四种货物,每种商品的数量和单价的初始化时设定并存储在存储器中。采取模拟开关分别模拟5角和1元硬币来进行买卖,并通过按键来选择商品。系统可以根据用户输入的硬币判断硬币是否够,当所投硬币达到或超过购买者所选面值时,则根据顾客的要求自动退货并找回剩余的硬币,然后回到初始状态,当所投硬币不够时,则给出提示,并通过一个按键退回所投硬币,然后回到初始状态。二 总体框图 自动售货机的总体框图如图1所示。图1 总体框图三 模块分析分析系统设计要求,不难得知自动售货机系统可以通过多进程设计的方法实现。其中最主要也是最核心的进程控制自动售货机的货物信息储备、购买、价格计算、找币等功能,其他进程则负责选择商品种类的指示译码、消费品种单价和消费总价的显示译码等。1 自动售货机的系统框图如图2所示。其中,clk为输入时钟脉冲信号,set为货物信息存储信号,get为购买信号,sel为货物选择信号,finish为购买完成信号,coin0和coin1分别为5角和1元的投币,price3.0和quantity3.0分别为商品价格和数量。 输出信号中,item03.0和act3.0指示选择商品的种类并译码输出,y0输出购买消费的钱数,y1输出购买商品的单价,act10和act5分别表示找零的1元和5角的硬币数量。图2 系统框图 2 自动售货机的工作流程如下:当置数信号set为高电平时,对商品的单价、数量进行相应的设置;在每一次购买前,先对投入的硬币数量清零;购买时,首先以5角为基本单位对投入的硬币数量进行计数;当选择信号sel高电平有效时,选择所要购买的商品;当get信号高电平有效时,购买所选择的商品;当finish信号高电平有效时,结束交易并找币操作;当get信号为低电平时,则显示商品的价格及其数量。3 自动售货机源程序和仿真自动售货机VHDL源程序如下:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_auto1 isport ( clk:in std_logic; -系统时钟set,get,sel,finish: in std_logic; -设定、买、选择、完成信号coin0,coin1: in std_logic; -5角硬币、1元硬币price,quantity :in std_logic_vector(3 downto 0); -价格、数量数据item0 , act:out std_logic_vector(3 downto 0); -显示、开关信号y0,y1 :out std_logic_vector(6 downto 0); -钱数、商品数量显示数据act10,act5 :out std_logic); -1元硬币、5角硬币end PL_auto1;architecture behav of PL_auto1 istype ram_type is array(3 downto 0)of std_logic_vector(7 downto 0); signal ram :ram_type; -定义RAMsignal item: std_logic_vector(1 downto 0); -商品种类signal coin: std_logic_vector(3 downto 0); -币数计数器品单价、数量signal clk1: std_logic; -控制系统的时钟信号begincom:process(set,clk1)variable quan:std_logic_vector(3 downto 0);begin if set=1 then ram(conv_integer(item)=price & quantity;act=0000;-把商品的单价、数量置入到RAM elsif clk1event and clk1=1 then act5=0; act10=0; if coin0=1 then if coin1001then coin=coin+1; -投入5角硬币,coin自加1 else coin=0000; end if; elsif coin1=1 then if coin1001then coin=coin+2; -投入1元硬币,coin自加2 else coin=0000; end if; elsif sel=1 then item0000 and coin=pri then coin=coin-price;quan:=quan-1;ram(conv_integer(item)=price & quan; if item=00 then act=1000; -购买时,自动售货机对4种商品的操作elsif item=01 then act=0100; elsif item=10 then act=0010; elsif item=11 then act0001 then act10=1;coin0000 then act5=1; coin=coin-1; else act5=0; act10=0; end if; elsif get=0 then act=0000; for i in 4 to 7 loop pri(i-4)=ram (conv_integer(item)(i); -商品单价的读取 end loop; for i in 0 to 3 loop quan(i):=ram(conv_integer(item)(i); -商品数量的读取 end loop; end if; end if;qua=quan;end process com;m50:process(clk) -此进程完成对50Mhz的脉冲分频variable fre_N : integer range 0 to 10;variable clk_tmp: std_logic;BEGINclk1 = 9 thenfre_N := 0;clk_tmp := not clk_tmp;elsefre_N := fre_N + 1;end if;end if;end process m50;code0:process(item) -商品指示灯译码begincase item iswhen 00=item0item0item0item0y0y0y0y0y0y0y0y0y0y0y0y1y1y1y1y1y1y1y1y1y1y1=1111111; end case;end process;end behav;编程仿真 此程序通过Quartus 6.0允许,主芯片为Altera公司生产的型号为EPF10KLC84-4型FLEX10K芯片,根据VHDL程序进行仿真,所得结果正确,如图3所示。 图3 程序仿真图四 电路总体设计1 总体电路原理图 将VHDL程序所生成的模块图和对应的输入、输出相连,得到最终的总体电路原理图,经过仿真以后,在电路原理图会出来具体的管脚信息,如图4所示 图4 电路原理图2 时序仿真为了进一步考察设计出来的自动售货机的预置、选择、购买和找币功能是否正确,要用时序仿真波形进行分析。 图5 波形仿真图 自动售货机的商品信息预置功能仿真如图5所示。当set为低电平时,依次对四种商品的数量和单价进行设置。图6 自动售货机的商品选择功能仿真如图6所示。当商品选择信号sel为低电平时,对所要购买的商品种类进行选择。在sel逐次加1时,从而实现4种商品的循环选择。 图7 波形仿真图 自动售货机的投币功能如图7所示。Coin1对应1元硬币,coin0对应5角银币,则以5角为计数单位,投入1元 硬币时计数器加2,投入5角银币时计数器加1,保存计数器的值,已备个哦买商品和找币时进行计算,并显示投入的钱数。 图8 波形仿真图自动售货机的购买和找币功能如图8所示。当购买信号get为低电平时,对选择的商品种类进行购买,计算剩余的商品的钱数;当购买完成信号finish为低电平时,根据计算所得到的钱数给找出相应的银币数量,并显示剩余的钱数。3 管脚分配图首先进行管脚连接,如图4所示,已经将基本管脚连接至实验用芯片上,在将各个连线接至所需要的功能按键、开关、数码管或发光二极管上面。全程编译仿真后,下载到实验箱上。 图9 管脚分配图输 入输 出名 称管脚信息连接按键名 称管脚信息连接按键setPIN_35K1seg7(0)PIN_16aselPIN_36K2seg7(1)PIN_17bgetPIN_37K3seg7(2)PIN_18cfinishPIN_38K4seg7(3)PIN_19dcoin0PIN_52K11seg7(4)PIN_21ecoin1PIN_53K12seg7(5)PIN_22fclk1khzPIN_39CLK1seg7(6)PIN_23gclk1hzPIN_47CLK5scan0PIN_27sel10price0PIN_58D0scan1PIN_28sel11price1PIN_59D1scan2PIN_29sel12price2PIN_60D2item0(0)PIN_11ED0price3PIN_61D3item0(1)PIN_10ED1quantity0PIN_62D5item0(2)PIN_9ED2quantity1PIN_64D6item0(3)PIN_8ED3quantity2PIN_65D7act0PIN_67ED8quantity3PIN_66D8act1PIN_71ED9act2PIN_72ED10act3PIN_73Ed11act10PIN_6LED6act5PIN_7LED7实验箱上的按键在没有按动时是高电平,所以将实验所用功能按键都设定为低电平有效。第一步,预先拨动2组4位拨码开关,实现预置单价和数量第二步,按动set按键,此时数码管显示4位十进制数,由于片选信号在本实验箱有4个片选信号,所以数码管最左边的数字和显示数量的数字是一样的。分别为数量,单价,数量,钱数。第三步,按动sel选择按键,此时4个LED灯移位,表示要预置第二组数据,重复第一和第二步第四步,投币,按动coin0和coin1两个按键,当钱数大于单价时方可按动get键,此时,数码管显示剩余的钱数和剩余的数量,当放开get键时,数量由售货机自动补足到原来的数量,避免货物的不足,原理是放开get键时,由于变成了高点平,要重新读取ram中预先存入的数据。第五步,按动finish按键完成找币的动作,此时钱数的数码管清0。从上面的过程可以看出,下载验证非常成功,本次设计的自动售货机功能正确,符合系统设定的要求。五 心得体会 经过这次的课程设计实验,我个人得到了不少的收获,一方面加深了我对课本理论的认识,另一方面也提高了实验操作能力。现在我总结了以下的体会和经验。这次的实验跟我们以前做的实验不同,因为我觉得这次我是真真正正的自己亲自去完成。所以是我觉得这次实验最宝贵,最深刻的。就是实验的过程全是我们学生自己动手来完成的,这样,我们就必须要弄懂实验的原理。在这里我深深体会到哲学上理论对实践的指导作用:弄懂实验原理,而且体会到了实验的操作能力是靠自己亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充分的准备,若是做了也不知道是个什么实验,那么做了也是白做。实验总是与课本知识相关的。在实验过程中,我们应该尽量减少操作的盲目性提高实验效率的保证,有的人一开始就赶着做,结果却越做越忙,主要就是这个原因。我也曾经犯过这样的错误。我们做实验不要一成不变和墨守成规,应该有改良创新的精神。实际上,在弄懂了实验原理的基础上,我们的时间是充分的,做实验应该是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。在实验的过程中我们要培养自己的独立分析问题,和解决问题的能力。培养这种能力的前题是你对每次实验的态度。如果你在实验这方面很随便,抱着等老师教你怎么做,拿同学的报告去抄,尽管你的成绩会很高,但对将来工作是不利的。 通过电子课程设

温馨提示

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

评论

0/150

提交评论