S_AXI_WSTRB
S_AXI_WSTRB 신호가 read_and_modify_write를 대체할 수 있다고 말씀하셨는데, 기존 방법대로라면 Read가 Write 이전에 선행되어야 한다고 하신것에 대한 이유를 알 수 있을까요?
그냥 Write를 하면 되는 것 아닌가 해서요.!
답변 1
1
안녕하세요 :)
구글링에 좋은 설명이 없네요;; 직접써봅니다.
예를들어 64bit data bit witdh 를 갖는 메모리가 있다 라고 가정해볼께요.
위 index 에서 "짝수번지 Data 는 수정하지 않고, 홀수번지인 1,3,5,7 부분에만 data 를 write" 하고 싶어요.
0~7 번까지의 메모리 값을 읽어보기 전까지 0,2,4,8 의 값은 우리가 알 수 있는 방법은 없죠. (미리 알고있다면 모를까)
<만약 Write strobe 가 없다면>
먼저 Read 를 해야겠죠. 이때 한번의 Transaction 을 소비합니다.
그런 후에 짝수번째 값은 읽어온 값을 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 으로 수행가능합니다.
짝수번째 값은 아무값이나 0,2,4,6 에 쓰고, 1,3,5,7 에 값을 쓰고 다시 Write 하면 되겠죠.
이때 Strobe 는 짝수번째는 0, 홀수번째는 1 을 취합니다.
이거는 순수 Write 한번이면 되겠죠.
평소에는 없겠지만, 꾸준히 설계업을 하시다보면 쓸일이 있는 날이 오실꺼에요.
즐공하세요 :)
UART0, 1 중 선택
1
58
2
datamoverbram모듈질문
1
66
2
vitis 설치엣 alveo kria versal 등 옵션을 끄고 설치를 했습니다.
1
101
2
vitis 설치 관련 질문 있습니다!
1
87
2
FPGA 공식문서 읽는법
1
99
2
보드 추가의 클릭창이 없습니다.
1
72
2
Edit in IP Packager에서 코드 수정 후 IP 수정하면 simulation에서 수정된 코드로 작동이 안됩니다
1
83
2
BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문
1
108
1
Vitis 코드 작성
1
130
2
vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.
1
295
3
[9장 led 점등 시간 제어 불가]
1
83
2
Platform Invalid 오류
1
153
3
WSL 설치 관련 문의드립니다!!
1
98
2
Vivado 툴, 파일 질문드립니다!
1
157
2
9장 LED 점등 안됨
1
113
3
Edit in IP Packager 이후에
1
88
1
Fpga 로직
1
92
2
pmu-fw is not running
1
128
2
Create Project에 대해서 궁금해요
1
91
2
장치관리자 USB 포트
1
102
2
FPGA 7장 AXI_LITE I/F질문
1
91
1
bram mover에서 합성할때
1
80
2
타이밍 위반 질문
1
81
2
rvalid 초기화
1
68
2





