인프런 커뮤니티 질문&답변

베릴로그님의 프로필 이미지
베릴로그

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[FPGA 7장] HW IP 를 제어하기 위한 AXI4-Lite Interface 이해하기 - 코드리뷰편

S_AXI_WSTRB

해결된 질문

작성

·

328

1

S_AXI_WSTRB 신호가 read_and_modify_write를 대체할 수 있다고 말씀하셨는데, 기존 방법대로라면 Read가 Write 이전에 선행되어야 한다고 하신것에 대한 이유를 알 수 있을까요?

그냥 Write를 하면 되는 것 아닌가 해서요.!

답변 1

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

구글링에 좋은 설명이 없네요;; 직접써봅니다.

 

예를들어 64bit data bit witdh 를 갖는 메모리가 있다 라고 가정해볼께요.

image위 index 에서 "짝수번지 Data 는 수정하지 않고, 홀수번지인 1,3,5,7 부분에만 data 를 write" 하고 싶어요.

0~7 번까지의 메모리 값을 읽어보기 전까지 0,2,4,8 의 값은 우리가 알 수 있는 방법은 없죠. (미리 알고있다면 모를까)

<만약 Write strobe 가 없다면>

  1. 먼저 Read 를 해야겠죠. 이때 한번의 Transaction 을 소비합니다.

  2. 그런 후에 짝수번째 값은 읽어온 값을 0,2,4,6 에 그대로 쓰고, 1,3,5,7 에 쓰고싶은 값을 쓰고 다시 Write 하면 되겠죠.

위 과정이 Read and Modify Write 입니다.

<만약에 Strobe 가 존재해요.>

그러면 짝수번째 Strobe 는 0, 홀수 번째 strobe 는 1을 취하면 됩니다.

짝수번째에 어떤값을 우리가 넣어놔도 (don't care) strobe 가 0 이기 때문에 메모리 값을 update 하지 않겠죠. 다음과 같은 한번의 Transaction 으로 수행가능합니다.

  1. 짝수번째 값은 아무값이나 0,2,4,6 에 쓰고, 1,3,5,7 에 값을 쓰고 다시 Write 하면 되겠죠.
    이때 Strobe 는 짝수번째는 0, 홀수번째는 1 을 취합니다.

이거는 순수 Write 한번이면 되겠죠.

 

평소에는 없겠지만, 꾸준히 설계업을 하시다보면 쓸일이 있는 날이 오실꺼에요.

즐공하세요 :)

베릴로그님의 프로필 이미지
베릴로그
질문자

이해 됐습니다.! 감사합니다 :)

베릴로그님의 프로필 이미지
베릴로그

작성한 질문수

질문하기