inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

21강의 DUT 질문 있습니다.

61

venusdj1007

작성한 질문수 6

1

21장 코드의 case문을 보면 c_state를 아래 정의한 case들과 비교해 각각의 명령을 실행하는 것인데 여기서 S_DONE일 경우 n_state를 S_IDLE로 바꿉니다. 근데 왜 wave form에서는 바로 바뀌지 않고, 1cycle 정도 후에 바뀌나요?

또 여기서 1cycle은 어떤 것을 의미하나요?

 

감사합니다.

always (c_state or i_run or is_done) begin 
	n_state = S_IDLE;
	case (c_state)
	S_IDLE : if (i_run == 1)
		n_state = S_RUN;
	S_RUN : if (is_done == 1)
		n_state = S_DONE;
	S_DONE : n_state = S_IDLE;

	endcase
end

verilog-hdl fpga 임베디드

답변 1

0

설계독학맛비

안녕하세요 🙂

그림에서 보시면,

image.png

캡쳐해주신 코드는 Combinational Logic 파트입니다. (파란색 부분)

코드에서 1 cycle 변경 부분은, 다음 그림에서 빨간색 부분이 되겠습니다.

빨간색 박스 내의 코드를 보시면, clk edge 에 맞추서, c_state <= n_state 로 반영합니다.

이것이 1 cycle delay 를 만들어 냅니다.

따라서 "S_DONE일 경우 n_state를 S_IDLE 로 바꾸는데요" 이 반영된 내용은 1 cycle 뒤에 c_state 로 반영됩니다. 따라서 질문주신

"wave form에서는 바로 바뀌지 않고, 1cycle 정도 후에 바뀌나요?"

이것은 코드에서 의도한 동작입니다.

즐공하세요 🙂

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

64

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