강의

멘토링

로드맵

Inflearn brand logo image

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

venusdj1007님의 프로필 이미지
venusdj1007

작성한 질문수

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

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

o_done만 reg type으로 선언한 이유

작성

·

15

0

안녕하세요 🙂

[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.

[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂

[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.)

 

fsm_counter_test 파일에서 처음에 input과 output을 선언하실 때 왜 output 중 o_done만 reg type이고, 나머지 output에 대해서는 reg로 선언하지 않으신 건지에 대한 이유가 궁금합니다.

감사합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

Verilog HDL에서 reg 타입과 wire 타입의 차이에 대한 질문은 HDL 설계에 있어 매우 중요한 부분입니다. 질문하신 “왜 outputo_donereg 타입으로 선언했는지”에 대한 답변을 드리겠습니다.

핵심 설명:

  1. regwire의 차이점:

    • wire 타입은 기본적으로 연결을 위한 역할을 하며, assign 문을 통해 값을 할당합니다. wire는 하드웨어의 연속적인 연결과 같습니다.
    • reg 타입은 always 블록 내에서 값을 저장하는 데 사용됩니다. 이는 사실 레지스터가 아니며, 특정 순간의 값을 보존할 수 있는 변수와 같은 역할을 합니다.
  2. o_donereg 타입으로 쓴 이유:

    • o_donereg로 선언한 이유는, 주로 always 블록 내에서 제어 논리에 따라 값이 할당되기 때문입니다. 이러한 방식은 특정 조건에 의해 값이 변할 수 있음을 암시합니다.
    • 나머지 outputwire 타입인 것은, 변화가 고정적이거나 값이 지연될 필요가 없고, 즉각적인 신호 전파(즉, 할당)가 필요하기 때문일 수 있습니다.

관련 질문 참조:

  • FSM 실습편에서 질문: 여기서도 유사한 질문이 올라왔으며, regwire의 선언 차이에 대한 설명이 제공되었습니다.
  • fsm_counter 관련 질문입니다!: o_done, o_idle, o_running 같은 여러 출력 신호에서 왜 일부만 reg로 선언되었는지에 대해 다루고 있습니다.

이러한 내용은 Verilog의 기본 구조와 ‘신호 종료 간의 관계’를 이해하는 데 중요한 예시가 될 것입니다. 고급 설계에서 이와 같은 변수 선언의 차이는 설계자의 의도와 연관성이 있으므로 다양한 예제를 통해 학습을 이어나가시면 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

venusdj1007님의 프로필 이미지
venusdj1007

작성한 질문수

질문하기