FSM(Finite State Machine) 로직에서 삼항 연산자(ternary operator)의 중요성은 가독성과 간결함, 효율성을 제공하는 데 있습니다. 삼항 연산자는 특히 상태 변화나 출력 로직을 간결하게 표현할 수 있어 FSM 설계에서 자주 활용됩니다.

 

삼항 연산자(ternary operator)는 세 개의 피연산자를 가지는 연산자로, 주로 조건에 따라 다른 값을 선택할 때 사용됩니다. 조건식 ? 참일 때 값 : 거짓일 때 값 의 형태로 쓰이며, 조건이 참일 때는 첫 번째 값을 반환하고, 거짓일 때는 두 번째 값을 반환합니다. 삼항 연산자는 간단한 조건부 로직을 한 줄로 표현할 수 있어 코드의 간결함과 가독성을 높이는 데 유용합니다.

삼항 연산자의 구조

삼항 연산자는 다음과 같은 형태로 작성됩니다:

- verilog
 
조건식 ? 참일 때의 값 : 거짓일 때의 값;

Verilog에서의 삼항 연산자 예시

-verilog
 
assign result = (a > b) ? a : b;
 

위 코드에서 a가 b보다 클 경우 result는 a의 값을 가지게 되고, 그렇지 않으면 b의 값을 가집니다. 즉, 조건 a > b가 참이면 a가 선택되고, 거짓이면 b가 선택되는 것입니다.

주요 특징

  1. 간결성: if-else 구문으로 표현할 수 있는 조건부 논리를 한 줄로 간결하게 표현할 수 있습니다.
    • if-else 버전:
      - verilog
       
      if (a > b) begin
         result = a;
      end else begin
         result = b;
      end
       
    • 삼항 연산자 사용:
      - verilog
       
      assign result = (a > b) ? a : b;
  2. 가독성: 간단한 조건일 경우 삼항 연산자를 사용하면 코드를 더 직관적이고 읽기 쉽게 만들 수 있습니다.
  3. 효율성: 짧은 논리를 처리할 때는 삼항 연산자가 더 효율적일 수 있으며, 이를 통해 리소스를 절약하고 하드웨어 회로 최적화에도 도움을 줄 수 있습니다.

 

위 그림 처럼 여러 state가 있는 경우에 case문을 활용한 삼항연산자가 if-else문을 활용한 것 보다 유용 할  수 있습니다.

 

-  Verilog Code

https://github.com/Vamosssss/HDLbits_Solutions/blob/main/3.%20Circuit/2.Sequential%20Logic/05.%20FSM/12.%20Lemmings3.v

+ Recent posts