module lx0825(a,b,c,d,e,res,clk,clk1,q1,q2,q3,q4,q5,row,ra,Q1,beep);
input a,b,c,d,e;
input res,clk,clk1;
output[7:0]row,ra;
output[3:0]Q1;
output q1,q2,q3,q4,q5,beep;
reg q1,q2,q3,q4,q5,beep;
reg[7:0]row,ra;
reg[3:0]Q1;
reg[2:0]Y;
always @(res or q1 or q2 or q3 or q4 or q5)
begin
if(!res)
begin q1<=0;q2<=0;q3<=0;q4<=0;q5<=0;
end
else
begin
if(q1||q2||q3||q4||q5)
begin q1<=q1;q2<=q2;q3<=q3;q4<=q4;q5<=q5;
end
else
begin
if(a)
begin q1<=1;
end
else if(b)
begin q2<=1;
end
else if(c)
begin q3<=1;
end
else if(d)
begin q4<=1;
end
else if(e)
begin q5<=1;
end
end
end
end
always@( posedge clk)
begin
if(Q1<4'b1000)
Q1<=Q1+1;
else
Q1<=4'b0000;
if(q1)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b00011000;end
1: begin row<=8'b10111111;ra<=8'b00011000;end
2: begin row<=8'b11011111;ra<=8'b00011000;end
3: begin row<=8'b11101111;ra<=8'b00011000;end
4: begin row<=8'b11110111;ra<=8'b00011000;end
5: begin row<=8'b11111011;ra<=8'b00011000;end
6: begin row<=8'b11111101;ra<=8'b00011000;end
7: begin row<=8'b11111110;ra<=8'b00011000;end
endcase
end
else if(q2)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b00000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b11000000;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else if(q3)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b00000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else if(q4)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11000011;end
1: begin row<=8'b10111111;ra<=8'b11000011;end
2: begin row<=8'b11011111;ra<=8'b11000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b00000011;end
7: begin row<=8'b11111110;ra<=8'b00000011;end
endcase
end
else if(q5)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b11000000;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b00000000;end
1: begin row<=8'b10111111;ra<=8'b00000000;end
2: begin row<=8'b11011111;ra<=8'b00000000;end
3: begin row<=8'b11101111;ra<=8'b00000000;end
4: begin row<=8'b11110111;ra<=8'b00000000;end
5: begin row<=8'b11111011;ra<=8'b00000000;end
6: begin row<=8'b11111101;ra<=8'b00000000;end
7: begin row<=8'b11111110;ra<=8'b00000000;end
endcase
end
end
always@(posedge clk1 )
begin
if(res&&(a||b||c||d||e))
begin
if(Y<2) beep='b1;
else beep='b0;
Y=Y+1;end
if(!(res&&(a||b||c||d||e)))beep='b0;
end
endmodule
温馨提示:答案为网友推荐,仅供参考