Home » Post » FPGA » VITIS HLS 찍먹 해보기 – 기초 드라이버 작성해보기

VITIS HLS 찍먹 해보기 – 기초 드라이버 작성해보기

목차

  1. VITIS HLS 찍먹 해보기 – AXI 기초지식 편
  2. VITIS HLS 찍먹 해보기 – 기초 코드 이해해보기
  3. VITIS HLS 찍먹 해보기 – 기초 드라이버 작성해보기(현재 포스팅)

INTRO

HLS로 만든 IP로 FPGA를 돌려보자. 비바도 프로젝트를 실행해서 IP를 직접 연결해보는 것부터 시작이다.
연결 후, 드라이버 코드를 작성해서 제어까지 한번 해보는 것이 이번 포스팅의 목표이다.

VIVADO 프로젝트

대부분은 “Vivado UART 모듈 설계하기“포스팅과 비슷하다. 따라서 여기선 IP 읽어오는 것만 설정하려고 한다.

좌측에서 보면 project manager에 setting이 있다. 클릭한다.

설계한 ip를 import하고 ok한다.

그리고 위 그림처럼 연결하고 bitstream을 뽑는다.

  1. 인터럽트 핀은 IRQ_F2P에 연결해두어야한다.
  2. axi interface는 axi interconnect를 사용해서 zynq processer와 연결해야한다.

그리고 Hardware를 export하면 된다.

드라이버 참고

UG1399에 아주 잘 설명되어 있다. 이거 보고 작성하면 된다.

여기서 사용할 코드들은 아래와 같다.

  • X<DUT>_CfgInitialize
  • X<DUT>_LookupConfig
  • X<DUT>_Start
  • X<DUT>_Set_ARG
  • X<DUT>_Get_ARG
  • X<DUT>_InterruptGlobalEnable
  • X<DUT>_InterruptEnable

Vitis HLS 드라이버 코드 작성하기

먼저 Vitis를 실행한다.

그 다음에는 Application Project를 선택한다.

위와 같은 창이 뜨는데, Next를 선택한다.

Create a new platform from hardware를 선택하고, export한 xsa file를 load한다.

application project name을 입력하고 next를 입력한다.

next를 선택한다.

간단하게 hello world를 선택하고 기본적인 동작이 되는지 확인해본다.

내가 만든 ip 이름은 example이므로 xexample.h로 헤더가 생성된다. 해당 헤더를 보고 드라이버 코드를 작성하면 된다.

위에서 보는바와 같이 드라이버를 config하고, init을 해준다음, test할 a, b에 값을 넣어준다.

  1. XExample_LookupConfig로 deviceid0에 대한 설정을 읽는다.
  2. XExample_CfgInitialize로 init해준다. (사실 standalone이면 init함수를 바로 적용해도 된다.)
  3. XExample_Set_a XExample_Set_b로 제어하는 레지스터 값을 넣어준다.
  4. 인터럽트 설정을 해준다.

위에서 보는 것처럼 HLS 인터럽트로 설정해주고 gic 인터럽트쪽도 설정해준다. 자세한건 github에 업로드해두었다.

모든 설정이 끝났으면 hls module을 start해준다.

interrupt가 발생하면 결과를 읽고 비교해보면된다. (a + b = 15)
물론 인터럽트도 클리어해주고 해야하는데, 이건 나중에 수정해서 다시 업로드해두겠다.

이로서 hls로 설계한 모듈에 대한 드라이버 코드를 사용해서 제어를 해보았다.
3부작 포스팅 끝!

“VITIS HLS 찍먹 해보기 – 기초 드라이버 작성해보기”에 대한 3개의 생각

  1. 감사합니다!! HLS 튜토리얼을 다룬 블로그는 이 블로그가 유일하네요 진흙속의 진주만큼 소중한 글입니다 ㅎㅎ 다만 인터럽트 포트를 연결하는 내용도 추가해주셨으면 좋겠다는 생각이 드네요 연결 안하고 vitis까지 넘어온 다음에 빌드가 안되서 한참 헤멨습니다 ㅠㅠ

    1. 안녕하세요-! 도움이 되었다니 기쁘네요 🙂 인터럽트 포트 연결하는 건 zynq 프로세서와 intterupt 핀 연결되어 있는 그림만으로 부족했나보군요 😐
      몇 줄 더 코멘트 달아두겠습니다 🙂
      좋은 하루 되세요

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.