基于VHDL的自动售货机设计_第1页
基于VHDL的自动售货机设计_第2页
基于VHDL的自动售货机设计_第3页
基于VHDL的自动售货机设计_第4页
基于VHDL的自动售货机设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、北华大学电子系统综合实习报告学 院 : 电气信息工程学院专业班级 : 通信工程 姓 名 : 闫梦迪学 号 : 指导老师 : 董胜实习时间 : 2015.11.30 12.11目录1. 实习题目P32. 实习目的P33. 实习技术要求P34. 实现过程P35. 功能及代码P56. 仿真及硬件测试P97. 实习 心得P128. 教师 评语P14一.实习题目自动售货机设计二.实习目的 通过本课题的研究,可以掌握电子控制系统的基本原理与其实现,通过对各个模块的编程及其仿真,对QuartusII软件的使用有所了解。每个波形模块的VHDL实现加深了硬件描述语言的学习。最终的顶层文件的调试,更是体现了综合知

2、识的运用。三.实习技术要求本设计要实现自动售货机的基本功能,如货物信息存储、商品选择、进程控制、硬币处理、余额计算、显示等功能。利用软件QuartusII平台,采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,与一般的软件开发不同,VHDL编程更需要熟悉一些底层的硬件知识,特别是数字逻辑电路的设计,因此VHDL编程的方法、思路都要更多的与硬件电路联系起来。完成系统各个功能模块的硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到实验台内的FPGA芯片以实现该系统,并在实验台上对设计进行验证。四.实现过程 1)、根据设计要求实现过程分两部分: a、面向客户端模

3、块设计 基于Quartus2软件环境下,应用VHEDL语言进行程序设计。以clk输入端口进行商品选择,coin1输入端口做钱数输入,Finish输入端口做确认,进而完成商品购买。b、面向个体端模块设计以Get端口进行对商品价格修改的确认,以ST端口进行选择要修改的商品种类,coin0作为单价输入端口。2)、整体结构框图商品选择输入钱数设定控制器品种选择显示译码价格设定3)、程序框图开始开始商品选择Y返还输入钱数YN商品选择价格设定输入钱数钱数>=单价?N结束重新输入钱数? 确认、找零 ( 商品、价格设定模块)交易完成结束 ( 客户端模块程序框图)五.功能及代码功能:顾客商品选择、付钱购买

4、、找零,个体商户对商品种类及价格的修改,商品数量统计代码:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity S1 isport ( clk:in std_logic; -系统时钟r,set,st,get,finish: in std_logic; -设定、买、选择、完成信号coin0,coin1: in std_logic_vector(3 downto 0); - 输入钱数act0,act1:out std_logic_vec

5、tor(3 downto 0); -显示、开关信号y0,y1,y2,y3,y4:out std_logic_vector(6 downto 0); -输入钱数、商品价格、找零显示数据end S1;architecture behav of S1 issignal item0,item1: std_logic_vector(1 downto 0); -商品种类signal Q: INTEGER RANGE 20 DOWNTO 0; -找零signal pri0,pri1,pri2,pri3: std_logic_vector(3 downto 0);signal quan0:integer:=9

6、; signal quan1:integer:=9;signal quan2:integer:=9;signal quan3:integer:=9; - 数量 begin - 设定部分com0:process(get,st,coin0)variable C:INTEGER RANGE 20 DOWNTO 0; begin if get='1' then if st'event and st='1' then item0<=item0+1; -对商品进行she zhi if item0="00" then act0<=&qu

7、ot;1000"pri0<=coin0;C:=CONV_INTEGER(coin0);-she ding shi, 自动售货机对4种商品的操作 elsif item0="01" then act0<="0100"pri1<=coin0;C:=CONV_INTEGER(coin0); elsif item0="10" then act0<="0010"pri2<=coin0;C:=CONV_INTEGER(coin0); elsif item0="11" t

8、hen act0<="0001"pri3<=coin0;C:=CONV_INTEGER(coin0); end if; end if; else act0<="0000" end if; if r='1' C=0;end if; case C is -设定价格 when 0 =>y3<="1000000" when 1 =>y3<="1111001" when 2 =>y3<="0100100" when 3 =>y3&

9、lt;="0110000" when 4 =>y3<="0011001" when 5 =>y3<="0010010" when 6 =>y3<="0000010" when 7 =>y3<="1111000" when 8 =>y3<="0000000" when 9 =>y3<="0010000" when others=>y3<="1111111"

10、 end case; end process com0;com1:process(coin1,clk,Q) -购买部分variable A,B,D:INTEGER RANGE 20 DOWNTO 0; begin if clk'event and clk='1' then item1<=item1+1; -对商品进行循环选择 if item1="00" then act1<="1000" B:=CONV_INTEGER(pri0); -购买时,自动售货机对4种商品的操作 elsif item1="01&quo

11、t; then act1<="0100" B:=CONV_INTEGER(pri1); elsif item1="10" then act1<="0010" B:=CONV_INTEGER(pri2); elsif item1="11" then act1<="0001" B:=CONV_INTEGER(pri3); end if; end if;A:=CONV_INTEGER(coin1); if finish'event and finish='1'

12、 then if item1="00" and coin1>=pri0 then Q<=A-B; D:=quan0-1;quan0<=quan0-1; elsif item1="01" and coin1>=pri1 then Q<=A-B; D:=quan1-1;quan1<=quan1-1; elsif item1="10" and coin1>=pri2 then Q<=A-B; D:=quan2-1;quan2<=quan2-1; elsif item1="11&

13、quot; and coin1>=pri3 then Q<=A-B; D:=quan3-1;quan3<=quan3-1; else Q<=A-B; end if; end if; if set='1' then item1<="00"act1<="0000"Q<=0;B:=0; end if; case coin1 is -设定钱数 when "0000"=>y0<="1000000" when "0001"=>y0&

14、lt;="1111001" when "0010"=>y0<="0100100" when "0011"=>y0<="0110000" when "0100"=>y0<="0011001" when "0101"=>y0<="0010010" when "0110"=>y0<="0000010" when "

15、0111"=>y0<="1111000" when "1000"=>y0<="0000000" when "1001"=>y0<="0010000" when others=>y0<="1111111" end case; case B is -单价钱数 when 0 =>y1<="1000000" when 1 =>y1<="1111001" when

16、2 =>y1<="0100100" when 3 =>y1<="0110000" when 4 =>y1<="0011001" when 5 =>y1<="0010010" when 6 =>y1<="0000010" when 7 =>y1<="1111000" when 8 =>y1<="0000000" when 9 =>y1<="0010000

17、" when others=>y1<="1111111" end case; case Q is -返还钱数 when 0 =>y2<="1000000" when 1 =>y2<="1111001" when 2 =>y2<="0100100" when 3 =>y2<="0110000" when 4 =>y2<="0011001" when 5 =>y2<="0010

18、010" when 6 =>y2<="0000010" when 7 =>y2<="1111000" when 8 =>y2<="0000000" when 9 =>y2<="0010000" when others=>y2<="1111111" end case; case D is -剩余数量 when 0 =>y4<="1000000" when 1 =>y4<="1

19、111001" when 2 =>y4<="0100100" when 3 =>y4<="0110000" when 4 =>y4<="0011001" when 5 =>y4<="0010010" when 6 =>y4<="0000010" when 7 =>y4<="1111000" when 8 =>y4<="0000000" when 9 =>y4<="0010000" when others=>y4<="1111111" end case; end process com1;end behav;六.仿真及硬件测试1)、引脚锁定2)、RTL电路图3)、时序仿真4)、硬件测试1.get='1' 设定内部价格2.隐藏内部设定价格3.输入8元 单价3元 找零5元 显示剩余数量8个7.实习心得在这次实验中,通过老师的介绍和我们自己的学习,我们学会了VHDL程序的基本语法

温馨提示

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

评论

0/150

提交评论