본문 바로가기

Verilog/HDLbits

[HDLBits] Lemmings1

1.    문제 및 설명

     A.     Lemmings의 2차원 세계에서, Lemming은 두 가지 상태 중 하나에 있을 수 있다.

  • 오른쪽으로 걷는 상태
  • 왼쪽으로 걷는 상태

     B.     Lemmings는 장애물에 부딪히면 이동 방향을 바꾼다.

  • 왼쪽에서 부딪히면 -> 오른쪽으로
  • 오른쪽에서 부딪히면 -> 왼쪽으로
  • 양쪽에서 동시에 부딪혀도 이동 방향을 바꾼다.

 

2.    요구사항

     A.     두 개의 상태, 두 개의 입력, 하나의 출력을 가지는 무어 상태 머신을 구현하시오.

 

 

3.    문제 풀이

     A.     State

  • LEFT
  • RIGHT

 

4. 모듈 정의

module top_module(
    input clk,
    input areset,    // Freshly brainwashed Lemmings walk left.
    input bump_left,
    input bump_right,
    output walk_left,
    output walk_right);

 

 

5. 답

module top_module(
    input clk,
    input areset,    // Freshly brainwashed Lemmings walk left.
    input bump_left,
    input bump_right,
    output walk_left,
    output walk_right); //  

    parameter LEFT=0, RIGHT=1;
    reg state, next_state;

    always @(*) begin
        // State transition logic
        case(state)
            LEFT: next_state = bump_left?RIGHT:LEFT;
            RIGHT: next_state = bump_right?LEFT:RIGHT;
        endcase
            
            
    end

    always @(posedge clk, posedge areset) begin
        // State flip-flops with asynchronous reset
        if(areset)
            state <= LEFT;
        else
            state <= next_state;
    end

    // Output logic
    assign walk_left = (state == LEFT);
    assign walk_right = (state == RIGHT);

endmodule
 

 

'Verilog > HDLbits' 카테고리의 다른 글

[HDLBits] Lemmings3  (0) 2026.04.11
[HDLBits] Lemmings2  (0) 2026.04.11
[HDLBits] Exams/ece241 2013 q4  (1) 2026.04.08
[HDLBits] Fsm3s  (0) 2026.03.17
[HDLBits] Fsm3  (0) 2026.03.17