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

sangwon lee님의 프로필 이미지
sangwon lee

작성한 질문수

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

PS,PL 통신관련 질문있습니다.

작성

·

575

1

안녕하세요 맛비님!

강의 듣던중 궁금한점이 있어서 질문 드립니다.

지금 강의 내용에서는 axi4-lite interface를 이용하여 pc에서 fpga로 데이터를 write하고 fpga에 write한 데이터를 다시 pc로 read하는 flow로 동작하는 내용인데, 데이터를 pc에서 fpga로 write하지 않고 fpga 로직 상에서 출력되는 데이터 (예를 들면, 카운터 값)을 axi4-lite interface를 이용하여 pc로 read 해올 수 있는 방법도 있는지 궁금합니다.

 

답변 2

1

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

안녕하세요 :)

알려드린 방법은 Master 가 PC 입니다. (Master : 동작의 주체가 되는 것)

그리고 양방향 (Read, Write) 가능했습니다. (방법은 영상 강의에 나와있습니다.)

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

간단하게 이렇게 해보면 어떨까요?

  1. FPGA logic 상의 출력되는 원하시는 값을 특정 register 로 넣어두시고요.

  2. PC 에서 scanf 로 무한루프를 통해서 읽고싶으신 Register 의 값을 읽는다.

그러면 다음 이야기의 동작이 될 것 같은데요.

데이터를 pc에서 fpga로 write하지 않고 fpga 로직 상에서 출력되는 데이터 (예를 들면, 카운터 값)을 axi4-lite interface를 이용하여 pc로 read 해올 수 있는 방법도 있는지 궁금합니다.

 

즐공하세요 :)

0

sangwon lee님의 프로필 이미지
sangwon lee
질문자

안녕하세요 맛비님!

빠른 답변 정말 감사합니다!

답변 주신 2번을 AXI4-Lite interface로 read만 동작 가능하게 설계 가능하다는 말씀이신건지 궁금합니다!

항상 질 높은 강의와 친절한 답변 감사합니다 :)

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

아 제가 헷갈리게 달았네요.

간단하게 이렇게 해보면 어떨까요?

  1. FPGA logic 상의 출력되는 원하시는 값을 특정 register 로 넣어두시고요.

  2. PC 에서 scanf 로 무한루프를 통해서 읽고싶으신 Register 의 값을 읽는다.

2번만 추가 설명한다면 SW 를 이런식으로 코딩하면 될 것 같아요.

while (1) {

read_data = Xil_In32( 읽고 싶은 register address );// HW 에 넣어두어야 겠죠?

printf("read_data : %d", read_data);

if(is_break) break; // break 조건은 직접 판단.

}

이렇게 하면 계속 읽을 것 같아요.

sangwon lee님의 프로필 이미지
sangwon lee
질문자

제가 이해와 지식이 부족하여 질문을 한번더 드리면 block design에서 axi 연결을 위해 맛비 님이 awprot과 arprot부분은 port생성만 하셨던거 처럼 write 부분의 port들은 생성만하고 read 부분만 동작하게 코딩하고 PC 부분은 맛비님이 답변주신 방향으로 진행하면 될까요?

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

write 부분의 port들은 생성만하고 read 부분만 동작하게 코딩하고 PC 부분은 맛비님이 답변주신 방향으로 진행하면 될까요?

제 예제에서는 이미 AXI4-Lite 로 Read, Write 할수 있는 환경이 있습니다.

그 환경을 사용하면 된다 입니다.

HW 에 Write 를 사용하지 않는다고 하신다면, 빼셔도 됩니다. (질문자님이 판단의 영역이네요.)

즐공하세요 :)

sangwon lee님의 프로필 이미지
sangwon lee

작성한 질문수

질문하기