본문 바로가기

Verilog/HDLbits

[HDLBits] Exams/2013 q2afsm

1.    문제 및 설명

     A.   이 FSM은 Arbiter 회로로 동작하며, 3개의 장치가 공유 자원에 접근할 수 있도록 제어한다.

     B.   각 장치는 요청 신호 r[i]를 통해 자원 사용을 요청한다.

     C.   FSM은 요청이 없는 동안 대기 상태를 유지한다.

     D.   우선 순위는 다음과 같다.

  • 장치1 > 장치2 > 장치3

     E.   장치 i가 grant를 받으면, 해당 요청 r[i]=1이 유지되는 동안 게속 grant를 유지해야 한다.

 

2.    요구사항

     A.   순차회로와 조합회로를 분리하여 구현하시오

  • 조합회로: 상태 전이 테이블을 위한 always block
  • 순차회로: 상태 플립플롭을 위한 always block 

     B.   FSM의 출력인 g[ㅑ]는 다음 두 방법 중 하나를 사용하여 기술하시오.

  • assign 구문
  • always block 

 

3.    문제 풀이

     A.   FSM 동작 원리

  • FSM은 요청신호 r[1:3]을 감시한다.
    • 요청이 없으면 대기상태 유지
    • 요청 발생 시 우선순위에 따라 grant 결정
    • grant 중인 장치가 요청을 유지하는 동안 현재 상태 유지
    • 요청이 해제되면 다시 요청 검사 수행

4. 모듈 정의

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input [3:1] r,   // request
    output [3:1] g   // grant
); 

 

 

5. 답

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input [3:1] r,   // request
    output [3:1] g   // grant
); 
   	parameter A = 3'b000, B = 3'b001, C = 3'b010, D = 3'b100;
    reg [3:1] state, next_state;
    
    assign g = state;
    
    always@(*)
        begin
            case(r)
                3'b000: next_state = A;
                3'b001: next_state = (state == A | state == B)?B:A;
                3'b010: next_state = (state == A | state == C)?C:A;
                3'b011: next_state = (state == A | state == B)?B:(state == C)?C:A;
                3'b100: next_state = (state == A | state == D)?D:A;
                3'b101: next_state = (state == A | state == B)?B:(state == D)?D:A;
                3'b110: next_state = (state == A | state == C)?C:(state == D)?D:A;
                3'b111: next_state = (state == A | state == B)?B:(state == C)?C:(state==D)?D:A;
            endcase
        end
    
    always@(posedge clk)
        begin
            if(!resetn)
            	state <= A;
            else
                state <= next_state;
        end
    
            

endmodule

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

[HDLBits] Exams/review2015 count1k  (0) 2026.05.31
[HDLBits] Exams/2013 q2bfsm  (0) 2026.05.17
[HDLBits] Exams/2012 q2b  (0) 2026.05.17
[HDLBits] Exams/2012 q2fsm  (0) 2026.05.17
[HDLBits] Exams/m2014 q6  (0) 2026.05.17