inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

FSM과 CORE logic 분리 설계..?!

118

어진

작성한 질문수 3

1

안녕하세요! 해당 질문이 적합한지 모르겠지만, 일단 남겨보겠습니다.

 

궁금한 것

fsm_counter_test이라는 하나의 모듈 안에 fsm logic(?)과 core logic(?)(counter)을 같이 설계하셨는데 실제로도 이렇게 core와 fsm을 하나의 모듈 안에서 설계하나요?

아니면 fsm_controlle, core_counter 이런식으로 두개의 모듈로 fsm과 core를 설계 후 top 모듈에서 두 모듈을 파생하면서 이어주시나요?!

물론 상황마다 다르겠지만,
후자처럼 나누어서 설계하는 경우도 있는지. 있다면 그런 경우가 더 많은지?! 궁금해서 여쭙니다!

verilog-hdl fpga 임베디드

답변 2

1

설계독학맛비

안녕하세요 🙂

코딩 스타일의 질문으로 이해했는데요.

제가 겪은 경험으로는 회사마다, 그리고 개인마다 FSM 로직을 어떻게 가져가는지 다르더라고요.

가독성을 따라가고 싶고요. 나누는 기준은 현업에 가셔서 선배분께 여쭤보시거나, 기존의 코드를 보시면 더 정확할 것 같습니다.

저는 어떤 스타일을 추천하는가로 답변을 이어가면 될 것 같아요.

간단한 거라면, 하나의 모듈내에 fsm 과 연산을 같이 두고 싶어요. (counter 예제)

복잡하다면, 나눠주시는 것도 좋겠습니다.

현업에 rule 이 있다면, 그 룰을 따라가시는 것이 가장 좋겠죠..?! (가장 좋은 답)

즐공하세요!

0

인프런 AI 인턴

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

스테이트 머신(FSM)과 코어 로직을 같은 모듈에서 설계할지, 분리할지는 설계의 복잡성과 시스템의 요구사항에 따라 달라집니다.

일반적으로 다음과 같은 경우에 나누어 설계할 수 있습니다:

  1. 복잡한 시스템: 시스템이 복잡하고 여러 구성 요소가 있는 경우, 각 구성 요소를 독립적으로 개발하고 관리하기 위해 FSM과 코어 로직을 분리하여 설계하는 것이 좋습니다. 이렇게 하면 각 모듈의 기능을 명확하게 정의하고 중복 코드를 피할 수 있습니다.

  2. 재사용성: 코어 로직이 여러 FSM에서 사용될 수 있다면, 이를 독립된 모듈로 만들어 재사용성을 높일 수 있습니다.

  3. 유지 관리: 분리된 모듈은 각각의 변경이 다른 모듈에 미치는 영향을 최소화하여 유지 보수를 용이하게 합니다.

반면에, 시스템이 단순하고 각 구성 요소 간의 상호작용이 강한 경우에는 하나의 모듈에 통합하여 설계할 수 있습니다. 이렇게 하면 설계가 직관적이고 간단해집니다.

관련해서 비슷한 질문과 답변을 참고하시면 더 도움이 될 것입니다. 예를 들어 FSM 설계 방법에 질문드립니다 게시물에서처럼, 설계 방법에 대한 여러 접근 방식을 논의하는 것이 다양한 관점에서 고민해볼 수 있게 도와줄 것입니다.

제가 도움이 되셨길 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

latency 개념 구현

1

84

3

비바도 all os버전

1

68

2

초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문

1

69

2

다운로드용량

1

69

2

비바도리눅스설치

1

79

2

전체path복사넣기

1

61

2

Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)

1

143

2

explorer.exe오류

1

102

3

mobaxterm설치오류

1

87

2

./build시, waveform 'divide color' 사용

1

54

2

Latch와 관련하여 (Time borrowing, Latch-based design)

1

123

2

clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.

0

59

1

안녕하세요 설치 관련 질문 드립니다.

1

61

3

16장 mealy 설계.

1

73

2

14장 Cycle 관련, Testbench 코드.

1

63

2

21강(16장) 초기값 설정이 적용되는 시점 질문

1

60

1

20강(15장) - 밀리 머신 관련하여 질문 드립니다.

1

65

2

build에러 질문

0

55

2

1장 ./build에서 에러가 나요

1

72

2

FPGA 강의 보드 문의 드립니다.

1

105

2

5장 DFF특성에 대한 질문

1

74

3

vivado linux 사용 이유.

1

135

2

메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.

1

103

2

디스코드 멤버쉽 등업 관련 문제

1

92

2