인프런 커뮤니티 질문&답변
조건문에서 if 연속 사용
작성
·
8
1
안녕하세요 🙂
[1. 질문 챕터] : 21강(L1-P04)13분 14초
[2. 질문 내용] : else begin 다음에 if를 2번 사용해도 되는 것인가요?
[3. 시도했던 내용, 그렇게 생각하는 이유] : 첫번째 if 다음에 2번째부터는 else if를 사용해야 한다고 생각했습니다. 상관 없는 것인가요?
================ 다음 내용은 읽어보시고 지우시면 됩니다.=================
질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!
현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)
강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)
이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)
개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..
글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)
서로 예의를 지키며 존중하는 문화를 만들어가요.
질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )
먼저 유사한 질문이 있었는지 검색해보세요.
잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
==================
답변 2
0
안녕하세요 김동윤님,
열강중이시군요!
아마 byte enable 관련 부분을 보시고 질문 주신 것 같은데요.
always @(posedge clk or posedge areset) begin
if(areset) out_5 <= 16'h0;
else begin
if(sel[0]) out_5[7:0] <= in[7:0];
if(sel[1]) out_5[15:8] <= in[7:0];
end
end이부분에 만약 if else if를 로 위 부분을 교체한다면 당연히 펑션에 문제가 생기겠죠?
그리고 위 부분의 if 두개를 사용해도 문제없다는게 아래처럼 생각해보시면 이해가 되실까요?
always @(posedge clk or posedge areset) begin
if(areset) begin
out_5_low <= 8'h0;
out_5_high <= 8'h0;
end else begin
if(sel[0]) out_5_low <= in[7:0];
if(sel[1]) out_5_high <= in[7:0];
end
end두개의 코드는 동일한 동작을 합니다. 혹은 아래처럼 변경해도되죠
always @(posedge clk or posedge areset) begin
if(areset) begin
out_5_low <= 8'h0;
end else begin
if(sel[0]) out_5_low <= in[7:0];
end
end
always @(posedge clk or posedge areset) begin
if(areset) begin
out_5_high <= 8'h0;
end else begin
if(sel[1]) out_5_high <= in[7:0];
end
end3가지 다 동일한 동작을 합니다. 문법적으로도 안되는 부분은 없죠.
즉, if 를 2개 써도 문제 될 것은 없습니다. 혹 이해가 잘 안되시면 추가 질문 남겨주시기 바랍니다.
확인하는데로 바로 답변 드리겠습니다!
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 김동윤님께서 Verilog 조건문 사용에 대해 질문하셨네요.
Verilog에서 else if와 else begin 구문은 조건에 따라 코드를 더 가독성 있게 정리하기 위한 방법입니다. if 구문 다음에 여러 조건이 있을 경우, else if를 사용하여 논리를 줄지어 연결할 수 있습니다. 이는 여러 조건을 평가하면서 한 번에 한 가지 조건만 만족하게 하려는 경우에 유용합니다.
하지만 else begin 다음에 별도의 if를 여러 번 사용할 수도 있습니다. 이러한 경우에는 각각의 if 구문이 독립적인 조건 검사를 수행하고, 첫 번째 if의 조건이 만족되지 않으면 다음 if로 넘어가는 방식이 됩니다. 따라서 각 조건이 독립적이거나, 논리적으로 구분되어야 할 때는 else if 대신 else begin 다음에 개별 if를 사용하는 것이 가능합니다.
다만, 가독성을 높이고 코드의 구조를 명확히 하기 위해서는 else if를 적절히 사용하여 논리의 우선순위와 관계를 명확히 하는 것이 권장됩니다.
아래의 유사한 질문과 관련된 기존 답변을 참조하시면 도움이 될 수 있습니다:
- Verilog If문 관련 질문좀 드리겠습니다
- if 문과 case 문의 차이점에 관해 문의 드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




