简单自动售货机VerilogHDL程序.docVIP

  • 5
  • 0
  • 约5.99千字
  • 约 8页
  • 2020-02-18 发布于安徽
  • 举报
. Word 文档 自动售货机VerilogHDL程序 一个简单的自动售卖饮料机的程序。该机器具有投币,显示余额,购买六种饮料,退钱等功能,为了更具实用性,增添了饮料选择允许提示和投币允许提示的功能。具体形容,可投入一元、五元、十元和二十元面值的钱币,显示出当前的余额,并根据当前的余额提示能购买哪些饮料,选择某种饮料,则输出选定的饮料,同时余额减去相应的金钱。若选择退钱,机器就退出所有的钱,余额清零。 下图为功能示意图: 选择饮料余额变化投币减钱 选择饮料 余额变化 投币 减钱 投币允 投币允 许提示 加钱 加钱 状态变化 状态变化 清零 清零 退钱允 退钱允 许提示 退钱 退钱 饮料选择提示 饮料选择提示 程序的状态表: money (余额) state (状态) 选择提示 投币提示 退钱提示 0 0 0选择 可以投币 无钱可退 1 1 可选择1,2 可以退钱 2或3 2 可选择1,2,3,4 4而20 3 可选择1~6 =20 4 不可再投 程序中包含了一个状态机,定义了一个任务(task)和函数(function),用该任务调用了该函数,使用若干分支语句,详见附后源程序和测试程序。 附上程序编译仿真图: 源程序如下: `define one 3b001 `define five 3b010 `define ten 3b011 `define twenty 3b100 module automart(money,state,moneyout,coinable,adrkable,bdrkable, cdrkable,drkout1,drkout2,drkout3,drkout4,drkout5, drkout6,coin,clk,reset,moneyback,choice1,choice2, choice3,choice4,choice5,choice6); input[2:0] coin;//投币输入,分为1、5、10、20元四种输入 input clk,reset,moneyback,choice1,choice2,choice3,choice4, choice5,choice6;//moneyback为退钱输入,choice1~6是饮料选择 output moneyout,coinable,adrkable,bdrkable,cdrkable,drkout1, drkout2,drkout3,drkout4,drkout5,drkout6; //依次为退钱输出,投币许可提示,饮料选择许可,6种饮料输出 output[2:0] state;//状态记录 output[7:0] money;//余额显示 reg[7:0] money; reg[2:0] state; reg moneyout,coinable,backable,adrkable,bdrkable,cdrkable; parameter A=3b000, B=3b001, C=3b010,D=3b011, E=4b100; assign drkout1=choice1adrkable; assign drkout2=choice2adrkable; assign drkout3=choice3bdrkable; assign drkout4=choice4bdrkable; assign drkout5=choice5cdrkable; assign drkout6=choice6cdrkable; always@(posedge clk) repeat(1)@(posedge clk) if (!reset) begin state=A;money=0;moneyout=0; end else begin case(state) A: begin//初始状态A,可投币进入别的状态 coinable=1;backable=0;adrkable=0;bdrkable=0;cdrkable=0; end B: begin//状态B,只能买1元的饮料,可退钱或投币 coinable=1;backable

文档评论(0)

1亿VIP精品文档

相关文档