인프런 커뮤니티 질문&답변
[HDL 22장] F/F CE 관련 질문
작성
·
6
0
안녕하세요 🙂
[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.
[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂
[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.)
안녕하세요, 맛비님.
[HDL 22장] : Basic Module 설명 부분 (2:55) 관련하여 질문 드립니다.
해당 module에서는 data를 저장하는 F/F의 CE에 s_ready만 연결되어 있는데, s_ready & s_valid로 연결되어야 하는 것이 아닌지 궁금합니다.
handshake는 valid, ready가 모두 1일 때 data transfer가 발생하는 것으로 이해했는데, s_ready만 CE에 연결된 경우, s_valid == 0이어도 s_ready == 1이 되어서 data가 전달되는 상황이 발생되는 것이라고 생각했습니다.
좋은 강의 제공해주셔서 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. xo님, 질문 주셔서 감사합니다.
Valid/Ready Handshake 프로토콜 설명:
Valid/Ready Handshake 프로토콜은 데이터 전송 시 데이터를 수신하기 위해 송신자와 수신자가 서로 확인하는 과정입니다. 일반적으로 valid (s_valid) 신호는 송신하는 데이터가 유효하다는 것을, ready (s_ready) 신호는 수신자가 데이터를 받을 준비가 되어 있음을 나타냅니다. 데이터를 전송하기 위해서는 두 신호가 동시에 ‘1’이어야 합니다.
기존 설계 의도 이해:
질문 주신 부분에서는 data를 저장하는 F/F(Flip-Flop)의 CE(Clock Enable) 신호로 s_ready만 연결되어 있다는 점이죠. 흔히 handshake를 구현할 때, s_valid와 s_ready가 모두 ‘1’일 때 데이터를 저장하도록 구현합니다. 그러나 s_ready 신호만을 CE에 연결하면, s_valid가 ‘0’일 때에도 s_ready가 ‘1’이라면 CE가 활성화될 수 있습니다. 이렇게 설정된 이유는 특정 설계 의도에 따라 데이터를 받는 시점에서 항상 s_ready 상태가 유지되고, 유효한 데이터 상태에 대한 결정은 다른 부분에서 처리하고 있을 수 있기 때문입니다.
권장하는 해결책 및 분석:
s_valid와 s_ready를 모두 CE에 연결하여 둘의 AND 연산 결과가 CE를 활성화하도록 구현할 때 데이터의 일관성을 더 보장할 수 있습니다. 이 설정을 통해 데이터가 실제로 유효할 때만 전송되도록 합니다. 즉, 데이터가 유효함을 나타내는 s_valid가 ‘1’인 경우에만 데이터가 전송 및 저장되도록 설정할 수 있습니다.
관련 질문 및 유사한 답변을 확인해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





