강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

강종민님의 프로필 이미지
강종민

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 16장] HW 의 동작을 제어하는 FSM 을 이해해보자. (실습편)

if 문과 case 문의 차이점에 관해 문의 드립니다.

작성

·

3.1K

1

fsm_test.v의 64행 Step 3 의 always  block 에서 o_done 을 1로 셋하는 부분에 궁금한 점이 있습니다.

아래와 같이 if ..else 문을 사용해도 되는 것 같은데 case문을 사용한 것과 타이밍이나 사이즈 면에서 합성 결과가 차이가 나는지  궁금합니다. 시뮬레이션 결과는 같이 보여서요..

if (c_state == S_DONE) o_done <= 1; else o_done <= 0;

if 문과  case문을 선택하는 것은 단지 설계자의 취향 차이 일까요?

 

퀴즈

하드웨어 설계에서 FSM(Finite State Machine)의 주요 목적은 무엇일까요?

데이터 저장 용량 최대화

제어 로직을 체계적으로 설계

클럭 주파수 자동 조정

전력 소모량 실시간 측정

답변 1

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

Function 적으로 예제를 만들다보니, if else 를 사용했구요. (미쳐 생각하지 못했습니다.)

저의 가이드는 if else 대신 case 사용이 가능하다면 case 를 쓰셔라 입니다. 

 

아래와 같이 if ..else 문을 사용해도 되는 것 같은데 case문을 사용한 것과 타이밍이나 사이즈 면에서 합성 결과가 차이가 나는지  궁금합니다. 시뮬레이션 결과는 같이 보여서요..

function 적으로 동일하게 보이게 만들었을 뿐, if 와 case 는 다른 로직을 만들 수 있습니다.

그리고 if else 와 case 는 서로 다른 기능을 갖고있습니다. 바로 우선순위 입니다.

if 문에는 우선순위의 개념이 존재합니다.

if,          우선순위 1

else if 우선순위 2

else    우선순위 3

우선순위 1 -> 2 -> 3 check  할 수 있는 로직이 생성됩니다.

 

case 문에는 우선순위가 없습니다.

switch (변수)

case 1

case 2

default 

 

case 1, 2, default 를 검사하는데 동시성을 갖습니다. 이는 완벽한 Mux 를 의미합니다.

if else 또한 Mux 를 이용해서 구현이 됩니다만, Mux 의 Chain 형태 (Mux 가 나열된) 로 로직이 합성됩니다.

즉, case 로 표현이 가능하다면 case 가 Logic size 입장에서 적게 사용가능합니다. 

 

if 문과  case문을 선택하는 것은 단지 설계자의 취향 차이 일까요?

설계자의 역량과 꼼꼼함 차이입니다. 다시적어드리면,

저의 가이드는 if else 대신 case 사용이 가능하다면 case 를 쓰셔라 입니다. (Case 문법을 정확하게 알고 계시다면...)

단순한비교는 if -> case 쉽게 변환 가능 합니다.

하지만 복잡한 비교에서는, if else 가 편하실 꺼에요.

if else  더 복잡한 기술이 가능함으로 이론상 모든 if else 를 switch case 로 기술가능합니다만.. 어려우실 겁니다. (세상은 그렇게 호락호락하지 않다..?)

 

즐공하세요 :)

 

강종민님의 프로필 이미지
강종민

작성한 질문수

질문하기