您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 食品饮料 > 自动售饮料机销售verilog设计
自动售饮料机销售控制单元设计设计要求:每次投币一枚,分为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元硬币输入单元找零分发单元饮料分发单元销售控制单元wjinyyinsellwjoutclkresetS5:投币时,售货机内已有2元5角S6:投币时,售货机内已有3元说明:箭头上的参数表示输入信号:wjinyyin圈里的参数表示:状态/sellwjout2.状态编码: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程序:moduleauto_sell(wjin,yyin,clk,reset,sell,wjout);S6/11S0/00S5/10S2/00S3/00S4/00S1/00010110011010011010101001inputclk,reset;//时钟、复位信号inputwjin,yyin;//输入outputsell,wjout;//输出regsell,wjout;regcurrent_state;//现态寄存器parameterS0=3`b000;S1=3`b001;S2=3`b011;S3=3`b010;S4=3`b110;S5=3`b111;S6=3`b101;//状态编码always@(posedgeclkorposedgereset)beginif(reset)current_state=s0;elsecase(current_state)S0://0yuanbeginsell=0;wjout=0;if(wjin)current_state=S1;elseif(yyin)current_state=S2;endS1://0.5yuanbeginsell=0;wjout=0;if(wjin)current_state=S2;elseif(yyin)current_state=S3;endS2://1yuanbeginsell=0;wjout=0;if(wjin)current_state=S3;elseif(yyin)current_state=S4;endS3://1.5yuanbeginsell=0;wjout=0;if(wjin)current_state=S4;elseif(yyin)current_state=S5;endS4://2yuanbeginsell=0;wjout=0;if(wjin)current_state=S5;elseif(yyin)current_state=S6;endS5://2.5yuanbeginsell=1;wjout=0;if(wjin)current_state=S1;elseif(yyin)current_state=S2;endS6://3yuanbeginsell=1;wjout=1;if(wjin)current_state=S1;elseif(yyin)current_state=S2;enddefault:begincurrent_state=S0;sell=0;wjout=0;endendcaseendendmodule若用带流水线的MEALY型状态机实现:状态划分:可划分成五种状态:S0:投币时,售货机内没有硬币S1:投币时,售货机内已有5角S2:投币时,售货机内已有1元S3:投币时,售货机内已有1元5角S4:投币时,售货机内已有2元说明:箭头上的参数表示wjinyyin/sellwjout2.状态编码S0=0;S1=1;S2=2;S3=3;S4=4;3.用Verilog_HDL对状态转换图进行描述描述方式:将CS、NS、OL混合描述。modulesell(yyin,wjin,wjout,sell,reset,clk);inputyyin,wjin,reset,clk;//输入outputwjout,sell;//输出regwjout,sell;reg[2:0]D;//状态寄存器parameterS0=0,S1=1,S2=2,S3=3,S4=4;//状态编码及定义always@(posedgeclk)beginif(reset)S0S2S3S4S101/1010/1001/0010/0010/0001/0010/0010/0001/1101/00beginsell=0;wjout=0;D=S0;endcase(D)S0://0yuanif(wjin)D=S1;elseif(yyin)D=S2;S1://0.5yuanif(wjin)D=S2;elseif(yyin)D=S3;S2://1yuanif(wjin)D=S3;elseif(yyin)D=S4;S3://1.5yuanif(wjin)D=S4;elseif(yyin)beginD=S0;sell=1;wjout=0;endS4://2yuanif(wjin)beginsell=1;wjout=0;D=S0;endelseif(yyin)beginD=S0;sell=1;wjout=1;enddefault://其他状态beginsell=0;wjout=0;D=S0;endendcaseendendmodule改进后的程序:modulesell(yyin,wjin,wjout,sell,reset,clk);inputyyin,wjin,reset,clk;outputwjout,sell;regwjout,sell,wjqq,wjreset,yyqq,yyreset;reg[2:0]D;parameterS0=0,S1=1,S2=2,S3=3,S4=4;always@(negedgewjinorposedgewjreset)if(wjreset==1)wjqq=0;elseif(wjqq==0)wjqq=1;elsewjqq=0;always@(negedgeyyinorposedgeyyreset)if(yyreset==1)yyqq=0;elseif(yyqq==0)yyqq=1;elseyyqq=0;always@(posedgeclk)beginif(!reset)beginsell=0;wjout=0;D=S0;wjreset=0;yyreset=0;endcase(D)S0://0yuanbeginwjreset=0;yyreset=0;if(wjqq)beginD=S1;wjreset=1;endelseif(yyqq)beginD=S2;yyreset=1;endendS1://0.5yuanBeginwjreset=0;yyreset=0;if(wjqq)beginD=S2;wjreset=1;endelseif(yyqq)beginD=S3;yyreset=1;endendS2://1yuanbeginwjreset=0;yyreset=0;if(wjqq)beginD=S3;wjreset=1;endelseif(yyqq)beginD=S4;yyreset=1;endendS3://1.5yuanbeginwjreset=0;yyreset=0;if(wjqq)beginD=S4;wjreset=1;endelseif(yyqq)beginsell=1;wjout=0;D=S0;yyreset=1;endendS4://2yuanbeginwjreset=0;yyreset=0;if(wjqq)beginsell=1;wjout=0;D=S0;wjreset=1;endelseif(yyqq)beginsell=1;wjout=1;yyreset=1;D=S0;endenddefault://其他状态beginsell=0;wjout=0;D=S0;endendcaseendendmodule
本文标题:自动售饮料机销售verilog设计
链接地址:https://www.777doc.com/doc-1558607 .html