inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

read response 관련

해결된 질문

357

작성자 없음

작성한 질문수 0

1

안녕하세요 fpga 7강 AXI4-Lite의 verilog code를 보다가 질문이 있어 어렇게 올립니다.

19분 41초 쯤 read와 관련된 verilog code를 보면 보여지는 AXI-lite의 5개의 channel 과는 다르게 Read response 관련해서 S_AXI_RRESP가 있는 이유가 궁금하며 read response와 관련된 ready/valid handshake가 없고 read에 관련된 handshake 만 있는 이유 또한 궁금합니다. 캡처3.PNG

fpga 임베디드

답변 1

1

설계독학맛비

안녕하세요 :)

우선 AXI 스펙이 그렇게 정의되어 있다 로 해결이 될 것 같은데요.

질문주신 내용의 이유를 생각해보면

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

AXI-lite의 5개의 channel 과는 다르게 Read response 관련해서 S_AXI_RRESP 존재이유

Read data 가 정상인지 알기 위해서겠죠? (당연한 이야기)

(여러 다양한 변수로 인하여) 간혹 제대로 data 를 못 가져 올 수 있습니다.

read response와 관련된 ready/valid handshake가 없고 read에 관련된 handshake 만 있는 이유 또한 궁금합니다.

Write 에서는 Channel 이 3개, Read 는 2개이죠.

flow 를 생각해보면,

<Write>

  1. Write Address

  2. Write Data

  3. Write Response

여기서 Write 의 Target (최종 목적지) 이 External memory 일시, Write 가 끝나는 시점은 3번입니다.

2번이 종료가 되었다고 해서 External memory 에 바로 Write 가 되지 않아요.

그 말은 3번까지 종료가 되어야 External memory 내의 Data 가 Valid 합니다.

이유는 Bus 를 통해서 Data 가 전달되고 (긴 과정)이 있기 때문이고요.

2번까지는 IP 기준에서 data 를 전달한거지, External memory 까지 도달하지 못한거죠. (2번 과정이 끝나야 request 가 External memory 에 도달함)

2번과정 이후, External memory 에 Write 를 완료해야, 이후에 3번이 종료가 됩니다.

<Read>

  1. Read Address

  2. Read Data (include Read response)

External memory 에서 Read 를 하게 되면, Read data 가 넘어오면 끝입니다.

앞서 Write 처럼 (긴 과정) 을 거쳐도 결국 read data 를 주는 주체(master)는 externel memory 입니다.

이미 Read 과정 1번에서 request 가 External memory 에 도달한거에요.

그래서 data 를 주면서 동시에 response 도 같이 포함합니다.

channel 을 아끼면 그만큼 Resouce (Area) 도 아낄 수 있고요.

 

자세한 내용은 스펙문서를 참고부탁드려요. (이게 현답일지도..?!)

즐공하세요 :)

UART0, 1 중 선택

1

59

2

datamoverbram모듈질문

1

66

2

vitis 설치엣 alveo kria versal 등 옵션을 끄고 설치를 했습니다.

1

101

2

vitis 설치 관련 질문 있습니다!

1

88

2

FPGA 공식문서 읽는법

1

99

2

보드 추가의 클릭창이 없습니다.

1

73

2

Edit in IP Packager에서 코드 수정 후 IP 수정하면 simulation에서 수정된 코드로 작동이 안됩니다

1

84

2

BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문

1

108

1

Vitis 코드 작성

1

130

2

vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.

1

297

3

[9장 led 점등 시간 제어 불가]

1

83

2

Platform Invalid 오류

1

153

3

WSL 설치 관련 문의드립니다!!

1

100

2

Vivado 툴, 파일 질문드립니다!

1

157

2

9장 LED 점등 안됨

1

113

3

Edit in IP Packager 이후에

1

89

1

Fpga 로직

1

92

2

pmu-fw is not running

1

128

2

Create Project에 대해서 궁금해요

1

92

2

장치관리자 USB 포트

1

102

2

FPGA 7장 AXI_LITE I/F질문

1

91

1

bram mover에서 합성할때

1

81

2

타이밍 위반 질문

1

81

2

rvalid 초기화

1

68

2