答案如下,唯一强调一下,
module top_module(
input clk,
input areset, // Freshly brainwashed Lemmings walk left.
input bump_left,
input bump_right,
input ground,
output walk_left,
output walk_right,
output aaah );
parameter left=0,right=1,fl=2,fr=3;
reg [1:0] state,next_state;
always @(posedge clk, posedge areset) begin
if (areset)
state<=left;
else
state<=next_state;
end
always @(*) begin
case(state)
left: next_state=ground?(bump_left?right:left):fl;
right: next_state=ground?(bump_right?left:right):fr;
fl: next_state=ground?left:fl;
fr: next_state=ground?right:fr;
endcase
end
assign walk_left=(state==left);
assign walk_right=(state==right);
assign aaah=(state==fr)|(state==fl);//不能写成aaah=(state==fr|fl),这样结果不对,但我不知道为什么,请看到这段代码的人留言告诉我一声,万分感谢。
endmodule