1、8 21自动售货机控制系统设计 设计要求 设计制作一个自动售货机控制系统 该系统能完成货物信息存储 进程控制 硬币处理 余额计算 显示等功能 该系统可以管理四种货物 每种的数量和单价在初始化时输入 在存储器中存储 用户可以用硬币进行购物 按键进行选择 系统根据用户输入的货币 判断钱币是否够 钱币足够则根据顾客的要求自动售货 钱币不够则给出提示并退出 系统自动的计算出应找钱币余额 库存数量并显示 系统组成 系统以FPGA器件为处理数据和控制核心 系统按功能分为 分频模块控制模块译码模块译码显示模块 系统组成方框图 首先由售货员把自动售货机里的每种商品的数量和单价通过set键和sel键置入到RAM
2、里 然后顾客通过sel键对所需要购买的商品进行选择 选定以后通过get键进行购买 再按finish键取回找币 同时结束此次交易 按get键时 如果投的钱数等于或则大于所购买的商品单价 则自动售货机会给出所购买的商品 如果投的钱数不够 自动售货机不做响应 继续等待顾客的下次操作 顾客的下次操作可以继续投币 直到钱数到达所要的商品单价进行购买 也可以直接按finish键退币 自动售货机VHDL程序与仿真 自动售货机VHDL程序 文件名 AUTO vhd 功能 货物信息存储 进程控制 硬币处理 余额计算 显示等功能 说明 显示的钱数coin的以5角为单位 最后修改日期 2004 3 23 libra
3、ryieee useieee std logic arith all useieee std logic 1164 all useieee std logic unsigned all entityAUTOisport clk instd logic 系统时钟set get sel finish instd logic 设定 买 选择 完成信号coin0 coin1 instd logic 5角硬币 1元硬币price quantity instd logic vector 3downto0 价格 数量数据item0 act outstd logic vector 3downto0 显示 开关
4、信号y0 y1 outstd logic vector 6downto0 钱数 商品数量显示数据act10 act5 outstd logic 1元硬币 5角硬币endAUTO architecturebehavofAUTOistyperam typeisarray 3downto0 ofstd logic vector 7downto0 signalram ram type 定义RAMsignalitem std logic vector 1downto0 商品种类signalcoin std logic vector 3downto0 币数计数器signalpri qua std logi
5、c vector 3downto0 商品单价 数量signalclk1 std logic 控制系统的时钟信号begin com process set clk1 variablequan std logic vector 3downto0 beginifset 1 thenram conv integer item price 对商品进行循环选择 elsifget 1 then 对商品进行购买ifqua 0000 andcoin prithencoin coin pri quan quan 1 ram conv integer item pri elsiffinish 1 then 结束交易
6、 退币 找币 ifcoin 0001 thenact10 0000 thenact5 1 coin coin 1 elseact5 0 act10 0 endif elsifget 0 thenact 0000 foriin4to7looppri i 4 ram conv integer item i 商品单价的读取endloop foriin0to3loopquan i ram conv integer item i 商品数量的读取endloop endif endif qua quan endprocesscom m32 process clk 此进程完成对32Mhz的脉冲分频variab
7、leq std logic vector 24downto0 beginifclk eventandclk 1 thenq q 1 endif ifq 111111111111111111111111 thenclk1 1 elseclk1 0 endif endprocessm32 code0 process item 商品指示灯译码begincaseitemiswhen 00 item0item0item0item0 1110 endcase endprocess code1 process coin 钱数的BCD到七段码的译码Begincasecoiniswhen 0000 y0y0y0
8、y0y0y0y0y0y0y0y0 1111111 endcase endprocess code2 process qua 单价的BCD到七段码的译码Begincasequaiswhen 0000 y1y1y1y1y1y1y1y1y1y1y1 1111111 endcase endprocess endbehav 自动售货机VHDL程序仿真 1 系统仿真全图2 系统仿真图 预置部分3 系统仿真图 商品种类选择部分4 系统仿真图 投币部分5 系统仿真图 购买 找币结束交易部分 1 系统仿真全图 2 系统仿真图 预置部分 3 系统仿真图 商品种类选择部分 4 系统仿真图 投币部分 5 系统仿真图 购买 找币结束交易部分