inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

22장 Vitis C언어 코딩 시 Register map 질문드립니다.

265

주노

작성한 질문수 5

1

안녕하세요 .

22장에서 BRAM을 하나 더 추가하여서 Core 수를 늘려보자는 취지로 하나 더 늘려보았습니다.

따라서 AXI 코드를

이렇게 설정해주었고 (16bit로 진행했기 때문에 BRAM 하나당 2Core = 4Core 입니다.)

Vitis C언어 상에서도

 

위와 같이 설정해주었습니다.

 

하지만, Vitis serial terminal 상에서는

이처럼 result_2 / result_3 에 관련된 값이 출력되지 않았습니다.

그래서 제가 추측하는 바로는 4'ha 를 0xa로 define하는 방법이 잘못되었나.. 생각이 들면서도 검색해봐도 16진수에 10은 0xa로 c언어상에서 표현한다고 하여 이렇게 궁금하여 질문드립니다.

 

항상 좋은 강의해주셔서 감사합니다.

fpga 임베디드

답변 1

0

설계독학맛비

안녕하세요 🙂

개인적으로 수정하신거라 정확한 답변이 어려운점은 양해 부탁드립니다.

질문을 정확하게 이해하지 못했는데요.

  1. 8b -> 16b 로 확장까지는 이해했습니다.

여기는 이해를 못했습니다. core 수를 늘리자고 했는데, bit 는 확장했고..

image.png


잘 모르는 상태에서 현상만 보았을때는

image.png

연결이 잘못된게 아닐까? 라는 생각도 드네요. 실제로 0 이 read 되는 상태라면..?


따라서 기존에 잘 나오는 result1,2 를 2,3 에 연결해보고 값이 동일하게 잘 나오는지 check 해봐도 좋을 것 같습니다. (result 2,3 의 연결 이슈인지 아닌지를 찾기위함)

1

주노

맛비님 답변 정말 감사합니다.

 

먼저 16Bit로 늘렸던 이유는 8Bit system으로는 정확도가 떨어진다고 생각하여 16Bit로 늘렸고, 그에 따라 32Bit BRAM으로는 Core가 2개로 줄어들기 때문에 BRAM을 하나 더 추가하여 Core 4개를 맞추고자, BRAM을 늘린거였습니다.

 

맛비님의 피드백을 보고, 이것저것 실험해보았습니다.

먼저 Vitis Code 상에서 Define을 변경해보았습니다.

image.pngimage.png

 

또한, 이처럼 그냥 기존에 result2 / result3 값을 계산하는 Core가 계산이 안되는 것인가? 라는 생각을 하게 되었습니다.

Module간에 Result Port도 여러번 확인해보았지만 문제가 없었습니다.

혹시나 Lab22 마지막 쯤에 말씀해주셨던 내용에서 Weight 값을 Update하여 여러번 Core를 돌리면 더 많은 Output Node를 구현할 수 있다고 말씀하셨던것 처럼 Weight를 Update하고 다시 Core를 돌리는 과정에서 BRAM0의 주소를 다시 Clear해야 하는것일까요?

 

Vitis에 먼저 돌리기 전에, Vivado를 통해 Simulation을 했을 당시에는 Result0/1/2/3 모두 동일한 Clock에 동시에 연산되는것처럼 보였기 때문에 이를 신경쓰지 않았지만 시뮬레이션과 다르게 실제 환경에서는 BRAM1에 Weight값 2개가 먼저 들어가고, 연산 후 BRAM2에 있는 Weight값 2개가 들어가는 형태인지 궁금합니다.

 

항상 좋은 강의를 해주셔서 감사합니다.

 

 

0

설계독학맛비

result0,1 은 잘나오고, 2,3 은 안나오는 상황이라면,

아키텍쳐를 result0,1 의 Core 모듈과 Memory 를 복제하여 result 2,3 을 구현하는 방법이 맞다면, 서로의 dependency 는 없다고 생각이 드는데요.

연결 이슈가 아닐까요?

UART0, 1 중 선택

1

50

2

datamoverbram모듈질문

1

63

2

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

1

96

2

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

1

84

2

FPGA 공식문서 읽는법

1

95

2

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

1

70

2

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

1

81

2

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

1

106

1

Vitis 코드 작성

1

130

2

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

1

289

3

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

1

81

2

Platform Invalid 오류

1

145

3

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

1

96

2

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

1

150

2

9장 LED 점등 안됨

1

109

3

Edit in IP Packager 이후에

1

82

1

Fpga 로직

1

89

2

pmu-fw is not running

1

126

2

Create Project에 대해서 궁금해요

1

89

2

장치관리자 USB 포트

1

98

2

FPGA 7장 AXI_LITE I/F질문

1

89

1

bram mover에서 합성할때

1

77

2

타이밍 위반 질문

1

78

2

rvalid 초기화

1

66

2