基于VHDL语言自动售货机设计实验报告-绝对原创.doc_第1页
基于VHDL语言自动售货机设计实验报告-绝对原创.doc_第2页
基于VHDL语言自动售货机设计实验报告-绝对原创.doc_第3页
基于VHDL语言自动售货机设计实验报告-绝对原创.doc_第4页
基于VHDL语言自动售货机设计实验报告-绝对原创.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

自动售货机设计实验报告一 设计题目:g)自动售货机设计FPGA模块模拟自动售货机的工作过程,要求如下(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。乘客可以连续多次投入钱币。(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。即有一个小键盘(0-9按键)来完成,比如输入15时要先输入1,再输入5。(3)顾客选择完商品后,可以选择需要的数量。然后可以继续选择商品及其数量,每次可以选择最多三个商品。然后显示出所需金额。顾客此时可以投币,并且显示已经投币的总币值。当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。二 程序代码:三 程序实现功能:FPGA模块模拟自动售货机:(1)售货机有两个进币孔,分别输入硬币和纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。乘客可以连续多次投入钱币。(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。(3)顾客选择完商品后,可以选择需要的数量。然后可以继续选择商品及其数量,每次最多选择最种商品,每种商品最多购买三个。然后显示出所需金额。顾客此时可以投币,并且显示已经投币的总币值。当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。四 程序功能模块分析:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; 实体说明:entity sellor isport ( clk:in std_logic; -系统时钟 sel,cancel,reset: in std_logic; -选择、取消、开始(用于进入初始状态)变量定义: coin: in std_logic_vector(1 downto 0); -5角硬币、1元硬币 crash:in std_logic_vector(5 downto 0); -100元、50元、20元、10元、5元、一元纸币 item: in std_logic_vector(3 downto 0); -16种商品 quantity:in std_logic_vector(1 downto 0); -商品数量(一次最多购买3件) change_out :out std_logic_vector(10 downto 0); -找零 item_out:out std_logic_vector(3 downto 0); -是否购买了商品(1表示有商品出来、0表示没有商品出来) change:out std_logic);-是否有找零end sellor;结构体说明:architecture behave of sellor is signal price:std_logic_vector(7 downto 0); signal counter: std_logic_vector(10 downto 0); -币数计数器 signal total_price:std_logic_vector(10 downto 0); -控制系统的时钟信号 type state_type is (initial_state,item1_state,quantity_state,money_state,sell_state,change_state); signal state:state_type; signal temp:std_logic_vector(1 downto 0); signal quan:std_logic_vector(3 downto 0);begin com:process(reset,sel,clk) begin if (clkevent and clk=1)then if reset=1 then state=initial_state;temp=00;quanitem_out=0000; -出票口关闭 change_out=00000000000; -找零口关闭 total_price=00000000000; -票价总额记录清零 counter=00000000000;-投入钱币总额记录清零 change=0; state if temp11 then else state if(cancel=1)then -按下“取消”按钮 state=initial_state; else 取消操作程序 if quantity=00 then item_out=0000;change=0; change_out=00000000000; state=initial_state; else 当选择0个商品 total_price=total_price+price*quantity;temp=temp+1;quan=quan+quantity; if (sel=1) then state=item1_state; else state if(cancel=1)then -按下“取消”按钮 state=total_price then state if(cancel=1)then item_out=0000;change=1; change_out=counter; -按下“取消”按钮 state=total_price then item_out=quan; -判断是否还有找零 state=change_state;-系统进入找零状态 else item_out=0000; state if(cancel=1)then item_out=0000;change=1; change_out=counter; -按下“取消”按钮 statetotal_price then change=1; change_out=counter-total_price; item_out=quan; else change=0; change_out=00000000000; state=total_price then state=sell_state; -系统进入出票状态 else state=money_state;end if;实现了商品的多次选择和与实际相符合的多次钱币输入,在尾部的商品也显示了商品的数

温馨提示

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

评论

0/150

提交评论