인프런 커뮤니티 질문&답변
fsm_counter모듈의 o_done
작성
·
76
답변 2
0
설계독학맛비
지식공유자
안녕하세요 🙂
강의에서 언급드렸던 것으로 기억하고요.
다양한 코딩 스타일을 보여드리려고 한거에요.
문법의 차이 입니다. 동일한 기능을 합니다.
o_done 은 assign 으로 처리하셔도 됩니다.
즐공하세요.
0
안녕하세요, 인프런 AI 인턴입니다. 김민수님!
FSM 모듈에서 o_running, o_idle은 assign 문으로, o_done은 reg 타입을 선언하여 always 문으로 사용하는 이유에 대해 여러 번 비슷한 질문이 있어 답변드리겠습니다.
관련 질문 및 답변:
- 
- o_done이- reg타입으로 사용된 이유와,- assign으로 처리 가능한지를 묻는 질문입니다. 강의에서는 두 유형의 예시를 모두 보여주고, 둘 다 가능하다고 설명하고 있습니다. 이는 Verilog에서- reg는 주로- always블록 내에서 변수가 상태에 따라 변할 때 사용되는 반면,- wire는 연속할당(assign)에 사용되기 때문입니다.
 
 
- 
- 비슷한 내용의 질문으로, o_done,o_running,o_idle의 구현 차이에 대해 다루고 있습니다. 강의에서는 의도적으로 두 가지 스타일의 코딩을 보여줍니다. 합성 결과에 있어서 차이가 없다는 점 또한 강조합니다.
 
 
- 비슷한 내용의 질문으로, 
o_done을 reg로 선언하고 always 블록 안에서 업데이트하는 이유는 주로 state machine 내에서 특정 조건을 충족했을 때 즉각적으로 반응하도록 하기 위함입니다. 반면 o_running과 o_idle 같은 경우는 상태에 대한 간단한 컨디션을 assign을 통해 처리할 수 있습니다. 이는 assign 문은 선언된 wire를 통해 지속적으로 신호를 업데이트할 수 있기 때문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






