<br />编写一个密码锁的程序,自己编写了一个,在ISE软件里运行正确,可是在实验板上无法显示.综合,四位按键输入,初始密码是123,3次输入错误后就报警,有退格,确认按键,请教一下,程序如下:<br />module lock(rst,clk,cmd,cancel,enter,pass,alarm);<br /> input clk;<br /> input rst;<br /> input [3:0]cmd;<br /> input cancel,enter;<br /> output pass;<br /> output alarm;<br /> reg pass,alarm;<br /> reg [2:0]d;<br /> reg [8:0]password;<br /> reg [2:0]count;<br /> reg [2:0]state;<br /> parameter PASSWORD='d123;<br /> parameter st0=0,st1=1,st2=2,st3=3,st4=4;<br />always @(cmd)<br /> begin<br /> case(cmd)<br /> 4'b0111:d<=1;<br /> 4'b1011:d<=2;<br /> 4'b1101:d<=3;<br /> 4'b1110:d<=4;<br /> default:d<=0;<br /> endcase<br /> end<br />always @(posedge clk)<br /> if(!rst)<br /> begin<br /> pass<=0;<br /> alarm<=0;<br /> password<=0;<br /> count<=0;<br /> end<br />else<br /> case(state)<br /> st0:begin<br /> pass<=0;<br /> alarm<=0;<br /> password[8:6]<=d;<br /> state<=st1;<br /> end<br /> st1:if(!cancel)<br /> begin<br /> password<=0;<br /> state<=st0;<br /> end<br /> else<br /> begin<br /> password[5:3]<=d;<br /> pass<=0;<br /> alarm<=0;<br /> state<=st2;<br /> end<br /> st2:if(!cancel)<br /> begin<br /> state<=st1;<br />end<br /> else<br /> begin<br /> password[2:0]<=d;<br /> pass<=0;<br /> alarm<=0;<br /> state<=st3;<br /> end<br />st3:if(!cancel)<br /> state<=st2;<br /> else<br /> begin<br /> password[2:0]<=d;<br /> pass<=0;<br /> alarm<=0;<br /> state<=st4;<br /> end<br />st4:if(!enter)<br /> if(password==PASSWORD)<br /> begin<br /> pass<=1;<br /> alarm<=0;<br /> state<=st0;<br /> end<br /> else<br /> count<=count+1;<br /> else if(count>2)<br /> begin<br /> pass<=0;<br /> alarm<=1;<br /> state<=st0;<br /> end<br />default:begin<br /> pass<=0;<br /> alarm<=0;<br /> state<=st0;<br /> end<br />endcase<br />endmodule |
|