강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của akflffltls8001
akflffltls8001

câu hỏi đã được viết

Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)

[L0-P11] FSM (Máy trạng thái hữu hạn)

fsm 설계 방식에 대한 질문

Viết

·

59

1

L0 - P11번 문제의 FSM설계에 대한 의문점이 있습니다. (강의 10분 20초)

맛비님이나 강의처럼 항상 reg로 현재의 state와

다음 state인 n_state를 선언하시고,

이후에 매 clk마다 state <= n_state;

이런식으로 state를 두 번 정의하시는데 이러는 방식에 이유가 있을까요? 제가 다음과 같이 풀어서 문제를 맞추었는데 이러면 안되는 이유가 있다면 그것도 궁금합니다.

 

 

image.png

 

verilog-hdlsystem-verilog

Câu trả lời 2

0

ETA님의 프로필 이미지
ETA
Người chia sẻ kiến thức

안녕하세요 miro11님.
열강 중이시군요! 캡처해 주신 것처럼, 해당 문제에서 miro11님처럼 풀어서 안 되는 이유는 없습니다.
다만 실무에서는 FSM이 복잡해지는 경우가 대다수인데요, 결국 리더빌리티(즉, 코드를 보기 편한가)가 좋기 때문이라고 생각됩니다.
다시 말하면, 코딩/디버깅 시 현재 상태와 다음 상태를 구분할 경우 디버깅할 때 용이한데요, 현재 상태가 무엇이고 다음 상태가 무엇인지 알면 현재 조건의 상태에서 다음 상태가 내가 원하는 상태로 가는지, 다음 상태를 보고 바로 알 수 있죠.
또한 논블로킹 로직(현재 상태)과 블로킹 로직(다음 상태)이 코드상에서 구분되어 있으니, 블로킹 로직만 코딩/디버깅하면 되어서 이 또한 리더빌리티 측면에서 좋다고 생각합니다.

오히려 제 답변보다 인프런 AI 인턴의 답변이 더 전문적으로 보이기도 하네요.
저도 처음엔 이게 왜 더 명확하다는 건지 선배들이 설명해 줘도 이해가 잘 안 됐습니다.
하지만 디자인 경험을 수년간 하다 보니 “아, 분리하는 게 리더빌리티를 포함한 여러 측면에서 유리하구나”라는 생각을 하게 됐죠.

시즌 1(Level 0,1)에서는 이 부분에 대해서 피부에 와닿지 않을 수도 있습니다.
올해 오픈 예정인 시즌 2(Level 2,3) 면접 예상 문제들을 풀어 보시다 보면, 조금이나마 코딩/디버깅 측면에서의 장점을 느끼실 거라 생각됩니다.

열강해주셔서감사합니다! 좋은 곳에서 훌륭한 엔지니어가 되시길 응원합니다!

 

 

혹 이해를 돕기 위한 추가적인 설명이 필요하시면 말씀 부탁 드립니다.

0

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

FSM(有限状态机, Finite State Machine) 설계에서 staten_state를 사용하는 이유는 설계 구조를 보다 명확하고 직관적으로 유지하기 위함입니다. 이 방식은 다음 이유로 일반적입니다:

  1. 작업 분리: 마지막 상태(state)와 계산된 다음 상태(n_state)를 분리하는 것은 FSM의 명확성을 높이며, 기능의 변경이나 확장 시 오류를 줄여줍니다.

  2. 클럭 동작과의 연계: 클럭 엣지에서 기존 상태를 n_state로 전환하는 것은 설계 구조상 안정성과 신뢰성을 높이는 데 도움을 줍니다. 이는 모든 상태 전환이 클럭 엣지를 기준으로 일어나도록 보장함으로써 타이밍이나 레이시 조건의 문제를 줄입니다.

  3. 유연한 상태기술: n_state는 현재 상태와 입력에 기반한 다음 상태를 쉽게 계산할 수 있어, 복잡한 상태 전환 로직을 보다 관리하기 쉽게 만듭니다.

물론, 질문에서 제시하신 방법처럼 한 번에 상태 변화를 처리할 수도 있지만 이는 단순한 설계에는 문제가 없을 수 있으나, 복잡한 시나리오에서는 읽기 힘들고 잠재적 오류를 더 쉽게 초래할 수 있습니다.

아래 유사한 질문과 관련된 기존 답변을 확인해 주시면 더 도움이 될 것입니다:

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

Hình ảnh hồ sơ của akflffltls8001
akflffltls8001

câu hỏi đã được viết

Đặt câu hỏi