inflearn logo
강의

講義

知識共有

設計独学맛비's 実戦 Verilog HDL Season 1 (クロックから内部メモリまで)

【HDL 第15章】HWの動作を制御するFSMを理解しよう。(理論編) - (原理さえ理解すれば、自動販売機や時計はすぐに設計できます。)

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

65

qhdbs1000

投稿した質問数 2

1

안녕하세요 🙂

[1. 질문 챕터] : 20강(15장) 6분 45초

[2. 질문 내용] : 강사님께서 '양방향 Handshake interface'를 사용할 때 밀리 머신을 사용한다고 하셨는데요, 이때의 양방향 Handshake는 다음 1번 2번 3번 중에 3번만 말씀하신 건지, 2번도 말씀하신 건지 궁금합니다. 제미나이한테 물어보니 2번 3번 둘 다 밀리머신으로 설계한다고 하는데 강사님께 여쭤보고싶어서 남깁니다.

1번: 단방향 데이터 + (No Ready) - Moore (이유: 출력 신호가 깨끗하고 타이밍 설계가 쉬움.)
2번: 단방향 데이터 + 핸드셰이크 - Mealy (이유: Ready에 즉각 반응하여 성능(Throughput)을 유지해야 함.)

3번: 양방향 데이터 + 핸드셰이크 - Mealy (이유: 상호 통신 시 발생하는 레이턴시를 최소화(0-cycle)하기 위함.)

 

verilog-hdl fpga 임베디드

回答 2

1

semisgdh

안녕하세요 🙂

밀리와 무어에 대해서는 장단점이 있어서요.

어떤 것이 정답이다 말씀드리기는 어려운데요. (둘다 1,2,3 번 가능하기 때문)

근래 제가 다니고 있는 회사에서는 1 cycle 을 더 밀더라도 freq 를 더 높이기 위한 합성 과정이 더 중요하기 때문에, 무어를 더 선호했습니다. cycle 이 중요한 디자인이라면 밀리를 써야겠죠.

요약하자면,

  • 이론적으로는: 핸드쉐이크의 효율을 위해 2, 3번 모두 밀리 머신을 권장합니다.

  • 현실적으로는: 타이밍 마진을 위해 무어 머신을 쓰거나, 밀리 머신 뒤에 Skid Buffer(또는 Register Slice)를 달아서 성능과 타이밍을 모두 잡는 설계를 많이 합니다.

즐공하세요 🙂

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. qhdbs1000님, 질문 주셔서 감사합니다.

밀리(Moore) 머신의 사용 맥락과 양방향 Handshake 인터페이스:

밀리와 무어(Moore) 머신은 상태 머신의 두 가지 주요 모델입니다. 일반적으로 밀리 머신은 상태의 변화가 입력 신호에 즉각적으로 반응하는 특성을 가지고 있어, 응답 시간이 덜 경직됩니다. 그러므로 핸드셰이크 프로토콜, 특히 즉각적인 데이터 처리와 반응성이 요구되는 양방향 데이터 전송 환경에서는 밀리 머신을 선호하기도 합니다.

질문에서 언급된 세 가지 경우에 대한 설명:

  1. 단방향 데이터 + No Ready - Moore 사용:
    이 경우는 출력 신호가 클럭에 맞춰 깨끗하게 나오고 타이밍 설계가 비교적 간단해서 Moore 머신이 적합합니다.

  2. 단방향 데이터 + 핸드셰이크 - Mealy 사용:
    질문하신 저의 해석으로, 단방향 데이터에도 ‘Ready’ 신호를 처리해야 한다면 데이터가 전송될 준비가 되었을 때 즉시 반응해야 하므로, 밀리 머신(Mealy)이 더 적합할 수 있습니다.

  3. 양방향 데이터 + 핸드셰이크 - Mealy 사용:
    상호 통신에서 발생할 수 있는 지연 시간을 최소화하는 것이 중요하기 때문에 밀리 머신을 사용하여 수신 쪽에서도 즉각적으로 데이터를 처리하고 응답할 수 있어야 합니다.

강의 내용 참조 및 관련 답변 링크:

당신의 질문은 핸드셰이크 인터페이스를 설계할 때 어떤 방식이 더 적합한지에 대한 이해를 돕기 위해 작성된 것으로 보입니다. 관련된 추가 질문에 대해 아래의 링크를 참고해 보시기 바랍니다:

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

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

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

Ubuntu 에서 옆에 라인 수 보는 방법

1

93

1