题目:https://hdlbits.01xz.net/wiki/Lemmings3
代码:
module top_module(
input clk,
input areset, // Freshly brainwashed Lemmings walk left.
input bump_left,
input bump_right,
input ground,
input dig,
output walk_left,
output walk_right,
output aaah,
output digging );
parameter LEFT = 0, RIGHT =1, HHA_left = 2, HHA_right = 3, DIG_left = 4, DIG_right = 5;
reg [2:0] state, next_state;
always @(posedge clk or posedge areset)
if(areset)
state <= LEFT;
else
state <= next_state;
always@(*) begin
case(state)
LEFT : next_state = ground ? (dig ? DIG_left : (bump_left ? RIGHT : LEFT)) : HHA_left;
RIGHT : next_state = ground ? (dig ? DIG_right : (bump_right ? LEFT : RIGHT)) : HHA_right;
HHA_left : next_state = ground ? LEFT : HHA_left;
HHA_right: next_state = ground ? RIGHT : HHA_right;
DIG_left: next_state = ground ? DIG_left : HHA_left;
DIG_right: next_state = ground ? DIG_right : HHA_right;
default: next_state = LEFT;
endcase
end
assign walk_left = state == LEFT;
assign walk_right = state == RIGHT;
assign aaah = state == HHA_left || state == HHA_right;
assign digging = state == DIG_left || state == DIG_right;
endmodule