资源描述:
《自动售饮料机销售verilog设计.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、自动售饮料机销售控制单元设计设计要求:每次投币一枚,分为5角和1元两种硬币,每瓶饮料的价格是2.5元。当投入2.5元时,则售一瓶饮料,若投入3元,则售一瓶饮料后,找零5角。自动售饮料机系统框图:饮料分sellwjin发单元硬币输入销售控制单元单元wjoutyyin找零分发单元clkreset用状态机法设计该系统的销售控制单元:1.画状态转换图:确定输入输出:输入:时钟信号clk、复位信号reset,五角输入信号wjin,一元输入信号yyin,每次投币一枚输出:销售信号sell,五角找零信号wjout状态划分:采用MOORE型状态机
2、,应考虑所有可能的状态,售货机内钱币的数量,共有七个状态:S0:投币时,售货机内没有硬币S1:投币时,售货机内已有5角S2:投币时,售货机内已有1元S3:投币时,售货机内已有1元5角S4:投币时,售货机内已有2元S5:投币时,售货机内已有2元5角S6:投币时,售货机内已有3元说明:箭头上的参数表示输入信号:wjinyyin圈里的参数表示:状态/sellwjoutS1/001010S0/0001S2/000110100101S6/1110S3/000110S4/00S5/10102.状态编码:S0=3`b000;S1=3`b001;S2
3、=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);inputclk,reset;//时钟、复位信号inputwjin,yyin;//输入outputsell,wjout;//输出regsell,wjout;regcurrent_state;//现态寄存器paramete
4、rS0=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.5yuanbeginse
5、ll=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;wj
6、out=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;s
7、ell=0;wjout=0;endendcaseendendmodule若用带流水线的MEALY型状态机实现:状态划分:可划分成五种状态:S0:投币时,售货机内没有硬币S1:投币时,售货机内已有5角S2:投币时,售货机内已有1元S3:投币时,售货机内已有1元5角S4:投币时,售货机内已有2元说明:箭头上的参数表示wjinyyin/sellwjoutS110/0010/0001/00S0S201/0001/1001/0010/0001/1110/10S310/00S42.状态编码S0=0;S1=1;S2=2;S3=3;S4=4;3.用V
8、erilog_HDL对状态转换图进行描述描述方式:将CS、NS、OL混合描述。modulesell(yyin,wjin,wjout,sell,reset,clk);inputyyin,wjin,reset,clk;//输