[AMBA/AXI] AXI Burst 완전 정리 | FIXED, INCR, WRAP 타입과 AWLEN, AWSIZE, AWBURST 신호 설명

2026. 3. 20. 21:40AMBA

반응형

AXI(Advanced eXtensible Interface) 프로토콜에서 Burst 전송은 단일 주소로 여러 데이터를 연속 전송하는 핵심 기능이다.
실제로 axi burst, axi burst length, axi burst type 관련 질문이 매우 많은 만큼, 이번 글에서는 신호 정의부터 타입별 동작까지 한 번에 정리한다.


1. AXI Burst란?

Burst 전송은 하나의 주소 발행(Address Phase)으로 여러 개의 데이터(Data Beat)를 연속해서 전송하는 방식이다.

예를 들어, 시작 주소 0x0000에서 4번 데이터를 읽는다면 주소를 4번 발행하는 대신 Burst로 한 번에 처리한다.

Address Phase: AWADDR = 0x0000, AWLEN = 3 (4회 전송)
Data Phase:    D[0], D[1], D[2], D[3]  (4 Beat)

이렇게 하면 주소 발행 오버헤드가 줄고 대역폭 효율이 올라간다.


2. Burst 관련 핵심 신호

신호 방향 설명
AWADDR / ARADDR Master → Slave Burst 시작 주소
AWLEN / ARLEN Master → Slave Burst 길이 (전송 횟수 = AWLEN + 1)
AWSIZE / ARSIZE Master → Slave 1 Beat당 전송 바이트 크기
AWBURST / ARBURST Master → Slave Burst 타입 (FIXED / INCR / WRAP)

AWLEN (Burst Length)

실제 Beat 횟수 = AWLEN + 1

AWLEN 값 실제 전송 횟수
0x0 1 Beat
0x3 4 Beat
0x7 8 Beat
0xF 16 Beat

 

AWLEN = 3 → 4번 데이터 전송
AWLEN = 7 → 8번 데이터 전송

AXI4에서는 INCR Burst의 경우 최대 AWLEN = 255 (256 Beat)까지 가능하다.
WRAP과 FIXED는 최대 AWLEN = 15 (16 Beat)로 제한된다.

AWSIZE (Transfer Size)

1 Beat에 전송되는 데이터 바이트 수를 나타낸다.

AWSIZE 값 1 Beat 전송 크기
0b000 1 Byte
0b001 2 Bytes
0b010 4 Bytes
0b011 8 Bytes
0b100 16 Bytes

주의: AWSIZE는 데이터 버스 폭(Data Bus Width)을 초과할 수 없다.
32bit 버스라면 최대 AWSIZE = 0b010 (4 Bytes)이다.


3. Burst 타입 (AWBURST)

AWBURST/ARBURST는 2bit 신호로 Burst 주소 증가 방식을 결정한다.

AWBURST[1:0] 타입 설명
0b00 FIXED 주소 고정 (매 Beat마다 동일 주소)
0b01 INCR 주소 증가 (순차적으로 증가)
0b10 WRAP 경계 주소에서 감싸서 돌아옴
0b11 Reserved 사용 안 함

3-1. FIXED Burst

매 Beat마다 동일한 주소를 사용한다.

AWADDR = 0x0000, AWLEN = 3, AWBURST = FIXED

Beat 1: Address = 0x0000
Beat 2: Address = 0x0000
Beat 3: Address = 0x0000
Beat 4: Address = 0x0000

주로 FIFO에 반복 Write 하거나 동일 레지스터를 여러 번 읽을 때 사용한다.


3-2. INCR Burst (가장 흔히 사용)

매 Beat마다 주소가 AWSIZE만큼 증가한다.

AWADDR = 0x0000, AWLEN = 3, AWSIZE = 2 (4 Bytes), AWBURST = INCR

Beat 1: Address = 0x0000
Beat 2: Address = 0x0004
Beat 3: Address = 0x0008
Beat 4: Address = 0x000C

가장 일반적인 Burst 타입으로, 메모리 순차 읽기/쓰기에 사용된다.
캐시 Line Fill, DMA 전송 등 대부분이 INCR이다.


3-3. WRAP Burst

주소가 특정 경계(Boundary)에 도달하면 시작 주소로 돌아온다.

AWADDR = 0x0014, AWLEN = 3, AWSIZE = 2 (4 Bytes), AWBURST = WRAP

Wrap 크기 = 4 Bytes × 4 Beat = 16 Bytes
Wrap 경계 = (0x14 / 16) × 16 = 0x10  ~  0x1F

Beat 1: Address = 0x0014
Beat 2: Address = 0x0018
Beat 3: Address = 0x001C
Beat 4: Address = 0x0010  ← 경계(0x1F)를 넘으면 시작(0x10)으로 Wrap

주로 CPU 캐시 Line 읽기에 사용된다.


4. Unaligned Transfer (비정렬 전송)

AWSIZE = 2 (4 Bytes), 정렬 기준 = 4 Byte 경계
AWADDR = 0x0002 → 비정렬 주소

첫 Beat: 0x0002 ~ 0x0003 (2 Byte만 유효)
이후 Beat: 정렬된 4 Byte씩 전송

Slave는 이를 처리할 수 있어야 하며, 첫 번째 Beat의 유효 Byte는 WSTRB 신호로 표시된다.


5. Narrow Transfer

데이터 버스: 32bit (4 Byte)
AWSIZE = 1 (2 Byte)

Beat 1: WSTRB = 0b0011 (하위 2 Byte만 유효)
Beat 2: WSTRB = 0b1100 (상위 2 Byte만 유효)

버스 폭 전체를 쓰지 않고 일부 Byte Lane만 사용한다.


6. 정리 비교표

항목 FIXED INCR WRAP
주소 변화 고정 순차 증가 경계에서 Wrap
최대 AWLEN 15 255 15
주요 사용처 FIFO, 반복 레지스터 메모리, DMA 캐시 Line Fill
정렬 조건 없음 없음 정렬 필요

7. 실무 팁

AWLEN 계산 시 자주 하는 실수

// 4번 전송하고 싶다면?
AWLEN = 4 (X)  →  실제 5번 전송
AWLEN = 3 (O)  →  실제 4번 전송 (AWLEN + 1 = 4)

AWBURST 타입 선택 기준

  • 레지스터/FIFO 연속 Write → FIXED
  • 일반 메모리 순차 접근 → INCR
  • CPU 캐시 관련 → WRAP

AXI4 vs AXI3 차이

  AXI3 AXI4
최대 INCR AWLEN 15 (16 Beat) 255 (256 Beat)
WRAP/FIXED AWLEN 15 15