Skip to content
DevBJ
Go back

AXI4 burst에서 AxSIZE와 AxLEN 계산하기

Updated:
Editor

AXI4 burst의 beat당 전송 크기는 2^AxSIZE byte이고, burst의 beat 수는 AxLEN + 1이다. 실제 transaction을 설정할 때는 data bus 폭과 burst가 4KB address boundary를 넘지 않는지도 확인한다.

AxSIZE와 AxLEN

예를 들어 data bus가 128bit이고 한 beat 전체를 사용하는 4-beat transfer라면 한 beat는 16byte이므로 AxSIZE = 4, AxLEN = 3이다. 총 데이터 양은 16 × 4 = 64byte다.

AxSIZE는 연결된 interface가 지원하는 최대 beat 크기를 넘지 않아야 한다. 좁은 access나 unaligned access에서는 byte lane과 address alignment, WSTRB 의미를 함께 검토한다.

AXI4 burst 제한

  1. AXI4 INCR burst는 최대 256 beats다.
  2. 한 burst가 4KB address boundary를 넘어가면 안 된다.
  3. FIXED와 WRAP에는 별도의 허용 길이와 정렬 조건이 있으므로 AxLEN만 보고 유효하다고 판단하지 않는다.
  4. address와 data 채널은 독립 handshake를 가지므로 AW와 W를 같은 cycle에 반드시 받아야 한다고 가정하지 않는다.

주소가 boundary 근처라면 다음 4KB boundary까지 남은 공간과 beat당 byte 수를 기준으로 burst를 나눈다. unaligned address나 wrapping burst는 protocol specification의 해당 규칙을 적용한다.

빠른 계산 예

Beat당 byteAxSIZEBeat 수AxLEN총 byte
10101
424316
1644364

총 byte는 2^AxSIZE × (AxLEN + 1)이다. 이 값은 전체 payload 크기 계산이며, address alignment나 byte strobe를 포함한 유효 byte 수와 항상 같지는 않다.

검증 순서

  1. interface data width를 byte 단위로 확인한다.
  2. beat당 전송 byte와 burst beat 수를 요구사항에서 정한다.
  3. AxSIZE와 AxLEN을 계산한다.
  4. burst type, address alignment, 4KB boundary를 확인한다.
  5. simulation 또는 protocol checker에서 channel handshake와 response를 검사한다.

공식 자료

원문 기록

한 줄 요약

AxSIZE는 beat당 byte 수를, AxLEN + 1은 beat 수를 나타내며 bus width와 burst boundary 제약을 같이 만족해야 한다.


Share this post on:

Previous Post
비동기 reset은 왜 해제할 때 동기화해야 할까
Next Post
Verilog testbench를 시작할 때 HDL과 cocotb 중 고르는 기준