HDLBits--Lemmings2

题目:HDLBits--Lemmings2_第1张图片

解析: 在Lemmings1中增加了一个ground信号,ground为0时,小人会掉下去,ground为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,GL=2,GR=3;//4个状态,GL,GR分别代表向左走时掉下去和向右走时掉下去
    reg[2:0] state,next;
    
    always@(*)
        begin
            case(state)
                LEFT:next=(ground)?((bump_left)?RIGHT:LEFT):GL;
                RIGHT:next=(ground)?((bump_right)?LEFT:RIGHT):GR;
                GL:next=(ground)?LEFT:GL;
                GR:next=(ground)?RIGHT:GR;
            endcase                
        end
    
    always@(posedge clk or posedge areset)
        begin
            if(areset)
                state<=LEFT;
            else
                state<=next;
        end
    
    assign walk_left=(state==LEFT)?1'b1:1'b0;
    assign walk_right=(state==RIGHT)?1'b1:1'b0;
    assign aaah=(state==GL | state==GR)?1'b1:1'b0;
endmodule

你可能感兴趣的:(HDLBits,fpga开发)