1、这个题目多了一个下落状态其实是多了两个状态。下落朝左和下落朝右。当处于下落状态时这两个状态时不能切换的,当时没考虑到这一点。所以写的时候总是出错。
2、还有那个ahhh是需要到下落状态才可以为1所以要用到一个阻塞赋值延后一个周期。
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]next_state,state;
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
always@(posedge clk or posedge areset)begin
if(areset)begin
state<=left;
end
else begin
state<= next_state;
end
end
always@(*)begin
walk_left=(state==left);
walk_right=(state==right);
end
//assign walk_left=(state==left);
//assign walk_right=(state==right);
always@(posedge clk)begin
aaah<=!ground;
end
endmodule