Home » Post » FPGA » VITIS HLS 찍먹 해보기 – AXI 기초지식 편

VITIS HLS 찍먹 해보기 – AXI 기초지식 편

목차

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

INTRO

Vivado가 Vitis로 바뀐지 한 세월이 지났지만, 귀찮아서 FPGA는 손 대지도 않았다. 이번 프로젝트는 AXI Bus에 대해 이해해보고 간단한 Simple Adder를 구성해서 어떻게 검증하는지, waveform은 어떻게 되는지를 알아볼 것이다. 이번 포스팅도 마찬가지로 틀린 내용이 있을 수도 있고, 대충 휘갈겨 썼으니 참고만하고 업무에 적용하지 말 것을 권장한다.

AXI

FPGA CPU와 우리가 설계한 PL로직과 통신하는 프로토콜이 AXI다. AXI는 Advanced eXtensible Interface라고 한다. 뭐 확장 가능한 interface라는 뜻이다. APB와 AHB에 비해 뭐가 좋긴 한데, 설명하자니 너무 길어서 AXI의 종류에 대해서만 간략하게 서술하고자 한다. 크게 3 종류가 있다. 자세한건 이 300페이지짜리 문서를 다운받아 감동에 떨며 보면 된다.

  • AXI Lite
  • AXI
  • AXI Stream

AXI Lite는 Burst 기능이 빠진 놈이고, AXI Stream은 말 그대로 ADC, DAC, 비디오처럼 스트리밍하는 것에 적합하게 최적화 된 것이다.
AXI에 기능을 빼거나 뭘 더 특화하거나 그런 식이다. 그럼 AXI 구성은 뭐 어떻게 되어있느냐?

AXI는 5개의 Channel로 구성되어 있다. 그리고 아래의 5개 채널은 독립적으로 동작한다.

  • AW(Address Write)
  • W(Write)
  • B(Write Response)
  • AR(Address Read)
  • R(Read)

쓸 때는 아래와 같이 동작한다.

Write Operation
  1. 주인님이 노예에게 야 어디에다가 뭐 할거야(ex – 메모리 어디 주소에다가 16 Burst로 incr하게 데이터 쓸거야) – AW로 지령을 던짐
  2. 주인님이 노예에게 데이터를 하사하신다.(16 Burst에 해당하는 데이터를 쓴다) – W로 데이터를 던짐
  3. 노예는 주인님에게 아이고 감사합니다 혹은 컄 퉤한다.(데이터를 잘 수신했음, 못 했음을 알려준다.) – B로 회신함

읽을 때는 아래와 같이 동작한다.

Read Operation
  1. 주인님이 노예에게 데이터를 요구한다. (ex – 메모리 어디부터 16개 데이터 incr로 내놔) – AR로 데이터를 던짐
  2. 노예는 주인님이 요구한 데이터를 넘긴다. – R로 데이터가 넘어감

세부 내용을 세세히 따져보면 머리가 박살나겠지만, 그건 나중에 박살나는걸로 하고, 일단 더 간단한 놈으로다가 즐겨보자

AXI4-Lite

Lite는 위에서 보는 것처럼 AW한번 던지고 데이터가 여러개가 쭉 들어오는 기능(Burst)이 빠졌다. 그래서 뭐, 성능은 좀 구려지겠지만 이해하기는 좀 더 좋다. 각 채널별 시그널들은 아래와 같다.

AXI4-Lite Signal

각 채널 별로 대충 서너개 정도 있다. 여기에 보면 Valid와 Ready가 있는데, Valid는 주인님이 하사하시는 데이터가 유효한 것임을 나타내는 것이고, Ready는 노예가 나 준비됐어요하고 알려주는 신호이다. 따라서 서로 데이터를 주고 받으려면 둘 다 High여야 Transaction이 이뤄진다.

물론 프로토콜은 연공서열이나 신분의 개념이 들어간 것이 아니므로, 주인님의 Valid 신호를 봐야 노예가 Ready를 띄울 수 있다거나, 반대로 주인님이 준비되기 전에 노예가 미리미리 Ready를 띄웠어야지! 하는 등의 규칙이 정해진 것은 아니다. 따라서 그냥 주인 입장에서 데이터가 유효한지만 보고 valid를 high, low를 띄우면 되고, 노예 입장에서는 받은 준비가 되어 있는지에 따라 Ready를 high, low를 띄우면 된다. 단, 데이터 tranaction이 이뤄지는 것은 둘 다 high인 T3에서 이뤄져야한다.

위 그래프를 이해하고 있다고 가정하고 다음에는 Simple adder를 구성해서 waveform을 구경해보도록 할 것이다.

댓글 남기기

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