인프런 커뮤니티 질문&답변
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 로 기술가능합니다만.. 어려우실 겁니다. (세상은 그렇게 호락호락하지 않다..?)
즐공하세요 :)




