自动售饮料机销售控制单元设计 设计要求:每次投币一枚,分为5 角和1 元两种硬币,每瓶饮料的价格是2.5 元。当投入2.5 元时,则售一瓶饮料,若投入3 元,则售一瓶饮料后,找零5 角。 自动售饮料机系统框图: 用状态机法设计该系统的销售控制单元: 1.画状态转换图: 确定输入输出: 输入:时钟信号clk、复位信号reset, 五角输入信号wjin ,一元输入信号yyin,每次投币一枚 输出:销售信号sell ,五角找零信号wjout 状态划分: 采用MOORE 型状态机,应考虑所有可能的状态,售货机内钱币的数量,共有七个状态: S0:投币时,售货机内没有硬币 S1: 投币时,售货机内已有 5 角 S2: 投币时,售货机内已有 1 元 S3:投币时,售货机内已有 1 元5 角 S4:投币时,售货机内已有 2 元 硬币输入单元 找零分发单元 饮料分发单元 销售控制 单元 w jin yyin sell wjout clk reset S5:投币时,售货机内已有2 元5 角 S6:投币时,售货机内已有3 元 说明:箭头上的参数表示输入信号:wjin yyin 圈里的参数表示:状态/sell wjout 2. 状态编码: S0=3`b000; S1=3`b001; S2=3`b011; S3=3`b010; S4=3`b110; S5=3`b111; S6=3`b101: 3.用Verilog_HDL 对状态转换图进行描述 描述方式:将CS 、NS、OL 混合描述。 销售控制单元的Verilog_HDL 程序: module auto_sell(wjin,yyin,clk,reset,sell,wjout); S6/11 S0/00 S5/10 S2/00 S3/00 S4/00 S1/00 0101100 1 10100110101010 01input clk,reset; //时钟、复位信号 input wjin,yyin; //输入 output sell,wjout; //输出 reg sell,wjout; reg current_state; //现态寄存器 parameter S0=3`b000; S1=3`b001; S2=3`b011; S3=3`b010; S4=3`b110; S5=3`b111; S6=3`b101; //状态编码 always @(posedge clk or posedge reset) begin if (reset) current_state = s0; else case (current_state) S0: //0yuan begin sell=0;wjout =0; if(wjin) current_state = S1; else if(yyin) current_state= S2; end S1: //0.5yuan begin sell=0;wjout =0; if(wjin) current_state= S2; else if(yyin) current_state= S3; end S2: //1yuan begin sell=0;wjout =0; if(wjin) current_state= S3; else if(yyin) current_state=S4; end S3: //1.5yuan begin sell=0;wj...