인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

No author

This post's author information has been deleted.

Design Self-study Taste's Practical Verilog HDL Season 2 (AMBA AXI4 Complete Conquest)

[HDL Chapter 22] Valid/Ready Handshake I/F for accurate data transfer between modules - Practical

ready valid handshake 에서으 질문

Written on

·

67

·

Edited

1

안녕하세요 🙂

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

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

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

 

================ 다음 내용은 읽어보시고 지우시면 됩니다.=================

질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!

현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)

  1. 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)

  2. 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)

    1. 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..

  3. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)

    1. 서로 예의를 지키며 존중하는 문화를 만들어가요.

    2. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )

  4. 먼저 유사한 질문이 있었는지 검색해보세요.

  5. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

==================

22강 3분 42초 쯤에 해당되는 내용으로,

실습코드인 power_of_8_hs.v 에서 볼 수 있듯

assign s_ready = ~m_valid | m_ready;

s_ready가 m_ready만 요구하지 않고

~m_valid와 or 연산을 하고 있는데, 이런 case가 있을까요?

곰곰이 생각을 해봐도 잘 이해가 되지 않아서 여쭤봅니다.

verilog-hdlfpga임베디드amba

Answer 2

0

aifpga님의 프로필 이미지
aifpga
Instructor

안녕하세요 🙂

"assign s_ready = ~m_valid | m_ready;

s_ready가 m_ready만 요구하지 않고 ~m_valid와 or 연산을 하고 있는데, 이런 case가 있을까요?"

Chapter 2 장 random handshake 를 돌려보았고요.

다음 그림의 "2. 내부 버퍼는 비어있었음. (data 를 받을 수 있는 상태. ~m_valid)"
확인 부탁드려요.

image.png

다른 방법이 있다고 생각이 드시면, 생각하신 방법으로 코드를 수정해서 돌려보시면 되겠습니다.

즐공하세요 🙂

0

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

Valid/Ready Handshake 이해하기:

Valid/Ready Handshake 프로토콜은 데이터를 전송할 때 데이터의 유효성과 준비 상태를 한꺼번에 확인하여 정확하고 효율적인 데이터 전송을 보장하는 프로세스입니다. m_validm_ready는 각각 데이터가 유효한 상태와 데이터를 받을 준비가 된 상태를 나타내는데, 보통 두 신호가 모두 ‘1’일 때 데이터 전송이 이루어집니다.

s_ready에 대한 OR 연산 이해:

질문에서 제시한 assign s_ready = ~m_valid | m_ready;는 몇 가지 상황을 관리하기 위한 처리입니다. ~m_valid가 1이라는 것은 현재 데이터가 유효하지 않음을 의미하고, 이때 m_ready가 1이면 데이터가 준비되지 않았음을 나타낼 수 있습니다. 이러한 구조는 특정 설계에서 에러를 방지하거나 추가적인 상태 제어를 위해 사용될 수 있습니다.

기본적으로, s_ready는 Slave가 데이터를 받을 준비가 되었음을 Master에 알리는 신호입니다. 이 로직은 데이터 핸들링에서 추가적인 상태나 일관성을 유지하기 위해 설계될 수 있습니다. OR 연산을 사용함으로써 특정 시점에서 슬레이브가 데이터 수신을 멈추지 않도록 다양한 경로를 마련하여 안정성을 유지하려고 하는 것일 수 있습니다.

이 부분에 대해서 더 이해를 도울 수 있는 관련 질문들을 소개합니다:

이 질문이 강현민님께 도움이 되었길 바랍니다. 특정 상황에서는 AND보다 OR 연산이 더 유용할 수 있다는 점 염두해 두시길 바랍니다. 더 궁금한 점이 있으시면, 언제든지 질문해 주시기 바랍니다.

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

No author

This post's author information has been deleted.

Ask a question