inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

AXI4-Lite로 Read가 되지 않습니다.

263

장석우

작성한 질문수 1

1

안녕하세요 맛비님, 좋은 강의 해주셔서 항상 감사드립니다.

저는 현재 설계했던 연산기 core를 검증하기 위해 AXI4-lite 인터페이스를 통해 input과 weight를 write하고, output값을 read하는 모듈을 만들고 있습니다.

 

맛비님 강의에서처럼 bram을 사용하여 메모리를 통해 읽는다면 문제가 되지 않았겠지만, 메모리를 사용하지 않고 이미 설계해논 연산기 core 검증을 위해 무식하게 output값을 read해야 하는 상황입니다.

 

write 할 때, led를 점등하게 하여 write는 잘 되는것은 확인 하였는데, output값이 0으로만 출력되더라고요.

core(o_out_c) --> top --> myip_v1_0. --> myip_v_1_0_S00_AXI(i_out_c) 로 값이 이동합니다.

다음과 같이 slave register 0~6은 write전용, 7은 read전용으로 선언하였고, 코어 bitwidth가 16비트라 AXI와의 호환을 위해 32비트로 늘려주었습니다.

Simulation을 통해 i_out_c에 강제로 값을 넣어주어도 axi_rdata는 읽히지 않더라고요.

(Ready, Valid 모두 1 확인 했습니다)

0x1c번지에 write한 값을 바로 read할 때는 올바르게 출력되는데,

read only로 선언하면 왜 읽히지 않는 걸까요..?

혹시 메모리를 통해 저장해논 값만 읽을 수 있는 걸까요? AXI 구조를 제대로 이해하지 못했기 때문일까요..? 양해 부탁드립니다...

fpga 임베디드

답변 1

0

설계독학맛비

안녕하세요 🙂

먼저 답을 적기전에 실습코드를 고친부분 + 개인과제 까지 커버를 해드리는건 부담스러운 부분인지라 이 부분은 미리 양해를 부탁드릴게요. (정확한 답변이 어렵고, 파악하고 답을 드리는데 많은 시간이 소모됩니다)

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

음.. 단순하게 생각했을 때

bram 대신 output 을 직접 연결해보시는 건 어떠실까요?

core(o_out_c) -> myip_v_1_0_S00_AXI(o_out_c)

 

혹시 메모리를 통해 저장해논 값만 읽을 수 있는 걸까요? AXI 구조를 제대로 이해하지 못했기 때문일까요..?\

메모리의 값을 읽어서 AXI 로 연결하는 것이 개인적인 생각으로는 난이도가 높은 설계입니다.

당연히 메모리가 아닌 출력을 AXI4-Lite 로 읽을 수 있고요.

이는 이미 FPGA 9 장 10장에서 다루었다고 생각해요.

image

작성해주신 글만 놓고 보면 (어떤 변수가 있을지 모르겠지만) 하고자 하시는 일은, 충분히 가능해 보입니다.

즐공하세요 🙂

2

장석우

답변 감사합니다. 단순한 문제였는데 코드 리뷰를 제대로 안한 탓이었네요.

myip_v1_0_S00_AXI에서 localparam integer OPT_MEM_ADDR_BITS = 1;을 2로 바꾸지 않아서 adrress read가 한정적으로 되었던 것같네요. 커스텀 할 때는 기본 parameter만 신경썼었는데 전체적으로 코드를 잘 봐야겠습니다. 감사합니다.

0

설계독학맛비

해결하셨다니 다행이네요!!

알려주셔서 감사합니다.

즐공하세요 🙂

UART0, 1 중 선택

1

53

2

datamoverbram모듈질문

1

63

2

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

1

98

2

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

1

86

2

FPGA 공식문서 읽는법

1

96

2

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

1

71

2

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

1

82

2

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

1

106

1

Vitis 코드 작성

1

130

2

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

1

293

3

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

1

81

2

Platform Invalid 오류

1

150

3

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

1

96

2

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

1

154

2

9장 LED 점등 안됨

1

111

3

Edit in IP Packager 이후에

1

85

1

Fpga 로직

1

89

2

pmu-fw is not running

1

127

2

Create Project에 대해서 궁금해요

1

89

2

장치관리자 USB 포트

1

98

2

FPGA 7장 AXI_LITE I/F질문

1

90

1

bram mover에서 합성할때

1

77

2

타이밍 위반 질문

1

78

2

rvalid 초기화

1

66

2