资源描述:
《基于vhdl的自动售货机设计80003》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、北华大学电子系统综合实习报告学院:电气信息工程学院专业班级:通信工程姓名:闫梦迪学号:指导老师:董胜实习时间:2015.11.30—12.1114目录1.实习题目……………………………………………………………P32.实习目的……………………………………………………………P33.实习技术要求………………………………………………………P34.实现过程……………………………………………………………P35.功能及代码…………………………………………………………P56.仿真及硬件测试………………………………………………
2、……P97.实习心得…………………………………………………………P128.教师评语…………………………………………………………P1414一.实习题目自动售货机设计二.实习目的通过本课题的研究,可以掌握电子控制系统的基本原理与其实现,通过对各个模块的编程及其仿真,对QuartusII软件的使用有所了解。每个波形模块的VHDL实现加深了硬件描述语言的学习。最终的顶层文件的调试,更是体现了综合知识的运用。三.实习技术要求本设计要实现自动售货机的基本功能,如货物信息存储、商品选择、进程控制、硬币处理、余额计算、显示等
3、功能。利用软件QuartusII平台,采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,与一般的软件开发不同,VHDL编程更需要熟悉一些底层的硬件知识,特别是数字逻辑电路的设计,因此VHDL编程的方法、思路都要更多的与硬件电路联系起来。完成系统各个功能模块的硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到实验台内的FPGA芯片以实现该系统,并在实验台上对设计进行验证。四.实现过程1)、根据设计要求实现过程分两部分:a、面向客户端模块设计基于Quartus2软件环境下,应
4、用VHEDL语言进行程序设计。以clk输入端口进行商品选择,coin1输入端口做钱数输入,Finish输入端口做确认,进而完成商品购买。b、面向个体端模块设计14以Get端口进行对商品价格修改的确认,以ST端口进行选择要修改的商品种类,coin0作为单价输入端口。2)、整体结构框图商品选择输入钱数设定控制器品种选择显示译码价格设定3)、程序框图开始开始商品选择Y返还输入钱数YN商品选择价格设定输入钱数钱数>=单价?N结束重新输入钱数?确认、找零(商品、价格设定模块)交易完成结束(客户端模块程序框图)14五.功
5、能及代码功能:顾客商品选择、付钱购买、找零,个体商户对商品种类及价格的修改,商品数量统计代码:libraryieee;useieee.std_logic_arith.all;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityS1isport(clk:instd_logic;--系统时钟r,set,st,get,finish:instd_logic;--设定、买、选择、完成信号coin0,coin1:instd_logic_vecto
6、r(3downto0);--输入钱数act0,act1:outstd_logic_vector(3downto0);--显示、开关信号y0,y1,y2,y3,y4:outstd_logic_vector(6downto0));--输入钱数、商品价格、找零显示数据endS1;architecturebehavofS1issignalitem0,item1:std_logic_vector(1downto0);--商品种类signalQ:INTEGERRANGE20DOWNTO0;--找零signalpri0,p
7、ri1,pri2,pri3:std_logic_vector(3downto0);signalquan0:integer:=9;signalquan1:integer:=9;signalquan2:integer:=9;signalquan3:integer:=9;--数量begin--设定部分com0:process(get,st,coin0)variableC:INTEGERRANGE20DOWNTO0;beginifget='1'thenifst'eventandst='1'thenitem0<=ite
8、m0+1;--对商品进行shezhiifitem0="00"thenact0<="1000";pri0<=coin0;C:=CONV_INTEGER(coin0);--shedingshi,自动售货机对4种商品的操作elsifitem0="01"thenact0<="0100";pri1<=coin0;C:=CONV_INTEGER(coin0);elsifitem0="10"then14act0<