module mimasuo(clk,reset,reset2,set,enter,in0,in1,in2,in3,in4,in5,in6,in7,in8,in9,open,error,s_set,o_out1,o_out2,o_out3,o_out4,in,jishu,out1,out2,out3,out4);
input clk,reset,reset2,set,enter;
input in0,in1,in2,in3,in4,in5,in6,in7,in8,in9;
output open,error,s_set;
output[3:0] o_out1,o_out2,o_out3,o_out4,in,out1,out2,out3,out4;
output[1:0] jishu;
reg[3:0] out1,out2,out3,out4,in;
reg[3:0] o_out1,o_out2,o_out3,o_out4;
reg open,error,s_set;
reg[1:0] jishu;
always @(posedge clk)
begin
if(!reset)
begin
open<=0;error<=0;out1<=0;out2<=0;out3<=0;out4<=0;jishu<=0;in<=0;s_set<=0;o_out1<=0;o_out2<=0;o_out3<=0;o_out4<=0;
end
else if(in0&&in1==0 && in2==0 && in3==0 && in4==0 && in5==0 && in6==0 && in7==0 && in8==0 && in9==0)
in<=0;
else if(in0==0 && in1 && in2==0 && in3==0 && in4==0 && in5==0 && in6==0 && in7==0 && in8==0 && in9==0)
in<=1;
else if(in0==0 && in1==0 && in2 && in3==0 && in4==0 && in5==0 && in6==0 && in7==0 && in8==0 && in9==0)
in<=2;
else if(in0==0 && in1==0 && in2==0 && in3 && in4==0 && in5==0 && in6==0 && in7==0 && in8==0 && in9==0)
in<=3;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4 && in5==0 && in6==0 && in7==0 && in8==0 && in9==0)
in<=4;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4==0 && in5 && in6==0 && in7==0 && in8==0 && in9==0)
in<=5;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4==0 && in5==0 && in6 && in7==0 && in8==0 && in9==0)
in<=6;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4==0 && in5==0 && in6==0 && in7 && in8==0 && in9==0)
in<=7;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4==0 && in5==0 && in6==0 && in7==0 && in8 && in9==0)
in<=8;
else if(in0==0 && in1==0 && in2==0 && in3==0 && in4==0 && in5==0 && in6==0 && in7==0 && in8==0 && in9)
in<=9;
end
always @(negedge set)
begin
s_set<= ~ s_set;
end
always @(negedge enter)
begin
if(jishu==3)
begin
jishu<=0;
s_set<=0;
end
else
jishu<=jishu+1;
end
always @(posedge clk)
begin
if(jishu==0 && enter && s_set)
begin
out1<=in;
end
else if(jishu==1 && enter && s_set)
begin
out2<=in;
end
else if(jishu==2 && enter && s_set)
begin
out3<=in;
end
else if(jishu==3 && enter && s_set)
begin
out4<=in;
open<=0;
end
end
always @(posedge clk)
begin
if(jishu==0 && enter && s_set==0)
o_out1<=in;
else if(jishu==1 && enter && s_set==0)
o_out2<=in;
else if(jishu==2 && enter && s_set==0)
o_out3<=in;
else if(jishu==3 && enter && s_set==0)
begin
o_out4<=in;
if(o_out1==out1 && o_out2==out2 && o_out3==out3 && o_out4==out4)
open<=1;
else
error<=1;
end
end
always @(posedge clk)
begin
if(reset2)
error<=0;
end
endmodule
密码锁文件
最新推荐文章于 2024-04-27 12:52:00 发布